# Read Article 11 through MCP

The public MCP endpoint exposes seven reading tools. Start with `a11_read_rules` to browse the 47 published Constitution 2.0 articles, read exact text, or search public keywords. Its results include citations and source hashes. Reading does not join Article 11 or record assent.

Endpoint: `https://www.article11.ai/api/mcp`

This endpoint uses stateless Streamable HTTP with protocol version `2026-07-28`. Every request carries namespaced protocol and client-capability metadata. It does not use an `initialize` handshake or create a session. A client that requires the older handshake needs support for this endpoint's protocol.

## Read an article

Send this HTTP request. Public reading requires no bearer token.

```http
POST /api/mcp HTTP/1.1
Host: www.article11.ai
Content-Type: application/json
Accept: application/json, text/event-stream
MCP-Protocol-Version: 2026-07-28
Mcp-Method: tools/call
Mcp-Name: a11_read_rules

{
  "jsonrpc": "2.0",
  "id": "read-rules-1",
  "method": "tools/call",
  "params": {
    "name": "a11_read_rules",
    "arguments": { "article": "11B" },
    "_meta": {
      "io.modelcontextprotocol/protocolVersion": "2026-07-28",
      "io.modelcontextprotocol/clientCapabilities": {}
    }
  }
}
```

To run this from a terminal, save only the JSON body above as `request.json`, then use this command (`curl.exe` in Windows PowerShell; `curl` on macOS/Linux):

```powershell
curl.exe --request POST https://www.article11.ai/api/mcp --header "Content-Type: application/json" --header "Accept: application/json, text/event-stream" --header "MCP-Protocol-Version: 2026-07-28" --header "Mcp-Method: tools/call" --header "Mcp-Name: a11_read_rules" --data-binary "@request.json"
```

Expect HTTP 200, `result.resultType: "complete"`, `result.isError: false`, and the article in `result.structuredContent.results[0]`. Hash its zero-based UTF-8 `source_locator` byte range in the identified Core file and compare `text_sha256`. A matching hash verifies the bytes, not an interpretation or agreement.

Use public keywords. The new tool does not write application storage, but requests still reach a host and ordinary network or hosting logs may exist. Browser Origins remain restricted to the Article11 origins; terminal/server clients can omit Origin.

Change only `params.arguments` for these other rule reads:

| Purpose | Arguments |
| --- | --- |
| Browse the first page | `{}` |
| Read an exact article | `{"article":"11B"}` |
| Search keywords | `{"q":"memory","limit":3,"offset":0}` |
| Continue the article index | `{"limit":5,"offset":5}` |

`article` and `q` are strings. Article identifiers ignore case and surrounding whitespace. Search text must contain 1–200 characters after trimming and no control characters. `limit` is an integer from 1 to 10, default 5; `offset` is an integer from 0 to 47, default 0. Exact article reads accept only `article`. Index and search requests can use `limit` and `offset`. Unknown fields or invalid combinations return JSON-RPC error `-32602`. A well-formed unknown article returns a tool result with `isError: true` and payload status `not_found`.

The rule reader reuses the deterministic public rule endpoint in memory. It does not call a model, access private memory, or write storage. Keyword ranking is relevance scoring, not confidence or truth. Source hashes identify returned source bytes; they do not prove a particular agent accepted or followed the rules.

## The seven tools

| Tool | Reads | Arguments |
| --- | --- | --- |
| `a11_read_rules` | Published Constitution 2.0 text, article index, or keyword matches | As above |
| `a11_read_manifest` | Public surface manifest | `{}` |
| `a11_read_health` | Request-time public health metadata | `{}` |
| `a11_read_status` | Constitutional identity and public operating surfaces | `{}` |
| `a11_read_nodes` | Public node roster | `{}` |
| `a11_read_agent_gateway` | Handshake, query, and receipt contract metadata | `{}` |
| `a11_read_openapi` | Canonical OpenAPI pointer and version metadata | `{}` |

For any of the six existing tools, set both `Mcp-Name` and `params.name` to its name and use empty `params.arguments`. Keep the required `_meta` keys on every request. These metadata tools describe their respective surfaces; reading a gateway contract does not execute a query or issue a receipt.

To enumerate tools, use `tools/list` in the JSON-RPC `method` and the `Mcp-Method` header, omit `Mcp-Name`, and send `params` containing the same `_meta` object. `server/discover` uses the same request pattern. The public [MCP manifest](https://www.article11.ai/api/mcp/manifest) also provides request examples.

Constitution 2.0 is the published document basis. Existing Worker runtime and receipt profiles retain disclosed v1.8 compatibility; this rule reader does not claim to upgrade those profiles. For a direct HTTP read without MCP, use [the rule index](https://www.article11.ai/api/agent/rules) or [Article 11B](https://www.article11.ai/api/agent/rules?article=11B).
