Check out our open source tools to give Claude Code GTM superpowers
All open-source tools
CLIMIT License · Python 3.10+

Your Attio CRM, commanded from Claude Code.

Every contact, company, note, task, and deal in your Attio workspace — updated automatically while you sell, not while you type.

The average rep wastes 20% of their week on CRM data entry. This fixes that.
Quick install
$ git clone github.com/LeadGrowGTM/attio-cli
$ uv pip install -e .
$ attio workspace info
✓ Connected — Workspace: LeadGrow
See it in action

Four things you can do right now.

No UI. No clicking. Just commands that execute, and a CRM that stays clean without you touching it.

Find everyone at a company
$ attio people search \
--company "Notion" \
--status "replied" \
| jq '.[].name'
"Alice Park" "Ben Torres" "Chloe Kim"
OutcomeZero manual searching. Your pipeline, queryable in seconds.
Log a full call — one command
$ attio notes create \
--record "$RECORD_ID" \
--title "Discovery: Notion" \
--content "$(cat call-notes.txt)"
✓ Note created (note_01jk3...)
OutcomePaste your transcript. The CRM updates itself.
Create the follow-up before you close your laptop
$ attio tasks create \
--name "Send proposal: Notion" \
--deadline "2026-05-20" \
--linked-record "$RECORD_ID"
✓ Task created (task_01jk4...)
OutcomeYour next action exists before the call recording stops.
Sync Clay enrichment → Attio
$ attio people upsert \
--from clay-export.csv \
--match email \
--on-conflict patch
✓ 847 records synced → 312 created → 535 patched
OutcomeClay enriches. Attio stays current. You do nothing.
Full coverage

Every corner of your Attio workspace.

Not a partial wrapper. Every object type, every operation — scriptable from Claude Code.

People & Companies
searchcreateupdateupsertdelete

Bulk upsert from CSV or JSON. Match on email, domain, or ID.

Notes
createlistgetdelete

Attach notes to any record type. Supports markdown.

Tasks
createlistcompleteupdatedelete

Link tasks to records. Assign deadlines. Track completion.

Lists & Entries
listentries-assertentries-removeentries-list

Manage list membership programmatically. Sync from external sources.

Deals
createupdatestagewinlose

Full pipeline control. Move stages, close deals, log outcomes.

Objects & Attributes
list-objectslist-attributesget-attribute

Introspect your workspace schema. Works with custom objects.

Comments
createlistresolve

Log internal discussions on any record.

Files
uploadattachlist

Attach documents, proposals, and contracts to records.

Webhooks
listcreatedeletetest

Trigger external systems when Attio records change.

Workspace
infomembersswitch

Multi-workspace support. Auth scoped per workspace.

The workflow

A full sales motion. Zero manual CRM work.

This is exactly how LeadGrow runs its own pipeline. Same tool, same commands — the one behind 212 leads in 60 days.

01

Call ends.

Your Claude Code agent reads the transcript, generates a structured summary, and logs it to Attio in under 3 seconds.

$ attio notes create --record $ID \
--title "Discovery: $COMPANY" \
--content "$(claude summarize call.txt)"
02

Lead is enriched.

Clay runs enrichment on the new contact. Your pipeline patches Attio with tech stack, headcount, funding round.

$ attio people upsert --from enriched.json \
--match email --on-conflict patch
03

Follow-up is created.

Before you close your laptop, a task exists. Deadline set. Record linked. Nothing falls through the cracks.

$ attio tasks create \
--name "Send proposal" \
--deadline "+3d" \
--linked-record $ID
04

Deal is won. CRM stays clean.

One command closes the deal, logs the amount, and triggers your post-sale sequence. No ceremony. No manual steps.

$ attio deals update --id $DEAL_ID \
--status won --close-date today \
--arr 48000
Included skills

Five automations. Pre-built. Ready to run.

These aren't demos. They're the Claude Code skills we run inside LeadGrow, shipped open source so you don't have to build them yourself.

post-call-followup

Post-Call Follow-Up

Reads a call transcript or meeting notes. Writes a structured Attio note. Creates the next task. Done before you close the tab.

Triggers: After every discovery or demo call
overdue-follow-up

Overdue Deal Radar

Scans deals past expected close date. Surfaces the three most at-risk. Drafts a re-engagement email for each. You review and send.

Triggers: Every Monday morning, automatically
lead-nurture

ICP Scorer

Scores new contacts against your ICP definition. Routes above-threshold leads to the active campaign sequence. Logs the score back to Attio.

Triggers: On every new contact create event
deal-next-step

Stall Detector

Reads the last 3 notes on a deal with no activity in 7+ days. Recommends the highest-leverage next action. One-click to create the task.

Triggers: On demand — 'What should I do with this deal?'
pipeline-snapshot

Morning Brief

Pulls deals at risk, tasks due today, and deals that closed yesterday. Delivers a 6-line brief to Slack. You start the day knowing exactly what to do.

Triggers: 7:30 AM, every weekday
Get started

Three commands. Then your CRM obeys Claude.

Python 3.10+ required. uv recommended — installs in 15 seconds flat.

1
Clone the repo
$ git clone https://github.com/LeadGrowGTM/attio-cli.git && cd attio-cli
2
Install dependencies
$ uv pip install -e .
3
Add your API key and verify
$ export ATTIO_API_KEY="your_api_key_here"
$ attio workspace info
v0.2.0MIT LicensePython 3.10+GitHub →Built by LeadGrow
Want a custom version?

We build these for clients.

Custom CLIs, MCP servers, and Claude Code skills wired to your exact CRM stack. Same approach. Your workflows, your objects, your automations.

The teams we've built for have reclaimed 8+ hours per rep per week.

Book a Strategy Call