An Attio CLI built for humans and agents.
go test ./...
go build -o bin/atcli .Authenticate with an Attio API key or access token:
./bin/atcli authIf the OS credential store is unavailable, use an environment variable:
export ATTIO_ACCESS_TOKEN='your-token-here'
./bin/atcli whoamiUse dry runs for one-off record writes until the payload looks right:
./bin/atcli records upsert companies \
--match domains \
--set name='Example Co' \
--set-json 'domains=["example.com"]' \
--dry-runAdd a returned record to a list as a list entry:
./bin/atcli entries upsert sales \
--parent-object people \
--parent-record-id record_123 \
--set stage='Qualified' \
--dry-runPlan CSV imports without writing records:
./bin/atcli records import companies ./companies.csv \
--match domains \
--map 'Company Name=name' \
--map 'Domain=domains' \
--output jsonlApply CSV imports only after reviewing the plan. Upsert/assert mode is the default and is preferred for rerunnable imports:
./bin/atcli records import companies ./companies.csv \
--match domains \
--map 'Company Name=name' \
--map 'Domain=domains' \
--errors ./companies-errors.csv \
--applyCSV imports can also add each successfully written record to a list:
./bin/atcli records import people ./people.csv \
--match email_addresses \
--map 'Email=email_addresses' \
--map 'Full Name=name' \
--list sales \
--entry-map 'Pipeline Stage=stage' \
--errors ./people-errors.csv \
--applyStart with docs/README.md.
For coding agents, read AGENTS.md first. It is the compact operating guide for the codebase.