Anchord MCP
Provides identity resolution and pre-write safety checks for HubSpot records via OAuth. Enables AI agents to resolve HubSpot companies and people to canonical AnchorIDs, evaluate proposed writes with guard_write before committing to HubSpot, and ingest HubSpot records into Anchord's identity graph. Anchord reads from HubSpot to build identity graphs but never writes back to the CRM.
Provides identity resolution and pre-write safety checks for Salesforce records via OAuth. Enables AI agents to resolve Salesforce companies and people to canonical AnchorIDs, evaluate proposed writes with guard_write before committing to Salesforce, and ingest Salesforce records into Anchord's identity graph. Anchord reads from Salesforce to build identity graphs but never writes back to the CRM.
Provides identity resolution and pre-write safety checks for Stripe records via OAuth. Enables AI agents to resolve Stripe entities to canonical AnchorIDs, evaluate proposed writes with guard_write before committing to Stripe, and ingest Stripe records into Anchord's identity graph. Anchord reads from Stripe to build identity graphs but never writes back.
Anchord MCP Server
Identity resolution and pre-write safety checks for AI agents.
An MCP server that gives AI agents access to the Anchord identity resolution API. Resolve companies and people to canonical AnchorIDs, run pre-write safety checks, and export golden records — through the standard MCP tool interface.
Hosted API-backed. This MCP server is a thin proxy to the Anchord SaaS platform. All scoring, matching, validation, and data persistence happen server-side. No business logic runs locally.
Read-only by design. Anchord never writes to your external systems
(CRMs, databases, etc.). guard_write evaluates a proposed write and
returns allowed/blocked — the caller decides whether to proceed.
Quick start
1. Get an API key
Sign up at app.anchord.ai/signup and create an API key in Settings > API Keys.
2. Run with npx (no install)
ANCHORD_API_KEY=<YOUR_ANCHORD_API_KEY> npx -y @anchord/mcp-serverThat's it. The server starts over stdio and is ready for MCP clients.
3. Or connect to the hosted remote (zero install)
No local install needed. Point any MCP client that supports remote HTTP transport at the hosted endpoint:
{
"mcpServers": {
"anchord": {
"url": "https://mcp.anchord.ai/mcp",
"headers": {
"Authorization": "Bearer <YOUR_ANCHORD_API_KEY>"
}
}
}
}See docs/remote.md for full details, client compatibility notes, and a local fallback if your client does not yet support remote MCP.
Related MCP server: io.magellandata/spotlight
MCP client setup
Cursor (local stdio)
Add to .cursor/mcp.json (workspace) or ~/.cursor/mcp.json (global):
{
"mcpServers": {
"anchord": {
"command": "npx",
"args": ["-y", "@anchord/mcp-server"],
"env": {
"ANCHORD_API_KEY": "<YOUR_ANCHORD_API_KEY>"
}
}
}
}Claude Desktop
Add to your Claude Desktop config
(~/Library/Application Support/Claude/claude_desktop_config.json on macOS,
%APPDATA%\Claude\claude_desktop_config.json on Windows):
{
"mcpServers": {
"anchord": {
"command": "npx",
"args": ["-y", "@anchord/mcp-server"],
"env": {
"ANCHORD_API_KEY": "<YOUR_ANCHORD_API_KEY>"
}
}
}
}See examples/claude-desktop-config.json.
Remote MCP (for clients that support HTTP transport)
For zero-install remote access, use the hosted endpoint instead of a
local stdio process. This works with any MCP client that supports the
url + headers configuration format:
{
"mcpServers": {
"anchord": {
"url": "https://mcp.anchord.ai/mcp",
"headers": {
"Authorization": "Bearer <YOUR_ANCHORD_API_KEY>"
}
}
}
}No Node.js, no npx, no Docker required. If your client does not yet support remote MCP, use the local stdio setup above. See docs/remote.md for full details.
Docker
docker build -t anchord-mcp .
echo '{"jsonrpc":"2.0","id":1,"method":"initialize",...}' | \
docker run --rm -i -e ANCHORD_API_KEY=<YOUR_ANCHORD_API_KEY> anchord-mcpOr use the compose file for local testing:
cp examples/env.example .env
# Edit .env with your API key
docker compose upEnvironment variables
Variable | Required | Default | Description |
| Yes | — | Your Anchord API key (Bearer token) |
| No |
| API base URL |
See docs/auth.md for details on authentication and tenant scoping.
Available tools
Tool | Description |
| Resolve a company to a canonical AnchorID |
| Batch company resolution (max 200) |
| Resolve a person to a canonical AnchorID |
| Batch person resolution (max 200) |
| Fetch an AnchorID with optional linked records |
| Export the golden record for an AnchorID |
| Link a source record to an AnchorID |
| Soft-delete a source record link |
| Pre-write safety check (evaluation-only) |
| Batch pre-write safety check (max 200) |
| Ingest a source record into Anchord |
Full parameter reference: docs/tools.md
Safe agent workflow
The recommended sequence for agents writing to external systems:
1. ingest_record Push the source record into Anchord
(optional if using OAuth integrations)
2. resolve_company Match to a canonical AnchorID
or resolve_person → status: resolved | not_found | needs_review
3. IF needs_review STOP. Do not write.
Surface candidates to the user.
Direct them to the Review Queue.
4. guard_write Evaluate the proposed write
→ allowed: true | false (with block codes)
5. IF allowed The agent performs the external write.
Anchord never writes.
6. Log request_id Every response includes a request_id
for audit trail and debugging.Use get_entity or get_entity_export at any point to inspect AnchorID
details or retrieve the merged golden record.
Handling needs_review
Only resolve_* returns needs_review. It means Anchord found multiple
plausible matches and cannot auto-resolve with confidence.
For agents:
Do not write. The data is ambiguous.
Surface the candidates to the user — the response includes entity IDs and match scores.
Direct the user to the Review Queue:
https://app.anchord.ai/app/queues/needs-reviewRetry later. Once a human resolves the ambiguity, subsequent resolve calls return
resolved.
Example agent message:
I tried to resolve "Acme Corp" but Anchord found multiple possible matches. A human needs to review this in the Review Queue. I'll retry after it's resolved.
Error handling
When the API returns 4xx/5xx, the MCP tool response is marked isError: true
with a structured payload:
{
"error": "[422] BATCH_TOO_LARGE: Batch size must not exceed 100 records. (request_id: req_01ABC123)",
"status_code": 422,
"request_id": "req_01ABC123",
"details": { "records": ["Too many records."] }
}request_idis always present — from the API response body,x-request-idheader, or a client-generated UUID.detailscontains validation errors when available (null for non-JSON errors).API keys are never included in error messages.
Architecture
Local (stdio)
MCP Client (Cursor / Claude Desktop / etc.)
│ stdio (JSON-RPC)
▼
┌──────────────┐
│ MCP Server │ Node.js + TypeScript
│ (this pkg) │ Zod schemas · no business logic
└──────┬───────┘
│ HTTPS + Bearer auth
▼
┌──────────────┐
│ Anchord API │ Hosted SaaS — scoring, matching,
│ │ persistence, tenant isolation
└──────────────┘Hosted remote (HTTP)
MCP Client
│ HTTPS POST + Bearer token
▼
┌────────────────────────┐
│ mcp.anchord.ai │ CloudFront (TLS, routing)
└───────────┬────────────┘
▼
┌────────────────────────┐
│ Lambda (stateless) │ Per-request MCP server
│ Bearer → ApiClient │ No stored secrets
└───────────┬────────────┘
│ HTTPS + Bearer auth
▼
┌────────────────────────┐
│ Anchord API │ Same hosted SaaS backend
└────────────────────────┘Both paths expose the same 11 MCP tools and connect to the same API.
FAQ
Is Anchord self-hosted?
No. Anchord is a hosted SaaS platform. This MCP server is a thin client that calls the Anchord API. You need an API key from app.anchord.ai/signup.
Does Anchord write to my CRMs?
No. Anchord is strictly read-only. It reads data from connected systems
(Salesforce, HubSpot, Stripe) to build identity graphs, but never writes
back. guard_write returns a decision — the caller performs any actual write.
What systems does Anchord work with?
Anchord has OAuth integrations for Salesforce, HubSpot, and
Stripe. You can also push records from any system via the ingest_record
tool or the REST API.
What happens when there's ambiguity?
When resolve_* returns needs_review, it means multiple candidate
AnchorIDs matched with similar confidence. The agent should stop, surface
the candidates to a human, and direct them to the Anchord Review Queue.
Once resolved, subsequent calls return resolved.
What are the rate limits?
120 requests/minute per tenant. Batch endpoints accept up to 200 items (resolve, guard) or 100 records (ingest). Plan-level monthly and daily quotas apply. See docs/auth.md.
Links
License
Available Tools
11 toolsget_entityB
Fetch an AnchorID (canonical entity) by UUID. Optionally include linked source records via the include parameter (links, source_records, or both).
Inputs: entity_id (required), include.
get_entity_exportB
Export the golden record for an AnchorID. Returns the merged/canonical view of all linked source records as a single JSON object.
Inputs: entity_id (required).
guard_writeA
Evaluation-only pre-write safety check. Verifies the AnchorID exists, confidence meets threshold, no unresolved conflicts, and at least one canonical link is present. Returns allowed/blocked with reasons. This tool does NOT perform any write — the caller decides whether to proceed.
Inputs: entity_id (required), min_confidence, require_no_conflicts.
guard_write_batchA
Batch pre-write safety check for multiple AnchorIDs (max 200). Each item needs a client_ref for correlation. Returns per-item allowed/blocked decisions with reasons. Evaluation-only — never writes.
Inputs: items (required).
ingest_recordA
Ingest a single source record into Anchord. The record is matched to an AnchorID automatically. Requires a registered source (system). Wraps POST /ingest/batch with a single-item array.
Inputs: system (required), object_type (required), object_id (required), payload (required).
link_source_recordB
Create or reactivate a link between an AnchorID and a source record. Idempotent — calling twice returns the existing link.
Inputs: entity_id (required), source_record_id (required), confidence, linked_by.
resolve_companyA
Resolve a company to an AnchorID using domain, name, city/state, or external identifiers. Returns status (resolved | needs_review | not_found), confidence score, the canonical AnchorID, match reasons, and any ambiguous candidates.
Inputs: domain, name, city, state, +2 more.
resolve_company_batchA
Resolve multiple companies to AnchorIDs in a single call (max 200). Each item needs a client_ref for correlation and at least one identifying field. Ambiguous matches return status needs_review with candidate AnchorIDs.
Inputs: items (required).
resolve_personA
Resolve a person to an AnchorID using email, name, company domain, or external identifiers (Slack/Google user IDs). Returns status (resolved | needs_review | not_found), confidence score, the canonical AnchorID, match reasons, and any ambiguous candidates.
Inputs: email, name, company_entity_id, company_domain, +2 more.
resolve_person_batchA
Resolve multiple people to AnchorIDs in a single call (max 200). Each item needs a client_ref for correlation and at least one identifying field. Ambiguous matches return status needs_review with candidate AnchorIDs.
Inputs: items (required).
unlink_source_recordA
Soft-delete the link between an AnchorID and a source record. Idempotent — calling on an already-unlinked pair returns 200.
Inputs: entity_id (required), source_record_id (required).
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 11 tools
Each tool targets a distinct operation: entity retrieval, export, pre-write guards, ingest, linking/unlinking, and resolution for persons and companies. Batch variants are clearly separated from single-item counterparts, with no overlapping purposes.
All tools follow a consistent verb_noun pattern in snake_case (e.g., get_entity, guard_write, resolve_company_batch). The naming is predictable and easy to navigate.
With 11 tools, the set is well-scoped for an entity resolution and management server. Each tool serves a clear purpose, covering core workflows without unnecessary bloat or deficit.
The tool surface covers the essential lifecycle: resolution, ingestion, linking, pre-write guards, and retrieval. Minor gaps exist (no listing/search, no direct source record fetch, no entity update/delete), but the core functionality is well-supported.
Maintenance
Related MCP Connectors
Unified MCP Server is a remote MCP connector for AI agents and vertical AI products that provides access to 22,000+ authorized SaaS tools across 400+ integrations and 24 categories directly inside LLMs (Claude, GPT, Gemini, Cohere). Tools operate only on explicitly authorized customer connections, enabling agents to safely read and write against live third-party systems.
Remote MCP server to enrich company profiles with structured B2B data and confidence scores.
One MCP URL for all your connectors — scoped writes, enforced constraints, and a full audit trail.
Read-only MCP for identity resolution and write guardrails.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceHosted MCP server that gives AI agents read and write access to your full marketing & ecommerce stack — Google Analytics, Search Console, Google & Meta Ads, Shopify, WooCommerce, Shopware, Slack and LinkedIn. 100+ tools across 10 connectors. BYOK, OAuth 2.1.-
- AlicenseNot gradedqualityCmaintenanceHosted MCP server providing corporate ownership intelligence, enabling AI agents to look up parent companies, PE backing, corporate families, and portfolio siblings via natural language queries.1MIT

Proofable MCPofficial
AlicenseAqualityBmaintenanceEnables AI agents to manage identity, permissions, secrets, and verifiable proofs through a hosted MCP server, letting clients sign in and check what an agent may do before it acts.15286 npmApache 2.0
FullEnrich MCPofficial
AlicenseNot gradedqualityBmaintenanceEnables AI agents to search B2B people and companies, enrich contacts with verified emails and mobile phone numbers via waterfall enrichment across 25+ providers, and export results as CSV or JSON. Supports prospecting, org mapping, candidate sourcing, and outreach workflows through OAuth-authenticated remote access from any MCP-compatible client.14MIT