Skip to content

MCP server

https://verify.orvel.dev/mcp — Streamable HTTP, stateless, eight read-only tools with the same names and arguments as the REST API.

Registry entry: io.github.LeBorgneAntoine/eu-verify. Manifest: /.well-known/mcp/server.json.

Connect

{
  "mcpServers": {
    "eu-verify": {
      "url": "https://verify.orvel.dev/mcp",
      "headers": { "Authorization": "Bearer ev.sub_1abc.deadbeef" }
    }
  }
}

.cursor/mcp.json in the project, or the global file:

{
  "mcpServers": {
    "eu-verify": {
      "url": "https://verify.orvel.dev/mcp",
      "headers": { "Authorization": "Bearer ev.sub_1abc.deadbeef" }
    }
  }
}
from mcp import Client

async with Client(
    "https://verify.orvel.dev/mcp",
    headers={"Authorization": "Bearer ev.sub_1abc.deadbeef"},
) as client:
    result = await client.call_tool("check_vat", {"vat": "FR03552081317"})
    print(result.structured_content["status"])

Use the URL the marketplace gives you. No header: the marketplace authenticates and bills per successful call.

Tools

check_vat, lookup_siren, normalize_siret, check_iban, normalize_address_eu, normalize_phone, check_email, check_eori. All annotated read-only and idempotent, so a client can call them without asking the user to confirm. Arguments and semantics: Tools.

Each tool returns the envelope as structuredContent, so an agent can branch on status without parsing prose.

Resources

URI Contents
euverify://guide/statuses The four statuses and which ones are billable.
euverify://guide/coverage Which register backs which tool, and the known limits.

What costs a call

Discovery is free and open, so a client or a registry can inspect the server before anyone buys a key: initialize, ping, tools/list, resources/list, resources/read, prompts/*.

tools/call needs a key and counts one call against the monthly quota — unless it fails (isError) or the register was unreachable (status: "upstream_unavailable"), in which case it is free. The response carries X-Plan and X-Usage-Used when a call was counted; over quota the server answers HTTP 402 with a JSON-RPC error pointing at the pricing page.

Instructions the server sends

The server ships an instructions block telling the model when to reach for which tool and, most importantly, that upstream_unavailable must never be reported to the user as "invalid". If your client shows server instructions, you will see it on connect.