Tessio age verification stats
Server Details
Read your EU age check stats: pass rate, the funnel, refusal reasons and breakdowns. Read only.
- Status
- Healthy
- Uptime
- 98.2% over 21 days
- Last Tested
- Transport
- Streamable HTTP ยท MCP 2025-11-25
- URL
TDQS
Scored across 5 tools
The tools target distinct analytics views: summary comparison, timeseries, funnel, generic breakdown, and failure-specific breakdown. The only mild ambiguity is between get_breakdown and get_failure_breakdown, since a generic breakdown could theoretically include failure reasons, but the descriptions clarify the intended use.
All tool names follow a consistent snake_case get_* pattern and are descriptive of their function. There are no mixed conventions or vague verbs.
Five tools is well-scoped for an age-verification stats API, with each tool covering a distinct reporting need. No tool appears redundant or out of place.
The set covers summary metrics, period-over-period comparison, time series, breakdowns, funnel progression, and failure reasons, which is strong for an analytics surface. Minor gaps include multi-dimensional breakdowns or period-over-period breakdown comparisons, but core reporting needs are met.
Available Tools
5 toolsget_breakdownBRead-onlyIdempotentInspect
A period's checks grouped by one column, each group with its outcomes.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | Last UTC day, YYYY-MM-DD, inclusive. Defaults to today. | |
| from | No | First UTC day, YYYY-MM-DD. Omit both dates for the last 30 days. | |
| mode | No | live, test or all. Defaults to live for an organisation's key, and to the project's own mode for a project's key. | |
| group_by | No | Required: project, api_key, method, transport, format or mode. | |
| project_id | No | An organisation's key only: one project of the organisation, by id. Omit for every project. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true and openWorldHint=false, so the safety profile is covered. The description adds the aggregation shape (one grouping column, outcomes per group), which is useful, but says nothing about result size, pagination, or limits for larger periods.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single eleven-word sentence with no filler, and the core resource is front-loaded. It is arguably under-specified rather than verbose, so it errs on the terse side but wastes nothing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With five parameters, no output schema, and real defaults (30-day window, mode fallback), the description only hints at the response via 'each group with its outcomes'. It leaves the concrete return shape unexplained, though the schema covers input semantics fully.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema fully documents the date range, mode, group_by, and project_id semantics. The phrase 'grouped by one column' loosely echoes group_by but adds no syntax or constraint detail beyond the schema's 'Required: project, api_key, method, transport, format or mode.'
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a concrete operation and resource: aggregating a period's checks grouped by one dimension, with per-group outcomes. It is clear in isolation, but it never distinguishes itself from the similar sibling get_failure_breakdown or from get_summary, so an agent gets no help choosing among them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no mention of alternatives such as get_failure_breakdown, get_summary, or get_timeseries. The agent must infer the selection criteria entirely from the sibling names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_failure_breakdownBRead-onlyIdempotentInspect
Refused presentations by reason category (wallet declined, issuer not trusted, expired credential and so on).
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | Last UTC day, YYYY-MM-DD, inclusive. Defaults to today. | |
| from | No | First UTC day, YYYY-MM-DD. Omit both dates for the last 30 days. | |
| mode | No | live, test or all. Defaults to live for an organisation's key, and to the project's own mode for a project's key. | |
| group_by | No | method to split each reason by the profile asked for. Omit for one row per reason. | |
| project_id | No | An organisation's key only: one project of the organisation, by id. Omit for every project. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true and openWorldHint=false, so the safety profile is fully covered. The description contributes real domain meaning by defining 'failure' as a refused presentation and enumerating reason categories, but discloses nothing about result shape, grouping effects, or mode behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that defines the metric and immediately grounds it with examples. No filler, no restatement of the tool name, nothing wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-parameter, zero-required read tool with no output schema, the description covers the subject well but leaves the returned structure undefined and gives no routing advice among the four sibling analytics tools. Adequate, but an agent still has to guess at output shape and when this beats get_breakdown.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with 5 optional parameters, each carrying date, mode, group_by and project_id semantics in the schema itself. The description adds no parameter-level information (e.g. how group_by reshapes rows), so the schema does all the work and the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the specific dataset ('refused presentations') and the aggregation ('by reason category'), and the parenthetical examples (wallet declined, issuer not trusted, expired credential) make the subject concrete. It contrasts implicitly with the sibling get_breakdown by scoping to refusals, though it never states that distinction outright.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use guidance, no prerequisites, and no alternative named. The agent must infer from the name alone that this is the failure-specific counterpart to get_breakdown, with nothing in the text to confirm that choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_funnelBRead-onlyIdempotentInspect
How far a period's checks got: created, a wallet answered, completed; for EUDI wallet requests, fetched by a wallet.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | Last UTC day, YYYY-MM-DD, inclusive. Defaults to today. | |
| from | No | First UTC day, YYYY-MM-DD. Omit both dates for the last 30 days. | |
| mode | No | live, test or all. Defaults to live for an organisation's key, and to the project's own mode for a project's key. | |
| project_id | No | An organisation's key only: one project of the organisation, by id. Omit for every project. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint=false, so the safety profile is covered. The description adds useful domain context about what the funnel stages mean, but says nothing about return shape, aggregation unit, or EUDI-specific handling beyond a passing mention.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence that front-loads the core concept and wastes nothing. It is slightly cryptic in phrasing ('How far a period's checks got'), which costs a bit of immediate comprehension.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only analytics tool with 4 schema-documented parameters and no output schema, the description covers the conceptual output (funnel stages) but leaves the shape of the response and its distinction from sibling breakdown tools unaddressed. Adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so from/to/mode/project_id are fully documented in the schema itself. The description adds no parameter-level detail (e.g., how mode interacts with the funnel stages), so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description enumerates the funnel stages (created, a wallet answered, completed, fetched by a wallet), which makes the resource and its distinctive funnel/conversion semantics clear. It stops short of an explicit verb or naming a sibling (get_summary, get_breakdown) to contrast against, so an agent must infer differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this tool versus get_summary, get_breakdown, get_timeseries, or get_failure_breakdown, and no conditions or exclusions are given. Usage must be inferred entirely from the stage list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_summaryBRead-onlyIdempotentInspect
Age-check outcomes for a period beside the period of equal length before it: checks, pass rate, fail rate, no-answer rate and time to result.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | Last UTC day, YYYY-MM-DD, inclusive. Defaults to today. | |
| from | No | First UTC day, YYYY-MM-DD. Omit both dates for the last 30 days. | |
| mode | No | live, test or all. Defaults to live for an organisation's key, and to the project's own mode for a project's key. | |
| project_id | No | An organisation's key only: one project of the organisation, by id. Omit for every project. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and a closed world, so safety and repeatability are covered. The description adds one genuinely useful behavioral trait beyond that: the results are a period-over-period comparison against an equal-length preceding window, which an agent could not infer from the schema. It still says nothing about aggregation level or result shape.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence with no filler, and the comparison-period constraint is stated up front. It is packed tightly but every clause (the window relationship and the metric list) earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully enumerates the returned metrics, which compensates for that gap, and all four parameters are optional and fully documented in the schema. What remains missing is routing guidance relative to the four sibling analytical tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and every parameter (to, from, mode, project_id) has clear inline documentation including defaults, so the baseline is 3. The description adds no parameter-level meaning beyond the schema, which is acceptable here because the schema already carries the burden.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific resource (age-check outcomes) and enumerates the exact metrics returned (checks, pass rate, fail rate, no-answer rate, time to result), so an agent knows precisely what this tool produces. However, it draws no boundary against siblings like get_breakdown or get_timeseries, so an agent must infer which one fits.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states what the tool returns but never says when to prefer it over get_breakdown, get_failure_breakdown, get_funnel or get_timeseries. Usage is only implied by the word 'summary,' and no prerequisites or exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_timeseriesBRead-onlyIdempotentInspect
One metric over time, in hours for two days or less, then days, weeks or months.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | Last UTC day, YYYY-MM-DD, inclusive. Defaults to today. | |
| from | No | First UTC day, YYYY-MM-DD. Omit both dates for the last 30 days. | |
| mode | No | live, test or all. Defaults to live for an organisation's key, and to the project's own mode for a project's key. | |
| metric | No | checks, passed, under_age, failed, expired or pass_rate. Defaults to checks. | |
| project_id | No | An organisation's key only: one project of the organisation, by id. Omit for every project. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint, idempotentHint, openWorldHint=false), so the bar is lower, and the description adds genuinely new behavior: output resolution adapts to the range (hours for two days or less, then days/weeks/months). That is information an agent cannot get from annotations or the schema. It omits any statement about truncation or result limits, so it stops short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence, front-loaded with the resource and followed immediately by the resolution rule; nothing is padded. It is compressed to the point of being slightly cryptic about what the buckets contain, but there is no wasted wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only tool whose safety is fully declared by annotations and whose five parameters are fully documented in the schema, the main remaining gaps are which question this tool answers versus its siblings and what the time series values represent. The granularity rule covers part of the return shape in the absence of an output schema, but the definition is thin overall.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% โ from/to, mode, metric and project_id all carry their own defaults and enumerated values in the schema. The description's range note loosely relates to from/to but adds no syntax, format, or interaction detail beyond what the schema already provides, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific resource and shape of result: a single metric sampled over time. It does not name or contrast any sibling (get_breakdown, get_summary, get_funnel), so the agent must infer that this is the temporal-series variant. Clear purpose, but no explicit sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use guidance and no routing to alternatives among get_breakdown, get_failure_breakdown, get_funnel or get_summary. The granularity note implies that short ranges are handled in hours, which hints at appropriate usage, but the agent is left to infer which tool answers which question.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
5 tool updates
- First observed
get_breakdown - First observed
get_failure_breakdown - First observed
get_funnel - First observed
get_summary - First observed
get_timeseries
Publisher details
- Operator
- Triple Down AB ยท Publisher source
- Operator website
- https://tessio.eu/
- Vendor relationship
- First-party
- Documentation
- https://tessio.eu/docs/mcp/
- Trust center
- https://tessio.eu/security/
- Restrictions
- Needs a Tessio.Cloud account and an API key with the stats:read scope, sent as a Bearer token. Signup is open and a test project works at once. get_summary works on every plan, get_timeseries from Starter, and get_failure_breakdown, get_funnel and get_breakdown from Growth.
Related MCP Connectors
Read Simple Analytics stats: pageviews, visitors, pages, referrers, events and data exports.
Read-only revenue analytics from Stripe, Paddle, Polar, Lemon Squeezy, Creem and Freemius.
Read-only website analytics, AI referrals, crawlers, goals, revenue, and funnels.
Read your Spytay reports: how often ChatGPT, Gemini, Claude and Grok name your brand. Read-only.
1
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceProvides read-only access to Churn Solution retention analytics, including cancellation-flow metrics, save rates, recovered revenue, offer performance, cancellation reasons, and customer feedback.MIT
- AlicenseNot gradedqualityCmaintenanceEnables read-only access to cookieless web analytics aggregates such as sites, visitors, pages, sources, live activity, funnels, and uptime monitoring through OAuth 2.1-secured Streamable HTTP tools.MIT

mailfact-mcpofficial
AlicenseAqualityCmaintenanceProvides read-only access to a Mailfact tenant, letting users list domains, sending sources, and aggregate reports, and query DMARC alignment, reporter coverage, and record-level data through MCP tools. It returns counts and rows only, without recommending policies or scoring domains.936 npmMIT- AlicenseNot gradedqualityBmaintenanceRead-only access to Stripe data including customers, charges, subscriptions, balance, and invoices.195 npmMIT
Glama MCP Gateway
Add one secure layer between your agents and this server.