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_... (or tv_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:

BASH
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):

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:

JSON
{
  "mcpServers": {
    "turing-verify": {
      "url": "https://mcps.verify.turingcerts.com/mcp",
      "headers": {
        "Authorization": "Bearer tv_live_sk_REPLACE"
      }
    }
  }
}

OpenAI Agents SDK#

PYTHON
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:

JSON
{
  "mcpServers": {
    "turing-verify": {
      "url": "https://mcps.verify.turingcerts.com/mcp",
      "headers": { "Authorization": "Bearer tv_live_sk_REPLACE" }
    }
  }
}

Zed#

~/.config/zed/settings.json:

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#

  1. verify_document — submit a document (URL or base64) for forensic verification. Requires verifications:write. Returns verdict, confidence, and (for known institutions) a verification_channel the end user can contact for human escalation.

  2. get_verification — fetch a prior verification by id. Requires verifications:read.

  3. list_verifications — cursor-paginated list of recent verifications. Requires verifications:read.

  4. get_account — plan, credits, rate limits, environment. Requires account:read.

  5. lookup_registrar — public-safe registrar contact for an institution. Never returns individual staff emails. Requires verifications:read.

Resources#

  • turingverify://docs/openapi.json — live /v1 OpenAPI 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 call verify_document and 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/accountrate_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.