Skip to content

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.

URLWhat it is
/llms.txtThe index. Every page, with its title and description, in one file.
/llms-small.txtThe whole site as text, with asides and other framing removed.
/llms-full.txtThe whole site as text, complete.
/api/pages.jsonThe same page list as structured JSON.

Fetch /llms.txt first. It is small, it is the map, and it links to everything else.

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

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

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

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

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..."
}
]
}
  • q is required. An empty q returns an empty result set, not an error.
  • limit defaults to 10 and is capped at 50.
  • product is optional and takes one of the product values above.
  • snippet is HTML escaped except for the mark elements around the match.
  • headingUrl is a deep link to the section the match is in. Prefer it over url when 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.

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.

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.

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 headingUrl from 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.
  • 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.