Skip to main content
contracts.io is written to be read by software as well as by people, and the rule governing all of it is that the machine-readable copy says the same thing the page says. An llms.txt that differs from the rendered page is a cloak.

The two text files

/llms.txt

Every URL on the site, under the same headings the site itself uses — the template shelves and the picker’s regions — one line each, with absolute URLs.

/llms-full.txt

The same map, with each page’s own lead paragraph underneath it, for a reader that wants the words rather than the addresses.
Both are generated from the same module as the pages, so the counts and the names cannot drift. An earlier version listed only the twelve papers in the library and four common jurisdictions; it was honest and it was a map with most of the country missing. Every kind and every legal unit is in there now.

The sitemap

contracts.io/sitemap.xml carries the whole catalogue. Every page in it is generated statically at build, with invented URLs returning 404 rather than a thin page — so a URL in the sitemap is a URL that exists.

robots.txt

contracts.io/robots.txt allows everything, and then names sixteen read, search and training agents individually and allows them too:
robots.txt
Naming them by hand is a decision and not a default. We want to be read — and that is exactly why the text files may not say anything the pages do not.

Structured data

Pages carry JSON-LD for what they actually are: BreadcrumbList on every generated page, FAQPage where there are questions, ItemList on the indexes, and AdministrativeArea on each place under /law, with a sameAs pointing at its Wikidata entity. No ratings, no offers, no counts we cannot show.

These docs

This documentation site is built with Mintlify, which generates its own /llms.txt and /llms-full.txt from the pages you are reading. Once the docs are live at their own domain, those two files sit alongside the ones on the main site.

This page is not about MCP

Everything above is for crawlers: something fetching URLs and reading text. An agent that wants to act on a contract — draft one, stage a decision, read a letter — wants the MCP server, which is a different surface with a different set of rules and its own ceiling.

MCP

The same verbs the buttons have, one seat down, and it can never send and never sign. Draft, ahead of the backend.