Releases: kesslerio/attio-mcp-server
Release v1.6.1
New dedicated list configuration tools, npm provenance for supply chain verification, and Docker build fix.
What's New
Added
create-listtool (#1195, #1196) - Dedicated list creation with template expansion (sales_pipeline,recruiting_tracker,support_queue), parent-object validation against workspace objects, and dry-run previewupdate-list-configurationtool (#1195, #1196) - Dedicated list update with immutable field detection (rejectsparent_objectchanges), dry-run preview, and categorized error guidance- Shared
ListConfigurationValidatorfor parent-object validation, immutable field detection, template expansion, and error categorization — consumed by both dedicated tools and universal create/update strategies (#1195) - npm provenance publishing — every release is now cryptographically linked to the GitHub Actions build and source commit via Sigstore, enabling supply chain verification with
npm view attio-mcp --json | jq .attestations .npmrcwithsave-exactandstrict-peer-dependenciesfor safer installs
Changed
- Universal list create and update paths now validate
parent_objectand detect immutable fields before API calls (#1195) - List error categorization prefers HTTP status codes over fragile string matching (#1196)
- Docker build stage now uses
oven/bun:1instead ofnode:20-slimfor consistency with the project's package manager
Installation
npm install -g attio-mcpOr update your existing installation:
npm update -g attio-mcpFull Changelog: v1.6.0...v1.6.1
Release v1.6.0
This release makes common company and deal writes easier, completes universal record support for custom objects, and fixes workspace-member lookups returned by list tools.
What's New
Added
- Scoped
create_company,update_company,create_deal, andupdate_dealtools for high-frequency company/deal writes without manually selectingresource_type(#1175)
Changed
- Maintenance updates for npm trusted publishing reliability and current runtime/dependency compatibility (#1172, #1178)
Fixed
- Universal record tools now support config-discovered custom objects for details, create, update, and delete, matching existing search support (#1161)
get-workspace-membernow accepts validworkspace_member_idvalues returned bylist-workspace-members(#1173, #1176)
Installation
npm install -g attio-mcpOr update your existing installation:
npm update -g attio-mcpFull Changelog: v1.5.0...v1.6.0
Release v1.5.0
This release adds record interaction history, expands search support for custom objects, and fixes several high-friction update, search, and validation issues across the Attio MCP server.
What's New
Added
get_record_interactionstool (#1116) - Retrieve interaction history for a record without leaving the MCP workflow
Changed
- Search tools now accept config-discovered custom object slugs and preserve custom object labels in search output and errors (#1138)
update_recordis more forgiving with legacy payload shapes by acceptingdata, top-level field updates, JSON string updates, and normalized stage title/status inputs (#1099, #1100)
Fixed
- Restored live timeframe search behavior for one-sided
created_atandlast_interactionqueries, and made unsupported people/companymodifiedtimeframe requests fail clearly instead of returning misleading empty results (#1126) - Fixed search translation regressions that could block valid queries from reaching Attio (#1131)
- Hardened people/company relationship validation so direct IDs, nested references, and array-based company payloads consistently trigger company existence checks during people updates (#1125, #1129, #1130)
- Fixed task creation so
linked_recordsare passed through correctly and deal updates no longer fail on valid status values such asMQL(#1098, #1109) - Increased response size handling for bulk search results from 40 KB to 500 KB to avoid truncating larger result sets (#1110)
- Redacted credential-derived metadata from Smithery diagnostics and hardened internal debug logging so runtime troubleshooting no longer exposes secret-derived details (#1141, #1142, #1147, #1169, #1170)
Installation
npm install -g attio-mcpOr update your existing installation:
npm update -g attio-mcpFull Changelog: v1.4.1...v1.5.0
v1.4.1 - Smithery Removal and List Tools Consolidation
What's Changed
Added
- UniversalRecord type guards (#1073) - Type discrimination functions for list/record handling
isAttioRecord(),isAttioList(),getRecordId()functions- Foundation for enforcing UniversalRecord type across universal tools
Changed
- Consolidated list filter tools (5 → 1) (#1069) - Enhanced
filter-list-entrieswith 4 auto-detected parameter modes - Consolidated list entry management tools (3 → 1) (#1075) - Enhanced
manage-list-entrywith 3 auto-detected parameter modes - List tools consolidation complete (#1071) - Added runtime deprecation warnings for 8 legacy list tools (removal in v2.0.0)
- Smithery references temporarily removed (#1097) - Smithery changed their deployment model to require external hosting
- ChatGPT users should use Cloudflare Worker deployment
- Will be restored when Cloudflare Worker hosting is set up for Smithery
Fixed
- Universal tools (
search_records,get_record_details) now return proper list format (#1068) - Universal update/search flows now preserve list-native shapes (#1073)
update_recordnow accepts legacydatapayloads and normalizes inputs properly (#1099, #1100)- MCP Registry publishing workflow schema version and re-publish errors (#1066)
- Operations playbook validation tests now work across all workspaces (#973, #1081)
Installation
npm install -g attio-mcpOr update your existing installation:
npm update -g attio-mcpMigration Notes
- Smithery users: Smithery is temporarily unavailable. Use Cloudflare Worker for ChatGPT integration.
- List tool users: Legacy list tools (
get-lists,add-record-to-list, etc.) are deprecated but still work. See Migration Guide.
Full Changelog: v1.4.0...v1.4.1
Release v1.4.0
Changes since v1.3.6:
- Fix: Update @modelcontextprotocol/sdk peerDependency to ~1.24.0 #1063 (117bbb2)
- Fix: Exclude failing CI tests from offline test suite #1061 (d53d18f)
- Fix: Skip status-field-validation test in CI until core package build added (ebcb64c)
- Release: v1.4.0 (eff5c6d)
- Refactor: Tool alias system simplification #1041 (#1057) (a0f5ba2)
- Fix: Preserve line breaks in note content #1052 (12481e1)
- Refactor: Rename transformation type 'select_title_to_id' to 'select_title_to_array' (#1055) (a6b5149)
- chore: Daily changelog for 2025-12-25 (#1049) (a424266)
- Fix: People search results show 'Unnamed' instead of full name #1051 (#1054) (10dbfe1)
- Refactor: Strategy Pattern for CRUD error handlers #1001 (#1050) (917fb8c)
- chore: Daily changelog for 2025-12-24 (#1047) (d6ea9b5)
- chore: Daily changelog for 2025-12-17 (#1042) (7fbbd47)
- Fix: Select field type mismatch - array expected #1045 (#1046) (82e240f)
- Fix: Deal stage/UTM validation #1043 (#1044) (c064dac)
- Refactor: MCP-compliant tool naming (snake_case, verb-first) #1039 (#1040) (69389ac)
- Chore: Deprecate legacy tools in favor of universal tools #1022 (#1038) (3ba77e5)
- Test: Fix 4 flaky tests causing pre-push hook failures #1036 (#1037) (5879af7)
- Enhancement: Fetch custom object display names from Attio API #1017 (#1035) (37e245b)
- Merge pull request #1034 from kesslerio/refactor/issue-1030-select-formatattributevalue (34fb937)
- Refactor: Remove unused normalizeLocation #1030 (b5e21ec)
- Refactor: Normalize select arrays #1030 (c01987e)
- Merge pull request #1033 from kesslerio/chore/daily-changelog-2025-12-16 (6ac6019)
- Merge branch 'main' into chore/daily-changelog-2025-12-16 (5b4fd39)
- Merge pull request #1032 from kesslerio/feature/issue-1023-split-integration-patterns (0aa5d30)
- Docs: Make patterns executable via MCP tool calls #1023 (5a27a73)
- Docs: Convert pattern files to MCP tool call format #1023 (2bad341)
- chore: Daily changelog for 2025-12-16 (8567559)
- Fix: Address PR review feedback #1023 (e48b226)
- Enhancement: Split integration patterns by use case for progressive discovery #1023 (5ebc3c1)
- Feature: Configurable option fetch delay (d1dbde7)
- Feature: Implement select-field transformer for human-readable option values #1019 (#1029) (ac1e6e4)
- Docs: Add skills documentation and streamline README (#1028) (1fcc367)
- Feature: Create attio-skill-generator meta-skill #1020 (#1024) (ac7a037)
- Fix: Pin @modelcontextprotocol/sdk to ~1.24.0 #1025 (#1026) (409fa62)
- Enhancement: Create attio-mcp-usage skill for workflow guidance and error prevention (#1021) (bdee6db)
- chore: Daily changelog for 2025-12-13 (#1016) (a39ca9d)
- Feature: Generate workspace schema skills #983 (#1014) (4c92591)
- Refactor: De-duplicate offline tests #1009 (#1013) (12d2ed5)
- Fix: Field persistence false warnings for status fields #995 (#1011) (4f63269)
- Chore: Prevent false positives in automated Claude PR reviews (#1012) (e9ced1b)
- Test: Add comprehensive unit tests for MetadataResolver error paths (#1010) (7fb257b)
- chore: Daily changelog for 2025-12-12 (#1007) (bd9385b)
- Refactor: Consolidate metadata fetching + Modularize UniversalUpdateService #984 (#1006) (f93d3c6)
- Fix: Daily changelog workflow missing approvals (#1005) (0a05275)
- Fix: Claude PR Review false positives from missing dynamic import detection #1002 (#1003) (c9a5a5e)
- Fix: Enhance uniqueness constraint violation errors #990 (#1000) (15f0d1f)
- Merge pull request #999 from kesslerio/feature/issue-991-complex-attr-validation (737c764)
- Fix: changelog and personal-name clears #991 (a270a98)
- Fix: allow null clears in array complex fields #991 (04bc9c5)
- Fix: robust complex error parsing #991 (084bdc9)
- Fix: enhance complex error messaging #991 (149ca90)
- Fix: tighten complex validation types #991 (6546b0d)
- Fix: validate complex attributes #991 (5e74bac)
- Fix: Record-reference auto-transformation for people.company #997 (#998) (d89c746)
- Fix: Multi-select array auto-transformation for custom attributes #992 (#996) (f794766)
- Fix: MCP attribute aliasing & errors (967f7cd)
- Fix: AttributeOptionsService empty select fallback to status #987 (#989) (b981a91)
- Fix: Handle status UUID strings (#988) (7166061)
- Fix: UX improvements for attribute options tool #980 (#981) (a0e8b9e)
- Fix: Tighten daily changelog criteria #900 (#979) (d3a12a4)
- Feature: Add records_get_attribute_options tool + fix unknown types #975 (#976) (eed63ac)
- Fix: Add path alias import detection to PR review scope generator #977 (#978) (848567d)
- Refactor: Extract search services from UniversalSearchService #935 (#974) (8021d54)
- Fix: MCP E2E Test Suite Stabilization - Phase 2 (#971) (079e709)
- Merge pull request #967 from kesslerio/fix/issue-857-e2e-drift (3d03721)
- Refactor: reuse record parsing helper in tasks #857 (4799d8c)
- Fix: Offline tests fail without ATTIO_API_KEY (dynamic import) #969 (#970) (0dc0239)
- Fix: Offline tests fail without ATTIO_API_KEY (dynamic import) #969 (#970) (b5cd5e7)
- Refactor: Use shared parseRecordResult in task-crud update tests #857 (514aa2c)
- Refactor: add shared task result parsing #857 (2de6822)
- Fix: Stabilize task E2E assertions #857 (e2ba4f6)
- Fix: Extract only final Claude response, not intermediate tool chatter (#965) (fb9c80a)
- Feature: Add phone validation to @attio-mcp/core #951 (#964) (a82c723)
What's Changed
- Feature: Add phone validation to @attio-mcp/core #951 by @kesslerio in #964
- Fix: Extract only final Claude response, not intermediate tool chatter by @kesslerio in #965
- Fix: Offline tests fail without ATTIO_API_KEY (dynamic import) #969 by @kesslerio in #970
- Fix: Stabilize task E2E assertions #857 by @kesslerio in #967
- Fix: MCP E2E Test Suite Stabilization - Phase 2 by @kesslerio in #971
- Refactor: Extract search services from UniversalSearchService #935 by @kesslerio in #974
- Fix: Add path alias import detection to PR review scope #977 by @kesslerio in #978
- Feature: Add records_get_attribute_options tool + fix unknown types #975 by @kesslerio in #976
- Fix: Tighten daily changelog criteria #900 by @kesslerio in #979
- Fix: UX improvements for attribute options tool #980 by @kesslerio in #981
- Fix: Handle status UUID strings by @kesslerio in #988
- Fix: AttributeOptionsService empty select fallback to status #987 by @kesslerio in #989
- Fix: MCP attribute aliasing & errors by @kesslerio in #993
- Fix: Multi-select array auto-transformation for custom attributes #992 by @kesslerio in #996
- Fix: Record-reference auto-transformation for people.company #997 by @kesslerio in #998
- Fix: Complex attribute validation by @kesslerio in #999
- Fix: Enhance uniqueness constraint violation errors #990 by @kesslerio in #1000
- Fix: Claude PR Review false positives from missing dynamic import detection #1002 by @kesslerio in #1003
- Fix: Daily changelog workflow missing approvals #1004 by @kesslerio in #1005
- Refactor: Consolidate metadata fetching + Modularize UniversalUpdateService #984 by @kesslerio in #1006
- chore: Daily changelog for 2025-12-12 by @github-actions[bot] in #1007
- Test: Add comprehensive unit tests for MetadataResolver error paths by @kesslerio in #1010
- Chore: Prevent false positives in automated Claude PR reviews by @kesslerio in #1012
- Fix: Field persistence false warnings for status fields #995 by @kesslerio in #1011
- Refactor: De-duplicate offline tests by @kesslerio in #1013
- Feature: Generate workspace schema skills #983 by @kesslerio in #1014
- chore: Daily changelog for 2025-12-13 by @github-actions[bot] in #1016
- Enhancement: Create attio-mcp-usage skill for workflow guidance and error prevention by @kesslerio in #1021
- Fix: Pin @modelcontextprotocol/sdk to ~1.24.0 #1025 by @kesslerio in #1026
- Feature: Create attio-skill-generator meta-skill #1020 by @kesslerio in #1024
- Docs: Add skills documentation and streamline README #1027 by @kesslerio in #1028
- Feature: Implement select-field transformer for human-readable option values #1019 by @kesslerio in #1029
- Feature: Configurable option fetch delay by @kesslerio in #1031
- Enhancement: Split integration patterns by use case for progressive discovery #1023 by @kesslerio in #103...
v1.3.6 - Documentation Improvements
What's Changed
Documentation and testing infrastructure improvements for remote deployment support.
Added
-
Install Script Test Suite (#958)
- 28 automated tests for bash install scripts
- Validates API key sanitization, config merging, prerequisite checks
- Tests for
install-claude-desktop.sh,install-cursor.sh,install-claude-code.sh
-
E2E Remote Mode Troubleshooting Guide (#958)
- Smithery debugging (scanner, OAuth, sessions)
- Cloudflare Worker debugging (Error 1042, KV namespace, token encryption)
- Network debugging tools and commands
- Local vs remote comparison table
Changed
- Expanded Remote Deployment Production Checklist (#958)
- Security section with CORS, headers, encryption requirements
- Cloudflare Worker-specific checklist with validation commands
- Smithery-specific checklist
- Rollback procedures for all deployment methods
- Health check monitoring setup examples (Datadog, UptimeRobot, Prometheus)
- Added monitoring cost warnings for production planning
- Added wrangler prerequisites documentation
Fixed
- Script existence validation in test suite (#958)
- Type safety improvements in shell test utilities (#958)
- Added JSDoc documentation for backup file pattern matching (#958)
Full Changelog: v1.3.5...v1.3.6
v1.3.5 - Self-hosted Remote MCP Server
Self-host your own remote MCP server
Use Attio from Claude.ai, ChatGPT, or any remote MCP client without relying on third-party platforms.
This release addresses Issue #928 by providing a free, self-hosted alternative to Smithery for remote OAuth MCP deployment. Deploy once to Cloudflare Workers (free tier) and access your Attio data from anywhere.
Why This Matters
- No third-party dependencies - Your credentials stay on infrastructure you control
- Works with any remote MCP client - Claude.ai, ChatGPT, custom integrations
- Completely free - Cloudflare Workers free tier is more than sufficient
- Global edge deployment - Low latency from anywhere in the world
Added
- Full remote MCP server for Cloudflare Workers with complete JSON-RPC MCP protocol support
@attio-mcp/corepackage: Edge-compatible tool handlers that work in both local and remote environments- Dynamic client registration (RFC 7591) for Claude Desktop and Claude.ai OAuth
- Encrypted token storage with AES-256-GCM in Cloudflare Workers KV
Security
- OAuth redirect URI validation with exact hostname matching (prevents host-prefix spoofing)
- Auth code / session token separation (prevents authorization code reuse)
- Known MCP client allowlist: Claude.ai, ChatGPT, localhost origins
Changed
- Renamed
cloudflare-oauth-worker→cloudflare-mcp-server(now a full MCP server, not just OAuth broker)
Documentation
Full Changelog: v1.3.0...v1.3.5
v1.3.0 - OAuth Access Token Support
OAuth Access Token Support
This release adds comprehensive OAuth access token support, enabling delegated authentication for third-party integrations and users who prefer OAuth over API keys.
Added
ATTIO_ACCESS_TOKENenvironment variable - Alternative toATTIO_API_KEYfor OAuth integrations- Local OAuth helper script (
npm run oauth:setup) - Interactive PKCE flow for obtaining tokens - Token refresh command (
npm run oauth:refresh) - Refresh expired tokens - Cloudflare Worker OAuth template - Self-hostable OAuth broker at
examples/cloudflare-oauth-worker/ - Comprehensive OAuth documentation - Guide at
docs/guides/oauth-authentication.md - Improved 401 error messages - OAuth-specific guidance for token expiration
Platform Support
| Platform | Method | Setup |
|---|---|---|
| Claude Desktop | Local PKCE | npm run oauth:setup |
| Smithery | Automatic | OAuth handled by platform |
| ChatGPT | Remote OAuth | Smithery or Cloudflare Worker |
Claude Desktop Usage
# Obtain tokens via local PKCE flow
npm run oauth:setup{
"mcpServers": {
"attio": {
"command": "npx",
"args": ["-y", "attio-mcp"],
"env": {
"ATTIO_ACCESS_TOKEN": "your_oauth_access_token_here"
}
}
}
}ChatGPT Support
ChatGPT requires remote OAuth (no localhost callbacks). Two options:
- Smithery (recommended) - Deploy via smithery.ai which handles OAuth automatically
- Self-hosted Cloudflare Worker - Deploy the template at
examples/cloudflare-oauth-worker/
The Cloudflare Worker provides the required endpoints:
- Remote callback handling
- Dynamic Client Registration (DCR)
.well-known/oauth-protected-resourcediscovery- Full OAuth 2.1 Resource Server compliance
Full Changelog
See CHANGELOG.md for complete details.
Release v1.2.2
Critical Fixes
This release addresses critical bugs that made v1.2.1 non-functional.
Fixed
- axios dependency (#917, #919) - Fixed package crash on startup due to missing axios in dependencies. The package was completely broken.
- CLI symlink resolution (#916, #920) - Fixed
attio-mcp --helpand--versionnot working when installed globally via npm.
Important
v1.2.1 is broken - please upgrade to v1.2.2 immediately.
npm install -g attio-mcp@1.2.2Contributors
Thanks to @mlemos for identifying and fixing both issues!
See CHANGELOG.md for full details.
Release v1.2.1
Changes since v1.2.0:
- Chore: Bump version to 1.2.1 (#927) (fb89bea)
- Feature: Improve deal field validation and stage discovery #925 (#926) (cfe0cc8)
- Docs: Clarify npm package name (attio-mcp vs attio-mcp-server) #903 (#915) (246d221)
- Chore(deps-dev): Bump vite in the npm_and_yarn group across 1 directory (#902) (3f86d43)
- Chore(deps): Bump ora from 7.0.1 to 9.0.0 (#907) (4cd43f3)
- Chore(deps-dev): Bump lint-staged from 16.1.6 to 16.2.6 (#908) (336f9f3)
- Chore(deps-dev): Bump @typescript-eslint/eslint-plugin (#909) (e92bc30)
What's Changed
- Chore(deps-dev): Bump @typescript-eslint/eslint-plugin from 8.43.0 to 8.46.2 by @dependabot[bot] in #909
- Chore(deps-dev): Bump lint-staged from 16.1.6 to 16.2.6 by @dependabot[bot] in #908
- Chore(deps): Bump ora from 7.0.1 to 9.0.0 by @dependabot[bot] in #907
- Chore(deps-dev): Bump vite from 7.1.5 to 7.1.12 in the npm_and_yarn group across 1 directory by @dependabot[bot] in #902
- Docs: Clarify npm package name (attio-mcp vs attio-mcp-server) #903 by @kesslerio in #915
- Feature: Improve deal field validation and stage discovery #925 by @kesslerio in #926
- Chore: Bump version to 1.2.1 by @kesslerio in #927
Full Changelog: v1.2.0...v1.2.1