Enrich MCP Server

Verification, from your favorite AI client.

Connect Claude Code, Claude Desktop, claude.ai, or any Model Context Protocol client directly to Enrich — same auth, same billing, same runs as the REST API, exposed as tools an agent can call.

Getting started

Introduction

The Enrich MCP server is a thin wrapper over the existing programmatic /v1 API — it authenticates with the same sk-tm- org key and respects the platform's auth, billing, rate limits and human-in-the-loop plan approval exactly as any other /v1 client would. No separate credential, no separate contract.

Multi-tenant by design: every connecting client sends its own key — a single hosted server can serve many organisations, each billed under their own account. There is no shared fallback credential.

ClientAuth modelWorks today?
Claude CodeStatic Bearer headerYes
Claude DesktopStatic Bearer headerYes
CursorStatic Bearer headerYes
OpenAI Codex CLIStatic Bearer headerYes
Gemini CLIStatic Bearer headerYes
claude.aiStatic header (beta) or OAuthBeta, gradual rollout
ChatGPT (Developer Mode)OAuth 2.1 onlyNot yet

ChatGPT's custom connector integration requires a full OAuth 2.1 authorization server (issuer, dynamic client registration) — Enrich's MCP server deliberately keeps auth simple (the same static sk-tm- key as /v1), so ChatGPT can't connect directly yet. Every other client above works the same way: if yours supports custom HTTP headers on a remote MCP server, it'll work even if it isn't listed.

Connection URL
https://enrich.timble.ai/mcp
What you get
6 tools, same /v1 backend:

enrich_verify          run a verification
enrich_get_run         poll a run
enrich_get_report      structured report + PDF
enrich_approve_plan    resolve HITL approval
enrich_list_workflows  discover workflow slugs
enrich_usage           credit balance

Getting started

Authentication

Your existing /v1 API key works as-is — no separate credential to generate. Create or find one under Admin → Developers → API Keys. Every MCP client sends it as a standard bearer token.

Enter the full header value: include the scheme when a client asks for a header value rather than a pre-formatted header — type Bearer sk-tm-... (with the space), not just the bare key. Most clients send the value exactly as entered, with no auto-prefixing.
Header
Authorization: Bearer sk-tm-XXXXXXXXXXXXXXXXXXXXXXXXXXXX
Missing / malformed key
401 invalid_token
Authorization: Bearer <sk-tm-...> required

Getting started

Connect a client

Pick your client below. Replace sk-tm-... with a real key from Admin → API Keys.

claude mcp add --transport http enrich https://enrich.timble.ai/mcp \
  --header "Authorization: Bearer sk-tm-..."
Claude Code official MCP docs →
First thing to try: once connected, ask your client something like "Verify PAN ABCDE1234F for Rahul Sharma and summarize the identity findings" — no need to know the tool names, the agent picks enrich_verify on its own.

Reference

Available tools

ToolDescription
enrich_verifyRun a verification in plain language; by default waits for the full result (status, answer, structured report, report_url, credits).
enrich_get_runPoll or re-fetch a run's current state.
enrich_get_reportGet the structured report JSON plus a fresh presigned PDF URL.
enrich_approve_planApprove or decline a plan parked awaiting human approval — see Plan approval below.
enrich_list_workflowsList workflows available to your org (pass a slug to enrich_verify as workflow).
enrich_usageYour org's credit balance.

Guides

Plan approval (human-in-the-loop)

For multi-step verifications the agent may propose a plan before executing checks — a control point for cost and compliance, unless your key is configured to auto-approve.

  1. enrich_verify returns status: "requires_approval" with a plan_pending_approval field.
  2. Review it, then call enrich_approve_plan(run_id, decision)"approved" or "declined".
  3. Approved resumes to completion. Declined ends the run with no further tool calls — only planning work already done is billed.

For unattended/zero-touch use, enable auto-approve plans on the key instead — runs never pause.

Resolve it
enrich_approve_plan(
  run_id="run_9f3a2c…",
  decision="approved"   // or "declined"
)

Guides

Idempotency & retries

Pass idempotency_key to enrich_verify so a retried call — after a network blip or a client-side timeout — replays the original run instead of starting and billing a new one.

Only reuse the same value when retrying the same request. A different key (or omitting it) always starts a fresh, separately-billed verification — even for an identical query.

Safe retry
enrich_verify(
  query="Verify PAN ABCDE1234F",
  idempotency_key="order-7841"
)

Help

Troubleshooting

SymptomCause & fix
401 invalid_tokenNo Authorization header reached the server, or it isn't sk-tm--shaped. Confirm your client config actually has the header set — a connector added without one will fail this way.
Garbled HTML instead of a clean errorSome clients respond to an unauthenticated 401 by probing for OAuth server metadata — Enrich doesn't use OAuth, so that probe lands on the web app and returns an HTML 404 page, which the client then fails to parse as JSON. Fix the underlying cause: add the Authorization header to your connector config (see Connect above).
Tool call fails, Enrich API 401The key reached the server but /v1 rejected it — unknown, revoked, or expired. Rotate it under Admin → API Keys.
402 insufficient_creditsOrg balance is at or below zero. Check enrich_usage, top up, then retry with the same idempotency_key.
No "Request headers" option on claude.aiThat feature is a gradual beta rollout — contact Anthropic for access. Claude Code and Claude Desktop both support header auth today with no waitlist.
Run stuck at requires_approvalCall enrich_approve_plan(run_id, decision), or ask your admin to enable auto-approve on the key so future runs never park.

Enrich MCP Server · Timble Technologies · see also the REST API documentation