Turing Verify MCP Server
This page is the full operator manual for connecting an AI client to the
Turing Verify Model Context Protocol
server. It is served as HTML from /mcp/docs and lives alongside the
/v1 REST documentation at https://api.verify.turingcerts.com/v1/docs.
- Endpoint:
https://mcps.verify.turingcerts.com/mcp - Protocol version:
2025-06-18 - Transport: HTTP POST + Streamable HTTP (SSE) over the same URL
- Auth:
Authorization: Bearer tv_live_sk_...(ortv_test_sk_...)
The server exposes 5 tools, 3 resources, 2 prompts. See the capabilities section below for the full list.
Quick connect#
MCP Inspector#
The fastest way to see what the server advertises:
npx -y @modelcontextprotocol/inspector \
--url https://mcps.verify.turingcerts.com/mcp \
--header "Authorization: Bearer tv_live_sk_REPLACE"
Claude Desktop#
Add to claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"turing-verify": {
"transport": "http",
"url": "https://mcps.verify.turingcerts.com/mcp",
"headers": {
"Authorization": "Bearer tv_live_sk_REPLACE"
}
}
}
}
Cursor#
Add to .cursor/mcp.json in your project:
{
"mcpServers": {
"turing-verify": {
"url": "https://mcps.verify.turingcerts.com/mcp",
"headers": {
"Authorization": "Bearer tv_live_sk_REPLACE"
}
}
}
}
OpenAI Agents SDK#
from openai_agents import Agent, HostedMCPTool
agent = Agent(
name="doc-verifier",
mcp_server="https://mcps.verify.turingcerts.com/mcp",
mcp_server_headers={"Authorization": "Bearer tv_live_sk_REPLACE"},
)
Windsurf#
Add to ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"turing-verify": {
"url": "https://mcps.verify.turingcerts.com/mcp",
"headers": { "Authorization": "Bearer tv_live_sk_REPLACE" }
}
}
}
Zed#
~/.config/zed/settings.json:
{
"context_servers": {
"turing-verify": {
"url": "https://mcps.verify.turingcerts.com/mcp",
"headers": { "Authorization": "Bearer tv_live_sk_REPLACE" }
}
}
}
Claude.ai / Claude for Work (remote MCP)#
Use the Remote MCP server integration and paste the URL +
Authorization header when prompted. Remote MCP for Claude.ai requires
the enterprise or team plan; consumer Claude.ai does not yet expose
custom remote servers.
Capabilities#
Tools#
verify_document — submit a document (URL or base64) for forensic verification. Requires
verifications:write. Returns verdict, confidence, and (for known institutions) averification_channelthe end user can contact for human escalation.get_verification — fetch a prior verification by id. Requires
verifications:read.list_verifications — cursor-paginated list of recent verifications. Requires
verifications:read.get_account — plan, credits, rate limits, environment. Requires
account:read.lookup_registrar — public-safe registrar contact for an institution. Never returns individual staff emails. Requires
verifications:read.
Resources#
turingverify://docs/openapi.json— live/v1OpenAPI 3.1 spec.turingverify://docs/events.json— the webhook event catalog.turingverify://status— the caller's live rate-limit + credit headroom.
Prompts#
verify-credential— user-message template that directs the LLM to callverify_documentand surface the verdict fields.explain-rejection— renders a verdict dict into a human-facing rejection explanation with escalation pointers.
Error mapping#
Errors are vanilla JSON-RPC 2.0 — the server does not wrap them in
the /v1 {error:{...}} envelope. MCP clients read error.code and
error.message.
| JSON-RPC code | HTTP status | Meaning |
|---|---|---|
| -32700 | 400 | Parse error (malformed JSON) |
| -32600 | 400 | Invalid JSON-RPC envelope |
| -32601 | 404 | Method (or tool / prompt / resource) not found |
| -32602 | 400 | Invalid params (bad tool arguments) |
| -32603 | 500 | Internal server error |
| -32001 | 401 | Authentication required / invalid token |
| -32002 | 429 | Rate limit or quota exhausted |
| -32003 | 403 | Insufficient scope |
For batched requests (array body), the server always returns HTTP 200 and folds per-item errors into the response array (per JSON-RPC 2.0 spec §6).
Rate limiting#
The MCP surface shares the same per-token token-bucket limiter as
/v1/*. See /v1/account → rate_limit_burst and
rate_limit_sustained for your tier's numbers.
Streamable HTTP#
A client that sends Accept: text/event-stream receives the response
as a Server-Sent Events stream — one message event per JSON-RPC
response, terminated with a close event. A client that omits that
Accept value (or sends only application/json) gets a single JSON body.
Both are valid MCP transports per the 2025-06-18 spec §2.1.