Can an AI agent use Attio?

As of 2 Oct 2026, an AI agent gets into Attio on its own and does 100% of the core work.

Level 4 · Runs on its ownAn agent does the core work and can stop paying on its own.
  • Find: Docs for agents: llms.txt, an OpenAPI and an MCP server.
  • Access: Sign-up in a browser.
  • Use: 100% of the work.
  • Pay: Reaches the checkout: Stopped at the card form.
  • Leave: Leaves on its own: Cancels on its own, deletes its account.

To reach L5 · Autonomous: pay without a person.

What the levels mean

Driven 2 Oct 2026Same level in 3 drives in a rowRules of 15 Oct 2026Claim this page

Written and checked by our agents from this drive's record. How we write.

Who gets in

  • Agents on a serverGet in on their own.
  • Signed agentsThe sign-up page opens.
  • Agents in a person's browserNot measured yet.

Sign-up page checked 12 Oct 2026. Signed agents: the ones Cloudflare verifies. Where agents come from

What an agent can do in Attio.

On its own

  • Create, update, search and merge company and contact records
  • Build pipelines, custom fields, notes, tasks and comments
  • Upload files, set permissions, and connect through an official AI assistant interface
1 more
  • Log meetings and attach call transcripts

What it can't, and why

  • Sign up or create an access token without a browserSign-up and token creation only exist in the web app
  • Build automated workflows or email sequences on its ownThose tools only work in the browser editor, with no API
  • Buy or change a paid plan on its ownOnly a card form in the browser; no automated payment option
1 more
  • Run SQL-style queries or set up single sign-onRestricted to the most expensive Enterprise plan
On its own, in a browser

Can an AI agent sign up for Attio on its own?

Yes, in a browser, without a human. Email form at app.attio.com/welcome/sign-in, no CAPTCHA. Onboarding is 7 short screens; no API or CLI sign-up.

Official server · its calls worked

Does Attio have an MCP server, and can an agent connect to it?

Yes. Attio has an official MCP server. The server is hosted, lists 41 tools and signs an agent in with OAuth.

A new agent can get in on its own: in the drive of 2 Oct 2026, our agent signed up, verified and got its key without a person. Through the MCP server, 5 of our agent's 5 attempts worked.

What the drive found

APIOpenAPIMCP · officialCLISDKllms.txtWebhooks–Sandbox
On its own, in a browser

How does an AI agent get an Attio API key?

In the drive of 2 Oct 2026, our agent got its Attio API key in a browser, without a person. Workspace access token made in Settings > Developers > Access tokens (name + 13 scope selects). No API to mint tokens. MCP: dynamic client registration is headless, but the OAuth consent needs one click in a logged-in browser.

On its own, in a browser

Can an AI agent delete its Attio account?

Yes, in a browser, without a human. Settings > General > Delete workspace (pick a reason, type the slug) deleted the workspace and its data; the API token became inactive and MCP returned 403. The Attio user login itself stays: no self-serve user deletion was found.

Reaches the checkout

Can an AI agent pay for Attio?

Reaches the checkout: stopped at the card form.

No card needed to start.

What would let agents pay on their own
  1. Accept x402 or MPP on your API. Answer an unpaid call with 402 and a payment challenge, so an agent pays per call or buys credits without an account or a card.Step-by-step guide
  2. List your plans on Stripe Projects. Agents buy a plan with `stripe projects add`, paid with a token under a spend cap the owner sets (projects.dev).Step-by-step guide

No x402/MPP/L402/UCP anywhere: x402./mpp./agents. subdomains do not resolve, unauthenticated API gives a plain 401, no x-payment-info in OpenAPI, nothing in llms-full.txt, not in x402 Bazaar or mpp.dev. Sign-up starts a 14-day Pro trial with no card. Upgrading is an in-app Stripe Elements card form (seats, address, VAT; Stripe's invisible hCaptcha) under Settings > Plans > Keep Pro; not submitted (no card). No billing API or MCP billing tool.

From the drive of 2 Oct 2026.

For the team behind Attio.

Agents get through Attio today. The fixes that keep it that way, highest impact first.

Through every checkpoint

The fixes, highest impact first

  1. Let agents mint scoped tokens via OAuthStep-by-step guide
  2. Add workflow and sequence APIs
  3. Expose plan changes through a billing APIStep-by-step guide
2 more fixes
  1. Offer an agent-native payment rail Step-by-step guide
  2. Allow deleting the user account self-serve
  • Claim it free and reply next to the result.
  • A Drive, $49: your private report, with where agents stop, the evidence and the fixes that move your level.
  • Fixed something? Order a Drive ($49) any time, or the Monthly drive ($29/month).
See the example report
Details

Your API, MCP server or CLI is the product? An Audit ($299) also checks every documented route, MCP tool and CLI command against your docs. Compare plans.

Already claimed it? Open it in your dashboard.

Rather not be driven? Block AgentDrivesAgent in robots.txt or write to us. We stop driving it ourselves; this page stays, with its date.

Embed the badge on your site

Driven · L4 · Runs on its own badge

Behind the level.

The part scores and the measures behind them.

Part scores and the measures · level history · paid plans

Part scores

Agent-ready setup

  • llms.txt: found
  • OpenAPI: found
  • MCP server: found
  • CLI: found

Not measured in this drive: Holds up, Docs match (part of an Audit).

The measures

  1. Work done100
  2. Reliability100
  3. Crash test–

Level history

  1. 1 Oct 2026L1Needs a person
  2. 1 Oct 20262 drives · sign-up variesL4Runs on its own
  3. 2 Oct 2026L4Runs on its own

Needs a paid plan

Not counted in the level. Our drive used no-card trial (14-day Pro).

Needs a paid plan
CapabilityPlan
Query workspace data with read-only SQLEnterprise
Configure SSOEnterprise

For agents and builders.

The drive as data, every checkpoint and all 46 attempts.

How an agent connects · 7 tips
  • Get through sign-up in a browser once (email + emailed 8-char code, no CAPTCHA), then make a workspace access token under Settings > Developers; after that everything core is REST.
  • For MCP, register a client at app.attio.com/oauth/register, use a long random state (short 'xyz' is rejected), and one Confirm click gives a 24h token plus refresh token.
  • Upsert with PUT /v2/objects/{object}/records?matching_attribute=domains|email_addresses to avoid duplicates.
  • Merging returns a brand-new record ID; both old IDs 404 afterwards, references are re-pointed.
  • New records take a few seconds to appear in search.
  • MCP run-basic-report wants group_by path as an array of [object, attribute] pairs and returns status IDs, not titles.
  • Workflows: the in-editor Ask Attio builds a working workflow from one sentence; publish it in the browser.
Every checkpoint, in detail · 9 checkpoints
  1. DocsHeadlessdocs.attio.com/llms.txt and llms-full.txt (770 KB), OpenAPI 3.1 at api.attio.com/openapi/api (97 operations), MCP OAuth metadata with dynamic client registration.
  2. Sign upIn a browserEmail form at app.attio.com/welcome/sign-in, no CAPTCHA. Onboarding is 7 short screens; no API or CLI sign-up.
  3. VerifyIn a browserPasswordless: an 8-character temporary password arrives by mail in under a minute and is typed into the web form. Our generated password was never needed.
  4. KeyIn a browserWorkspace access token made in Settings > Developers > Access tokens (name + 13 scope selects). No API to mint tokens. MCP: dynamic client registration is headless, but the OAuth consent needs one click in a logged-in browser.
  5. First callHeadlessGET /v2/self with the bearer token: active, workspace agent-drives.
  6. First actionHeadlessPOST /v2/objects/companies/records created a company; read back by GET.
  7. PayIn a browserNo x402/MPP/L402/UCP anywhere: x402./mpp./agents. subdomains do not resolve, unauthenticated API gives a plain 401, no x-payment-info in OpenAPI, nothing in llms-full.txt, not in x402 Bazaar or mpp.dev. Sign-up starts a 14-day Pro trial with no card. Upgrading is an in-app Stripe Elements card form (seats, address, VAT; Stripe's invisible hCaptcha) under Settings > Plans > Keep Pro; not submitted (no card). No billing API or MCP billing tool.
  8. CancelIn a browserNothing recurring was started. Settings > Plans offers Downgrade in the web UI; no billing API. Deleting the workspace also ends the trial.
  9. DeleteIn a browserSettings > General > Delete workspace (pick a reason, type the slug) deleted the workspace and its data; the API token became inactive and MCP returned 403. The Attio user login itself stays: no self-serve user deletion was found.
The attempt log · 46 attempts
Attempt log
CapabilityRouteResultEvidence
Find docs: Find API docs, OpenAPI, llms.txt, MCP, OAuth metadataapidone ✓docs.attio.com/llms.txt 200; api.attio.com/openapi/api 200 JSON OpenAPI 3.1 (97 operations); mcp.attio.com/mcp 401 with WWW-Authenticate resource_metadata; mcp.attio.com/.well-known/oauth-authorization-server has registration_endpoint (DCR)
Sign up: Create account with test emailbrowserdone ✓app.attio.com/welcome/sign-in email form -> temporary-password page; no CAPTCHA signals; no API/CLI signup route in docs
Verify email: Read temporary password from inbox and enter itbrowserdone ✓Mail 'Your Attio Temporary Password' arrived within ~40s at the agent's inbox with 8-char code; entering it moved to /welcome/personal-details
Log in / session: Reach workspace homebrowserdone ✓https://app.attio.com/agent-drives/home loaded, 'Good afternoon, AgentDrives.', '14 days left on trial! Keep Pro'
Get API credentials: Create workspace access token with all scopesbrowserdone ✓Settings > Developers > Access tokens > New access token (name + 13 scope selects) > Save; token listed 'AgentDrives drive'; GET /v2/self active:true token_level workspace
First API call: GET /v2/self and GET /v2/objectsapidone ✓/v2/self 200 active:true workspace_slug agent-drives; /v2/objects 200 -> companies, people
First real action: Create a company record via APIapidone ✓POST /v2/objects/companies/records -> record 3cb8c796…; GET returns name 'AgentDrives Test Co', domain agentdrives.com
Create a company, person or deal record: Create company AgentDrives Test Co and person AgentDrives Testapidone ✓POST /v2/objects/companies/records and /people/records 200; GET /v2/objects/companies/records/3cb8c796… returns name+domain
Upsert by matching attribute: PUT company matching domains (existing) and person matching email (new)apidone ✓PUT /v2/objects/companies/records?matching_attribute=domains returned same record_id 3cb8c796… with new description; PUT people by email_addresses created 0387fb8d…
Update a record's attribute values: Set job_title and company link on personapidone ✓PATCH /v2/objects/people/records/7a7bfdd9…; GET back job_title 'Test driver', company target_record_id 3cb8c796…
View a record's full profile: GET company and person recordsapidone ✓GET /v2/objects/{object}/records/{id} returns all attribute values with actor/active_from history
Search and filter records: Filter people by job_title; full-text search 'AgentDrives' across people+companiesapidone ✓POST /v2/objects/people/records/query filter job_title -> [7a7bfdd9…]; POST /v2/objects/records/search -> 3 hits (1 company, 2 people)
Merge two duplicate records: Create duplicate company and merge into originalapidone ✓POST /v2/objects/companies/records/merge -> new_record_id c9785373…; both old IDs now 404; new record keeps primary name/description/domain; person's company link re-pointed to c9785373…
Build a custom object or attribute: Create object ad_projects with number attribute 'score', create a record in itapidone ✓POST /v2/objects 200 object_id 5a621146…; POST /v2/objects/ad_projects/attributes score:number; POST /v2/objects/ad_projects/records score 42 -> f4343fdd…
Create a list: Create list 'AD Pipeline' on companies with status attribute Stage (Lead/Qualified/Won)apidone ✓POST /v2/lists -> 3f875554…; POST /v2/lists/ad_pipeline/attributes type status; 3x POST statuses 200
Add a record to a list and move between stages: Add merged company to AD Pipeline at Lead, move to Qualifiedapidone ✓POST /v2/lists/ad_pipeline/entries stage Lead -> entry 02de068a…; PATCH stage Qualified; POST entries/query shows stage Qualified
Delete a record: Delete person AgentDrives Test Twoapidone ✓DELETE /v2/objects/people/records/0387fb8d… -> {}; GET -> 404 not_found
Add a note to a record: Markdown note on companyapidone ✓POST /v2/notes -> f269bd3e…; GET /v2/notes?parent_object=companies&parent_record_id=c9785373… returns title + markdown
Create and assign a task with a deadline: Task linked to person, assigned to self, deadline 2026-10-09; then complete itapidone ✓POST /v2/tasks -> d199285b…; PATCH is_completed true returns deadline and assignee
Comment on a record (threaded): Comment on company, reply in threadapidone ✓POST /v2/comments x2; GET /v2/threads/03badc70… returns ['First comment from drive','Threaded reply']
Sync a calendar meeting onto linked records: Create meeting linked to company with address as participantapidone ✓POST /v2/meetings -> 9276d744…; GET shows linked_records company c9785373…
Upload and organize files/folders on a record: Create folder on company, upload text file into it, download itapidone ✓POST /v2/files folder fa546b99…; POST /v2/files/upload multipart -> 088ea7ea… parent folder fa546b99…; GET /v2/files lists both; /download 302 to signed GCS URL
Suppress emails from sequences: Add an inbox+unsub@agentdrives.com to unsubscribe listapidonePOST /v2/sequences/unsubscribed_emails 200 data[0].email_address + created_at
Subscribe to a webhook: Webhook for record.created to agentdrives.comapidone ✓POST /v2/webhooks -> 4800093b… status active; GET /v2/webhooks lists it
Read-only SQL: SELECT name FROM companies LIMIT 5apiplan_gated ✓POST /v2/sql -> 402 'This workspace does not have the required permissions enabled for this feature. Please contact sales'
View synced email metadata: GET /v2/emailsapiblocked ✓403 auth_error: requires 'Read access to the Emails scope'; the token form offered no Emails scope; no mailbox connected (needs Google/Microsoft OAuth of a real mailbox we don't have)
Granular permissions on lists: Set AD Pipeline workspace read-only, self full-accessapidone ✓PATCH /v2/lists/ad_pipeline; GET shows workspace_access read-only, member 9c007781… full-access
List workspace members and teams: GET /v2/workspace_membersapidone ✓returns 1 member the agent's inbox admin
Record and transcribe a call: Attach a transcript-only call recording to the meeting and read transcript backapipartial ✓POST /v2/meetings/9276d744…/call_recordings -> 355edfd8… status completed; GET …/transcript returns our text
Connect official MCP server: DCR register client, OAuth PKCE consent, tools/listmcpdone ✓POST app.attio.com/oauth/register 200 client_id; /oidc/authorize -> consent page (browser click 'Confirm') -> code; /oidc/token 200 Bearer expires_in 86400 + refresh_token; mcp.attio.com initialize + tools/list = 41 tools
Create a company, person or deal record: Create company via MCP create-recordmcpdone ✓tools/call create-record -> record_id 953bff20…; REST GET returns name 'AgentDrives MCP Co'; MCP search-records finds it
Search and filter records: MCP search-records 'AgentDrives' and 'MCP Co'mcpdone ✓returns c9785373… and later 953bff20…
Run an aggregate report: Count entries in AD Pipeline grouped by stage; count companiesmcpdone ✓run-basic-report companies count -> 12 (matches REST query of 12 names); ad_pipeline group by stage -> {'393f14f3…': 1}
List workspace members and teams: MCP list-workspace-teams and whoamimcpdone ✓whoami -> member 9c007781… admin; list-workspace-teams -> [] (no teams exist)
Buy the product the agent way: Probe 402/x402/MPP/L402, well-known, registries, docs; find checkoutbrowserpartial ✓x402./mpp./agents.attio.com do not resolve; unauthenticated api.attio.com -> 401 (no PAYMENT-REQUIRED/WWW-Authenticate Payment); /.well-known/ucp 404 HTML; OpenAPI has no x-payment-info; llms-full.txt (770 KB) has no x402/402/MPP/USDC; not in x402 Bazaar or mpp.dev/api/services; MCP tools/list has no billing tool. Settings > Plans 'Keep Pro' opens an in-app Stripe Elements card form (js.stripe.com frames incl. Stripe invisible hCaptcha) with seat count, address, VAT; Pro €74/user/mo annual.
Manage billing plan, seats and credits: Find plan/seat/credit controlsbrowserpartial ✓Settings > Plans shows trial, Compare plans, Downgrade buttons, credits add-ons, seat count in Stripe form; Settings > Billing exists
Configure SSO: Check SSO availabilitynoneplan_gatedCapability map: Enterprise plan; plan comparison on Settings > Plans lists Enterprise with 'Talk to sales'
In-app AI agent analyzes records and writes back: Ask Attio (home chat) to add a lead-score note to AgentDrives Test Cobrowserdone ✓Ask Attio searched records, drafted a note card with Create/Discard; after clicking Create, GET /v2/notes for c9785373… shows note "Lead score" / "Lead score 7/10, reviewed by Ask Attio." by workspace-member
Build a workflow automation: Workflow: on company created, create task Review new company due in 3 daysbrowserdone ✓Workflows > New workflow; Ask Attio in the editor built trigger Record created -> Create task from a prompt; Publish changes; then POST /v2/objects/companies/records dba2d44d…; ~25s later GET /v2/tasks shows "Review new company" linked to dba2d44d…, deadline 2026-10-05
Enroll contacts in an outbound email sequence: Create sequence and enroll our own test personbrowserblockedSequences > New sequence opens editor (Untitled Sequence 28b47283…, Step 1 Automated email, Recipients 0, Publish sequence). Sending requires a connected Gmail or Microsoft mailbox (onboarding Connect mailbox; home Sync Google/Microsoft Account); we have only a receive-only inbox
Change workspace branding: Rename workspace to AgentDrives Testbrowserdone ✓Settings > General Name field set + reload shows AgentDrives Test; GET /v2/self workspace_name AgentDrives Test
Connect an integration or build a custom app with the App SDK: Assess App SDK pathnoneskippeddocs.attio.com quickstart: sign in at build.attio.com developer console, create developer account and app in the browser, then `npm create attio@latest <slug>`, `npm run dev` asks to choose a workspace and redirects to install the app
Install an integration from the marketplace: Assess marketplace installnoneskippedSettings > Apps exists; integrations connect third-party accounts (Gmail/Outlook/Slack etc.) we do not have
Delete created data: Delete webhook, meeting, tasks, notes, files, records, custom objectapidone ✓DELETE endpoints returned {}; GET /v2/webhooks, /v2/tasks, /v2/notes all empty; companies query for 'AgentDrives' -> []
Cancel/downgrade plan: End the Pro trialbrowserdone ✓No paid plan was started; trial needed no card. Settings > Plans shows Downgrade buttons in the web UI; workspace deletion ended the trial
Delete account and data: Delete the workspacebrowserpartial ✓Settings > General > Delete workspace: reason select + type slug 'agent-drives' + 'Delete workspace permanently' -> redirected to /workspaces 'No workspaces found'; GET /v2/self -> {active:false}; MCP call -> 403