Skip to main content
Glama
nolenation04

Anchord MCP

by nolenation04

Anchord MCP 서버

AI 에이전트를 위한 ID 확인 및 쓰기 전 안전성 검사.

npm License: MIT

AI 에이전트가 Anchord ID 확인 API에 액세스할 수 있도록 하는 MCP 서버입니다. 표준 MCP 도구 인터페이스를 통해 기업과 개인을 표준 AnchorID로 확인하고, 쓰기 전 안전성 검사를 실행하며, 골든 레코드를 내보낼 수 있습니다.

호스팅된 API 기반. 이 MCP 서버는 Anchord SaaS 플랫폼에 대한 씬 프록시(thin proxy)입니다. 모든 점수 산정, 매칭, 검증 및 데이터 지속성은 서버 측에서 발생합니다. 로컬에서 실행되는 비즈니스 로직은 없습니다.

설계상 읽기 전용. Anchord는 외부 시스템(CRM, 데이터베이스 등)에 절대 쓰기 작업을 수행하지 않습니다. guard_write는 제안된 쓰기 작업을 평가하여 허용/차단 여부를 반환하며, 진행 여부는 호출자가 결정합니다.


빠른 시작

1. API 키 받기

app.anchord.ai/signup에서 가입하고 Settings > API Keys에서 API 키를 생성하세요.

2. npx로 실행 (설치 불필요)

ANCHORD_API_KEY=<YOUR_ANCHORD_API_KEY> npx -y @anchord/mcp-server

이것으로 끝입니다. 서버가 stdio를 통해 시작되며 MCP 클라이언트를 사용할 준비가 됩니다.

3. 또는 호스팅된 원격 서버에 연결 (설치 불필요)

로컬 설치가 필요하지 않습니다. 원격 HTTP 전송을 지원하는 모든 MCP 클라이언트를 호스팅된 엔드포인트로 지정하세요:

{
  "mcpServers": {
    "anchord": {
      "url": "https://mcp.anchord.ai/mcp",
      "headers": {
        "Authorization": "Bearer <YOUR_ANCHORD_API_KEY>"
      }
    }
  }
}

전체 세부 정보, 클라이언트 호환성 참고 사항 및 클라이언트가 아직 원격 MCP를 지원하지 않는 경우의 로컬 대체 방법은 docs/remote.md를 참조하세요.


Related MCP server: datavessel

MCP 클라이언트 설정

Cursor (로컬 stdio)

.cursor/mcp.json(워크스페이스) 또는 ~/.cursor/mcp.json(전역)에 추가하세요:

{
  "mcpServers": {
    "anchord": {
      "command": "npx",
      "args": ["-y", "@anchord/mcp-server"],
      "env": {
        "ANCHORD_API_KEY": "<YOUR_ANCHORD_API_KEY>"
      }
    }
  }
}

examples/cursor-mcp.json을 참조하세요.

Claude Desktop

Claude Desktop 설정(~/Library/Application Support/Claude/claude_desktop_config.json(macOS), %APPDATA%\Claude\claude_desktop_config.json(Windows))에 추가하세요:

{
  "mcpServers": {
    "anchord": {
      "command": "npx",
      "args": ["-y", "@anchord/mcp-server"],
      "env": {
        "ANCHORD_API_KEY": "<YOUR_ANCHORD_API_KEY>"
      }
    }
  }
}

examples/claude-desktop-config.json을 참조하세요.

원격 MCP (HTTP 전송을 지원하는 클라이언트용)

설치가 필요 없는 원격 액세스를 위해 로컬 stdio 프로세스 대신 호스팅된 엔드포인트를 사용하세요. 이는 url + headers 구성 형식을 지원하는 모든 MCP 클라이언트에서 작동합니다:

{
  "mcpServers": {
    "anchord": {
      "url": "https://mcp.anchord.ai/mcp",
      "headers": {
        "Authorization": "Bearer <YOUR_ANCHORD_API_KEY>"
      }
    }
  }
}

Node.js, npx, Docker가 필요하지 않습니다. 클라이언트가 아직 원격 MCP를 지원하지 않는 경우 위의 로컬 stdio 설정을 사용하세요. 전체 세부 정보는 docs/remote.md를 참조하세요.

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-mcp

또는 로컬 테스트를 위해 compose 파일을 사용하세요:

cp examples/env.example .env
# Edit .env with your API key
docker compose up

환경 변수

변수

필수

기본값

설명

ANCHORD_API_KEY

Anchord API 키 (Bearer 토큰)

ANCHORD_API_BASE_URL

아니요

https://api.anchord.ai

API 기본 URL

인증 및 테넌트 범위 지정에 대한 자세한 내용은 docs/auth.md를 참조하세요.


사용 가능한 도구

도구

설명

resolve_company

기업을 표준 AnchorID로 확인

resolve_company_batch

기업 일괄 확인 (최대 200개)

resolve_person

개인을 표준 AnchorID로 확인

resolve_person_batch

개인 일괄 확인 (최대 200개)

get_entity

선택적 연결 레코드와 함께 AnchorID 가져오기

get_entity_export

AnchorID에 대한 골든 레코드 내보내기

link_source_record

소스 레코드를 AnchorID에 연결

unlink_source_record

소스 레코드 연결 소프트 삭제

guard_write

쓰기 전 안전성 검사 (평가 전용)

guard_write_batch

쓰기 전 일괄 안전성 검사 (최대 200개)

ingest_record

소스 레코드를 Anchord로 수집

전체 매개변수 참조: docs/tools.md


안전한 에이전트 워크플로우

외부 시스템에 쓰기 작업을 수행하는 에이전트를 위한 권장 순서:

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.

언제든지 get_entity 또는 get_entity_export를 사용하여 AnchorID 세부 정보를 검사하거나 병합된 골든 레코드를 검색하세요.


needs_review 처리

resolve_*needs_review를 반환합니다. 이는 Anchord가 여러 개의 그럴듯한 일치 항목을 찾았으며 확신을 가지고 자동 해결할 수 없음을 의미합니다.

에이전트의 경우:

  1. 쓰기 작업을 수행하지 마세요. 데이터가 모호합니다.

  2. 후보를 사용자에게 노출하세요. 응답에는 엔티티 ID와 일치 점수가 포함됩니다.

  3. 사용자를 검토 대기열로 안내하세요: https://app.anchord.ai/app/queues/needs-review

  4. 나중에 다시 시도하세요. 사람이 모호성을 해결하면 이후 확인 호출은 resolved를 반환합니다.

에이전트 메시지 예시:

"Acme Corp"를 확인하려고 했으나 Anchord가 여러 개의 가능한 일치 항목을 찾았습니다. 사람이 검토 대기열에서 이를 검토해야 합니다. 해결된 후 다시 시도하겠습니다.


오류 처리

API가 4xx/5xx를 반환하면 MCP 도구 응답은 구조화된 페이로드와 함께 isError: true로 표시됩니다:

{
  "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_id는 항상 존재합니다(API 응답 본문, x-request-id 헤더 또는 클라이언트 생성 UUID에서 가져옴).

  • details에는 사용 가능한 경우 유효성 검사 오류가 포함됩니다(JSON이 아닌 오류의 경우 null).

  • API 키는 오류 메시지에 포함되지 않습니다.


아키텍처

로컬 (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
└──────────────┘

호스팅된 원격 (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
└────────────────────────┘

두 경로 모두 동일한 11개의 MCP 도구를 노출하며 동일한 API에 연결됩니다.


FAQ

Anchord는 자체 호스팅인가요?

아니요. Anchord는 호스팅된 SaaS 플랫폼입니다. 이 MCP 서버는 Anchord API를 호출하는 씬 클라이언트입니다. app.anchord.ai/signup에서 API 키가 필요합니다.

Anchord가 내 CRM에 쓰기 작업을 수행하나요?

아니요. Anchord는 엄격하게 읽기 전용입니다. ID 그래프를 구축하기 위해 연결된 시스템(Salesforce, HubSpot, Stripe)에서 데이터를 읽지만, 다시 쓰지는 않습니다. guard_write는 결정을 반환하며, 실제 쓰기 작업은 호출자가 수행합니다.

Anchord는 어떤 시스템과 작동하나요?

Anchord는 Salesforce, HubSpot, Stripe에 대한 OAuth 통합을 제공합니다. 또한 ingest_record 도구나 REST API를 통해 모든 시스템에서 레코드를 푸시할 수 있습니다.

모호한 상황이 발생하면 어떻게 되나요?

resolve_*needs_review를 반환하면, 여러 후보 AnchorID가 비슷한 신뢰도로 일치했음을 의미합니다. 에이전트는 작업을 중단하고 후보를 사람에게 노출한 다음 Anchord 검토 대기열로 안내해야 합니다. 해결되면 이후 호출은 resolved를 반환합니다.

속도 제한은 어떻게 되나요?

테넌트당 분당 120회 요청입니다. 일괄 엔드포인트는 최대 200개 항목(확인, 가드) 또는 100개 레코드(수집)를 허용합니다. 플랜 수준의 월간 및 일간 할당량이 적용됩니다. docs/auth.md를 참조하세요.


링크


라이선스

MIT

Available Tools

11 tools
get_entityB

Fetch an AnchorID (canonical entity) by UUID. Optionally include linked source records via the include parameter (links, source_records, or both).

ParametersJSON Schema
NameRequiredDescriptionDefault
entity_idYesUUID of the AnchorID to retrieve
includeNoComma-separated relations to include: "links", "source_records", or both

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It implies a read operation (fetch) and explains the optional inclusion of linked records, but does not disclose any behavioral traits such as permissions, side effects, or response details.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences with no wasted words. The purpose is front-loaded, and the optional behavior is immediately specified.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

While the description covers the basic functionality, it lacks details about the return format (e.g., structure of the fetched entity) and does not reference output schema. For a simple fetch, it is adequate but not thorough.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, but the description adds value by clarifying the valid values for the 'include' parameter ('links', 'source_records', or both'), going beyond the schema's generic 'Comma-separated relations'.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Fetch') and the resource ('AnchorID by UUID'), with an optional parameter to include linked records. While it doesn't explicitly differentiate from siblings like 'get_entity_export', the purpose is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No usage guidelines are provided. The description does not indicate when to use this tool versus alternatives, 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.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
entity_idYesUUID of the AnchorID to export

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of disclosure. It correctly implies a read-only operation ('Export'), but does not explicitly state safety or permissions. It describes the output format, but lacks details on side effects, performance, 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with two sentences that cover the action and the output. No unnecessary words or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with one parameter and no output schema, the description is adequate but lacks completeness regarding error handling, input validation, or relationship to sibling tools. It does not mention what happens if the AnchorID does not exist.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% with entity_id described as 'UUID of the AnchorID to export'. The description adds that the export is for the golden record, but does not provide additional constraints or format details beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool exports the golden record for an AnchorID and returns a merged view. It specifies the verb 'Export' and the resource 'golden record for an AnchorID'. However, it does not explicitly distinguish it from the sibling 'get_entity' tool, which may perform a similar function.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives (e.g., 'get_entity'). There is no mention of prerequisites, limitations, or scenarios where this tool should be avoided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
entity_idYesUUID of the AnchorID to evaluate
min_confidenceNoMinimum confidence threshold (default: 0.70)
require_no_conflictsNoBlock if unresolved conflicts exist (default: true)

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description fully bears the burden of behavioral disclosure. It explicitly states the tool is evaluation-only and does not perform writes, lists the checks performed, and mentions it returns allowed/blocked with reasons. All key behavioral aspects are transparently communicated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with no superfluous information. It first states the purpose and checks, then clarifies the evaluation-only nature. Every sentence is essential and front-loaded with the core purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the tool's function, inputs, and output ('Returns allowed/blocked with reasons') adequately for a simple check tool. Minor omission: it does not describe error handling or the exact return structure, but given the lack of output schema, the description is sufficiently complete for effective agent use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the description adds value beyond the schema by explaining how the parameters (entity_id, min_confidence, require_no_conflicts) are used in the evaluation logic. It contextualizes the parameters within the safety check process, improving agent understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool is an 'Evaluation-only pre-write safety check' and lists specific checks (AnchorID existence, confidence threshold, conflicts, canonical links). It explicitly distinguishes from write operations by stating it does NOT perform any write, and the sibling tool guard_write_batch implies batch usage. This aligns with a specific verb-resource pair and differentiates from siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains when to use the tool (before a write) and that the caller decides whether to proceed. It implies that guard_write_batch is for batch use, but does not explicitly state when not to use it or name alternatives. The guidance is clear but lacks explicit exclusion statements.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemsYesArray of guard/write requests

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. Explicitly states 'Evaluation-only — never writes' and max 200 limit, but 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with core purpose and constraints. No wasted words; every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, description adequately describes return value ('per-item allowed/blocked decisions with reasons'). Covers inputs, constraints, and behavior sufficiently for the tool's simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. Description adds minor reinforcement ('each item needs a client_ref') but does not significantly extend meaning beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states verb ('pre-write safety check'), resource ('multiple AnchorIDs'), and scope ('batch', max 200). Distinguished from sibling 'guard_write' by 'batch' and 'max 200'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Description implies use when checking multiple items and mentions evaluation-only nature. No explicit when-not or alternatives, but sibling context and batch specificity provide adequate guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
systemYesSource system key (e.g. hubspot, salesforce, stripe, or a custom source)
object_typeYesObject type within the source (e.g. company, contact, customer)
object_idYesUnique ID of the record in the source system
payloadYesRecord payload — key/value fields (e.g. name, domain, email)

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so the description must carry full burden. It discloses that it is a write operation, requires a registered source, automatically matches to AnchorID, and wraps a batch endpoint. However, it lacks details on idempotency, error handling, or response behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the primary action, and every statement contributes to understanding without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the core operation and prerequisite but omits return value details (e.g., the resulting AnchorID). Given no output schema, this information would be valuable for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, but the description adds value by explaining that the system must be registered and that payload is sent as a single-item array to a batch endpoint, which clarifies usage beyond the schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses specific verbs and resources: 'Ingest a single source record into Anchord', clearly stating the action and target. It distinguishes from siblings by explaining the automatic AnchorID matching and requirement for a registered source.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions a prerequisite (requires a registered source) but does not explicitly compare to sibling tools like guard_write or guard_write_batch. The usage context is implied but not fully delineated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainNoCompany domain (e.g. acme.com)
nameNoCompany name
cityNoCity for geo-matching
stateNoState for geo-matching
identifiersNoExternal system identifiers
min_confidenceNoMinimum confidence threshold (0-1)

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden for behavioral cues. It discloses that the tool returns status, confidence, and potential ambiguous candidates, but omits whether the operation is read-only, requires authentication, or has side effects. The behavioral disclosure is adequate but not comprehensive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that efficiently conveys purpose and outputs, though the list of output fields makes it slightly dense. It is front-loaded with the core action, but could benefit from structured formatting for readability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the absence of an output schema, the description compensates by listing return values (status, confidence, AnchorID, etc.). It covers the key aspects of input and output, though it does not address error handling or edge cases. The nested identifiers object is documented in the schema, so the description is sufficiently complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so each parameter is already documented in the schema. The description groups input types (domain, name, city/state, identifiers) but does not add meaningful details beyond what the schema provides. It offers a high-level summary but no additional syntax or format guidance.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Resolve') and resource ('company to AnchorID'), clearly listing input types and outputs. It distinguishes itself from sibling tools like resolve_company_batch and resolve_person by focusing on single company resolution with multiple input options.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains what inputs are accepted and what outputs are produced, but does not explicitly state when to use this tool versus its batch counterpart or other resolution tools. No exclusions or alternatives are mentioned, leaving the agent to infer usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemsYesArray of company resolution requests

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries the full burden. It discloses batch size limit (max 200), required fields (client_ref, at least one identifying field), and behavior on ambiguity (needs_review status). However, it omits error handling, authentication needs, or side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences pack purpose, limits, requirements, and behavior. No redundant words, front-loaded with key information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a batch tool with nested fields and no output schema, the description covers input requirements and response status. It lacks output structure details (e.g., how client_ref maps to results), but given schema coverage and parameter descriptions, it is nearly sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, but the description adds crucial meaning beyond the schema: it clarifies that 'at least one identifying field' is required, and mentions the min_confidence parameter implicitly. This helps agents understand valid usage patterns.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Resolve multiple companies to AnchorIDs in a single call (max 200).' It specifies the verb 'resolve', the resource 'companies to AnchorIDs', and distinguishes from sibling tools like resolve_company (single) and resolve_person_batch.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear guidance: 'Each item needs a client_ref for correlation and at least one identifying field. Ambiguous matches return status needs_review with candidate AnchorIDs.' It implies when to use the tool (multiple companies) but lacks explicit when-not or alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailNoPerson's email address
nameNoPerson's full name
company_entity_idNoResolved company AnchorID (UUID) for name+company matching
company_domainNoCompany domain for name+company matching
identifiersNoExternal system identifiers
min_confidenceNoMinimum confidence threshold (0-1)

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden. It explains the resolution process, possible statuses (resolved, needs_review, not_found), confidence score, and output fields. It does not mention side effects or idempotency, but for a query-like tool this is sufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single efficient sentence that front-loads the action and lists key inputs and outputs. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers all input fields except min_confidence, but includes all important output fields (status, confidence, AnchorID, match reasons, ambiguous candidates). Given the lack of output schema, it provides sufficient context for agent understanding.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 general context about how parameters are used (e.g., email, name, company info) but does not provide additional per-parameter semantics beyond what the schema already contains.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly specifies the tool resolves a person to an AnchorID using multiple identifiers (email, name, company domain, external IDs). It distinguishes from sibling tools like resolve_person_batch (batch variant) and resolve_company (different entity type).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description states what the tool does but does not explicitly guide when to use it vs. alternatives like batch or other resolution tools. The context from sibling names provides some differentiation, but no direct when-not-to-use or exclusion criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemsYesArray of person resolution requests

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It discloses that ambiguous matches return a 'needs_review' status with candidate AnchorIDs and imposes a 200-item limit. However, it does not mention potential side effects, authorization needs, or error handling, leaving gaps for a batch mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences with zero redundancy. The key constraints (batch, max 200, client_ref, identifying field, ambiguous match behavior) are front-loaded, making it easy for an agent to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex batch tool with nested objects and no output schema, the description covers essentials (batch size, field requirements, ambiguous match handling) but lacks details on success response format, error cases, or prerequisites. It is adequate but leaves some completeness gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% (baseline 3). The description adds value by stating 'at least one identifying field' and explaining the client_ref's purpose for correlation, which goes beyond the schema's property descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool resolves multiple people to AnchorIDs in a single call, distinguishing it from the singular resolve_person sibling. It specifies 'max 200' and uses the verb 'resolve' with an explicit resource.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

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 batch tool (for multiple people, max 200) and outlines requirements (client_ref, at least one identifying field). It implies the singular alternative for single requests but does not explicitly state when not to use it.

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.

  1. 11 tool updatesv1.1.1
    • First observedget_entity
    • First observedget_entity_export
    • First observedguard_write
    • First observedguard_write_batch
    • First observedingest_record
    • First observedlink_source_record
    • First observedresolve_company
    • First observedresolve_company_batch
    • First observedresolve_person
    • First observedresolve_person_batch
    • First observedunlink_source_record

TDQS

A4/5.0

Scored across 11 tools

Disambiguation5/5

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.

Naming Consistency5/5

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.

Tool Count5/5

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.

Completeness4/5

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

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server providing managed persistent memory for AI agents. Read and write structured state across sessions, tools, and restarts at 1000+ requests per second, with no infrastructure to self-host or operate.
    2
    Apache 2.0
  • F
    license
    Not graded
    quality
    D
    maintenance
    Hosted 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.
    -
  • A
    license
    Not graded
    quality
    B
    maintenance
    Provides a context graph for GTM teams, centralizing data from multiple tools into unified person and company records, and offers MCP tools to retrieve account context, full entity details, and filtered queries.
    14 npm
    10
    AGPL 3.0
  • A
    license
    Not graded
    quality
    D
    maintenance
    A hosted remote MCP server for C2PA disclosure policy, enabling AI governance teams to check disclosure policies, validate C2PA status, issue AI media receipts, explain region rules, and export disclosure logs.
    MIT