---
title: "Attio MCP server for AI agents - actionlake"
description: "Give Claude 91 Attio actions through one MCP server: workspace members, notes, meetings. Your agent never holds the credential. 100,000 calls a month free."
canonical: https://actionlake.com/connectors/attio
updated: 2026-09-21
---

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.

[Connect Attio free](https://actionlake.com/console?start=sandbox) [See pricing](https://actionlake.com/pricing)

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
```

- 91 actions in one signed file
- 43 read look, never change
- 35 write create and update
- 13 wait for a yes destructive, 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_token` Attio 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 call
   check { 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 v2`api.attio.com`

**Built from**

Attio's documentation, read 18 September 2026[api.attio.com](https://api.attio.com/openapi/api)

**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.

- **43** read look, never change
- **35** write create and update
- **13** destructive wait 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.

| Action | What it does | Effect | Same name in |
| --- | --- | --- | --- |
| `attio.workspace_members.list` List Attio workspace members | List every member of the workspace, with their email address and access level. | read | `identity.user.list` 474 connectors |
| `attio.notes.list` List Attio notes | List notes, optionally only those on one parent record. | read | `crm.contact_note.list` 29 connectors |
| `attio.meetings.list` List Attio meetings | List meetings, filtered by linked record, participant or date window. | read | `comm.event.list` 61 connectors |
| `attio.tasks.list` List Attio tasks | List tasks, filtered by assignee, linked record or completion. | read | `work.task.list` 122 connectors |
| `attio.emails.list` List Attio emails | List the emails Attio has synced from connected mailboxes, filtered by linked record, participant, domain or date. | read | `comm.email.list` 28 connectors |
| `attio.notes.create` Create an Attio note | Write a note against a record. | write | `crm.contact_note.create` 28 connectors |
| `attio.meetings.create` Create an Attio meeting | Record a meeting in Attio, with its participants and linked records. | write | `comm.event.create` 52 connectors |
| `attio.workspace_members.get` Get an Attio workspace member | Get one workspace member by id. | read | `identity.user.get` 399 connectors |
| `attio.tasks.create` Create an Attio task | Create a task, optionally linked to records and assigned to workspace members. | write | `work.task.create` 127 connectors |
| `attio.notes.delete` Delete an Attio note | Permanently delete one note. | destructive | `crm.contact_note.delete` 21 connectors |
| `attio.lists.create` Create an Attio list | Create a new list over a parent object. | write | `crm.contact_list.create` 29 connectors |
| `attio.activity_records.create` Create an Attio activity record | Create one activity record. `values` is a map of attribute api_slug to value array. | write | `crm.activity.create` 20 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. Read read
   Which Attio deals are due to close this month, and what are they worth in total?
   calls `attio.records.query`
2. Plan write
   Turn a finished meeting into a recap note and a follow-up task in Attio.
   calls `attio.meetings.get` `attio.call_recordings.list` `attio.call_recording_transcripts.get` `attio.notes.create` `attio.tasks.create`
3. Plan write
   Stand up a new object with a status attribute and its options in Attio. Ask me before anything is sent or changed.
   calls `attio.objects.create` `attio.objects.list` `attio.attributes.create` `attio.select_options.list` `attio.select_options.create`
4. Write write
   Create an Attio note in Attio. Show me exactly what you will send before you save it.
   calls `attio.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 decides Create 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 decides Permanently 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 decides Merge 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 note `attio.notes.delete`
- Delete an Attio meeting `attio.meetings.delete`
- Delete an Attio task `attio.tasks.delete`
- Merge two Attio records `attio.record_merges.create`
- Delete an Attio activity record `attio.activity_records.delete`
- Delete an Attio list entry `attio.list_entries.delete`
- Delete an Attio file `attio.files.delete`
- Delete an Attio call recording `attio.call_recordings.delete`
- Delete an Attio webhook `attio.webhooks.delete`
- Delete an Attio record `attio.records.delete`
- Delete an Attio object `attio.objects.delete`
- Delete an Attio activity type `attio.activities.delete`
- Delete an Attio comment `attio.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.

do attio.notes.delete confirm_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: "lead@example.com" },
    { match: "attio.meetings.delete", approver: "lead@example.com" },
    { match: "attio.tasks.delete", approver: "lead@example.com" }
  ]
}
```

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.

- 1 upstream call per action all 91 Attio actions
- 19 actions page each page of a long list is one call
- 43 reads can be cached a cache hit costs nothing
- 100,000 calls a month, free paid plans from US$49 a month for 250,000

[See pricing](https://actionlake.com/pricing)

Action index

## Every Attio action.

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

**Records 91**

- `attio.activities.create` Create an Attio activity type write
- `attio.activities.delete` Delete an Attio activity type destructive
- `attio.activities.get` Get an Attio activity type read
- `attio.activities.list` List Attio activities read
- `attio.activities.update` Update an Attio activity type write
- `attio.activity_records.create` Create an Attio activity record write
- `attio.activity_records.delete` Delete an Attio activity record destructive
- `attio.activity_records.get` Get an Attio activity record read
- `attio.activity_records.query` Query Attio activity records read
- `attio.activity_records.update_append` Update an Attio activity record (append multiselect) write
- `attio.activity_records.update_overwrite` Update an Attio activity record (overwrite multiselect) write
- `attio.attributes.create` Create an Attio attribute write
- `attio.attributes.get` Get an Attio attribute read
- `attio.attributes.list` List Attio attributes read
- `attio.attributes.update` Update an Attio attribute write
- `attio.call_recording_transcripts.get` Get an Attio call transcript (deprecated) read
- `attio.call_recordings.create` Create an Attio call recording write
- `attio.call_recordings.delete` Delete an Attio call recording destructive
- `attio.call_recordings.get` Get an Attio call recording read
- `attio.call_recordings.list` List Attio call recordings read
- `attio.comments.create` Create an Attio comment write
- `attio.comments.delete` Delete an Attio comment destructive
- `attio.comments.get` Get an Attio comment read
- `attio.emails.list` List Attio emails read
- `attio.files.delete` Delete an Attio file destructive
- `attio.files.get` Get an Attio file read
- `attio.files.list` List Attio files read
- `attio.list_entries.assert_by_parent` Assert an Attio list entry by parent record write
- `attio.list_entries.create` Create an Attio list entry write
- `attio.list_entries.delete` Delete an Attio list entry destructive
- `attio.list_entries.get` Get an Attio list entry read
- `attio.list_entries.query` Query Attio list entries read
- `attio.list_entries.update_append` Update an Attio list entry (append multiselect) write
- `attio.list_entries.update_overwrite` Update an Attio list entry (overwrite multiselect) write
- `attio.list_entry_attribute_values.list` List Attio list entry attribute values read
- `attio.list_entry_attribute_values.write` Write Attio list entry attribute values write
- `attio.list_views.list` List views for an Attio list read
- `attio.lists.create` Create an Attio list write
- `attio.lists.get` Get an Attio list read
- `attio.lists.list` List all Attio lists read
- `attio.lists.update` Update an Attio list write
- `attio.meetings.create` Create an Attio meeting write
- `attio.meetings.delete` Delete an Attio meeting destructive
- `attio.meetings.get` Get an Attio meeting read
- `attio.meetings.list` List Attio meetings read
- `attio.notes.create` Create an Attio note write
- `attio.notes.delete` Delete an Attio note destructive
- `attio.notes.get` Get an Attio note read
- `attio.notes.list` List Attio notes read
- `attio.notes.update` Update an Attio note write
- `attio.object_views.list` List views for an Attio object read
- `attio.objects.create` Create an Attio object write
- `attio.objects.delete` Delete an Attio object destructive
- `attio.objects.get` Get an Attio object read
- `attio.objects.list` List Attio objects read
- `attio.objects.update` Update an Attio object write
- `attio.record_attribute_values.list` List Attio record attribute values read
- `attio.record_attribute_values.write` Write Attio record attribute values write
- `attio.record_entries.list` List the Attio list entries for a record read
- `attio.record_merges.create` Merge two Attio records destructive
- `attio.records.assert` Assert (create or update) an Attio record write
- `attio.records.create` Create an Attio record write
- `attio.records.delete` Delete an Attio record destructive
- `attio.records.get` Get an Attio record read
- `attio.records.query` Query Attio records read
- `attio.records.search` Search Attio records across objects read
- `attio.records.update_append` Update an Attio record (append multiselect) write
- `attio.records.update_overwrite` Update an Attio record (overwrite multiselect) write
- `attio.select_options.create` Create an Attio select option write
- `attio.select_options.list` List Attio select options read
- `attio.select_options.update` Update an Attio select option write
- `attio.self.identify` Identify the Attio access token read
- `attio.sql.query` Run a SQL query against Attio read
- `attio.statuses.create` Create an Attio status write
- `attio.statuses.list` List Attio statuses read
- `attio.statuses.update` Update an Attio status write
- `attio.tasks.create` Create an Attio task write
- `attio.tasks.delete` Delete an Attio task destructive
- `attio.tasks.get` Get an Attio task read
- `attio.tasks.list` List Attio tasks read
- `attio.tasks.update` Update an Attio task write
- `attio.threads.get` Get an Attio thread and its comments read
- `attio.threads.list` List Attio comment threads read
- `attio.unsubscribed_emails.create` Add emails to the Attio unsubscribe list write
- `attio.webhooks.create` Create an Attio webhook write
- `attio.webhooks.delete` Delete an Attio webhook destructive
- `attio.webhooks.get` Get an Attio webhook read
- `attio.webhooks.list` List Attio webhooks read
- `attio.webhooks.update` Update an Attio webhook write
- `attio.workspace_members.get` Get an Attio workspace member read
- `attio.workspace_members.list` List Attio workspace members read

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.

## More connectors like Attio

Shares the most action names with

- [Close 43](https://actionlake.com/connectors/close)
- [Follow Up Boss 34](https://actionlake.com/connectors/follow-up-boss)
- [Freshsales 20](https://actionlake.com/connectors/freshsales)
- [Copper 20](https://actionlake.com/connectors/copper)
- [Salesloft 17](https://actionlake.com/connectors/salesloft)
- [VaultRE 16](https://actionlake.com/connectors/vaultre)

Joins with, on shared entities

- [ERPNext (Frappe) 6](https://actionlake.com/connectors/erpnext-frappe)
- [ScalePad 6](https://actionlake.com/connectors/scalepad)
- [HaloPSA 5](https://actionlake.com/connectors/halopsa)
- [Odoo 5](https://actionlake.com/connectors/odoo)
- [Unified.to 5](https://actionlake.com/connectors/unified-to)
- [Productive.io 5](https://actionlake.com/connectors/productive-io)

Browse

- [All CRM & sales connectors](https://actionlake.com/connectors/category/crm-and-sales)
- [All connectors](https://actionlake.com/connectors)
- [How actionlake compares](https://actionlake.com/compare)

actionlake is independent. It is not made or endorsed by Attio; the name is the vendor's own. Counts are from the Attio service file, version 1.0.0.

## Give your agent Attio today.

[Connect Attio free](https://actionlake.com/console?start=sandbox) [See pricing](https://actionlake.com/pricing)

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

---

Source: https://actionlake.com/connectors/attio
More: https://actionlake.com/llms.txt
