Open Source · Python · v0.2.0

Your Attio CRM,
fully command-line.

Every object, note, task, list, and webhook in your Attio workspace — accessible with a single attio command. Built for AI agents and power users who need the full API without leaving the shell.

attio-cli — zsh
$ attio people search "Sarah Chen" --json
{"data": [{"id": {"record_id": "rec_01abc..."}, "name": "Sarah Chen", "company": "Acme"}]}
$ attio notes create --parent-object people --parent-record-id rec_01abc --title "Discovery call" --content "Budget confirmed $5k/mo..."
{"data": {"id": {"note_id": "note_7d92..."}, "title": "Discovery call", ...}}
$ attio tasks create --content "Send proposal" --linked-record '{"target_object":"people","target_record_id":"rec_01abc"}'
{"data": {"id": {"task_id": "task_781a..."}, "deadline_at": "2026-05-19T...", ...}}
$ attio entries assert list_xyz --parent-record-id rec_01abc
{"data": {"id": {"entry_id": "entry_ab0b..."}, "parent_object": "people", ...}}
Capabilities

Everything the Attio API exposes

Full v2 coverage. Every command outputs clean JSON with --json — pipe it, parse it, script it.

👤
People & Companies
search · get · list · create · update · assert · delete

Fuzzy search, filter by any attribute, idempotent upsert via assert.
📝
Notes
create · get · list · update · delete

Attach call summaries, meeting notes, or any content to any record.
Tasks
create · get · list · update · delete

Create with assignees, deadlines, and linked records. Filter by completion.
📋
Lists & Entries
lists list/get/create/update
entries list/get/create/assert/update/delete

Manage pipeline lists. entries assert is idempotent — safe to run repeatedly.
💬
Comments & Threads
create · get · resolve · unresolve · delete

Comment on records, reply to threads, resolve discussions.
🗂️
Objects & Attributes
objects list/get/create/update
attributes list/get/create/update/archive

Introspect and extend your schema. Add custom fields and select options.
📂
Files
upload · download · list · get · delete

Attach contracts or proposals to records. Download locally.
🔔
Webhooks
create · get · list · update · delete

Subscribe to any Attio event. Manage webhook lifecycle from the terminal.
🤝
Meetings
list · get · recordings · transcript

Pull meeting records and transcripts from your workspace.
🏢
Workspace
self · members · member <id>

Inspect current auth token and list all workspace members.
GTM Workflow

Full sales workflow in four commands

Find a contact, log the call, create a follow-up task, add them to a pipeline list. Scriptable end to end.

1
Find the contact
Fuzzy search by name or email across all people records.
attio people search "Sarah Chen" --json
2
Log the call
Attach a note with key details from the conversation.
attio notes create --parent-object people --parent-record-id <id> --title "Discovery call" --content "..."
3
Create a task
Set a follow-up with a deadline, linked to the contact record.
attio tasks create --content "Send proposal" --linked-record '{"target_object":"people","target_record_id":"<id>"}'
4
Add to pipeline
Assert entry in a list — idempotent, no duplicates if run again.
attio entries assert <list-id> --parent-record-id <id>
📄
Paginate large datasets. Add --all to any list command to stream all pages automatically. attio people list --json --all > all_people.jsonl
AI Skills

Claude Code agent skills

Drop the skills/ folder into ~/.claude/skills/. Each skill is an interactive loop — Claude generates, you review, nothing sends without your approval.

"write a follow-up for Sarah"
post-call-followup
Pulls the call note from Attio, drafts a personalized follow-up email, runs an approve/edit loop, creates an Attio task on approval.
"what follow-ups am I behind on"
overdue-follow-up
Pulls all overdue tasks from Attio, drafts a message per contact, lets you approve, edit, or skip each one.
"who needs a touch this week"
lead-nurture
Pulls stale contacts from an Attio list, generates a context-aware nurture message per contact, queues approved messages to EmailBison.
"what should I do with the Acme deal"
deal-next-step
Diagnoses current deal state from Attio, recommends a specific next action, drafts the message, creates a task on your approval.
"pipeline health check"
pipeline-snapshot
Pulls all deals across pipeline stages, surfaces stale deals and missing next steps, gives you a full health summary in one command.
Install skills
cp -r skills/ ~/.claude/skills/
Install

Up and running in two minutes

Python 3.10+ required. Recommended: uv for fast installs.

zsh — uv (recommended)
# Clone the repo
git clone https://github.com/MitchellkellerLG/attio-cli.git
cd attio-cli
# Create virtualenv and install
uv venv && source .venv/bin/activate
uv pip install -e .
# Set your API key — Attio → Settings → API
attio config set api-key YOUR_KEY
# Verify
attio workspace self
Exit codes
0Success
1Command error
2Usage error
4Auth failure
5Rate limited
Open Source

Built by LeadGrow

Free to use, fork, and extend. Full Attio v2 coverage, 254 tests, MIT license.

View on GitHub LeadGrow.ai →