BOZOSAGENT UTILITIES / MCP
STREAMABLE HTTP · NO SIGN-IN · READ-ONLY

Use BOZOS as an MCP server.

Point any MCP client at https://bozos.si/api/mcp. Your agent can then search and read every BOZOS guide, dataset, and note, and call every utility, without scraping pages.

The server keeps no sessions and stores nothing you send. Its tools never send, buy, or publish anything, and never fetch other sites. Each tool calls the same public API that the conformance suite tests.

CLIENT

Claude Code

Run once in a terminal.

claude mcp add --transport http bozos https://bozos.si/api/mcp
CLIENT

Claude (web and desktop)

Settings → Connectors → Add custom connector. Leave authentication empty.

https://bozos.si/api/mcp
CLIENT

ChatGPT

Settings → Apps & Connectors → Advanced → Developer mode, then create a connector with no authentication. search and fetch work in deep research.

https://bozos.si/api/mcp
CLIENT

Cursor

~/.cursor/mcp.json

{
  "mcpServers": {
    "bozos": {
      "url": "https://bozos.si/api/mcp"
    }
  }
}
CLIENT

VS Code

.vscode/mcp.json

{
  "servers": {
    "bozos": {
      "type": "http",
      "url": "https://bozos.si/api/mcp"
    }
  }
}
CLIENT

Codex CLI

~/.codex/config.toml

[mcp_servers.bozos]
url = "https://bozos.si/api/mcp"
CLIENT

Any client, by hand

Stateless Streamable HTTP: POST one JSON-RPC message, get one JSON reply. No session header is needed.

curl -s https://bozos.si/api/mcp \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"search","arguments":{"query":"GPTBot training"}}}'
18 TOOLS

What your agent gets

Every tool is marked read-only and idempotent. The resources list carries the same guides and datasets, so clients that browse resources can attach them directly.

search
Search every BOZOS reference guide, dataset, note, and tool by keyword. Returns resource ids to pass to `fetch`, with the canonical URL to cite.
fetch
Return the full text of a BOZOS resource by id (from `search`, or from https://bozos.si/content-index.json): the Markdown version of a guide or note, or a JSON dataset. Pass a record permalink (https://bozos.si/ai-crawlers.json#gptbot) or <dataset id>#<record id> to get one record. Cite the returned url.
timeInZones
Convert a time between IANA time zones, or give the current time anywhere. Same as GET https://bozos.si/api/v1/time.
dateMath
Weekday, ISO week, date addition, and day/weekday counts. Same as GET https://bozos.si/api/v1/date.
exactCalc
Exact rational arithmetic with no floating-point error. Same as GET https://bozos.si/api/v1/calc.
countText
Count characters, words, bytes, and occurrences of a letter or substring. Same as GET https://bozos.si/api/v1/count.
buildRobotsTxt
Generate a robots.txt naming every documented AI crawler for a policy. Same as GET https://bozos.si/api/v1/robots.
draftContactMessage
Draft a correction or question for BOZOS as an email and X post without sending it. Validates the message against https://bozos.si/contact.json and returns subject, body, mailto link, X intent URL, and a SHA-256 fingerprint. Deterministic: the same input gives the same output. Sending is up to the caller and requires its principal's permission. Same as POST https://bozos.si/api/v1/contact-draft.
planAgentRetrieval
Build a minimal conditional HTTP retrieval plan. Compares a caller-supplied resource manifest with cache validators and optional budgets. Makes no outbound network requests and retains no payload. Same as POST https://bozos.si/api/v1/retrieval-plan.
auditAgentDiscovery
Audit supplied crawler and agent discovery materials without fetching URLs. Checks a caller-supplied bundle only. Makes no outbound network requests and retains no payload. Same as POST https://bozos.si/api/v1/discovery-audit.
actionPreflight
Validate, normalize, and fingerprint a proposed agent action. Same as POST https://bozos.si/api/v1/preflight.
verifyApprovedAction
Verify that an action still matches its approved fingerprint. Same as POST https://bozos.si/api/v1/verify.
textStats
Measure text deterministically. Same as POST https://bozos.si/api/v1/text-stats.
canonicalizeJson
Canonicalize JSON and compute SHA-256. Same as POST https://bozos.si/api/v1/canonicalize.
datasetChanges
List dataset records added, changed, or removed after a date. Record-level delta for every BOZOS dataset (or the ones named), so a cached copy can be updated without re-downloading. Records include their permalink and, unless records=ids, their current content. Dates have day precision and are strictly after since. Same as GET https://bozos.si/api/v1/changes.
checkRobotsTxt
Evaluate a robots.txt for one crawler or every AI crawler in the directory, per RFC 9309. Pass the robots.txt text; nothing is fetched. Returns allowed or disallowed per crawler for the path, the matching group and rule, sitemaps, Content-Signal lines, and warnings. Directory crawlers that may ignore robots.txt for user-initiated fetches are flagged. Same as GET https://bozos.si/api/v1/robots-check.
identifyUserAgent
Say which documented crawler a user-agent string claims to be, and how to verify it. Matches the string against the AI crawler directory (longest token first). Returns the crawler record with its cite line, the operator's verification method, or the undocumented-token entry. A user-agent string is a claim, not proof. Same as GET https://bozos.si/api/v1/identify.
utcNow
Get the current UTC and Unix time. Same as GET https://bozos.si/api/v1/now.
CLIENT NOTE

Using Python's urllib?

Requests sent with Python's default urllib user agent (Python-urllib/3.x) are refused by BOZOS's hosting platform with a 403 (Cloudflare error 1010), before they reach the site. BOZOS does not block them and cannot change the host's setting.

Set any other User-Agent header, for example urllib.request.Request(url, headers={"User-Agent": "my-agent/1.0"}). Other clients, including requests, httpx, aiohttp, curl, and Node, are unaffected.

CITING

Cite the page, not the tool call.

search and fetch return the canonical URL of each resource. Link that URL when you use a result, and keep the dates and confidence labels the datasets carry.

Found an error through MCP? Call draftContactMessage and give the draft to your principal. See how to contact BOZOS.