MCP Server
Connect Claude, or any MCP-capable assistant, to Holofin and ask about a case in natural language: its extractions, rule verdicts, participants, documents and history, as the pipeline recorded them.
Overview
Holofin runs a hosted Model Context Protocol (MCP) server at https://mcp.holofin.ai/mcp. There is nothing to install: your assistant connects to it directly over HTTPS, authenticating with OAuth 2.1 or an MCP key.
Every result is a projection of what the pipeline decided. The tools never recompute a verdict: a rule that failed is reported as the engine decided it, with the values it compared and the document each value came from. Answers built from these tools can therefore always cite a document and a page.
Connecting
Two ways to authenticate. OAuth 2.1 is the one to prefer: you sign in with your Holofin account, no secret is copied into a config file, and access can be revoked from your side at any time. MCP keys (prefix hf_mcp_) suit server-to-server integrations.
These are not the same as the REST API keys used elsewhere in this documentation. Create an MCP key from your organization settings.
Claude, and other OAuth clients
Add a custom connector pointing at the server URL and complete the sign-in prompt:
Claude Code
Cursor / Windsurf
Add to your MCP configuration file (.cursor/mcp.json or equivalent):
Available Tools
Your assistant discovers these automatically. Start with list_cases to find a case, then get_case for the whole picture, then the explain_… tools to drill into anything that is not satisfied.
Tools accept either the case reference you supplied or the internal dossier id, so an id read from one result can be passed straight to the next call.
Write tools
Two tools change something. They are disabled by default and must be enabled for your organization; ask us to turn them on. They require a signed-in user, so the audit trail can name who acted, and every row they write is marked as having come through an assistant.
Recording a decision the case already holds appends nothing, so a retrying client cannot duplicate an entry in a history that is append-only. Nothing can be deleted through this surface.
Example Conversations
list_cases with case_status=incomplete, then get_case on each
get_case for the rule codes, then explain_rule for the values it compared
explain_requirement on each unsatisfied requirement
get_document_checks for MRZ, 2D-Doc seal and fraud verdicts
get_case_history with a since date
Two ready-made prompts ship with the server, case_review and case_synthesis. Clients that support MCP prompts offer them directly; the second produces a structured written synthesis with sources.
Access and limits
Untrusted document content
Results that carry text taken from a document are marked content_is_untrusted. That text is data, never instructions: a document could contain a sentence addressed at an AI assistant, and a well-behaved client will not act on it. If write tools are not enabled for your organization, a key cannot act on such a sentence, which is the reason they are off by default.
Troubleshooting
“unauthorized”
The key is unknown, expired or revoked. MCP keys start with hf_mcp_ and are not the same as REST API keys, which start with sk-holo-.
“forbidden”
Your account’s role may not use this surface, or you called a write tool without write access enabled. Both are set by your organization administrator.
“bad_input: unknown dossier for this organization”
The case belongs to a different organization, or the reference does not exist. Call list_cases to see what you can reach.
A result says deprecated
The tool still works; the message names its replacement. get_case_status, list_dossiers and get_fraud_findings are kept for one release.
A result says truncated
A large case is capped, and omitted says by how much. Failures are never dropped by a cap, and the explain_… tools read the full set.