Tessio age verification stats

Ask an AI assistant how your EU age checks are going. It reads Tessio.Cloud stats over MCP: pass rate against the previous period, trends, refusal reasons, the funnel and grouped outcomes. A stats:read key can never start a check or change a setting.

Hosted MCP Server

npx add-mcp 'https://api.tessio.eu/mcp'

Installs into Claude Code, Codex, Cursor and more

Documentation

Ask your AI assistant about your age checks

Tessio.Cloud runs an MCP server, so an assistant that speaks the Model Context Protocol can answer "how did our checks do last month?" or "why are wallets refusing?" from your own numbers. It reads your stats and nothing else.

Signup is open and a test project works as soon as you create one. Create an account to make a key.

Connect it

The server is at https://api.tessio.eu/mcp. It takes a stats key as a Bearer token: an organisation stats key from the Developer page reads every project, a project key with Stats only access reads that project. In Claude Code:

claude mcp add --transport http tessio https://api.tessio.eu/mcp \
  --header "Authorization: Bearer tk_your_stats_key"

Use a Stats only key rather than a full one. An agent never needs to start a check, so it should not hold a key that can.

It is listed in the official MCP Registry as eu.tessio/stats and on Smithery. Adding it from Smithery connects through Smithery's own endpoint, so your key and the answers pass through Smithery; the address above connects straight to us.

The tools

One tool per stats read. Each takes from, to, mode and, for an organisation key, project_id, as the stats API does.

ToolWhat it answersPlan
get_summaryChecks, pass rate, fail rate, no answer rate and time to result for a period, beside the period of equal length before it.Every plan
get_timeseriesOne metric per bucket: checks, passed, under_age, failed, expired or pass_rate. Buckets are hours for two days or less, then days, weeks or months as the period grows.Starter and up
get_failure_breakdownRefused presentations by reason category, such as the person declining, an issuer that is not trusted or an expired credential. Optionally split by method.Growth and up
get_funnelHow far the checks got: created, a wallet answered, completed. For EU Digital Identity Wallet requests, also how many were fetched by a wallet.Growth and up
get_breakdownThe checks grouped by one column, each group with its outcomes: project, api_key, method, transport, format or mode.Growth and up

What an answer looks like

A few plain sentences for the assistant to read and repeat, then the full record as JSON for it to compute from. The sentences always state the scope, the period and the mode, so it is clear what was counted, and they say so when a period reaches past what your plan keeps. The figures here are an example.

Scope: organisation 5e2a9c06-…, all projects. Period: 2026-09-01 to 2026-09-30 (UTC days). Mode: live.
1,240 checks (0 still open). Pass rate 76.7%, 2.1 points higher than the previous period. Under age or no readable answer: 11.5%. No wallet answered: 9.7%.
Median time to result 22.0 s; 95% within 40.0 s.
Previous period (2026-08-02 to 2026-08-31): 1,100 checks.

{"mode":"live","current":{"from":"2026-09-01","to":"2026-09-30","outcomes":{"total":1240, …}}

Limits

  • Each key has a budget of 30 requests that refills at one every two seconds, shared by the API and the MCP server.
  • A request with no key, or one that does not resolve, is refused with 401 before any tool runs. A request a browser page sends from another site is refused with 403: the server is for assistants, not for web pages.
  • A tool your plan does not include, or a parameter it cannot use, answers with an error in words the assistant can act on, such as the parameter to fix.

Questions

Can the agent start or change a check?

No. Every tool reads stats and is marked read only, and none returns a single check: the answers are counts and rates. A key with Stats only access cannot start a check through the API either.

Which assistants work with it?

We have tested Claude Code, and the Developer page gives the command for it. The server speaks the Streamable HTTP transport of the Model Context Protocol and needs only a URL and an Authorization header, so a client that can send both to a remote server should connect the same way.

Does it cost extra?

No: the tools answer the same reads as the stats API, and your plan decides which of them you get. A tool your plan does not include answers with an error that says so.

Try it on your own numbers

Create an account, make a Stats only key and connect your assistant. A test project has numbers as soon as you run a check against the sandbox.

Create an account →