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