Minimal Attio CLI for records, lists, tasks, and raw REST API calls. Uses Attio's REST API directly; no MCP server.
npm install -g @mariozechner/atcliInstall atcli as a pi package from GitHub:
pi install https://github.com/badlogic/atcliThen create an Attio access token in your workspace's developer settings:
https://app.attio.com/<workspace-slug>/settings/developers/access-tokens
Set the permission options you need, click Save changes, and export the token:
export ATTIO_TOKEN="your_token_here"The pi package exposes an atcli skill. On first use, save the token under an account name:
node ~/.pi/agent/git/github.com/badlogic/atcli/dist/cli.js accounts token work "$ATTIO_TOKEN"After that, ask pi to use Attio/atcli, or run commands directly with the same node .../dist/cli.js path.
Create an Attio access token, then save it under an account name:
atcli accounts token work $ATTIO_TOKEN
# or
atcli accounts token work attio_pat_or_oauth_token_hereatcli accounts <action> Account management
atcli <account> <command> [options] Attio operations
atcli accounts token <name> <token> # Save token
atcli accounts list # List configured accounts
atcli accounts remove <name> # Remove accountatcli work meatcli work objects # List objects
atcli work objects people # Get one object by slug/UUIDQuery object records (people, companies, deals, etc.).
atcli work records <object> [--filter JSON] [--sorts JSON] [--limit N] [--offset N] [--view UUID] [--json]Examples:
atcli work records people --limit 10
atcli work records people --filter '{"email_addresses":"ada@example.com"}' --json
atcli work records companies --filter '{"name":"Acme"}'
atcli work records deals --sorts '[{"direction":"asc","attribute":"name"}]'atcli work record people 891dcbfc-9141-415d-9b2a-2238a6cc012datcli work create companies '{"name":"Acme Inc","domains":["acme.com"]}'
atcli work update companies <recordId> '{"description":"Important account"}'
atcli work delete companies <recordId>atcli work lists
atcli work entries hiring-engineering --limit 50
atcli work entries hiring-engineering --filter '{"stage":"Interview"}' --jsonatcli work tasks --limit 20
atcli work tasks --jsonCall any Attio API endpoint under /v2.
atcli work raw GET /objects/people/attributes
atcli work raw POST /objects/people/records/query '{"limit":5}'
atcli work raw PATCH /objects/people/records/<recordId> @body.jsonAll data is stored in ~/.atcli/:
accounts.json- saved account names and bearer tokens
npm install
npm run build
npm run checkMIT