Skip to content

Releases: kesslerio/attio-mcp-server

Release v1.6.1

14 May 23:49
c014870

Choose a tag to compare

New dedicated list configuration tools, npm provenance for supply chain verification, and Docker build fix.

What's New

Added

  • create-list tool (#1195, #1196) - Dedicated list creation with template expansion (sales_pipeline, recruiting_tracker, support_queue), parent-object validation against workspace objects, and dry-run preview
  • update-list-configuration tool (#1195, #1196) - Dedicated list update with immutable field detection (rejects parent_object changes), dry-run preview, and categorized error guidance
  • Shared ListConfigurationValidator for 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
  • .npmrc with save-exact and strict-peer-dependencies for safer installs

Changed

  • Universal list create and update paths now validate parent_object and 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:1 instead of node:20-slim for consistency with the project's package manager

Installation

npm install -g attio-mcp

Or update your existing installation:

npm update -g attio-mcp

Full Changelog: v1.6.0...v1.6.1

Release v1.6.0

05 May 22:11
25243f5

Choose a tag to compare

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, and update_deal tools for high-frequency company/deal writes without manually selecting resource_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-member now accepts valid workspace_member_id values returned by list-workspace-members (#1173, #1176)

Installation

npm install -g attio-mcp

Or update your existing installation:

npm update -g attio-mcp

Full Changelog: v1.5.0...v1.6.0

Release v1.5.0

09 Apr 21:31
9be0b5c

Choose a tag to compare

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_interactions tool (#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_record is more forgiving with legacy payload shapes by accepting data, 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_at and last_interaction queries, and made unsupported people/company modified timeframe 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_records are passed through correctly and deal updates no longer fail on valid status values such as MQL (#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-mcp

Or update your existing installation:

npm update -g attio-mcp

Full Changelog: v1.4.1...v1.5.0

v1.4.1 - Smithery Removal and List Tools Consolidation

29 Jan 01:14
3a1a2b0

Choose a tag to compare

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-entries with 4 auto-detected parameter modes
  • Consolidated list entry management tools (3 → 1) (#1075) - Enhanced manage-list-entry with 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

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_record now accepts legacy data payloads 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-mcp

Or update your existing installation:

npm update -g attio-mcp

Migration 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

30 Dec 01:49
117bbb2

Choose a tag to compare

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

Read more

v1.3.6 - Documentation Improvements

04 Dec 04:27
a37f0f7

Choose a tag to compare

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

03 Dec 06:23
aa98cd4

Choose a tag to compare

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/core package: 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-workercloudflare-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

02 Dec 23:55
1fdfbfe

Choose a tag to compare

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_TOKEN environment variable - Alternative to ATTIO_API_KEY for 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:

  1. Smithery (recommended) - Deploy via smithery.ai which handles OAuth automatically
  2. 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-resource discovery
  • Full OAuth 2.1 Resource Server compliance

Full Changelog

See CHANGELOG.md for complete details.

Release v1.2.2

01 Dec 20:25

Choose a tag to compare

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 --help and --version not 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.2

Contributors

Thanks to @mlemos for identifying and fixing both issues!

See CHANGELOG.md for full details.

Release v1.2.1

28 Nov 20:52
fb89bea

Choose a tag to compare

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