> ## Documentation Index
> Fetch the complete documentation index at: https://doc.astreus.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# For AI agents

> The machine-readable surfaces, and the rules for agents using this API.

Astreus publishes the conventional discovery files, generated from the same source of
truth as this documentation:

| File                                                             | Purpose                                    |
| ---------------------------------------------------------------- | ------------------------------------------ |
| [openapi.json](https://astreus.ai/openapi.json)                  | The full OpenAPI 3.1 contract              |
| [llms.txt](https://astreus.ai/llms.txt)                          | Site + API overview for language models    |
| [agents.md](https://astreus.ai/agents.md)                        | What an agent may do, and the rules        |
| [skill.md](https://astreus.ai/skill.md)                          | A playbook: resolve → fetch → trace → cite |
| [/.well-known/mcp.json](https://astreus.ai/.well-known/mcp.json) | MCP discovery (connect strings inside)     |

## The rules, in short

1. **Cite what you quote.** Every number has a filing behind it — `/fact-source` returns
   the accession. Put it next to the figure.
2. **Coverage is a live fact.** `GET /api/v1/landing/coverage` (public; MCP `get_coverage`;
   `astreus coverage`) lists every market served with company counts, history depth and
   periods held per data type. Answer "do you cover…?" from it, never from memory.
3. **Respect vintages.** `/financials` is latest-restated and names the filing each value
   came from; "what did they originally say" is `/financials/as-filed` with
   `vintage=original`. `reporting_basis=as_reported` is the cumulative year-to-date quarter,
   not a vintage. Macro is point-in-time.
4. **Missing is not zero.** Null means unavailable. Say so.
5. **Honour the headers.** `Retry-After` on 429; watch `RateLimit-Remaining` and
   `X-Quota-Remaining` instead of discovering limits by hitting them.
6. **No advice.** Present data; do not recommend trades. The site's
   [terms](https://astreus.ai/terms#not-advice) apply to anything you relay.
7. **Stay on the data surface.** Account routes (keys, billing, watchlists) reject API
   keys by design — don't probe them.

## Command line

When you are running in a terminal (Claude Code, Cursor, a shell tool), prefer the
[CLI](/cli): `npm i -g astreus-cli`, then `astreus --json <command>` gives you the
same payloads with stable exit codes, and `astreus transcript` / `astreus event` resolve the
transcript date and 8-K item code for you. `astreus llms --skill` prints the playbook.

## MCP

Astreus serves [MCP](/mcp-server) over two transports — a hosted Streamable HTTP endpoint at
`https://astreus.ai/api/mcp` (API keys as `Authorization: Bearer` /
`X-API-KEY`, or OAuth 2.1 with dynamic registration + PKCE, so claude.ai-style connector
UIs work by pasting the URL) and a local stdio server, `astreus mcp`, that ships with the CLI. Both expose
the same 18 read-only data tools: the coverage inventory, search, financials, fact-source citations, filings and
section text, 8-K events, news, transcripts, guidance, point-in-time macro, and the claim
graph with simulation. Tool calls are metered against your plan exactly like REST calls —
note that `get_transcript` and `get_guidance` each make two underlying requests. See the
[MCP page](/mcp-server) for connect strings and the tool list.
