An AI-ready website, compiled on every publish
What an AI agent sees when it visits a Laarpi site, how it finds the agent door, why the door is compiled from the same source as the site instead of bolted on, and the readiness score that checks it.
Every Laarpi site ships an agent door. On every publish, Laarpi compiles the agent-facing version of the site from the same source as the human one: a plain index, a Markdown copy of every public page, structured data, tools for the forms and the rules that let crawlers in. There is nothing to configure, and it comes with every plan.
It matters because people are no longer the only visitors. Assistants answer questions about businesses, browsing agents fill in forms for the person who asked them, and AI crawlers decide what a site is about from what they can parse. The agent door gives each of them a clean way in.
What an agent sees
| What ships | What it is | Who reads it |
|---|---|---|
/llms.txt | One title, a one-line summary, then sections of links to each page's Markdown twin | Assistants and agents that look for it before crawling |
| Markdown twins | A clean .md version of every public page, made from the same content | Agents that want the text without the layout |
| Discovery links | rel="describedby" pointing to llms.txt and rel="alternate" type="text/markdown" on each page, in the HTML and as HTTP Link headers | Anything that reads the first response |
| JSON-LD | Organization, plus Service, FAQPage or Product, in the HTML the server sends | Search engines and answer engines |
| Form tools | Each form registered as a WebMCP tool, with its fields described | Browsing agents, where the browser supports it |
| Agent card | /.well-known/agent-card.json, describing the same tools under the same names | Agents deciding what the site can do |
robots.txt | Allows the main AI crawlers on public paths | Crawlers, before anything else |
The llms.txt follows the llms.txt proposal: an H1 with the site's name, a blockquote summary, and H2 sections of links. Actions get their own section. For a fictional ceramics studio it reads like this:
# Field Notes Ceramics
> A two-person stoneware studio in Porto. Commissions open twice a year.
## Pages
- [Work](work.md): tableware made for six restaurants
- [Studio](studio.md): who we are, the kiln, visiting hours
## Actions
- [Commission request](commission.md): what to send and what happens next
How agents find the door
An agent that fetches the homepage gets the way in from the very first response, without running any JavaScript. The describedby link points to llms.txt, each page names its Markdown twin, and the hosting sends the same links as HTTP headers, so even a client that never parses the HTML can follow them.
The structured data is part of the HTML the server sends. It is never added later by a script, because many crawlers don't run scripts, and a Product price that only appears after JavaScript is a price they never see. On a store, that price is the same number the page shows and the checkout charges.
Forms agents can use
A browsing agent asked to "book a studio visit for Saturday" usually has to find the form, guess which field is which and hope the button does what it says. On a Laarpi site, each form also registers as a tool through WebMCP, a draft from the W3C's Web Machine Learning Community Group with editors from Microsoft and Google. The tool has a name, a description and typed fields, and the agent card lists the same tools under the same names.
WebMCP is still a draft and browser support is arriving gradually, so the tools are registered only where the browser offers the interface. Everyone else gets the same form, unchanged. A tool submission runs the same validation and lands in the same place as a person's: your Supabase table, if you have connected a backend. Tools that spend money or book time are flagged as consequential, so an agent knows not to treat them like a search box.
Why compiling beats retrofitting
Most sites get their agent layer added afterwards: an llms.txt written by hand once, a JSON-LD snippet pasted into the head, a plugin that crawls the site and guesses. Every one of those copies starts going stale the day the site changes. The price on the page moves and the structured data keeps the old one. A page is renamed and llms.txt still links the old address.
Laarpi builds both doors from one source in one build. The pages, the Markdown twins, the llms.txt links, the structured data and the form tools all come from the same content at the same moment, so they can't disagree. Republish after a change and the agent door changes with it. Because Laarpi writes the site in the first place, it knows what each form is for and what each page says, so nothing has to be inferred from the rendered page.
The readiness score
One score checks the door on every publish. SI, Laarpi's agent, checks it as part of reviewing its own work, and the score appears in Publish. It passes only when:
- a plain HTTP fetch of the homepage returns the
describedbylink; /llms.txtparses, and every Markdown page it links returns 200;- the JSON-LD is in the HTML source, not added by a script;
- the form tool names match the agent card;
- a republish updates both doors in the same build;
- no bot wall or challenge blocks public pages.
That last check matters if you put your custom domain behind a proxy or firewall: a challenge page shown to every crawler fails the score, because it hides the whole door.
What changes by site type
- Service sites (the default) get everything above, with Service structured data and FAQPage where the site has questions and answers.
- Online stores get Product structured data and Open Graph, with prices that match the Polar checkout. llms.txt still ships, but for a store the product data does the heavy lifting.
- Documentation sites lean on llms.txt and the Markdown twins, with section indexes when the site is large.
What it does not do
- It doesn't promise rankings. Google's documentation on AI features says no special AI files are needed to appear in them. The door helps agents that read it and keeps the server HTML clean for everyone else.
- It doesn't publish one giant file by default. There is no
llms-full.txtby default. - It doesn't let agents pay on their own. Payments go through the Polar checkout, with a person at the end of it.
- It doesn't open private pages. The door covers public paths only. Members-only content stays behind sign-in.
How to get it
Publish. The door is part of every Laarpi site on every plan, so there is nothing to ask for. Describe the site, direct it in plain words, and see the rest of the flow on how it works or the plans on pricing.



