← Back to Blog
May 21, 2026 · 6 min read

Let Claude triage your KYC review queue: Verifa MCP server is live

What does the Verifa MCP server do?

The Verifa MCP server lets an AI assistant call Verifa's API as structured, typed tools instead of generating HTTP requests by hand. It exposes 45 tools across sessions, identities, cases, findings, checks, workflows and lists, so an agent can assemble the context for a KYC review while the human keeps the decision.

Every compliance team we talk to runs the same loop, on a different cadence: open the dashboard, scan the review queue, drill into the borderline cases, decide. The decisions are nuanced. The data-gathering — pulling up the session, the workflow run, the AML hits, the device history, the matching identity from last quarter — is not.

Today we're shipping the piece that lets you hand the data-gathering to an AI agent and keep the decisions for yourself: Verifa now speaks the Model Context Protocol. 45 structured tools across sessions, identities, cases, findings, checks, workflows, and lists are now callable from Claude Code, Cursor, Claude Desktop, the Anthropic API MCP connector, and anything else that speaks the open MCP standard.

The shape of the thing

If you've used the Model Context Protocol before, you can probably skip ahead. If not, the one-line version is: MCP lets an AI agent call structured, typed tools instead of generating cURL and hoping for the best. The agent gets a list of tools (with names, descriptions, input schemas), picks one, fills in the parameters, and receives a structured response. The protocol handles the plumbing.

For Verifa specifically, the tools you can call right now look like this:

The map roughly mirrors the dashboard. If a human reviewer can do it, an agent with the right scopes can do it.

One command, no new credentials

Connect Claude Code in a single line:

claude mcp add --transport http verifa \
  "https://api.withverifa.com/mcp?toolsets=cases,findings&read_only=true" \
  --header "Authorization: Bearer vk_live_your_key"

That's it. Your existing Verifa API key is the bearer token; no separate MCP credential. The two URL query parameters narrow the agent's surface at connect time: toolsets=cases,findings exposes only the case and finding tools, and read_only=true hides every write tool. Drop those flags and you get the full default surface.

What that looks like in practice

The agent flows that come up in week-one customer conversations all share a shape: gather context across multiple resources, summarize, recommend an action. A few real examples:

"Show me everything flagged this week, ranked by Smart QA severity"

The agent calls list_cases(tab="all"), scopes the date range from the response, fans out to list_findings(severity="high"), joins the two by session, and gives you a ranked list with the top three findings inline. What used to be three browser tabs and a spreadsheet is now a prompt.

"This case looks like a duplicate of one from March — find the original"

The agent pulls the session via get_session, the linked identity via get_identity, then runs search_identities(external_ref=…) against the partial reference the reviewer remembered. If there's a match it surfaces the original case id and you decide whether to merge.

"Re-screen everyone on our high-risk list against ComplyAdvantage"

The agent enumerates list_lists(list_type="name"), picks the high-risk list, iterates list_list_items, and either kicks off rerun_check for each existing AML check or creates new ones. The platform's per-key rate limit and provider quota are the natural backpressure.

"GDPR request: redact this user's data and confirm"

The agent calls redact_identity(identity_id, reason="GDPR Art.17 request, ticket SUP-1248"). Four safeguards must pass before it executes (more on that below); on success the agent gets the redacted identity row back and can pass the confirmation receipt straight into the support ticket.

The safety story (which we cared a lot about)

If you give an LLM a hammer, it will try to drive nails. We deliberately built four independent safeguards into destructive operations so the hammer cannot be swung by accident:

  1. Scope. Destructive tools require a separate destructive:write scope on the API key. It's never on by default and never available on publishable keys. You grant it deliberately, from the Developers → API Keys page in the dashboard, with a red warning callout that spells out exactly what's being unlocked.
  2. Opt-in toolset. The destructive toolset is hidden from tools/list unless the connection URL explicitly names it (?toolsets=…,destructive). An agent connected without that flag cannot see the tools, let alone invoke them.
  3. Per-key circuit breaker. Every MCP request burns one slot in a 120 / minute bucket per key, separate from your REST quota. Destructive operations get a second cap on top: 5 per hour per key. A runaway agent can't drain your billing or torch your data.
  4. Mandatory reason. Every destructive call requires a reason parameter of at least 10 characters. The reason gets recorded in the audit log row alongside the actor key id, the input arguments, and the outcome.

For non-destructive writes the first three still apply (minus the destructive-specific scope and toolset opt-in). Reads share the same scope inheritance and audit trail, just with no further gating.

Speaking of audit: every tool invocation, read or write, lands in audit_logs as a row with action mcp.<resource>.<verb> — mcp.session.list, mcp.case.approve, mcp.identity.redact. The dashboard's Audit Log page has an "MCP only" filter that hides everything else; the same data is exposed via GET /api/v1/events?action_prefix=mcp. After-the-fact review of "what did that agent do to my account" is one click away.

PII-free by default (updated 2026-05-22)

On REST, sensitive data access is gated by a stack of consent primitives: cookie-bound admin and org tokens, the org's sensitive-data access window, and a per-route window check that denies PII reads once a session is past its retention horizon. MCP only has API-key auth — no per-end-user consent attestation flows through it — so the agent-facing surface starts from a more conservative posture: identifiers and metadata yes, PII no.

Concretely, that means:

If we ever ship an MCP tool that does return PII to the agent, the rules are written down: a dedicated pii:read scope (not reused from any existing *:read), a mandatory call to the access-window helper, a tighter rate-limit bucket than the default 120/min so slow exfiltration is harder, and field-by-field disclosure in the integration guide. The policy lives next to the enforcer in src/mcp/pii.py so the next person doesn't have to ad-hoc it.

Two related caveats worth flagging for anyone designing prompts against this surface:

What we deliberately didn't ship

A few things in the original design notes that we pushed to a later phase, in case you go looking for them:

Try it in five minutes

The MCP server is available on every Verifa plan, including free. Mint a sandbox key, drop the claude mcp add line into your terminal, and you'll have Claude Code answering "list my last five failed sessions" before the kettle boils.

The in-app AI Integrations page has a URL builder, copy-paste configs for the four major clients, and a one-click link to the audit log's MCP-only view. The developer docs have the full tool catalog, toolset reference, and limitations.

Bring AI into your KYC ops.

Start with a free Verifa account, mint a sandbox key, and connect Claude Code in one line.

Start Building Free Learn more