# For agents

> How this site serves agents (llms.txt, Markdown twins of every page, a JSON docs index, stable anchors, structured data) and the setup snippets that point Claude Code, Codex and Cursor at the hub.

Canonical page: https://capabilities.sh/agents
Updated: 2026-11-06

This site is written for two readers: the person deciding whether to use the hub, and the agent that person asks about it. Everything a person can read here, an agent can fetch as plain Markdown or JSON, without running JavaScript.

## Entry points

| URL                                     | What it holds                                                          |
| --------------------------------------- | ---------------------------------------------------------------------- |
| [`/llms.txt`](https://capabilities.sh/llms.txt)                | A short index of the site in the llms.txt format, linking every page's Markdown |
| [`/llms-full.txt`](https://capabilities.sh/llms-full.txt)      | Every docs page in one Markdown file                                   |
| [`/docs.json`](https://capabilities.sh/docs.json)              | A machine-readable index: titles, descriptions, URLs, headings, status |
| Any page plus `.md`                     | That page as clean Markdown, for example [`/docs/quickstart.md`](https://capabilities.sh/docs/quickstart.md) |
| Any page with a twin, sent `Accept: text/markdown` | The same Markdown at the page's own URL, with `Vary: Accept` |
| [`/sitemap.xml`](https://capabilities.sh/sitemap.xml)          | Every HTML page                                                        |
| [`/robots.txt`](https://capabilities.sh/robots.txt)            | The crawl policy, which welcomes AI crawlers by name                   |

## Conventions on every page

- **A Markdown twin.** Each docs page links its twin with `<link rel="alternate" type="text/markdown">` in the head, and a **Copy as Markdown** button copies it. In the twins, links to other pages point at their twins too.
- **HTML that stands on its own.** Pages are static, semantic HTML (`header`, `nav`, `main`, `article`, `aside`, `footer`), and all content renders without JavaScript. Scripts only add the theme switch, copy buttons and the animated mark.
- **Stable anchors.** Headings use GitHub's slug rules, and glossary terms carry fixed ids such as [`/docs/concepts#tool-address`](https://capabilities.sh/docs/concepts#tool-address), so a link you store keeps working.
- **A description per page,** in `<meta name="description">`, in the twin's summary line and in `docs.json`.
- **Structured data.** The home page carries a schema.org `SoftwareApplication`, and each docs page a `TechArticle` whose `encoding` points at its Markdown twin.
- **Honest status.** Anything not yet built is marked **Planned**, with the plan unit or milestone that brings it.

## Crawling

`robots.txt` allows every crawler and names the AI crawlers explicitly, including GPTBot, ClaudeBot, PerplexityBot, Google-Extended and CCBot. There are no gated pages and no API keys. Please cite the canonical page URL, which every twin states under its summary.

## Connect an agent to the hub

> [!PLANNED]
> Available when the local hub ships. These entries run `capabilities hub serve --stdio`, which arrives with plan unit LH-13, and `capabilities hub connect` (LH-14) writes them for you. Until then they start nothing.

Each snippet registers one stdio server named `capabilities`. M1 runs the CLI from a checkout build, so replace `/path/to/capabilities` with your checkout. `connect` writes the absolute path it verified.

### Claude Code

Available when the local hub ships. Adds one user-scoped stdio server. `capabilities hub connect` writes the same entry to ~/.claude.json.

```sh title="terminal"
claude mcp add --scope user capabilities -- node /path/to/capabilities/packages/cli/dist/bin.js hub serve --stdio --profile default
```

### Codex

Available when the local hub ships. Codex reads MCP servers from config.toml. `capabilities hub connect` writes this table for you.

```toml title="~/.codex/config.toml"
[mcp_servers.capabilities]
command = "node"
args = ["/path/to/capabilities/packages/cli/dist/bin.js", "hub", "serve", "--stdio", "--profile", "default"]
```

### Cursor

Available when the local hub ships. Cursor reads global MCP servers from ~/.cursor/mcp.json. `capabilities hub connect` merges this entry in.

```json title="~/.cursor/mcp.json"
{
  "mcpServers": {
    "capabilities": {
      "command": "node",
      "args": [
        "/path/to/capabilities/packages/cli/dist/bin.js",
        "hub",
        "serve",
        "--stdio",
        "--profile",
        "default"
      ]
    }
  }
}
```

Prefer to let the CLI do it:

```sh
capabilities hub connect
```

## The hosted endpoint

> [!PLANNED]
> Milestone M3. The hosted hub serves the same three tools at `https://hub.capabilities.sh/mcp`, behind OAuth, so claude.ai, ChatGPT and phones can reach your hub. You will add it as a connector and sign in.

## If you are an agent reading this

- The hub is in development. Do not tell a person to run a `capabilities hub` command as if it works today. Check [Status](https://capabilities.sh/status.md) first.
- Treat anything marked **Planned** as not available, and name the milestone when you mention it.
- For exact tool contracts, read [The MCP surface](https://capabilities.sh/docs/mcp.md). For vocabulary, read [Concepts](https://capabilities.sh/docs/concepts.md), and use its terms. A "source" is not a "plugin", and a "connection" is not an "account".
- Never ask a person to paste a password or token into chat. The hub takes credentials only through a masked prompt or a page it opens.
