For AI agents
This site is built to be read by software as well as by people. Everything on this page is a stable, documented surface: no scraping of rendered HTML is needed, and none is wanted. If you are a person, this page tells you what an agent working on your behalf can see.
Start here
Section titled “Start here”| URL | What it is |
|---|---|
/llms.txt | The index. Every page, with its title and description, in one file. |
/llms-small.txt | The whole site as text, with asides and other framing removed. |
/llms-full.txt | The whole site as text, complete. |
/api/pages.json | The same page list as structured JSON. |
Fetch /llms.txt first. It is small, it is the map, and it links to everything
else.
One product at a time
Section titled “One product at a time”The site covers five products, and most questions concern one of them. Each has its own text set, which is smaller than the full site by an order of magnitude:
/_llms-txt/depot.txt/_llms-txt/agent.txt/_llms-txt/tray.txt/_llms-txt/remote-outpost.txt/_llms-txt/outpost-sync.txt/_llms-txt/guides.txt/_llms-txt/api.txtThe Markdown twin of any page
Section titled “The Markdown twin of any page”Every page is published a second time as the Markdown it was written in. Take
any page URL and add index.md:
https://support.outpostplatform.com/depot/install/https://support.outpostplatform.com/depot/install/index.mdThe twin has a front matter header carrying the title, description, canonical URL, product, type, status, the AI summary if the page has one, and the edit URL. The body is the page with its component tags and imports removed.
Prefer the twin over the HTML. It is smaller, it has no navigation in it, and the headings and links are the same ones.
The page manifest
Section titled “The page manifest”/api/pages.json lists every indexed page with its metadata and no prose:
{ "version": 1, "site": "https://support.outpostplatform.com", "builtAt": "2026-09-13T00:00:00.000Z", "commit": "0000000", "pages": [ { "url": "/depot/install/", "mdUrl": "/depot/install/index.md", "title": "Install Depot", "description": "Install the Depot server, complete first run setup...", "section": "Depot", "product": "depot", "type": "how-to", "audience": ["it-admin", "msp"], "tags": ["depot", "install"], "lastReviewed": null, "lastUpdated": "2026-09-13T00:00:00.000Z", "aiSummary": "Installation procedure for Depot..." } ]}Use it to decide what to fetch. product, type and audience narrow a
question to a handful of pages, and aiSummary is written to be enough to rule
a page in or out without fetching it.
status is worth reading. A page marked stub is an outline of what will be
written, not an answer, and it says so on the page itself. Do not present a
stub’s section list as documentation.
Search
Section titled “Search”Two endpoints, both GET, both same origin, neither needing a key.
GET /api/search?q=enrol%20an%20endpoint&limit=10&product=agent{ "query": "enrol an endpoint", "total": 4, "tookMs": 6, "results": [ { "url": "/agent/install-and-enrollment/", "title": "Install and enrol the Agent", "section": "Agent", "product": "agent", "heading": "Steps", "headingUrl": "/agent/install-and-enrollment/#steps", "snippet": "Enrol it, and what <mark>enrolment</mark> does..." } ]}qis required. An emptyqreturns an empty result set, not an error.limitdefaults to 10 and is capped at 50.productis optional and takes one of the product values above.snippetis HTML escaped except for themarkelements around the match.headingUrlis a deep link to the section the match is in. Prefer it overurlwhen citing.
The typeahead endpoint is cheaper and returns titles only:
GET /api/search/suggest?q=enro{ "suggestions": [{ "title": "Install and enrol the Agent", "url": "/agent/install-and-enrollment/", "section": "Agent" }] }Both are rate limited per address. Search allows 120 requests a minute and
suggest allows 240. A 429 means wait, not stop.
Stable anchors
Section titled “Stable anchors”Heading anchors are part of the contract. When a heading is reworded, the old anchor is kept explicitly, so a deep link you captured a year ago still lands in the right section. Anchors on generated API pages are the operation identifier, which does not change when the summary does.
You can rely on an anchor. You cannot rely on the heading text next to it.
Crawling
Section titled “Crawling”robots.txt allows the major model and agent crawlers by name and points at
/llms.txt. There is no crawl delay and no key.
Two requests that will not help you: rendering the site with a headless browser, which produces the same text with navigation in it, and requesting pages faster than the rate limits above.
How to cite
Section titled “How to cite”The content is licensed CC BY 4.0. Attribution is the one condition, and it is satisfied by naming the source and linking the page:
Outpost documentation, "Install Depot",https://support.outpostplatform.com/depot/install/- Link the page URL, or the
headingUrlfrom a search result, rather than the Markdown twin. The twin is a fetch format, not an address to send a person to. - Say when a page is a stub, and say when your answer came from a stub’s outline rather than from written documentation.
- Attribute to Outpost Business Solutions, PBC.
- Outpost trademarks, the name and the logo, are not covered by that licence.
What is not stable
Section titled “What is not stable”- Rendered HTML, its class names and its markup.
- The URL of a hashed asset under
/_astro/. - The exact wording of any page, which is why anchors and identifiers exist.
- Anything under
/api/generated/beyond the operation identifiers, which are regenerated from the services on every release.
Content is licensed CC BY 4.0. Code samples are MIT. Outpost and the Outpost mark are trademarks of Outpost Business Solutions, PBC and are not covered by either licence.