Skip to content
Scalekit Docs
Talk to an Engineer Dashboard

Connect AI agents to the Attio MCP server

Vendor MCP
Open markdown

The Attio MCP connector routes your AI agent's tool calls to Attio's own MCP server through Scalekit. Each user signs in to Attio once, and Scalekit stores and refreshes their tokens, so your agent never handles credentials. It comes with 38 tools.

Tools
38
What they doRead · write · destructive
24 · 12 · 224 read12 write2 destructive
Users sign in with
OAuth app
Scalekit's or your own

What you can do

  • Manage records: search, create, update, upsert, and merge people, companies, and other object records
  • Work with lists: add records to lists, update list entries, and browse the records in a list
  • Search conversations: search emails, notes, meetings, and call recordings by content or metadata, and read transcripts
  • Manage notes, tasks, and comments: create and update notes and tasks, and add or delete comments
  • Run reports: compute totals, averages, and grouped breakdowns across records or list entries

Setup

  1. Install the SDK

    Terminal window
    npm install @scalekit-sdk/node dotenv
  2. Set your credentials

    Add your Scalekit credentials to your .env file. Find values in app.scalekit.com > Developers > API Credentials.

    .env
    SCALEKIT_ENVIRONMENT_URL=<your-environment-url>
    SCALEKIT_CLIENT_ID=<your-client-id>
    SCALEKIT_CLIENT_SECRET=<your-client-secret>
  3. Create the Attio MCP connection

    In AgentKit > Connections, create an Attio MCP connection. The name you give it is the connection_name your code passes. See Configure connections.

    Scalekit credentials are available for Attio, so you don't need to register an OAuth app.

  4. Authorize a user and make your first call

    quickstart.mts
    import { ScalekitClient } from '@scalekit-sdk/node'
    import 'dotenv/config'
    import { createInterface } from 'node:readline/promises'
    const scalekit = new ScalekitClient(
    process.env.SCALEKIT_ENVIRONMENT_URL,
    process.env.SCALEKIT_CLIENT_ID,
    process.env.SCALEKIT_CLIENT_SECRET,
    )
    const actions = scalekit.actions
    const connector = 'attiomcp'
    const identifier = 'user_123'
    // Generate an authorization link for the user
    const { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })
    console.log('Authorize Attio MCP:', link)
    const rl = createInterface({ input: process.stdin, output: process.stdout })
    await rl.question('Press Enter after authorizing...')
    rl.close()
    // Make your first call
    const result = await actions.executeTool({
    connector,
    identifier,
    toolName: 'attiomcp_whoami',
    toolInput: {},
    })
    console.log(result)
    Terminal window
    npx tsx quickstart.mts

    Each user signs in once. See Authorize a user for the full flow and statuses.

Tools

Pass the exact name to execute_tool
Try in PlaygroundRequest a tool
  • attiomcp_get_call_recordingRetrieves the full details of a call recording by ID, including its status, timestamps, and complete transcript.Read-only

    Get Call Recording

    Retrieves the full details of a call recording by ID, including its status, timestamps, and complete transcript.

    Inputs

    call_recording_idstringrequired
    The ID of the call recording to retrieve.
    meeting_idstringrequired
    The ID of the meeting that the call recording is associated with.
  • attiomcp_get_email_contentRetrieves the full content and body of an email.Read-only

    Get Email Content

    Retrieves the full content and body of an email. Requires the mailbox_id and email_id, which can be obtained from email search results.

    Inputs

    email_idstringrequired
    The ID of the email to retrieve content for.
    mailbox_idstringrequired
    The ID of the mailbox containing the email.
  • attiomcp_get_note_bodyRetrieves the full body content of a note by its ID.Read-only

    Get Note Body

    Retrieves the full body content of a note by its ID.

    Inputs

    note_idstringrequired
    The ID of the note to retrieve the body of.
  • attiomcp_get_records_by_idsRetrieve a set of records by their IDs for a given object type.Read-only

    Get Records by IDs

    Retrieve a set of records by their IDs for a given object type. Returns an array of records with their attribute values; records not found are silently omitted from the response.

    Inputs

    objectstringrequired
    The ID or slug of the object for which to retrieve records.
    record_idsarrayrequired
    The IDs of the records to retrieve. Records that are not found will not be included in the response.
  • attiomcp_list_attribute_definitionsList attribute definitions for a given object, including their types, slugs, and configuration.Read-only

    List Attribute Definitions

    List attribute definitions for a given object, including their types, slugs, and configuration. Supports optional fuzzy search and pagination.

    Inputs

    objectstringrequired
    The ID or slug of the object for which to retrieve attribute definitions.
    include_archivedboolean
    If true, the response will include archived attributes.default false
    limitnumber
    Maximum number of results to return.default 10
    offsetnumber
    Number of results to skip for pagination.default 0
    querystring
    Plain text search term for fuzzy matching attribute titles and descriptions. If not specified or null, returns all attributes.
  • attiomcp_list_comment_repliesList replies to a top-level comment thread by its comment ID.Read-only

    List Comment Replies

    List replies to a top-level comment thread by its comment ID. Only works with top-level comments; reply comments cannot be used as the parent.

    Inputs

    comment_idstringrequired
    The ID of the parent comment thread to list replies for. Must be a top-level comment, not a reply.
    limitnumber
    Maximum number of replies to return.default 20
    offsetnumber
    Number of results to skip for pagination.default 0
  • attiomcp_list_commentsList paginated top-level comments on a record or list entry, with up to 5 replies each.Read-only

    List Comments

    List paginated top-level comments on a record or list entry, with up to 5 replies each. Provide either (parent_object + parent_record_id) for records, or (parent_list + parent_entry_id) for list entries.

    Inputs

    limitnumber
    Maximum number of top-level comments to return.default 10
    offsetnumber
    Number of results to skip for pagination.default 0
    parent_entry_idstring
    Filter to comments on a specific list entry. The entry ID. Must be provided with parent_list.
    parent_liststring
    Filter to comments on a specific list entry. The list the entry belongs to. Must be provided with parent_entry_id.
    parent_objectstring
    Filter to comments on a specific record. The object the record belongs to. Must be provided with parent_record_id.
    parent_record_idstring
    Filter to comments on a specific record. The record ID. Must be provided with parent_object.
  • attiomcp_list_list_attribute_definitionsList attribute definitions for a given list, including entry-level attribute types and slugs.Read-only

    List List Attribute Definitions

    List attribute definitions for a given list, including entry-level attribute types and slugs. Supports optional fuzzy search and pagination.

    Inputs

    liststringrequired
    The ID or slug of the list for which to retrieve attribute definitions.
    include_archivedboolean
    If true, the response will include archived attributes.default false
    limitnumber
    Maximum number of results to return.default 10
    offsetnumber
    Number of results to skip for pagination.default 0
    querystring
    Plain text search term for fuzzy matching attribute titles and descriptions. If not specified or null, returns all attributes.