# Markdown and discovery

Every docs and examples page, and the homepage, has a Markdown version: the same content as the HTML page, without navigation, scripts or styling, typically under a tenth of its size. Fetch the page you need as Markdown, and use an index to find it:

| Use                                   | When                                                       |
| ------------------------------------- | ---------------------------------------------------------- |
| a page's Markdown                     | you know the page you want                                 |
| [`llms.txt`](#llmstxt)                | to find pages: every page, with what it's for              |
| [the docs sitemap](#the-docs-sitemap) | to see how the docs are organized                          |
| [`llms-full.txt`](#llms-fulltxt)      | to load everything at once, offline or in bulk; it's large |

## Ask for Markdown

Add `.md` to a page's path, or request its own URL with `Accept: text/markdown`. Both return the same document:

```sh
curl https://june.dev/docs/workflows/parallelism.md
curl -H "Accept: text/markdown" https://june.dev/docs/workflows/parallelism
```

The homepage is `https://june.dev/index.md` and the docs overview is `https://june.dev/docs.md`.

- **Content type.** Responses are `text/markdown; charset=utf-8`, with a `Link` header naming the page's canonical URL.
- **Browsers still get HTML.** A request gets Markdown only when its `Accept` header names `text/markdown` and doesn't rate `text/html` higher, so `*/*` and a browser's usual header get the page.
- **Links lead to Markdown.** Links between pages are absolute `https://june.dev/….md` URLs, so an agent can follow them without getting HTML.
- **Unknown URLs are 404s.** A `.md` URL that isn't a docs or examples page answers `404` in Markdown, and only pages in the docs can be requested, never files.
- **HTML pages point to it.** Each page with a Markdown version names it in its head: `<link rel="alternate" type="text/markdown" href="…">`.

## llms.txt

[https://june.dev/llms.txt](https://june.dev/llms.txt) is the index, in the [llms.txt](https://llmstxt.org) format: what June is, then every page by docs section, each linked to its Markdown with a sentence on what it's for, then these agent interfaces. Read it first, then fetch only the pages you need.

## The docs sitemap

[https://june.dev/docs/sitemap.md](https://june.dev/docs/sitemap.md) is the sidebar as a nested Markdown list: each section, then its pages in reading order, linked to their Markdown. Use it to see how the docs are organized; `llms.txt` has the same pages with descriptions.

## llms-full.txt

[https://june.dev/llms-full.txt](https://june.dev/llms-full.txt) is every docs and examples page in one file, whole and in reading order. It's large, around 360 KB, so prefer `llms.txt` and single pages unless you want everything. Its first lines say how many documents follow, and nothing is truncated. Each document starts with a header between two lines of 80 `=` signs, with its `title:`, its `section:` in the docs, its page `url:` and its `markdown:` URL, one per line.

## Where the Markdown comes from

It's the same source as the HTML page, not a copy. Pages about the `june` package are its own Markdown files, as they ship in the npm package, with links rewritten to June.dev. Pages written for the site are MDX, and each component in them has a fixed Markdown form: an excerpt of the Copy Agent's source, for example, becomes its fenced code and a link to the lines it came from. No model writes any of it.

## Next

- [MCP server](https://june.dev/docs/agents/mcp.md): search and read the same pages as tools and resources.
- [Using June.dev from an agent](https://june.dev/docs/agents.md): which interface to give an agent.
