io.github.capabilityhostprotocol/capabilities-txt-registry
Discover what websites across the agentic web can do — query the capabilities.txt registry.
What can you do with io.github.capabilityhostprotocol/capabilities-txt-registry?
- Line 1 is
# capabilities.txt. - A blockquote (
>) summary follows: one sentence on what the host offers, ##headings group capabilities by category (free-form, your choice).###headings name a group, optionally with a stable(group-id).- Each capability is a list item: a stable
capability-id, an optional - It's just markdown. If a human can read it and an agent can parse it, it's valid.
Install
Add this to your client's MCP configuration (Claude Desktop: claude_desktop_config.json; Cursor: .cursor/mcp.json; VS Code and others use the same "mcpServers" shape).
claude mcp add --transport http capabilities-txt-registry 'https://capabilitiestxt.org/api/mcp'
{
"mcpServers": {
"capabilities-txt-registry": {
"type": "http",
"url": "https://capabilitiestxt.org/api/mcp"
}
}
}
Documentation
From the project's README on GitHub, refreshed weekly. Links open on GitHub.
Contents
capabilities.txt
A simple, open convention for a website to declare what it can do — the capabilities an agent can discover and invoke — at a well-known location.
The web taught machines to read in layers. robots.txt says what a crawler may
access. sitemap.xml says what exists. llms.txt says what's worth reading.
Each answers one narrow question for an automated reader.
None of them answers the question agents now ask: what can this host actually do?
Agents have stopped only reading the web and started acting on it. An agent that lands on your site can summarize your docs — but it has no standard way to discover that you expose a "create support ticket" capability, a "check inventory" capability, or "start a return," and how to call them. Today that happens through bespoke, one-vendor-at-a-time integrations.
capabilities.txt is the missing layer: a public, well-known file where a host
declares the capabilities it offers, so any agent can discover what it can do.
It is deliberately small. llms.txt worked because you could adopt it in an
afternoon. capabilities.txt follows the same rule.
The two forms
A host publishes one or both:
/capabilities.txt— human- and agent-readable markdown: capabilities grouped by category, each with an id, version, and one-line description./.well-known/capabilities.json— the structured form: an array of capability references, each resolvable to a full descriptor.
The markdown form is for discovery and reading. The JSON form is for machines that want structure. Publishing the markdown form alone is a perfectly good start.
Format (/capabilities.txt)
# capabilities.txt
> One sentence: what this host is and what kind of capabilities it offers.
> Structured form: https://example.com/.well-known/capabilities.json
## <Category>
### <Group name> (<group-id>)
- <capability-id> (v<version>) — <one-line description>
- <capability-id> (v<version>) — <one-line description>
Rules, kept minimal:
- Line 1 is
# capabilities.txt. - A blockquote (
>) summary follows: one sentence on what the host offers, plus optional links (the JSON form, docs, an invocation endpoint). ##headings group capabilities by category (free-form, your choice).###headings name a group, optionally with a stable(group-id).- Each capability is a list item: a stable
capability-id, an optional(v<version>), and a short— description. - It's just markdown. If a human can read it and an agent can parse it, it's valid.
Structured form (/.well-known/capabilities.json)
{
"version": "1",
"capabilities": [
{
"id": "support.create_ticket",
"version": "1.2.0",
"description": "Open a support ticket",
"descriptor": "https://example.com/.well-known/capabilities/support.create_ticket.json"
}
]
}
Each entry is a reference; descriptor (optional) points to a full machine-readable
description of inputs, permissions, and how to invoke.
Where it sits among the standards
| File | Answers | For |
|---|---|---|
robots.txt | What may a crawler access? | Crawlers |
sitemap.xml | What pages exist? | Search engines |
llms.txt | What's worth reading? | LLMs reading |
capabilities.txt | What can this host do? | Agents acting |
It is not a replacement for MCP or an API spec. The Model Context Protocol is a
stateful connection-and-invocation protocol; OpenAPI describes an HTTP API.
capabilities.txt is the layer before invocation — a static, public, crawlable
advertisement an agent (or a search engine) can read with no live connection, that
points to your MCP server, HTTP API, or other endpoint for the actual call.
Discovery and invocation are different jobs. capabilities.txt does discovery; it
hands off invocation.
Adopt it
Fastest (no spec): copy the prompt at capabilitiestxt.org/implement
and hand it to your AI coding agent — it writes your capabilities.txt from your code.
Have an OpenAPI spec? Generate it in your browser (paste the URL) — or keep it current automatically in CI with the GitHub Action:
- uses: capabilityhostprotocol/capabilities-txt/action@main
with:
openapi: https://api.yoursite.com/openapi.json
output: public/capabilities.txt
Then check it at capabilitiestxt.org/submit for a grade, fixes, and a badge — and it’s discoverable in the directory + map.
By hand:
- List the capabilities your site exposes (or could).
- Write them into
/capabilities.txtusing the format above. - Optionally publish
/.well-known/capabilities.json. - Add yourself to
adopters.mdwith a pull request.
Already have an OpenAPI spec? Generate it — no manual authoring:
python tools/from_openapi.py https://api.yoursite.com/openapi.json > capabilities.txt
python tools/validate.py capabilities.txt # check it
Working references — a real, live capabilities.txt plus illustrative templates
across markets (e-commerce, support, banking, healthcare, dev platform) — are in
examples/. The tools in tools/ generate and validate files.
Where this goes next
Discovery is the first step. Once an agent knows what you can do, the next
questions are may I, what happened, and can I prove it — invocation,
governance, and evidence. Those are defined by the
Capability Host Protocol (CHP), an open
protocol for which capabilities.txt is the natural public face. You can adopt
capabilities.txt on its own; CHP is where it leads if you need the rest.
Status & license
This is a proposal with a working reference, not a finished standard — and it's better for your feedback. Open an issue or PR.
- Specification & site text (
README.md,index.html,SPEC.md): CC BY 4.0 — seeLICENSE-DOCS. - Tooling (
tools/): Apache-2.0 — seeLICENSE. - "capabilities.txt" is a free, open convention — use it freely. (No trademark.)
Copyright © 2026 Project Auxo, Inc. and contributors.
Frequently asked questions
What is io.github.capabilityhostprotocol/capabilities-txt-registry?
Discover what websites across the agentic web can do — query the capabilities.txt registry.
How do I install io.github.capabilityhostprotocol/capabilities-txt-registry?
It runs as a remote server. In Claude Code: claude mcp add --transport http capabilities-txt-registry 'https://capabilitiestxt.org/api/mcp'. For other clients, paste the JSON configuration from this page into their MCP settings.
Does io.github.capabilityhostprotocol/capabilities-txt-registry need an API key?
Its registry entry lists no required key or secret. Some features may still need an account with the service it connects to.
Is io.github.capabilityhostprotocol/capabilities-txt-registry open source?
Its code is public on GitHub, but the repository does not declare a standard license.
Who maintains io.github.capabilityhostprotocol/capabilities-txt-registry?
It is published by capabilityhostprotocol. AI.tn lists it but does not maintain or endorse it.
From the official MCP Registry. Listing is not an endorsement: review a server's code and permissions before giving it access to your data.