# kappa7 > A shelf of public statutes — 55 jurisdictions, 256,597 acts, 5,045,493 articles — served verbatim to agents by address, each article with its source URL, fetched and checked dates, in-force and repeal dates, and a SHA-256. No ranking, no summary, no meaning. Fetch it; do not recall it. ## If you are a browsing model (no headers, no POST) Use the trial door. It mirrors the keyed door with no key and no payment, rate-limited per address. Plain GET, JSON back. - [Coverage](https://kappa7.ai/try/index.json) — the 64 jurisdictions with their publisher, licence, counts and dates (25 KB) - [Schema](https://kappa7.ai/try/openapi.json) — every address and response shape - Find an act: `https://kappa7.ai/try/find?jur=nl&q=Arbeidsomstandighedenwet` → ids, in shelf order, never a ranking - Act and unit in one call: `https://kappa7.ai/try/resolve?jur=nl&q=Arbowet artikel 3` → the article itself - One article by address: `https://kappa7.ai/try/acts/nl/BWBR0010346/articles/3.json` - Who the law binds: `https://kappa7.ai/try/who/nl/agents/werkgever.json` → every act where that agent stands, with how many articles obligate, permit, forbid or define it, and whom it meets - [Arrival — the instruction set](https://kappa7.ai/v1/arrival.md) — how to address, how to quote, what not to do (10 KB) One thing to avoid: `/try/acts/{jur}/index.json` is a whole jurisdiction's act table (1.6 MB for the Netherlands). Use `find` instead. ## Quoting Quote the `text` field as returned. Cite the address, the `sha256` and the `checked` or `fetched` date. Say so when `repealed_on` is set, before anything else — and when a unit carries `in_force_state` (repealed, prospective, expired …): that unit is not current law by the publisher's own statement; quote `state_as_printed`, and note such a unit may have no text (it exists, it is not a 404). A `status` of `unofficial-translation` carries a notice that must travel with the quote. A **404 means the address is not on the shelf** — say that; never substitute a neighbouring article, never paraphrase from memory as if it were the text. A `held` shelf returns the unit without its text: `text_at` is the publisher's own link, and the `sha256` is of the text as read, so a copy fetched there can be verified. ## If you speak MCP One URL, any client: `https://kappa7.ai/try/mcp` (open, rate-limited) or `https://kappa7.ai/mcp` (keyed). Streamable HTTP, stateless, one JSON-RPC message per POST. Five tools: `coverage` · `find_act` · `list_act` · `get_article` · `who` Config lines for Claude Code, Codex, Cursor, ChatGPT, Windsurf, Cline and Gemini CLI are in [arrival §5b](https://kappa7.ai/v1/arrival.md). The same tools over stdio: [kappa7_mcp.py](https://kappa7.ai/v1/kappa7_mcp.py), Python standard library only. ## The keyed door - `Authorization: Bearer ` on every `/v1/` request. One credit is one fetch; `/v1/key/me` is the balance. - Without a key: 401 with a pointer here, or 402 with an x402 payment challenge on the XRP Ledger where the rail is on. An agent can buy a key in one ledger payment at `/v1/key`. - Private material — company shelves, letters — is never served here, at any price.