
Security News
TC39 Advances Temporal to Stage 4 Alongside Several ECMAScript Proposals
TC39’s March 2026 meeting advanced eight ECMAScript proposals, including Temporal reaching Stage 4 and securing its place in the ECMAScript 2026 specification.
AI-powered access to Attio CRM. Manage contacts, companies, deals, tasks, and notes. Search records, update pipelines, and automate workflows for sales and GTM teams.
A comprehensive Model Context Protocol (MCP) server for Attio, providing complete CRM surface coverage. This server enables AI assistants like Claude and ChatGPT to interact directly with your entire Attio workspace through natural language—manage Deals, Tasks, Lists, People, Companies, Records, and Notes without falling back to raw API calls.
Transform your CRM workflows with AI-powered automation. Instead of clicking through multiple screens, simply ask Claude or ChatGPT to find prospects, update records, manage pipelines, and analyze your data using natural language commands.
🎉 v1.0.0 Milestone: Complete Attio CRM surface coverage with full ChatGPT Developer Mode integration.
"Find all AI companies with 50+ employees that we haven't contacted in 30 days and add them to our Q1 outreach list"
⚠️ Smithery Temporarily Unavailable: Smithery has changed their deployment model to require external hosting. We're working on Cloudflare Worker hosting for ChatGPT users. In the meantime, use Tier 4 (Cloudflare Worker) for ChatGPT/remote access.
ChatGPT Pro/Plus users can access the Attio toolset through natural language using a self-hosted Cloudflare Worker:
68% Tool Reduction: Consolidated 40+ resource-specific tools into 14 universal operations for consistent, powerful CRM management.
search_records and search_records_advancedsearch_records_by_relationshipbatch_recordsget_record_infosearch_records_by_relationshipsearch_records_by_content and search_records_by_timeframefilter-list-entries - Unified filtering with 4 modesmanage-list-entry - Unified entry management with 3 modesget-list-entries - Retrieve list entriesget-record-list-memberships - Find record's list membershipsresource_type parameterSupercharge Claude's Attio knowledge with pre-built skills that prevent common errors and teach best practices.
| Skill | Purpose | Setup |
|---|---|---|
| attio-mcp-usage | Error prevention + universal workflow patterns | Bundled - just use it |
| attio-workspace-schema | YOUR workspace's exact field names and options | npx attio-discover generate-skill --all --zip |
| attio-skill-generator | Create custom workflow skills (advanced) | Python + prompting |
Quick Start (solves "wrong field name" errors):
npx attio-discover generate-skill --all --zip
# Import ZIP into Claude Desktop: Settings > Skills > Install Skill
See Skills Documentation for complete setup and usage guides.
Intelligent shortcuts that help Claude work faster with your CRM data:
See Using Out-of-the-Box Prompts for detailed documentation and examples.
NEW: 10 pre-built MCP prompts for common Sales workflows. No setup required—just use them!
| Prompt | Description | Key Arguments | Example |
|---|---|---|---|
people_search.v1 | Find people by title, company, territory | query, limit, format | Find AE in fintech, SF |
company_search.v1 | Query companies by domain, segment, plan | query, limit, format | Find SaaS companies >100 employees |
deal_search.v1 | Filter deals by owner, stage, value, close date | query, limit, format | Find deals >$50k closing Q1 |
log_activity.v1 | Log calls/meetings/emails to records | target, type, summary, dry_run | Log call with Nina at Acme |
create_task.v1 | Create tasks with natural language due dates | title, content, due_date, dry_run | Create task: Follow up tomorrow |
advance_deal.v1 | Move deal to target stage with next action | deal, target_stage, create_task, dry_run | Advance deal to "Proposal Sent" |
add_to_list.v1 | Add records to a List by name or ID | records, list, dry_run | Add 5 companies to Q1 Outreach |
qualify_lead.v1 | Research lead with web + BANT/CHAMP scoring | target, framework, limit_web, dry_run | Qualify Acme Corp with BANT |
meeting_prep.v1 | 360° prep: notes, tasks, deals, agenda | target, format, verbosity | Prep for meeting with Acme CEO |
pipeline_health.v1 | Weekly snapshot: created/won/slipped + risks | owner, timeframe, segment | Pipeline health for @me last 30d |
# Search for prospects
"Use people_search.v1: Find Account Executives in San Francisco at fintech companies, limit 25"
# Log activity
"Use log_activity.v1: Log a call with Nina at Acme Corp, discussed Q1 pricing, create follow-up task"
# Qualify a lead (with web research)
"Use qualify_lead.v1: Qualify Acme Corp using BANT framework, dry run mode"
# Meeting prep
"Use meeting_prep.v1: Prepare for meeting with contact at Acme Corp"
All read prompts support:
format: table | json | ids (default: table)fields_preset: sales_short | full (default: sales_short)verbosity: brief | normal (default: brief)All write prompts support:
dry_run: true | false (default: false) - Preview changes without executingPrompts include built-in token optimization:
MCP_DEV_META=true for token counts in responsesPROMPT_TELEMETRY_ENABLED=true for usage loggingMAX_PROMPT_TOKENS environment variableFor complete prompt documentation, see docs/prompts/v1-catalog.md.
/objects/tasks/attributes has limitations, handled with fallback patternsDISABLE_UNIVERSAL_TOOLS=true environment variable (deprecated)readOnlyHint, destructiveHint) so OpenAI Developer Mode can auto-approve reads and request confirmation for writes.ATTIO_MCP_TOOL_MODE in Smithery configuration for full access.search, fetch, aaa-health-check), explicitly configure ATTIO_MCP_TOOL_MODE: 'search' in Smithery dashboard when Developer Mode is unavailable.For detailed troubleshooting and solutions, see TROUBLESHOOTING.md and GitHub Issues.
Build powerful CRM queries with multi-criteria AND/OR filtering. See the Advanced Search Guide for complete examples and operator reference.
⚠️ IMPORTANT: Correct Package Name
The npm package name is
attio-mcp(notattio-mcp-server). The GitHub repository is namedattio-mcp-server, but the npm package was renamed toattio-mcpin June 2025. Installingattio-mcp-serverwill give you an outdated v0.0.2 release with only 4 legacy tools.
| Client | Local Install (Tier 1-2) | Cloudflare Worker (Tier 3) |
|---|---|---|
| Claude Desktop | ✅ Recommended | ✅ Full support |
| Claude Web | N/A | ✅ Full support |
| ChatGPT (Pro/Plus) | N/A | ✅ Recommended |
| Cursor IDE | ✅ Full support | ✅ Full support |
| Claude Code (CLI) | ✅ Recommended | Partial |
Choose your installation method:
Best for: Developers who prefer local installations with automatic configuration.
One-command scripts that install attio-mcp and configure your client automatically.
curl -fsSL https://raw.githubusercontent.com/kesslerio/attio-mcp-server/main/scripts/install-claude-desktop.sh | bash
curl -fsSL https://raw.githubusercontent.com/kesslerio/attio-mcp-server/main/scripts/install-cursor.sh | bash
curl -fsSL https://raw.githubusercontent.com/kesslerio/attio-mcp-server/main/scripts/install-claude-code.sh | bash
These scripts will:
attio-mcp npm package globally (if needed)Best for: Power users who prefer full control or use unsupported clients.
npm install -g attio-mcp
~/Library/Application Support/Claude/claude_desktop_config.json~/.config/Claude/claude_desktop_config.json%APPDATA%\Claude\claude_desktop_config.json{
"mcpServers": {
"attio-mcp": {
"command": "attio-mcp",
"env": {
"ATTIO_API_KEY": "your_api_key_here"
}
}
}
}
npm install -g attio-mcp
Location: ~/.cursor/mcp.json
{
"mcpServers": {
"attio-mcp": {
"command": "attio-mcp",
"env": {
"ATTIO_API_KEY": "your_api_key_here"
}
}
}
}
echo '{"command":"attio-mcp","env":{"ATTIO_API_KEY":"your_key_here"}}' | claude mcp add-json attio-mcp --stdin -s user
Edit ~/.claude/settings.json:
{
"mcpServers": {
"attio-mcp": {
"command": "attio-mcp",
"env": {
"ATTIO_API_KEY": "your_api_key_here"
}
}
}
}
For development or custom deployments:
git clone https://github.com/kesslerio/attio-mcp-server.git
cd attio-mcp-server
npm install
npm run build
Run directly:
ATTIO_API_KEY=your_key node dist/index.js
# Global installation for CLI usage
npm install -g attio-mcp
# Or local installation for project integration
npm install attio-mcp
Best for: Teams needing centralized OAuth, multi-user access, mobile access, or running MCP without local installation.
Deploy your own Attio MCP server on Cloudflare Workers with full OAuth 2.1 support.
Mobile Access: With a remote MCP server, you can use Attio tools from:
| Feature | Cloudflare Worker |
|---|---|
| Setup complexity | Medium |
| OAuth built-in | ✅ |
| Mobile app access | ✅ |
| Multi-user access | ✅ |
| Custom domain | ✅ |
| Self-hosted | ✅ |
| Team deployments | ✅ Full |
| Cost | Free tier |
cd examples/cloudflare-mcp-server
npm install
wrangler kv:namespace create "TOKEN_STORE"
# Update wrangler.toml with the KV namespace ID
wrangler secret put ATTIO_CLIENT_ID
wrangler secret put ATTIO_CLIENT_SECRET
wrangler secret put TOKEN_ENCRYPTION_KEY
wrangler deploy
After deployment, configure your client with your Worker URL:
See Cloudflare Worker Deployment Guide for:
get_record_attribute_options tool (#975) - Get valid options for select/status fields with enhanced error messages--option-fetch-delay flagsnake_case, verb-first naming (old names work via aliases until v2.0.0)select_title_to_array for clarityUpgrading from v1.3.x or earlier? Tool names have changed to follow MCP naming conventions.
Old names still work via backward-compatible aliases, but will be removed in v2.0.0 (Q1 2026).
| Old Name (Deprecated) | New Name (MCP-compliant) | Notes |
|---|---|---|
records_search | search_records | Verb-first pattern |
records_get_details | get_record_details | Verb-first pattern |
records_get_attributes | get_record_attributes | Verb-first pattern |
records_discover_attributes | discover_record_attributes | Verb-first pattern |
records_search_advanced | search_records_advanced | Verb-first pattern |
records_search_by_relationship | search_records_by_relationship | Verb-first pattern |
records_search_by_content | search_records_by_content | Verb-first pattern |
records_search_by_timeframe | search_records_by_timeframe | Verb-first pattern |
records_batch | batch_records | Verb-first pattern |
search-records | search_records | snake_case format |
get-record-details | get_record_details | snake_case format |
create-record | create_record | snake_case format |
update-record | update_record | snake_case format |
delete-record | delete_record | snake_case format |
create-note | create_note | snake_case format |
list-notes | list_notes | snake_case format |
smithery-debug-config | smithery_debug_config | snake_case format |
Action Required: Update your integrations to use new tool names before Q1 2026. See MIGRATION-GUIDE.md for the complete migration table.
The server supports two authentication methods—both use the same Bearer token scheme:
| Method | Environment Variable | Best For |
|---|---|---|
| API Key (recommended) | ATTIO_API_KEY | Long-term integrations, personal use |
| OAuth Access Token | ATTIO_ACCESS_TOKEN | OAuth integrations, third-party apps |
Note: If both are set,
ATTIO_API_KEYtakes precedence.OAuth Users: For detailed setup including PKCE flow and token refresh, see OAuth Authentication Guide.
# Option 1: API Key (recommended for most users)
export ATTIO_API_KEY="your_api_key_here"
# Option 2: OAuth Access Token (for OAuth integrations)
# export ATTIO_ACCESS_TOKEN="your_oauth_access_token_here"
export ATTIO_WORKSPACE_ID="your_workspace_id_here"
# Optional: Deal defaults configuration
export ATTIO_DEFAULT_DEAL_STAGE="Interested" # Default stage for new deals
export ATTIO_DEFAULT_DEAL_OWNER="user@company.com" # Default owner email address (see below)
export ATTIO_DEFAULT_CURRENCY="USD" # Default currency for deal values
# Test the MCP server
attio-mcp --help
# Discover your Attio workspace attributes
attio-discover attributes
The MCP server uses field mapping files to translate between natural language and Attio's API field names. This configuration is essential for proper operation.
# 1. Copy the sample configuration to create your user config
cp configs/runtime/mappings/sample.json configs/runtime/mappings/user.json
# 2. Edit user.json to match your workspace's custom fields
# Focus on the "objects.companies" and "objects.people" sections
configs/runtime/mappings/)default.json - Standard Attio CRM fields (loaded first, don't edit)sample.json - Examples with custom field templates (copy from this, not used at runtime)user.json - YOUR workspace-specific overrides (merged on top of default.json)💡 Key Insight:
user.jsonis merged on top ofdefault.json, so only include overrides and additions. Don't duplicate mappings that already exist indefault.json.
The MCP server loads configuration in this order:
default.json - Contains all standard Attio fields (Name, Description, Team, etc.)user.json - Your custom additions/overrides are merged on topExample: If default.json has "Name": "name" and your user.json also has "Name": "name", that's wasted tokens. Only include fields that are:
{
"mappings": {
"attributes": {
"objects": {
"companies": {
"// Only your custom fields - defaults are inherited": "",
"Lead Score": "lead_score",
"B2B Segment": "b2b_segment",
"Industry Vertical": "custom_industry_field"
}
}
},
"lists": {
"// Only your specific lists": "",
"Sales Pipeline": "your-pipeline-list-id"
}
}
}
✅ Good: Only custom/override fields
❌ Wasteful: Duplicating standard fields from default.json
⚠️ Without proper mapping configuration, the MCP server may not work correctly with your custom fields and lists.
Next: Verify your field mappings work by testing with Claude:
"Find companies in our pipeline with lead score > 80"
Add to your Claude Desktop MCP configuration:
Deal Owner Email (for deal owner defaults):
The ATTIO_DEFAULT_DEAL_OWNER should be set to the email address of the workspace member who should own new deals by default. This is typically your own email address or the email address of your sales team lead.
# Example:
export ATTIO_DEFAULT_DEAL_OWNER="john.smith@company.com"
Note: The system will automatically resolve email addresses to workspace member references when creating deals.
Deal Stages:
Deal stages are specific to your workspace. Check your Attio workspace settings or use the discover-attributes command to find available stages for deals.
{
"mcpServers": {
"attio-mcp": {
"command": "attio-mcp",
"env": {
"ATTIO_API_KEY": "your_api_key_here",
"ATTIO_WORKSPACE_ID": "your_workspace_id_here",
"ATTIO_DEFAULT_DEAL_STAGE": "Interested",
"ATTIO_DEFAULT_DEAL_OWNER": "user@company.com",
"ATTIO_DEFAULT_CURRENCY": "USD"
}
}
}
}
"Find all companies in the AI space with 50+ employees that we haven't contacted in 30 days"
"Show me all prospects added yesterday"
"Find companies created in the last 7 days with revenue over $10M"
"Create a task to follow up with Microsoft about the enterprise deal"
"Add John Smith from Google to our Q1 prospect list"
"Create a list of all SaaS companies who opened our last 3 emails but haven't responded"
"Show me engagement metrics for our outbound campaign this month"
"Add all attendees from the conference to our nurture sequence"
"Show me all enterprise customers with upcoming renewal dates in Q1"
"Create tasks for check-ins with accounts that haven't been contacted in 60 days"
"Find all customers who mentioned pricing concerns in recent notes"
"Update all companies with missing industry data based on their domains"
"Export all contacts added this quarter to CSV"
"Merge duplicate company records for Acme Corporation"
Comprehensive documentation is available in the docs directory:
⚠️ Note: Universal tools documentation is currently being updated to match the latest implementation. Use the API directly or check the source code for the most accurate interface definitions.
📋 Implementation Status: These docs describe the Attio API endpoints. For MCP tool usage, refer to universal tools documentation above.
git clone https://github.com/kesslerio/attio-mcp-server.git
cd attio-mcp-server
npm install
npm run build
npm run test:offline
For local development and testing with Smithery Playground:
npm run dev # Opens Smithery Playground with local server
See docs/deployment/smithery-cli-setup.md for detailed Smithery CLI development setup.
npm test # Run all tests
npm run test:offline # Run only offline tests (no API required)
npm run test:integration # Integration tests (requires ATTIO_API_KEY)
npm run e2e # E2E tests (requires ATTIO_API_KEY)
For E2E/integration tests, create .env with your ATTIO_API_KEY. See the Testing Guide for detailed setup.
npm run build # Build TypeScript
npm run test # Run all tests
npm run test:offline # Run tests without API calls
npm run analyze:token-footprint # Generate baseline MCP token footprint report
npm run lint # Check code style
npm run check # Full quality check
npm run setup:test-data # Create test data for integration tests
We welcome contributions! Please see our Contributing Guidelines for details on:
This initial release provides a solid foundation for CRM automation.
This project is licensed under the Apache License 2.0 - see the LICENSE file for details.
Original Work Attribution: This project is based on initial work by @hmk under BSD-3-Clause license, with substantial modifications and enhancements by @kesslerio. The original BSD license notice is preserved in the LICENSE file as required.
Ready to transform your CRM workflow? Install Attio MCP Server today and experience the future of CRM automation with AI!
npm install -g attio-mcp
FAQs
AI-powered access to Attio CRM. Manage contacts, companies, deals, tasks, and notes. Search records, update pipelines, and automate workflows for sales and GTM teams.
We found that attio-mcp demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
TC39’s March 2026 meeting advanced eight ECMAScript proposals, including Temporal reaching Stage 4 and securing its place in the ECMAScript 2026 specification.

Research
/Security News
Since January 31, 2026, we identified at least 72 additional malicious Open VSX extensions, including transitive GlassWorm loader extensions targeting developers.

Research
Six malicious Packagist packages posing as OphimCMS themes contain trojanized jQuery that exfiltrates URLs, injects ads, and loads FUNNULL-linked redirects.