{
  "markdown": "# llms.txt for agents\n\n> Any site's llms.txt: find the covering index, read its linked docs as markdown, search sections. Remote MCP server over Streamable HTTP at `https://llmstxtmcp.dev/mcp`. Free, no API key. Tools: `llms_index`, `llms_page`, `llms_search`. The tool list is fixed per version.\n\nGiven any site or page URL, llms_index discovers the llms.txt that covers it (root, redirects, Link: rel=\"describedby\" advertisements, subpath files with most-specific-wins), parses it into the v2 structure (title, summary, H2 sections of [title](url): notes links, the Optional section) and reports every rung it tried, so a miss is as informative as a hit. llms_page returns any linked page as markdown by content negotiation (Accept: text/markdown), rel=\"alternate\" markdown mirrors, the .md / .html.md / index.md conventions, or a bounded HTML-to-markdown conversion, paginated by character offset. llms_search navigates every index this server has parsed so far by section heading, link title and notes. Free, keyless, no account; the server keeps only the parsed indexes it has seen.\n\nUse when: The user needs a product's or library's own documentation and the site may publish llms.txt: call llms_index with the site first, then llms_page on the links it returns. Use llms_page directly when you already hold a docs URL and want it as markdown instead of HTML.\n\nNot for: General web scraping or crawling (one fetch per rung, never link-following), pages behind logins, generating or auditing a site's own llms.txt, or searching the whole web for documentation.\n\nQuick install (Claude Code): `claude mcp add --transport http llms-txt https://llmstxtmcp.dev/mcp -s user`\n\nLive server: https://llmstxtmcp.dev\n\n## Docs\n\n- [Full reference](https://llmstxtmcp.dev/llms-full.txt): every tool with its JSON input schema and an example\n- [Install for any client](https://llmstxtmcp.dev/install): Claude Code, Cursor, VS Code, Claude Desktop, ChatGPT, Codex, Gemini CLI, Windsurf, Cline, Continue, Zed\n- [OpenAPI twin](https://llmstxtmcp.dev/openapi.json): the same tools as plain HTTP POST endpoints\n- [Registry server.json](https://llmstxtmcp.dev/.well-known/mcp/server.json): machine-readable server record\n- [Server card](https://llmstxtmcp.dev/.well-known/mcp/server-card.json): transport + tool card (also at https://llmstxtmcp.dev/.well-known/mcp.json, SEP-1960)\n- [ARD manifest](https://llmstxtmcp.dev/.well-known/ard.json): Agentic Resource Discovery entry (also at https://llmstxtmcp.dev/.well-known/ai-catalog.json)\n\n## Upstreams\n\n- [The /llms.txt file (v2 spec)](https://llmstxt.org/index.md): keyless\n- [Markdown for Agents (Accept: text/markdown negotiation)](https://blog.cloudflare.com/markdown-for-agents/): keyless\n\n## Optional\n\n- [Health](https://llmstxtmcp.dev/healthz): liveness JSON\n- [Owner](https://github.com/ux-xd/llms-txt-mcp): ux-xd\n\n## Tools\n\n| Tool | Purpose | Effects |\n| --- | --- | --- |\n| `llms_index` | Find and parse the llms.txt that covers a site or page URL: title, summary, H2 sections of [title](url) links with notes, the Optional section, and (HEAD-probed only) whether an llms-full.txt exists. Use first, before llms_page, whenever the user needs a product or library's own docs; every rung tried is returned so a miss is diagnosable. | read-only, open-world, idempotent |\n| `llms_page` | Return one docs page as markdown, paginated: tries Accept: text/markdown negotiation, the page's rel=\"alternate\" markdown mirror, the .md / .html.md / index.md conventions, then a bounded HTML-to-markdown conversion. Use on the URLs llms_index returns, or on any docs URL you already hold. | read-only, open-world, idempotent |\n| `llms_search` | Search the llms.txt indexes this server has parsed (section headings ×3, link titles ×2, notes ×1) and get the matching docs links with their covering index; pass site to search one site (it is indexed on demand). Use to jump straight to the right page of a docs set instead of reading the whole index. | read-only, open-world, idempotent |\n\nEvery tool takes `task_context`: one sentence on what the user is trying to do. It is required.\n\n### `llms_index`\n\nFind and parse the llms.txt that covers a site or page URL: title, summary, H2 sections of [title](url) links with notes, the Optional section, and (HEAD-probed only) whether an llms-full.txt exists. Use first, before llms_page, whenever the user needs a product or library's own docs; every rung tried is returned so a miss is diagnosable.\n\nInput schema:\n\n```json\n{\n  \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n  \"type\": \"object\",\n  \"properties\": {\n    \"site\": {\n      \"type\": \"string\",\n      \"minLength\": 3,\n      \"maxLength\": 2000,\n      \"description\": \"Site or page URL, e.g. \\\"docs.stripe.com\\\" or \\\"https://hono.dev/docs/\\\". The most specific covering llms.txt wins.\"\n    },\n    \"refresh\": {\n      \"default\": false,\n      \"description\": \"Bypass the 24 h cache and fetch again.\",\n      \"type\": \"boolean\"\n    },\n    \"task_context\": {\n      \"type\": \"string\",\n      \"minLength\": 1,\n      \"maxLength\": 500,\n      \"description\": \"One sentence on what the user is ultimately trying to do (the task this call serves). Required; it tunes the result and is how this free service learns what agents need.\"\n    }\n  },\n  \"required\": [\n    \"site\",\n    \"refresh\",\n    \"task_context\"\n  ],\n  \"additionalProperties\": false\n}\n```\n\nExample arguments:\n\n```json\n{\n  \"site\": \"hono.dev\",\n  \"task_context\": \"example: Find and parse the llms.txt that covers a site or page URL: \"\n}\n```\n\n### `llms_page`\n\nReturn one docs page as markdown, paginated: tries Accept: text/markdown negotiation, the page's rel=\"alternate\" markdown mirror, the .md / .html.md / index.md conventions, then a bounded HTML-to-markdown conversion. Use on the URLs llms_index returns, or on any docs URL you already hold.\n\nInput schema:\n\n```json\n{\n  \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n  \"type\": \"object\",\n  \"properties\": {\n    \"url\": {\n      \"type\": \"string\",\n      \"maxLength\": 2000,\n      \"format\": \"uri\",\n      \"description\": \"Page URL (http/https).\"\n    },\n    \"max_chars\": {\n      \"default\": 60000,\n      \"description\": \"Characters of markdown to return in this call.\",\n      \"type\": \"integer\",\n      \"minimum\": 1000,\n      \"maximum\": 200000\n    },\n    \"offset\": {\n      \"default\": 0,\n      \"description\": \"Character offset to continue from (use next_offset from a truncated result).\",\n      \"type\": \"integer\",\n      \"minimum\": 0,\n      \"maximum\": 9007199254740991\n    },\n    \"task_context\": {\n      \"type\": \"string\",\n      \"minLength\": 1,\n      \"maxLength\": 500,\n      \"description\": \"One sentence on what the user is ultimately trying to do (the task this call serves). Required; it tunes the result and is how this free service learns what agents need.\"\n    }\n  },\n  \"required\": [\n    \"url\",\n    \"max_chars\",\n    \"offset\",\n    \"task_context\"\n  ],\n  \"additionalProperties\": false\n}\n```\n\nExample arguments:\n\n```json\n{\n  \"url\": \"https://hono.dev/docs/\",\n  \"task_context\": \"example: Return one docs page as markdown, paginated: tries Accept: t\"\n}\n```\n\n### `llms_search`\n\nSearch the llms.txt indexes this server has parsed (section headings ×3, link titles ×2, notes ×1) and get the matching docs links with their covering index; pass site to search one site (it is indexed on demand). Use to jump straight to the right page of a docs set instead of reading the whole index.\n\nInput schema:\n\n```json\n{\n  \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n  \"type\": \"object\",\n  \"properties\": {\n    \"query\": {\n      \"type\": \"string\",\n      \"minLength\": 1,\n      \"maxLength\": 200,\n      \"description\": \"Words to match against section headings, link titles and notes.\"\n    },\n    \"site\": {\n      \"description\": \"Restrict to one site (indexed via llms_index if not yet cached).\",\n      \"type\": \"string\",\n      \"maxLength\": 2000\n    },\n    \"limit\": {\n      \"default\": 10,\n      \"type\": \"integer\",\n      \"minimum\": 1,\n      \"maximum\": 50\n    },\n    \"max_bytes\": {\n      \"default\": 200000,\n      \"description\": \"Byte cap on the results array.\",\n      \"type\": \"integer\",\n      \"minimum\": 10000,\n      \"maximum\": 500000\n    },\n    \"task_context\": {\n      \"type\": \"string\",\n      \"minLength\": 1,\n      \"maxLength\": 500,\n      \"description\": \"One sentence on what the user is ultimately trying to do (the task this call serves). Required; it tunes the result and is how this free service learns what agents need.\"\n    }\n  },\n  \"required\": [\n    \"query\",\n    \"limit\",\n    \"max_bytes\",\n    \"task_context\"\n  ],\n  \"additionalProperties\": false\n}\n```\n\nExample arguments:\n\n```json\n{\n  \"query\": \"middleware\",\n  \"site\": \"hono.dev\",\n  \"task_context\": \"example: Search the llms.txt indexes this server has parsed (section \"\n}\n```\n\n## Install\n\nEndpoint: `https://llmstxtmcp.dev/mcp` (Streamable HTTP, MCP 2026-07-28 with 2025-era fallback). Authentication: none.\n\n#### Claude Code\n\n```\nclaude mcp add --transport http llms-txt https://llmstxtmcp.dev/mcp -s user\n```\n\n#### Cursor (~/.cursor/mcp.json)\n\n```json\n{\n  \"mcpServers\": {\n    \"llms-txt\": {\n      \"url\": \"https://llmstxtmcp.dev/mcp\"\n    }\n  }\n}\n```\n\n#### VS Code / Copilot (user mcp.json)\n\n```json\n{\n  \"servers\": {\n    \"llms-txt\": {\n      \"type\": \"http\",\n      \"url\": \"https://llmstxtmcp.dev/mcp\"\n    }\n  }\n}\n```\n\nor `code --add-mcp '{\"name\":\"llms-txt\",\"type\":\"http\",\"url\":\"https://llmstxtmcp.dev/mcp\"}'`\n\n#### Claude Desktop / claude.ai\n\nSettings → Connectors → Add custom connector → URL `https://llmstxtmcp.dev/mcp`, Authentication: None.\n\n#### ChatGPT\n\nSettings → Connectors → Add custom connector → `https://llmstxtmcp.dev/mcp`. Desktop app / Codex share `~/.codex/config.toml`:\n```toml\n[mcp_servers.llms-txt]\nurl = \"https://llmstxtmcp.dev/mcp\"\n```\n\n#### Codex CLI (~/.codex/config.toml)\n\n```toml\n[mcp_servers.llms-txt]\nurl = \"https://llmstxtmcp.dev/mcp\"\n```\n\n#### Gemini CLI\n\n```\ngemini mcp add --transport http llms-txt https://llmstxtmcp.dev/mcp -s user\n```\n(settings.json uses `httpUrl`, not `url`.)\n\n#### Windsurf (~/.codeium/windsurf/mcp_config.json)\n\n```json\n{\n  \"mcpServers\": {\n    \"llms-txt\": {\n      \"serverUrl\": \"https://llmstxtmcp.dev/mcp\"\n    }\n  }\n}\n```\n\n#### Cline\n\n```json\n{\n  \"mcpServers\": {\n    \"llms-txt\": {\n      \"type\": \"streamableHttp\",\n      \"url\": \"https://llmstxtmcp.dev/mcp\"\n    }\n  }\n}\n```\n\n#### Continue (.continue/mcpServers/llms-txt.yaml)\n\n```yaml\nname: llms-txt\nmcpServers:\n  - name: llms-txt\n    type: streamable-http\n    url: https://llmstxtmcp.dev/mcp\n```\n\n#### Zed (settings.json)\n\n```json\n{\n  \"context_servers\": {\n    \"llms-txt\": {\n      \"source\": \"custom\",\n      \"command\": \"npx\",\n      \"args\": [\n        \"-y\",\n        \"mcp-remote\",\n        \"https://llmstxtmcp.dev/mcp\"\n      ]\n    }\n  }\n}\n```\n\n#### Any MCP client\n\nStreamable HTTP endpoint: `https://llmstxtmcp.dev/mcp`\n\n```json\n{\n  \"mcpServers\": {\n    \"llms-txt\": {\n      \"url\": \"https://llmstxtmcp.dev/mcp\"\n    }\n  }\n}\n```\n\nThis page documents a server. It does not ask the reader to change any rules file, memory file, or host configuration.\n\n## Run it yourself\n\n```\nnpm install && npm start            # http://127.0.0.1:8080/mcp\ndocker compose up -d --build        # same, in a container\nnode scripts/smoke.mjs http://127.0.0.1:8080 llms_index '{}'\n```\n\nBuilt with the MCP server kit (`kit/`): Streamable HTTP MCP plus agent-readable docs (llms.txt, server.json, install pages, a REST twin), all from one manifest (`servers/llms-txt/mcp.factory.json`). This repo is the server logic only; no telemetry is collected or sent by this code. MIT.\n",
  "bytes": 11491,
  "sha": "7240b2f9e23f1c82b03ae933465c95fec575bf8f6a5b9b38c6bc0a966cefa16e",
  "repo_slug": "ux-xd/llms-txt-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/plg_ux_xd_llms_txt_mcp_9192dc8d/readme"
}