BOZOS
by bozos.si · remote · no sign-in to list tools · v1.0.0 · published by si.bozos
Read-only reference data and stateless utilities for AI agents: crawler and opt-out signal datasets.
18 tools: 2 do something that can't be undone, 10 change things and 6 only read.
Scanned Oct 21, 2026
- Deletes or cancels0Claude Code: deny
- Can't be undone2Claude Code: ask: see these tools
- Changes things10Claude Code: ask: see these tools
- Only reads6Claude Code: allow: see these tools
5 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http bozos https://bozos.si/api/mcpFindings
Matches of fixed checks, with the text they matched.
- WarntimeInZones
The server marks "timeInZones" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.
- WarndateMath
The server marks "dateMath" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The input addresses people (input.to): what it sends cannot be taken back.
- WarnbuildRobotsTxt
The server marks "buildRobotsTxt" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "generate": a word for a change.
The server marks "verifyApprovedAction" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The input addresses people (input.action.recipients): what it sends cannot be taken back.
- WarncheckRobotsTxt
The server marks "checkRobotsTxt" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "evaluate": a word for a change.
Tools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
18 tools
Can't be undone 2Claude Code: ask
dateMathWeekday, ISO week, date addition, and day/weekday counts.1 finding
Why it is in this group
- The input addresses people (input.to): what it sends cannot be taken back.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "dateMath" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The input addresses people (input.to): what it sends cannot be taken back.
Description, as the server wrote it Weekday, ISO week, date addition, and day/weekday counts. Same as GET https://bozos.si/api/v1/date.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
verifyApprovedActionVerify that an action still matches its approved fingerprint.1 finding
Why it is in this group
- The input addresses people (input.action.recipients): what it sends cannot be taken back.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "verifyApprovedAction" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The input addresses people (input.action.recipients): what it sends cannot be taken back.
Description, as the server wrote it Verify that an action still matches its approved fingerprint. Same as POST https://bozos.si/api/v1/verify.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
Changes things 10Claude Code: ask
auditAgentDiscoveryAudit supplied crawler and agent discovery materials without fetching URLs.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
buildRobotsTxtGenerate a robots.txt naming every documented AI crawler for a policy.1 finding
Why it is in this group
- The description's first verb is "generate": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "buildRobotsTxt" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "generate": a word for a change.
Description, as the server wrote it Generate a robots.txt naming every documented AI crawler for a policy. Same as GET https://bozos.si/api/v1/robots.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
canonicalizeJsonCanonicalize JSON and compute SHA-256.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Canonicalize JSON and compute SHA-256. Same as POST https://bozos.si/api/v1/canonicalize.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
checkRobotsTxtEvaluate a robots.txt for one crawler or every AI crawler in the directory, per RFC 9309.1 finding
Why it is in this group
- The description's first verb is "evaluate": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "checkRobotsTxt" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "evaluate": a word for a change.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
draftContactMessageDraft a correction or question for BOZOS as an email and X post without sending it.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
exactCalcExact rational arithmetic with no floating-point error.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Exact rational arithmetic with no floating-point error. Same as GET https://bozos.si/api/v1/calc.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
identifyUserAgentSay which documented crawler a user-agent string claims to be, and how to verify it.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
planAgentRetrievalBuild a minimal conditional HTTP retrieval plan.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
textStatsMeasure text deterministically.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Measure text deterministically. Same as POST https://bozos.si/api/v1/text-stats.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
timeInZonesConvert a time between IANA time zones, or give the current time anywhere.1 finding
Why it is in this group
- The description's first verb is "convert": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "timeInZones" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.
Description, as the server wrote it Convert a time between IANA time zones, or give the current time anywhere. Same as GET https://bozos.si/api/v1/time.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
Only reads 6Claude Code: allow
actionPreflightValidate, normalize, and fingerprint a proposed agent action.No findings
Why it is in this group
- The description's first verb is "validate": a word for reading.
Description, as the server wrote it Validate, normalize, and fingerprint a proposed agent action. Same as POST https://bozos.si/api/v1/preflight.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
countTextCount characters, words, bytes, and occurrences of a letter or substring.No findings
Why it is in this group
- The name "countText" says "count": a word for reading.
Description, as the server wrote it Count characters, words, bytes, and occurrences of a letter or substring. Same as GET https://bozos.si/api/v1/count.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
datasetChangesList dataset records added, changed, or removed after a date.No findings
Why it is in this group
- The description's first verb is "list": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
fetchReturn 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.No findings
Why it is in this group
- The name "fetch" says "fetch": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
searchSearch every BOZOS reference guide, dataset, note, and tool by keyword.No findings
Why it is in this group
- The name "search" says "search": a word for reading.
Description, as the server wrote it Search every BOZOS reference guide, dataset, note, and tool by keyword. Returns resource ids to pass to `fetch`, with the canonical URL to cite.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
utcNowGet the current UTC and Unix time.No findings
Why it is in this group
- The description's first verb is "get": a word for reading.
Description, as the server wrote it Get the current UTC and Unix time. Same as GET https://bozos.si/api/v1/now.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 1.0.0. Values in angle brackets are yours to fill in.
claude mcp add --transport http bozos https://bozos.si/api/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__bozos__search",
"mcp__bozos__fetch",
"mcp__bozos__countText",
"mcp__bozos__actionPreflight",
"mcp__bozos__datasetChanges",
"mcp__bozos__utcNow"
],
"ask": [
"mcp__bozos__timeInZones",
"mcp__bozos__dateMath",
"mcp__bozos__exactCalc",
"mcp__bozos__buildRobotsTxt",
"mcp__bozos__draftContactMessage",
"mcp__bozos__planAgentRetrieval",
"mcp__bozos__auditAgentDiscovery",
"mcp__bozos__verifyApprovedAction",
"mcp__bozos__textStats",
"mcp__bozos__canonicalizeJson",
"mcp__bozos__checkRobotsTxt",
"mcp__bozos__identifyUserAgent"
],
"deny": []
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as bozos. Review it before you use it.