Skip to content

Connectors · CRM & sales

Attio MCP server for AI agents.

actionlake is an MCP gateway: one remote MCP server that connects Claude and other MCP clients to Attio and the rest of your systems. It gives your agent 91 Attio actions (43 reads, 35 writes and 13 that wait for a confirmation) and holds the Attio credential itself, so the agent never does. It paces Attio's limits and records every call.

100,000 free calls a month. No card, no email, no password: press Start a free sandbox on the next screen and keep the key it shows you.

claude mcp add --transport http actionlake https://connect.actionlake.com/mcp
the first call
do {  action: "attio.workspace_members.list",  intent: "check which Attio account is connected"}# List Attio workspace members · read · 1 upstream call
  • 91actionsin one signed file
  • 43readlook, never change
  • 35writecreate and update
  • 13wait for a yesdestructive, confirmed first

Set up

Connect Attio in three steps.

  1. 01

    Add actionlake to Claude.

    Run the command once in Claude Code; its consent page can create a free sandbox: 100,000 calls a month, no card. In the Claude app, add a custom connector with the URL below and paste your key on the consent page. Creating a new sandbox from the Claude app is not yet tested by us.

    https://connect.actionlake.com/mcp
  2. 02

    Connect Attio.

    Bearer token. No consent screen: your agent can connect it for you, but the key then passes through your chat. To keep it out of the model's context, paste it in the console instead. actionlake stores what you paste write-only, sealed under your tenant's key.

    • access_tokenAttio access token or workspace API key
    account { op: "connections.requirements", service: "attio" }
    # free: exactly what to paste, and what is found for you
  3. 03

    Make the first call. Check before a write.

    Ask in plain words; Claude picks the action. Before anything changes, check validates the call and prices it, for free.

    do    { action: "attio.workspace_members.list" }# list attio workspace members · read · 1 upstream callcheck { action: "attio.notes.create", input: { … } }# free: inputs, permissions, cost and confirmations, nothing sent

Attio at a glance

Sign-in
Bearer token. No consent screen: your agent can connect it for you, but the key then passes through your chat. To keep it out of the model's context, paste it in the console instead.
You provide
access_token
Limits we pace to
100 calls a second, per connection
API covered
Attio API v2api.attio.com
Built from
Attio's documentation, read 18 September 2026api.attio.com
Service file
Version 1.0.0, signed (Ed25519)
Cached reads
43 of 43 reads, for up to an hour; a write clears what it affects
Ready-made plans
8 in the store
Shared entities
8, so ask can line Attio up with your other systems
Data
Processed and stored in Sydney, Australia. No US region yet

Capabilities

What an AI agent can do in Attio.

91 actions in 1 area. Every one carries its effect, so a key can allow the reads and hold the rest.

  • 43readlook, never change
  • 35writecreate and update
  • 13destructivewait for a confirmation
  1. Records

    91

    43 read · 35 write · 13 destructive

    List Attio workspace members · List Attio notes · List Attio meetings · List Attio tasks

Top actions

The Attio API, shaped for agents.

The ids your agent types, what each does, and the one name it shares with other systems. 76 of Attio's 77 action names are shared with at least one other connector, so an agent learns them once.

ActionWhat it doesEffectSame name in
attio.workspace_members.listList Attio workspace membersList every member of the workspace, with their email address and access level.readidentity.user.list474 connectors
attio.notes.listList Attio notesList notes, optionally only those on one parent record.readcrm.contact_note.list29 connectors
attio.meetings.listList Attio meetingsList meetings, filtered by linked record, participant or date window.readcomm.event.list61 connectors
attio.tasks.listList Attio tasksList tasks, filtered by assignee, linked record or completion.readwork.task.list122 connectors
attio.emails.listList Attio emailsList the emails Attio has synced from connected mailboxes, filtered by linked record, participant, domain or date.readcomm.email.list28 connectors
attio.notes.createCreate an Attio noteWrite a note against a record.writecrm.contact_note.create28 connectors
attio.meetings.createCreate an Attio meetingRecord a meeting in Attio, with its participants and linked records.writecomm.event.create52 connectors
attio.workspace_members.getGet an Attio workspace memberGet one workspace member by id.readidentity.user.get399 connectors
attio.tasks.createCreate an Attio taskCreate a task, optionally linked to records and assigned to workspace members.writework.task.create127 connectors
attio.notes.deleteDelete an Attio notePermanently delete one note.destructivecrm.contact_note.delete21 connectors
attio.lists.createCreate an Attio listCreate a new list over a parent object.writecrm.contact_list.create29 connectors
attio.activity_records.createCreate an Attio activity recordCreate one activity record. `values` is a map of attribute api_slug to value array.writecrm.activity.create20 connectors

Try it

Prompts to paste into Claude.

Each one names the Attio actions it will call, so you know what it reads and what it changes before you send it.

  1. Readread

    Which Attio deals are due to close this month, and what are they worth in total?

    callsattio.records.query

  2. Planwrite

    Turn a finished meeting into a recap note and a follow-up task in Attio.

    callsattio.meetings.getattio.call_recordings.listattio.call_recording_transcripts.getattio.notes.createattio.tasks.create

  3. Planwrite

    Stand up a new object with a status attribute and its options in Attio. Ask me before anything is sent or changed.

    callsattio.objects.createattio.objects.listattio.attributes.createattio.select_options.listattio.select_options.create

  4. Writewrite

    Create an Attio note in Attio. Show me exactly what you will send before you save it.

    callsattio.notes.create

The plan store

Ready-made plans for Attio.

8 plans in the store. Install one and your agent runs it by name; the reply says which connections are still missing. A schedule can run a plan on a timetable. There are no triggers or webhooks, by design.

  1. Report deal counts by stage with owner names resolved

    Use it when Someone asks for a breakdown of the Attio pipeline by stage, or who owns what in a given stage.

    Effect
    read
    Steps
    3
    Needs
    object and sql
    Install
    attio-pipeline-stage-report
  2. Sweep overdue tasks and post a chase note on each linked record

    Use it when An agent needs to chase overdue Attio tasks and leave a visible trail on the linked records.

    Effect
    write
    Steps
    3 · loops
    Needs
    assignee and parent object
    Install
    attio-overdue-task-sweep
  3. Upsert a company record and put it on a target list

    Use it when An agent has a company name or domain and needs it to exist in Attio and appear on a pipeline list without creating duplicates.

    Effect
    write
    Steps
    4
    Needs
    entry values, list, matching attribute, object, query and values
    Install
    attio-upsert-company-from-domain
  4. Find records with no recent email and open a comment thread on each

    Use it when An agent needs to flag Attio records that have not had email contact recently and leave the flag where the owner will see it.

    Effect
    write
    Steps
    5 · loops
    Needs
    author and object
    Install
    attio-email-silence-tagging
  5. Turn a finished meeting into a recap note and a follow-up task

    Use it when A call has just ended and the record needs a written recap plus a follow-up task in Attio.

    Effect
    write
    Steps
    6
    Needs
    assignee, meeting id, object and record id
    Install
    attio-meeting-recap-to-record
  6. Stand up a new object with a status attribute and its options

    Use it when A workspace needs a brand new Attio object with a working single-select attribute configured in one pass.

    A person decidesCreate a new Attio object 'plural noun' and add a select attribute to it.

    Effect
    write
    Steps
    6
    Needs
    api slug, attribute slug, attribute title, option title, plural noun and singular noun
    Install
    attio-onboard-new-object
  7. Delete stale entries from a list after human approval

    Use it when Someone asks to clean out old entries from an Attio list and a human must sign off before anything is removed.

    A person decidesPermanently delete number of items stale entries from Attio list list.

    Effect
    destructive
    Steps
    4 · loops
    Needs
    days and list
    Install
    attio-archive-stale-list-entries
  8. Merge a duplicate record into its primary after review

    Use it when Two Attio records are duplicates of each other and one should be merged into the other with a human signing off.

    A person decidesMerge record secondary record id into primary record id; this cannot be undone.

    Effect
    destructive
    Steps
    6
    Needs
    attribute, object, primary record id and secondary record id
    Install
    attio-merge-duplicate-records
install a plan
account { op: "plans.install", slug: "attio-pipeline-stage-report" }
# then ask for it by name; a schedule can run it on a timetable

Governance for Attio

Destructive actions wait for a yes.

13 Attio actions are destructive. These are all of them:

  • Delete an Attio noteattio.notes.delete
  • Delete an Attio meetingattio.meetings.delete
  • Delete an Attio taskattio.tasks.delete
  • Merge two Attio recordsattio.record_merges.create
  • Delete an Attio activity recordattio.activity_records.delete
  • Delete an Attio list entryattio.list_entries.delete
  • Delete an Attio fileattio.files.delete
  • Delete an Attio call recordingattio.call_recordings.delete
  • Delete an Attio webhookattio.webhooks.delete
  • Delete an Attio recordattio.records.delete
  • Delete an Attio objectattio.objects.delete
  • Delete an Attio activity typeattio.activities.delete
  • Delete an Attio commentattio.comments.delete

A destructive action runs only with confirm: true. Under the human policy the agent cannot confirm for itself: the run stops until a named person approves, in the console or from a signed link in an email. The cap on a key is refused before the call is sent, never after.

doattio.notes.deleteconfirm_policy: human

Delete an Attio note?

intent: the user asked me to delete an Attio note

run suspended · waiting for a named person · key attio-agent cannot confirm itself
In the console, or from an emailed signed link.
a key for this connector
account {  op: "keys.create", name: "attio-agent",  allowed_actions: ["attio.*"], cap_calls: 2000,  confirm_policy: "human_for_writes",  approval_rules: [    { match: "attio.notes.delete", approver: "[email protected]" },    { match: "attio.meetings.delete", approver: "[email protected]" },    { match: "attio.tasks.delete", approver: "[email protected]" }  ]}
Illustrative. Scoped to Attio only, capped at 2,000 upstream calls, every write confirmed, and the destructive ones approved by a named person.

Cost

What Attio costs on actionlake.

Every Attio action is one upstream call, the only thing actionlake bills. Searching, check, cost, account and any call Attio refused with 401, 403, 429 or a 5xx are free. Paid plans start at US$49 a month for 250,000 calls, with overage from US$0.30 down to US$0.18 per 1,000.

  • 1upstream call per actionall 91 Attio actions
  • 19actions pageeach page of a long list is one call
  • 43reads can be cacheda cache hit costs nothing
  • 100,000calls a month, freepaid plans from US$49 a month for 250,000

See pricing

Action index

Every Attio action.

91 actions by area: the id your agent calls, what it does, and its effect.

Records91
  • attio.activities.createCreate an Attio activity typewrite
  • attio.activities.deleteDelete an Attio activity typedestructive
  • attio.activities.getGet an Attio activity typeread
  • attio.activities.listList Attio activitiesread
  • attio.activities.updateUpdate an Attio activity typewrite
  • attio.activity_records.createCreate an Attio activity recordwrite
  • attio.activity_records.deleteDelete an Attio activity recorddestructive
  • attio.activity_records.getGet an Attio activity recordread
  • attio.activity_records.queryQuery Attio activity recordsread
  • attio.activity_records.update_appendUpdate an Attio activity record (append multiselect)write
  • attio.activity_records.update_overwriteUpdate an Attio activity record (overwrite multiselect)write
  • attio.attributes.createCreate an Attio attributewrite
  • attio.attributes.getGet an Attio attributeread
  • attio.attributes.listList Attio attributesread
  • attio.attributes.updateUpdate an Attio attributewrite
  • attio.call_recording_transcripts.getGet an Attio call transcript (deprecated)read
  • attio.call_recordings.createCreate an Attio call recordingwrite
  • attio.call_recordings.deleteDelete an Attio call recordingdestructive
  • attio.call_recordings.getGet an Attio call recordingread
  • attio.call_recordings.listList Attio call recordingsread
  • attio.comments.createCreate an Attio commentwrite
  • attio.comments.deleteDelete an Attio commentdestructive
  • attio.comments.getGet an Attio commentread
  • attio.emails.listList Attio emailsread
  • attio.files.deleteDelete an Attio filedestructive
  • attio.files.getGet an Attio fileread
  • attio.files.listList Attio filesread
  • attio.list_entries.assert_by_parentAssert an Attio list entry by parent recordwrite
  • attio.list_entries.createCreate an Attio list entrywrite
  • attio.list_entries.deleteDelete an Attio list entrydestructive
  • attio.list_entries.getGet an Attio list entryread
  • attio.list_entries.queryQuery Attio list entriesread
  • attio.list_entries.update_appendUpdate an Attio list entry (append multiselect)write
  • attio.list_entries.update_overwriteUpdate an Attio list entry (overwrite multiselect)write
  • attio.list_entry_attribute_values.listList Attio list entry attribute valuesread
  • attio.list_entry_attribute_values.writeWrite Attio list entry attribute valueswrite
  • attio.list_views.listList views for an Attio listread
  • attio.lists.createCreate an Attio listwrite
  • attio.lists.getGet an Attio listread
  • attio.lists.listList all Attio listsread
  • attio.lists.updateUpdate an Attio listwrite
  • attio.meetings.createCreate an Attio meetingwrite
  • attio.meetings.deleteDelete an Attio meetingdestructive
  • attio.meetings.getGet an Attio meetingread
  • attio.meetings.listList Attio meetingsread
  • attio.notes.createCreate an Attio notewrite
  • attio.notes.deleteDelete an Attio notedestructive
  • attio.notes.getGet an Attio noteread
  • attio.notes.listList Attio notesread
  • attio.notes.updateUpdate an Attio notewrite
  • attio.object_views.listList views for an Attio objectread
  • attio.objects.createCreate an Attio objectwrite
  • attio.objects.deleteDelete an Attio objectdestructive
  • attio.objects.getGet an Attio objectread
  • attio.objects.listList Attio objectsread
  • attio.objects.updateUpdate an Attio objectwrite
  • attio.record_attribute_values.listList Attio record attribute valuesread
  • attio.record_attribute_values.writeWrite Attio record attribute valueswrite
  • attio.record_entries.listList the Attio list entries for a recordread
  • attio.record_merges.createMerge two Attio recordsdestructive
  • attio.records.assertAssert (create or update) an Attio recordwrite
  • attio.records.createCreate an Attio recordwrite
  • attio.records.deleteDelete an Attio recorddestructive
  • attio.records.getGet an Attio recordread
  • attio.records.queryQuery Attio recordsread
  • attio.records.searchSearch Attio records across objectsread
  • attio.records.update_appendUpdate an Attio record (append multiselect)write
  • attio.records.update_overwriteUpdate an Attio record (overwrite multiselect)write
  • attio.select_options.createCreate an Attio select optionwrite
  • attio.select_options.listList Attio select optionsread
  • attio.select_options.updateUpdate an Attio select optionwrite
  • attio.self.identifyIdentify the Attio access tokenread
  • attio.sql.queryRun a SQL query against Attioread
  • attio.statuses.createCreate an Attio statuswrite
  • attio.statuses.listList Attio statusesread
  • attio.statuses.updateUpdate an Attio statuswrite
  • attio.tasks.createCreate an Attio taskwrite
  • attio.tasks.deleteDelete an Attio taskdestructive
  • attio.tasks.getGet an Attio taskread
  • attio.tasks.listList Attio tasksread
  • attio.tasks.updateUpdate an Attio taskwrite
  • attio.threads.getGet an Attio thread and its commentsread
  • attio.threads.listList Attio comment threadsread
  • attio.unsubscribed_emails.createAdd emails to the Attio unsubscribe listwrite
  • attio.webhooks.createCreate an Attio webhookwrite
  • attio.webhooks.deleteDelete an Attio webhookdestructive
  • attio.webhooks.getGet an Attio webhookread
  • attio.webhooks.listList Attio webhooksread
  • attio.webhooks.updateUpdate an Attio webhookwrite
  • attio.workspace_members.getGet an Attio workspace memberread
  • attio.workspace_members.listList Attio workspace membersread

Questions

The Attio MCP server, answered.

Is there an Attio MCP server for Claude?

Yes. actionlake is an MCP gateway: a remote MCP server that gives Claude, or another MCP client, 91 Attio actions, through the same eight tools it uses for every other connector. actionlake is independent; it is not made or endorsed by Attio.

What do I need to connect Attio?

Attio access token or workspace API key. The free call account { op: "connections.requirements", service: "attio" } lists exactly what to paste.

Can an AI agent delete or change things in Attio?

Only if its key allows it, and only with an explicit confirmation. 13 Attio actions are destructive, including delete an Attio note, delete an Attio meeting and delete an Attio task. Each runs only with confirm: true. Under the human confirm policy, or an approval rule on the key, the run waits until a named person approves it.

Will an AI agent use up my Attio API limit?

actionlake paces every call to the limits in the Attio service file: 100 calls a second per connection. Repeated reads are answered from cache (43 Attio actions can be), which never reaches Attio.

What does an Attio action cost?

One upstream call, the only unit actionlake bills. A list that pages bills one call per page (19 Attio actions page). Cache hits, searches, dry runs and calls Attio refused with 401, 403, 429 or a 5xx are free. The Free plan includes 100,000 calls a month with no card. Paid plans start at US$49 a month for 250,000 calls, with overage from US$0.30 down to US$0.18 per 1,000.

Which Attio API does it cover?

The Attio API v2 at api.attio.com. It is built from Attio's documentation as read on 18 September 2026. 91 actions in 1 area, each one in the signed service file (version 1.0.0).

Does actionlake keep my Attio data, and where?

actionlake processes and stores data in Sydney, Australia; there is no US region yet. Reads may be cached for up to an hour, and a write clears the reads it affects. Each run's request and response is kept, sealed, for your plan's trace window: 1 day on Free, 3 days on Starter, 7 days on Pro, 14 days on Team, 30 days on Business and 30 days on Enterprise. Your Attio credential is sealed under your tenant's key, never logged and never returned. Your traffic is not used to train models.

Which AI clients can use it?

Claude Code, tested by us end to end, and the Claude app as a custom connector, tested by us with an existing key. Other MCP clients that support remote servers over Streamable HTTP (MCP revisions 2025-06-18 and 2025-11-25) and OAuth dynamic client registration, or a bearer header, should connect the same way; we have not tested them. Or plain REST, under the same action names.

Give your agent Attio today.

Start free - 100,000 calls/month, no card. No signup. Hard caps on every key. Cached answers are free.