GET /llms.txt and the full reference at GET /llms-full.txt. Both are generated from the same OpenAPI 3.1 document the API serves, so they never drift from the live surface.
Neither needs an API key. An agent can fetch one cold, learn the endpoints and conventions, then start making authenticated /v1 calls.
GET /llms.txt, GET /llms-full.txt, and GET /openapi.json are all keyless, alongside GET /health and GET /ready.The two files
/llms.txt
A compact, sectioned index. A short preamble (base URL, auth, envelope, error codes, pagination, time model) followed by one line per endpoint grouped into sections such as “Public data (redistribution-safe)”, “Observations & provenance”, and “Calendar & official events”. Start here to learn the surface quickly.
/llms-full.txt
The full endpoint reference. Same preamble, then every endpoint with its summary, description, and parameters (types, enums, formats, and whether each is a path or query parameter). Use this when an agent needs to construct a call precisely.
What the preamble tells an agent
Both files open with the same machine-readable conventions, so an agent gets the contract before it sees a single endpoint:- Base URL and version (
v1). - Auth. Send
x-api-key: <key>orAuthorization: Bearer <key>. Scopes aredata:read,ops:read,admin. The keyless endpoints are listed explicitly. - Envelope.
{ data, meta: { request_id, api_version, pagination }, requestId }, with the error shape and the stable codes (bad_request,not_found,unauthorized,forbidden,rate_limited,internal_error). It states plainly that unknown query params are rejected withbad_request. - Pagination. Cursor-based:
limit(1 to 500, default 100) andcursor, withmeta.pagination.next_cursorandhas_more. - Time model. How
period/period_start/period_end,start_date/end_date, andas_ofdiffer. - Read-only. Every endpoint is
GET.
Fetch them
How an agent uses them
Discover
Fetch
/llms.txt to read the conventions and scan the endpoint index. This is enough to choose the right endpoint for a question (for example, /v1/public/observations/latest for the latest reading, or /v1/public/screener to filter countries).Construct
Fetch
/llms-full.txt (or /openapi.json for the structured spec) to read the exact parameters, types, and enums for the chosen endpoint, then build a valid request. Because unknown params are rejected, getting names right up front avoids a bad_request.Related
MCP server
Skip the manual HTTP and give your agent native tools instead.
TypeScript SDK
A typed client over the same envelope and errors.