Platform
Catalog and freshness metadata for the Agent Datasets platform.
Where the data comes from
Every value this category returns is attributable to one of these publishers, and every payload carries the source tag with it.
| Source | Publisher | What we hold | Licence |
|---|---|---|---|
| platform_catalog | Curated internal registry (dataset catalog) | Data-catalog metadata — categories, dataset descriptions, licensing posture, cadence, and ingest freshness; each listed dataset's own sources keep their originating-agency attribution | Catalog metadata is authored in-repo and carries no separate license; per-dataset licensing posture is stated on each row and governed by docs/licensing-register.md |
| freshness_registry | Platform freshness registry | Platform-generated freshness metadata — per-dataset connector run timestamps, staleness status, cadence, and licensing posture; produced by the platform itself, with no external provider data values | Platform-generated operational metadata; no external provider data values or separate provider license |
Full licence text, attribution strings, and every source on the surface are in Attribution.
Metadata about the data
The platform tools answer questions about the surface itself rather than about banks or currencies: what is here, how current it is, and what may be redistributed. They exist because an agent that guesses at a tool name wastes a turn, and an agent that trusts a stale number without checking gives a confidently wrong answer.
Both tools are read-only, cheap, and bounded, and both currently return the whole registry on one default page. Neither is a substitute for reading a category's own tools — they are the routing layer above them.
Worked workflows
Find out what is here before choosing a tool
platform_get_catalog(limit=50)Two things come back. data.categories is the complete category list — every key, display name, status of live or soon, description, and whether it is exempt from the launch bar — and it is complete on every page, not paged away. data.datasets is the paged part: one row per dataset with its category, source tag and name, licence, posture, whether it is redistributable, coverage, cadence, a freshness block, and the MCP tools that serve it.
That last field is the useful one for routing. A dataset row names its tools, so "which tool answers this" is a lookup rather than a guess:
{
"data": {
"categories": [
{
"key": "<category key>",
"display_name": "<category name>",
"status": "live",
"description": "...",
"exempt": false
}
],
"datasets": [
{
"dataset": "<dataset key>",
"display_name": "<dataset name>",
"category": "<category key>",
"source_tag": "<source tag>",
"source_name": "<publisher>",
"license": "...",
"posture": "public",
"redistributable": true,
"coverage": "...",
"cadence": "daily",
"freshness": {
"status": "fresh",
"stale": false,
"status_reason": null,
"last_refresh": "2026-08-19T04:12:00Z",
"latest_as_of": "2026-08-19T16:00:00Z"
},
"tools": [{ "name": "<tool name>", "summary": "..." }]
}
]
},
"meta": { "source": "platform_catalog", "as_of": "2026-08-19T16:00:00Z" },
"pagination": { "limit": 50, "has_more": false, "next_cursor": null }
}Values are illustrative; field names are real.
A category's status is the launch verdict, and it is worth understanding what it does and does not mean. soon describes what the surface advertises, never what it serves: a below-bar category's tools stay registered and callable, and their data stays real. It means the category has not yet cleared the measured coverage, freshness, and evaluation bar that governs public claims, so treat its answers with the caution the status implies.
Check currency before trusting a number
platform_get_freshness(limit=50)One row per served dataset, each with the last successful connector refresh, the freshest value-level timestamp in the data itself, cadence, status, a staleness flag, a reason when there is one, whether the dataset is non-redistributable, and the tools that serve it.
The two timestamps answer different questions, and the difference is the point:
last_refreshis our pipeline — when the connector last succeeded.latest_as_ofis the data — the newest value-level timestamp in it.
A publisher that has not released anything new leaves latest_as_of where it was while last_refresh keeps advancing; a stalled connector does the opposite. A stalled connector reports its real last success with stale: true rather than a hopeful value, so an agent can say "this is as of Friday" instead of implying it is live.
Answer a licensing question without guessing
Each catalog row carries posture and redistributable, and each freshness row carries non_redistributable. Read them before quoting a value into anything that leaves your organisation. On a public-surface key the redistribution gate has already done this for you — provider-licensed data is absent from the surface rather than filtered out of a response — but the flags are how an agent explains why a dataset it heard about is not there.
Coverage and caveats
- This category is exempt from the launch bar, and deliberately so: it is metadata over the other datasets, with no entity, period, or freshness axis of its own. It ships with the surface.
- Freshness is reported, never estimated. If a connector has not run, the row says so. There is no fallback to a category-level guess and no rounding of a stale timestamp toward the present.
- The catalog lists datasets, not every helper. Identity and search helpers are described in the MCP server's own instructions rather than catalogued as datasets; the platform metadata surfaces themselves are first-class registry rows, so the catalog describes itself too.
- Both tools are bounded like everything else. The whole registry fits one default page today, but read
pagination.has_morerather than assuming it always will.
Tools and endpoints
Each tool's full input schema, provenance, and bounds are on its own page; the REST endpoints mirror them one for one.
| Tool | What it does | Page size |
|---|---|---|
| platform_get_catalog | Discover what data this platform serves: every category and dataset, with coverage, cadence, licensing posture, freshness, and the MCP tools that serve each dataset. | default 50 · min 1 · max 100 |
| platform_get_freshness | Report freshness and licensing posture for every served dataset. | default 50 · min 1 · max 100 |
Over HTTP: Platform REST endpoints.