Attio Simple MCP Server
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Attio Simple MCP Serverfind the contact info for Jane Smith at Acme Corp"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Attio Simple MCP Server
An MCP (Model Context Protocol) server that integrates Attio CRM with AI clients like Claude Code, Claude Desktop, ChatGPT, Windsurf, and Cursor.
This template was created by Manoel Lemos as a shortcut for people interested in deploying Attio MCP servers.
Features
14 Tools for managing companies, people, and notes in Attio
Schema Discovery - Dynamically discover your workspace's objects and attributes
Type-Safe - Full TypeScript with auto-generated Attio API types
Related MCP server: Attio MCP Server
Available Tools
Category | Tools |
Schema |
|
Companies |
|
People |
|
Notes |
|
Quick Start
1. Install Dependencies
npm install2. Configure Environment
cp .env.example .envEdit .env and add your Attio API key:
ATTIO_API_KEY="your_api_key_here"
ATTIO_WORKSPACE_SLUG="your-workspace-slug" # Optional: for web URLsGet your API key from Attio Settings > Developers > API Keys.
3. Build
npm run build4. Configure Your AI Client
Claude Desktop
Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS):
{
"mcpServers": {
"attio": {
"command": "node",
"args": ["/absolute/path/to/attio-mcp/dist/index.js"],
"env": {
"ATTIO_API_KEY": "your_api_key_here",
"ATTIO_WORKSPACE_SLUG": "your-workspace-slug"
}
}
}
}Claude Code
claude mcp add attio node /absolute/path/to/attio-mcp/dist/index.jsAdding Custom Objects
This template includes tools for standard Attio objects (companies, people). To add tools for your custom objects:
Use
get_workspace_schemato discover your workspace's objects and attributesCopy an existing tool (e.g.,
search-companies.ts) as a templateModify the API endpoint, fields, and types for your custom object
Register the new tool in
src/tools/index.ts
Development
npm run dev # Watch mode
npm run build # Build
npm test # Run tests
npm run test:watch # Watch testsLicense
MIT
Available Tools
14 toolscreate_companyA
Create a new company in Attio CRM. Only the company name is required. Optionally provide domains, description, and LinkedIn URL. Returns the created company record including the new record_id.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Company name (required) | |
| domains | No | Company domain names (e.g., ["example.com", "example.io"]) | |
| description | No | Company description or notes | |
| No | LinkedIn URL (e.g., "https://linkedin.com/company/example") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that it creates a new record and returns it, which covers basic behavior, but lacks details on permissions, error handling, rate limits, or side effects. It adequately describes the core operation but misses advanced behavioral traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose, followed by key details on required/optional parameters and return value in just two sentences. Every sentence adds essential information without redundancy, making it highly efficient and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a creation tool with no annotations and no output schema, the description is reasonably complete: it explains what the tool does, key parameters, and the return value. However, it could improve by addressing permissions or error scenarios, given the mutation nature and lack of structured safety hints.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters. The description adds minimal value by reiterating that 'Only the company name is required' and listing optional fields, but does not provide additional context beyond what the schema specifies, such as format constraints or usage examples.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Create a new company'), the target resource ('in Attio CRM'), and distinguishes it from siblings like 'update_company' or 'search_companies' by focusing on creation rather than modification or retrieval.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by stating 'Only the company name is required' and listing optional fields, but it does not explicitly guide when to use this tool versus alternatives like 'update_company' or 'search_companies', nor does it mention prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_noteB
Create a new note attached to a record in Attio CRM. Notes can be attached to people, companies, or any other object type. Supports plaintext and markdown formatting.
| Name | Required | Description | Default |
|---|---|---|---|
| parent_object | Yes | The object type to attach the note to (e.g., "people", "companies") | |
| parent_record_id | Yes | The record ID to attach the note to | |
| title | Yes | The note title (plaintext only, no formatting) | |
| content | Yes | The note content. Formatting depends on the format parameter. | |
| format | No | Content format: "plaintext" (default) uses \n for newlines, "markdown" supports headers (#, ##, ###), lists (-, *, 1.), bold (**), italic (*), strikethrough (~~), highlight (==), and links ([text](url)) | plaintext |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It mentions that the tool creates a new note and supports plaintext/markdown formatting, but does not disclose behavioral traits like required permissions, whether the operation is idempotent, error handling, or what happens on success/failure. For a mutation tool with zero annotation coverage, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized with two sentences that are front-loaded with the main purpose. Each sentence earns its place by specifying the tool's function and format support, though it could be slightly more structured (e.g., separating usage notes).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that this is a mutation tool with no annotations and no output schema, the description is incomplete. It lacks information on behavioral aspects (e.g., permissions, side effects), response format, or error conditions. While the schema covers parameters well, the overall context for safe and effective use is insufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description adds minimal value beyond the schema by mentioning attachment to records and format support, but does not provide additional syntax, examples, or constraints. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Create') and resource ('a new note attached to a record in Attio CRM'), specifying that notes can be attached to people, companies, or other object types. It distinguishes from sibling tools like create_company or create_person by focusing specifically on notes rather than creating records themselves.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by mentioning attachment to records and supported formats, but does not explicitly state when to use this tool versus alternatives (e.g., when to attach a note vs. updating a record directly). It provides some context but lacks explicit guidance on exclusions or comparisons with sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_personA
Create a new person in Attio CRM. You must provide at least one name field (first_name, last_name, or full_name) or at least one email address. All fields are optional, but you need either a name or email to identify the person. Returns the created person record including the new record_id.
| Name | Required | Description | Default |
|---|---|---|---|
| first_name | No | Person first name (use with last_name) | |
| last_name | No | Person last name (use with first_name) | |
| full_name | No | Person full name (alternative to first_name/last_name) | |
| email_addresses | No | Email addresses (e.g., ["john@example.com", "john.doe@work.com"]) | |
| description | No | Person description or notes | |
| No | LinkedIn URL (e.g., "https://linkedin.com/in/johndoe") | ||
| tags | No | Tags to apply to the person (e.g., ["Stanford", "Founder"]). New tags are auto-created if they don't exist. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It does reveal that the tool creates a new record (mutation operation) and specifies the return value ('Returns the created person record including the new record_id'). However, it doesn't mention permission requirements, rate limits, error conditions, or what happens with duplicate entries.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is perfectly sized at three sentences with zero waste. It's front-loaded with the core purpose, followed by critical constraints, and ends with the return value. Every sentence earns its place by providing essential information for tool selection and invocation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description does a good job covering the essentials: purpose, constraints, and return value. However, it could be more complete by addressing potential side effects (like auto-creation of new tags mentioned in the schema) and error scenarios. The 100% schema coverage helps compensate for some gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 7 parameters thoroughly. The description adds value by explaining the logical constraint that 'you need either a name or email to identify the person' and clarifying that 'All fields are optional' except for this constraint. This provides important semantic context beyond the schema's technical documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Create a new person in Attio CRM'), identifies the resource ('person'), and distinguishes it from siblings like 'create_company' or 'create_note' by specifying it's for person records. It goes beyond just restating the name by explaining what the tool actually does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context about when to use this tool ('Create a new person') and includes important prerequisites ('You must provide at least one name field or at least one email address'). However, it doesn't explicitly state when NOT to use it or mention alternatives like 'update_person' for existing records.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_companyA
Get complete details of a company by record_id. Returns all attributes. Set include_all=true to also fetch notes, tasks, comment threads, meetings, and list entries, or use individual flags (include_notes, include_tasks, etc.).
| Name | Required | Description | Default |
|---|---|---|---|
| record_id | Yes | The unique record ID of the company (e.g., from search results) | |
| include_notes | No | Include notes attached to this company | |
| include_tasks | No | Include tasks linked to this company | |
| include_threads | No | Include comment threads on this company | |
| include_meetings | No | Include meetings linked to this company | |
| include_list_entries | No | Include list entries where this company is a parent | |
| include_all | No | Include all related data (notes, tasks, threads, meetings, list entries) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that the tool returns data (read operation) and describes optional inclusion of related data, but lacks details on permissions, rate limits, error handling, or response format. It adds some behavioral context but not comprehensively.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose, followed by concise details on optional parameters. Both sentences are necessary and efficient, with zero wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and no output schema, the description adequately covers the tool's purpose and parameters but lacks information on return values, error cases, or operational constraints. It is minimally complete but has clear gaps for a read tool with multiple options.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description adds minimal value by mentioning include_all and individual flags, but does not provide additional meaning beyond what the schema specifies. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Get') and resource ('company'), specifies what is returned ('complete details', 'all attributes'), and distinguishes it from siblings by focusing on retrieving a single company by ID rather than searching or creating.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool (to fetch details of a specific company by record_id) and hints at alternatives (individual flags vs. include_all), but does not explicitly state when not to use it or compare it to sibling tools like search_companies.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_noteA
Get a single note by ID from Attio CRM. Returns the full note details including title, content, parent record information, and creation metadata.
| Name | Required | Description | Default |
|---|---|---|---|
| note_id | Yes | The unique ID of the note to retrieve |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool returns full note details including specific fields (title, content, parent record, creation metadata), which adds useful context beyond a basic read operation. However, it lacks details on error handling, permissions, or rate limits, leaving gaps for a tool with no annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that efficiently conveys the tool's purpose and return details. It is front-loaded with the core action and resource, followed by specifics on the output, with no redundant or unnecessary information. Every part of the sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (single parameter, no output schema, no annotations), the description is adequate but incomplete. It explains what the tool does and what it returns, which is sufficient for basic use. However, without annotations or output schema, it could benefit from more behavioral details like error cases or response structure to fully guide the agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, with the note_id parameter fully documented in the schema. The description does not add any parameter-specific information beyond what the schema provides, such as format examples or constraints. Baseline score of 3 is appropriate since the schema handles the parameter documentation adequately.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get'), resource ('a single note'), and method ('by ID from Attio CRM'), distinguishing it from sibling tools like create_note or search_people. It specifies retrieving a single note rather than listing or creating, making the purpose explicit and distinct.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention sibling tools like get_company or get_person for similar retrieval operations, nor does it specify prerequisites such as needing a note ID or when this is appropriate over search functions. Usage context is implied but not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_personA
Get complete details of a person by record_id. Returns all attributes. Set include_all=true to also fetch notes, tasks, comment threads, meetings, and list entries, or use individual flags (include_notes, include_tasks, etc.).
| Name | Required | Description | Default |
|---|---|---|---|
| record_id | Yes | The unique record ID of the person (e.g., from search results) | |
| include_notes | No | Include notes attached to this person | |
| include_tasks | No | Include tasks linked to this person | |
| include_threads | No | Include comment threads on this person | |
| include_meetings | No | Include meetings linked to this person | |
| include_list_entries | No | Include list entries where this person is a parent | |
| include_all | No | Include all related data (notes, tasks, threads, meetings, list entries) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It discloses the tool's read-only nature implicitly ('Get', 'Returns'), but doesn't mention authentication needs, rate limits, error conditions, or response format. It adds some context about optional data inclusion, but lacks comprehensive behavioral details for a tool with 7 parameters.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with zero waste: first states core purpose, second explains optional data inclusion. Every word earns its place, and the structure is front-loaded with the primary function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only tool with 7 parameters and no output schema, the description adequately covers the basic purpose and parameter usage. However, without annotations or output schema, it lacks details on return format, error handling, and performance considerations that would be helpful given the complexity of optional data inclusion.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 7 parameters thoroughly. The description adds minimal value by mentioning include_all and individual flags, but doesn't provide additional semantics beyond what's in the schema (e.g., performance implications of include_all). Baseline 3 is appropriate when schema does heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Get complete details') and resource ('a person'), distinguishing it from sibling tools like search_people (which lists multiple people) or update_person (which modifies). It explicitly mentions fetching by record_id and returning all attributes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving detailed person data, including optional related data via flags, but doesn't explicitly state when to use this vs. alternatives like search_people for broader queries or get_company for different entity types. No explicit exclusions or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_workspace_schemaA
Get Attio workspace schema. Default returns summary with key fields and select options. Use scope="full" for all fields, or scope="object"/"list" for specific items with all fields.
| Name | Required | Description | Default |
|---|---|---|---|
| scope | No | What to retrieve: "summary" (default - key fields only), "full" (all fields), "object" (one object with all fields), "list" (one list with all fields) | summary |
| object_slug | No | Object slug (required if scope="object"). Examples: companies, people | |
| list_slug | No | List slug (required if scope="list") | |
| force_reload | No | Bypass cache and fetch fresh schema from Attio API (default: false) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes the tool's behavior: it's a read operation (implied by 'Get'), explains caching behavior ('Bypass cache' via force_reload), and details output variations based on scope. However, it doesn't mention potential rate limits, error conditions, or authentication needs, leaving some behavioral aspects uncovered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is perfectly concise and front-loaded: the first sentence states the core purpose, followed by specific usage instructions. Every sentence earns its place by providing essential information about defaults, scope options, and parameter requirements without any redundant or vague language.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (4 parameters, no output schema, no annotations), the description is nearly complete. It covers purpose, usage guidelines, parameter semantics, and some behavioral aspects. The main gap is lack of information about return values/output format, which would be helpful since there's no output schema. However, it provides sufficient context for effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds significant value by explaining the semantic meaning of scope options beyond the schema's enum values: it clarifies what 'summary', 'full', 'object', and 'list' actually retrieve in practice (e.g., 'key fields only', 'all fields'), providing context that enhances parameter understanding beyond the structured schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Get') and resource ('Attio workspace schema'), specifying what data is retrieved. It distinguishes from sibling tools (which focus on specific entities like companies/people) by targeting schema metadata rather than entity data, making its purpose specific and differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use different scope values: 'summary' for key fields, 'full' for all fields, and 'object'/'list' for specific items with all fields. It clearly explains the default behavior and conditions for using optional parameters (e.g., object_slug required for scope='object'), offering complete usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_company_domainsC
Manage domains on a company. Supports four operations: "set" (replace all domains), "add" (append new domains), "remove" (delete specific domains), and "clear" (remove all domains).
| Name | Required | Description | Default |
|---|---|---|---|
| record_id | Yes | The unique record ID of the company (e.g., from search_companies or get_company) | |
| operation | Yes | Operation to perform: "set" (replace all domains), "add" (append new domains), "remove" (delete specific domains), "clear" (remove all domains) | |
| domains | No | Array of domain names to set, add, or remove. Not required for "clear" operation. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It describes the four operations but doesn't mention permission requirements, whether changes are reversible, rate limits, or what happens to existing domains during operations. For a mutation tool with zero annotation coverage, this is inadequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise and front-loaded: a single sentence that efficiently communicates the tool's scope and all four operations. Every word earns its place with zero waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description is insufficient. It doesn't explain what the tool returns, error conditions, or important behavioral details like whether operations are atomic. The 100% schema coverage helps, but the description should do more for a tool that modifies company data.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all three parameters thoroughly. The description adds minimal value by listing the four operation types, which is already covered in the schema's enum description. Baseline 3 is appropriate when schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Manage domains on a company' with specific operations (set, add, remove, clear). It distinguishes from siblings like manage_person_emails by specifying the resource (company domains), but doesn't explicitly differentiate from other company tools like update_company.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like update_company or other company management tools. It lists operations but offers no context about appropriate scenarios, prerequisites, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_person_emailsC
Manage email addresses on a person. Supports four operations: "set" (replace all emails), "add" (append new emails), "remove" (delete specific emails), and "clear" (remove all emails).
| Name | Required | Description | Default |
|---|---|---|---|
| record_id | Yes | The unique record ID of the person (e.g., from search_people or get_person) | |
| operation | Yes | Operation to perform: "set" (replace all emails), "add" (append new emails), "remove" (delete specific emails), "clear" (remove all emails) | |
| email_addresses | No | Array of email addresses to set, add, or remove. Not required for "clear" operation. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It explains the four operations but lacks critical details: whether changes are permanent/reversible, what permissions are required, if there are rate limits, or what happens on success/failure. For a mutation tool with zero annotation coverage, this is a significant gap in transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose and enumerates all operations without waste. Every word earns its place, making it easy for an agent to parse quickly. No extraneous information or redundancy is present.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given this is a mutation tool with no annotations and no output schema, the description is incomplete. It doesn't explain what the tool returns (e.g., success status, updated person object), error conditions, or side effects. For a tool that modifies data, this lack of behavioral and output context is inadequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description adds minimal value beyond the schema by listing the same four operations and noting that 'email_addresses' is not required for 'clear'. This meets the baseline for high schema coverage but doesn't provide additional semantic context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Manage email addresses on a person' with specific operations (set, add, remove, clear). It distinguishes itself from sibling tools like 'manage_person_tags' by focusing on emails rather than tags. However, it doesn't explicitly differentiate from other person-related tools like 'update_person', which might also handle email updates.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'update_person' or 'create_person'. It lists operations but doesn't specify prerequisites (e.g., needing a valid record_id) or contextual cues for choosing between operations. This leaves the agent without clear decision-making criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_person_tagsA
Manage tags on a person. Supports four operations: "set" (replace all tags), "add" (append new tags), "remove" (delete specific tags), and "clear" (remove all tags). Tags are auto-created if they don't exist in the workspace.
| Name | Required | Description | Default |
|---|---|---|---|
| record_id | Yes | The unique record ID of the person (e.g., from search_people results) | |
| operation | Yes | Operation to perform: "set" (replace all tags), "add" (append new tags), "remove" (delete specific tags), "clear" (remove all tags) | |
| tags | No | Array of tag names to set, add, or remove. Not required for "clear" operation. Tags must match existing options in Attio workspace. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden and does well by disclosing key behavioral traits: it describes the four distinct operations, mentions that tags are auto-created if they don't exist, and implies this is a mutation tool. It could improve by mentioning permissions or error conditions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with zero waste - the first sentence states the purpose and operations, the second adds important behavioral context about tag auto-creation. Every element earns its place and the information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description does well by explaining operations and tag behavior. It could be more complete by mentioning what the tool returns or error scenarios, but covers the essential context given the complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description adds some context about tag auto-creation and workspace matching, but doesn't provide significant additional parameter semantics beyond what's in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific verb ('manage') and resource ('tags on a person'), with explicit mention of the four supported operations. It distinguishes this tool from sibling tools like update_person or manage_person_emails by focusing exclusively on tag operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool (for tag management on people) and implicitly distinguishes it from other person-related tools. However, it lacks explicit guidance on when not to use it or named alternatives for similar operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_companiesA
Search for companies in Attio CRM. Supports filtering by text (name or domain) and date ranges. Supports sorting by various fields. All filters are optional. Returns company details including name, domains, description, LinkedIn URL, web_url, and created_at.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Text search in company name or domains (e.g., "acme", "acme.com", "tech"). Case-insensitive partial matching. | |
| created_after | No | Filter by creation date - only records created after this date (ISO 8601 format, e.g., "2024-01-01" or "2024-01-01T00:00:00Z"). | |
| created_before | No | Filter by creation date - only records created before this date (ISO 8601 format, e.g., "2024-12-31" or "2024-12-31T23:59:59Z"). | |
| sort_by | No | Field to sort results by. Options: "created_at", "name". | |
| sort_direction | No | Sort direction. Options: "asc" (ascending), "desc" (descending). Default: "desc". | desc |
| limit | No | Maximum number of results to return (default: 50, max: 500) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions filtering, sorting, and return details, but lacks critical behavioral traits such as pagination handling (beyond the limit parameter), rate limits, authentication requirements, error conditions, or whether this is a read-only operation (though implied by 'Search'). For a search tool with no annotations, this leaves significant gaps in understanding its behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded, with the first sentence stating the core purpose. Each subsequent sentence adds specific, non-redundant information about filtering, sorting, and return details, with zero waste or unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (6 parameters, no output schema, no annotations), the description is adequate but incomplete. It covers the purpose and basic functionality but lacks behavioral context like pagination, error handling, or performance limits. Without annotations or an output schema, more detail on return structure or operational constraints would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description adds minimal value beyond the schema by mentioning filtering by text and date ranges, but doesn't provide additional syntax, format details, or usage examples. This meets the baseline score of 3 when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Search for companies'), resource ('in Attio CRM'), and scope ('Supports filtering by text... and date ranges'). It distinguishes this tool from siblings like get_company (which retrieves a single company) and search_people (which searches for people instead of companies).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context through 'Supports filtering...' and 'All filters are optional,' suggesting this is for flexible company searches. However, it doesn't explicitly state when to use this tool versus alternatives like get_company (for specific IDs) or create_company (for new entries), nor does it mention any prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_peopleB
Search for people in Attio CRM. Supports filtering by text (name or email), company, tags, and date ranges. Supports sorting by various fields. All filters are optional. Returns person details including name, email addresses, description, LinkedIn URL, tags, web_url, and created_at.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Text search in person name or email (e.g., "john", "smith", "john@acme.com"). Case-insensitive partial matching. | |
| company_id | No | Filter by company record_id (from search_companies or get_company). Returns people associated with this company. | |
| tags | No | Filter people containing ANY of these tags (OR logic within tags). Example: ["VIP", "Investor"] matches people with VIP OR Investor tags. | |
| tags_exclude | No | Filter people NOT containing ANY of these tags (NOR logic within tags). Example: ["Inactive", "Archived"] excludes people with Inactive OR Archived tags. | |
| created_after | No | Filter by creation date - only records created after this date (ISO 8601 format, e.g., "2024-01-01" or "2024-01-01T00:00:00Z"). | |
| created_before | No | Filter by creation date - only records created before this date (ISO 8601 format, e.g., "2024-12-31" or "2024-12-31T23:59:59Z"). | |
| sort_by | No | Field to sort results by. Options: "created_at", "name". | |
| sort_direction | No | Sort direction. Options: "asc" (ascending), "desc" (descending). Default: "desc". | desc |
| limit | No | Maximum number of results to return (default: 50, max: 500) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions that 'All filters are optional' and describes the return format, which is helpful. However, it omits critical behavioral details such as pagination handling (beyond the limit parameter), rate limits, authentication requirements, error conditions, or whether this is a read-only operation—significant gaps for a search tool with multiple parameters.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded, starting with the core purpose and key features in a single, efficient sentence. A second sentence adds return details, which is useful but could be slightly more streamlined. Overall, it avoids unnecessary fluff and communicates essential information without waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (9 parameters, no annotations, no output schema), the description is partially complete. It covers the purpose, filters, and return fields adequately, but lacks details on behavioral aspects like pagination, errors, or performance limits. Without annotations or an output schema, the agent might struggle with full operational understanding, though the description provides a reasonable foundation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds some context by listing filter types (text, company, tags, date ranges) and sorting, but the input schema already has 100% coverage with detailed descriptions for all 9 parameters. The description does not provide additional syntax, examples, or constraints beyond what the schema specifies, so it meets the baseline for high schema coverage without adding substantial value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific verb ('Search for people') and resource ('in Attio CRM'), distinguishing it from sibling tools like create_person, get_person, update_person, and manage_person_tags. It specifies the search functionality with filtering capabilities, making the purpose unambiguous and differentiated from related operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage through its listing of supported filters (text, company, tags, date ranges) and sorting, suggesting when this tool might be appropriate. However, it lacks explicit guidance on when to use search_people versus alternatives like get_person (for specific records) or create_person (for new entries), leaving some ambiguity for the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_companyA
Update an existing company in Attio CRM by record ID. You can update name, description, and/or LinkedIn URL. Only provided fields will be updated; omitted fields remain unchanged. To manage domains, use add_company_domain and remove_company_domain tools instead. Returns the updated company record.
| Name | Required | Description | Default |
|---|---|---|---|
| record_id | Yes | The unique record ID of the company to update (e.g., from search_companies or get_company) | |
| name | No | Updated company name | |
| description | No | Updated company description or notes | |
| No | Updated LinkedIn URL (e.g., "https://linkedin.com/company/example") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes key behaviors: it's a mutation operation (implied by 'update'), uses partial updates ('Only provided fields will be updated; omitted fields remain unchanged'), and specifies the return value ('Returns the updated company record'). However, it lacks details on permissions, error handling, or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficiently structured in three sentences: the core purpose, behavioral detail on partial updates, and usage guidance with alternatives. Every sentence adds value without redundancy, and it's front-loaded with the main action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the mutation nature, 4 parameters, no annotations, and no output schema, the description does well by covering purpose, partial update behavior, domain management alternatives, and return value. However, it could improve by mentioning prerequisites (e.g., needing a valid record_id) or error scenarios, leaving minor gaps for a tool with no structured safety hints.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description adds minimal value beyond the schema by listing the updatable fields (name, description, LinkedIn URL) and mentioning the record_id requirement, but doesn't provide additional syntax or format details. This meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Update an existing company'), the target resource ('in Attio CRM by record ID'), and distinguishes it from sibling tools like create_company and get_company. It specifies the updatable fields (name, description, LinkedIn URL), making the purpose unambiguous and differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use this tool ('update an existing company by record ID') and when not to use it for related tasks ('To manage domains, use add_company_domain and remove_company_domain tools instead'). It also implicitly distinguishes it from create_company for new records and get_company for reading.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_personA
Update an existing person in Attio CRM by record ID. You can update name fields (first_name, last_name, full_name), description, and/or LinkedIn URL. Only provided fields will be updated; omitted fields remain unchanged. To manage email addresses, use add_person_email and remove_person_email tools instead. Returns the updated person record.
| Name | Required | Description | Default |
|---|---|---|---|
| record_id | Yes | The unique record ID of the person to update (e.g., from search_people or get_person) | |
| first_name | No | Updated first name | |
| last_name | No | Updated last name | |
| full_name | No | Updated full name | |
| description | No | Updated person description or notes | |
| No | Updated LinkedIn URL (e.g., "https://linkedin.com/in/johndoe") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively explains the partial update behavior ('Only provided fields will be updated; omitted fields remain unchanged') and the return value ('Returns the updated person record'), which are crucial for understanding the tool's effects. However, it doesn't mention potential error conditions, permissions, or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficiently structured in three sentences: first states purpose and scope, second explains update behavior, third provides usage guidance and return value. Every sentence adds essential information with zero wasted words, making it easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description does well by explaining the partial update behavior, return value, and alternative tools. However, it could be more complete by mentioning authentication requirements, error handling, or what constitutes a valid record_id. The absence of output schema means the description should ideally detail the return structure more explicitly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description adds minimal value by listing the updatable fields ('name fields, description, and/or LinkedIn URL'), but doesn't provide additional semantic context beyond what's in the schema. This meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Update an existing person'), target resource ('in Attio CRM'), and mechanism ('by record ID'), distinguishing it from sibling tools like create_person (for creation) and get_person (for retrieval). It precisely defines the scope of the operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use alternatives: 'To manage email addresses, use add_person_email and remove_person_email tools instead.' This clearly delineates the tool's scope from related sibling tools, helping the agent choose correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
2 tool updates
v1.0.0- Changed
create_note1 field changed- changed
Input schema / properties / parent_object / descriptionPrevious value: -"The object type to attach the note to (e.g., \"people\", \"companies\", \"investment_opportunities\", \"lp_opportunities\")"New value: +"The object type to attach the note to (e.g., \"people\", \"companies\")"
- Changed
get_workspace_schema1 field changed- changed
Input schema / properties / object_slug / descriptionPrevious value: -"Object slug (required if scope=\"object\"). Examples: companies, people, funds, investment_opportunities, lp_opportunities"New value: +"Object slug (required if scope=\"object\"). Examples: companies, people"
14 tool updates
- First observed
create_company - First observed
create_note - First observed
create_person - First observed
get_company - First observed
get_note - First observed
get_person - First observed
get_workspace_schema - First observed
manage_company_domains - First observed
manage_person_emails - First observed
manage_person_tags - First observed
search_companies - First observed
search_people - First observed
update_company - First observed
update_person
TDQS
Each tool has a clearly distinct purpose with no ambiguity. For example, create_company, get_company, update_company, and search_companies are well-differentiated, and manage_company_domains handles specific domain operations without overlapping with update_company. The descriptions reinforce these distinctions, making misselection unlikely.
Tool names follow a consistent verb_noun pattern throughout, such as create_company, get_person, search_people, and update_company. The manage_* tools also adhere to this pattern, and there are no deviations in naming conventions, ensuring predictability and readability.
With 14 tools, the server is well-scoped for CRM operations, covering companies, people, notes, and schema. Each tool earns its place by providing specific functionality without redundancy, such as separate tools for creation, retrieval, updating, searching, and managing attributes like domains and emails.
The tool set offers comprehensive CRUD and lifecycle coverage for companies and people, including creation, retrieval, updating, searching, and attribute management. Minor gaps include the lack of delete operations for companies, people, or notes, but agents can likely work around this by using other methods or the server's inherent limitations.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Connect AI to your Attio CRM. Manage contacts, companies, deals, and sales pipelines. Create tasks…
Automate Attio CRM workflows with fast search and bulk operations across companies, people, deals,…
Streamline your Attio workflows using natural language to search, create, update, and organize com…
An AI-first personal CRM you run in natural language: contacts, reminders, notes, and more.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to interact with Attio CRM through natural language, providing comprehensive CRM management including companies, people, lists, tasks, pipelines, and batch operations with advanced filtering capabilities.812Apache 2.0
- FlicenseNot gradedqualityNot gradedmaintenanceEnables AI assistants to interact with Attio CRM through natural language, providing complete access to companies, people, deals, tasks, lists, notes, and records with advanced search, batch operations, and relationship management.812-
- AlicenseNot gradedqualityDmaintenanceProvides seamless access to the Attio API for AI assistants like Claude and Cursor, enabling interaction with objects, records, tasks, notes, and more through human-readable tools.687MIT
- FlicenseNot gradedqualityDmaintenanceProvides tools to interact with the Attio API, enabling management of resources in an Attio workspace.5-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/mlemos/attio-simple-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server