<!-- Agent Datasets docs · Platform guide · canonical: https://www.agentdatasets.com/docs/guides/platform · rendered from https://www.agentdatasets.com -->

# 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 |

## 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

```python
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:

```json
{
  "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

```python
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_refresh` is **our pipeline** — when the connector last succeeded.
- `latest_as_of` is **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_more` rather than assuming it always will.

## Tools and endpoints

| Tool | What it does | Reference |
| --- | --- | --- |
| `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. | https://www.agentdatasets.com/docs/tools/platform_get_catalog.md |
| `platform_get_freshness` | Report freshness and licensing posture for every served dataset. | https://www.agentdatasets.com/docs/tools/platform_get_freshness.md |

Over HTTP: https://www.agentdatasets.com/docs/rest/platform.md
