Read-only reference data and stateless utilities for AI agents: crawler and opt-out signal datasets.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Validate, normalize, and fingerprint a proposed agent action. Same as POST https://bozos.si/api/v1/preflight.
A proposed agent action that can be normalized, reviewed, fingerprinted, and verified before execution.
Validate, normalize, and fingerprint a proposed agent action. Same as POST https://bozos.si/api/v1/preflight.
| Argument | Type | Description |
|---|---|---|
| action* | object | A proposed agent action that can be normalized, reviewed, fingerprinted, and verified before execution. |
{
"type": "object",
"required": [
"action"
],
"properties": {
"action": {
"type": "object",
"title": "BOZOS Action Preflight v1",
"required": [
"tool",
"summary",
"arguments",
"authority_basis",
"side_effects",
"data_touched",
"reversible",
"success_criteria"
],
"properties": {
"tool": {
"type": "string",
"minLength": 1
},
"summary": {
"type": "string",
"minLength": 1
},
"arguments": {},
"expires_at": {
"type": [
"string",
"null"
],
"format": "date-time"
},
"recipients": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"default": []
},
"reversible": {
"type": "boolean"
},
"data_touched": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"minItems": 1
},
"maximum_cost": {
"oneOf": [
{
"type": "null"
},
{
"type": "object",
"required": [
"amount",
"currency"
],
"properties": {
"amount": {
"type": "number",
"minimum": 0
},
"currency": {
"type": "string",
"minLength": 1
}
},
"additionalProperties": false
}
]
},
"side_effects": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"minItems": 1
},
"rollback_plan": {
"type": [
"string",
"null"
]
},
"authority_basis": {
"type": "string",
"minLength": 1
},
"idempotency_key": {
"type": [
"string",
"null"
]
},
"success_criteria": {
"type": "string",
"minLength": 1
}
},
"description": "A proposed agent action that can be normalized, reviewed, fingerprinted, and verified before execution.",
"additionalProperties": false
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| base_url* | string | |
| llms_txt* | string | |
| page_html* | string | |
| robots_txt* | string | |
| agent_index* | object | |
| sitemap_xml* | string |
{
"type": "object",
"title": "Agent discovery audit bundle",
"required": [
"base_url",
"robots_txt",
"llms_txt",
"sitemap_xml",
"page_html",
"agent_index"
],
"properties": {
"base_url": {
"type": "string",
"format": "uri",
"pattern": "^https?://"
},
"llms_txt": {
"type": "string"
},
"page_html": {
"type": "string"
},
"robots_txt": {
"type": "string"
},
"agent_index": {
"type": "object"
},
"sitemap_xml": {
"type": "string"
}
},
"additionalProperties": false
}Generate a robots.txt naming every documented AI crawler for a policy. Same as GET https://bozos.si/api/v1/robots.
| Argument | Type | Description |
|---|---|---|
| path | string | Path to disallow (default /) |
| search | string | allow or block (default allow) |
| signals | string | yes to add a Content-Signal line |
| sitemap | string | Absolute sitemap URL to append |
| datasets | string | allow or block (default: same as training) |
| training | string | allow or block (default block) |
| user_fetch | string | allow or block (default allow) |
{
"type": "object",
"required": [],
"properties": {
"path": {
"type": "string",
"description": "Path to disallow (default /)"
},
"search": {
"type": "string",
"description": "allow or block (default allow)"
},
"signals": {
"type": "string",
"description": "yes to add a Content-Signal line"
},
"sitemap": {
"type": "string",
"description": "Absolute sitemap URL to append"
},
"datasets": {
"type": "string",
"description": "allow or block (default: same as training)"
},
"training": {
"type": "string",
"description": "allow or block (default block)"
},
"user_fetch": {
"type": "string",
"description": "allow or block (default allow)"
}
},
"additionalProperties": false
}Canonicalize JSON and compute SHA-256. Same as POST https://bozos.si/api/v1/canonicalize.
| Argument | Type | Description |
|---|---|---|
| value* | any |
{
"type": "object",
"required": [
"value"
],
"properties": {
"value": {}
}
}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.
| Argument | Type | Description |
|---|---|---|
| path | string | Path (with optional query) or full URL to check (default /) |
| agent | string | A crawler token (GPTBot), a full user-agent string, or all (default: every crawler in the directory) |
| robots* | string | The robots.txt text, URL-encoded (up to 65,536 characters) |
{
"type": "object",
"required": [
"robots"
],
"properties": {
"path": {
"type": "string",
"description": "Path (with optional query) or full URL to check (default /)"
},
"agent": {
"type": "string",
"description": "A crawler token (GPTBot), a full user-agent string, or all (default: every crawler in the directory)"
},
"robots": {
"type": "string",
"description": "The robots.txt text, URL-encoded (up to 65,536 characters)"
}
},
"additionalProperties": false
}Count characters, words, bytes, and occurrences of a letter or substring. Same as GET https://bozos.si/api/v1/count.
| Argument | Type | Description |
|---|---|---|
| case | string | sensitive for case-sensitive matching (default insensitive) |
| char | string | Letter or substring to count |
| text* | string | Text to measure (max 10,000 characters) |
{
"type": "object",
"required": [
"text"
],
"properties": {
"case": {
"type": "string",
"description": "sensitive for case-sensitive matching (default insensitive)"
},
"char": {
"type": "string",
"description": "Letter or substring to count"
},
"text": {
"type": "string",
"description": "Text to measure (max 10,000 characters)"
}
},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| since* | string | Date as YYYY-MM-DD; only changes after this date are returned |
| dataset | string | Comma-separated dataset resource ids or file names (default: all) |
| records | string | ids to list changed record ids without their content; full (default) includes each record |
{
"type": "object",
"required": [
"since"
],
"properties": {
"since": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Date as YYYY-MM-DD; only changes after this date are returned"
},
"dataset": {
"type": "string",
"description": "Comma-separated dataset resource ids or file names (default: all)"
},
"records": {
"enum": [
"full",
"ids"
],
"type": "string",
"description": "ids to list changed record ids without their content; full (default) includes each record"
}
},
"additionalProperties": false
}Weekday, ISO week, date addition, and day/weekday counts. Same as GET https://bozos.si/api/v1/date.
| Argument | Type | Description |
|---|---|---|
| to | string | Second date for differences |
| add | string | Duration like 45d, -3w, 2m, 1y, 1y2m3d |
| date | string | YYYY-MM-DD (default today, UTC) |
{
"type": "object",
"required": [],
"properties": {
"to": {
"type": "string",
"description": "Second date for differences"
},
"add": {
"type": "string",
"description": "Duration like 45d, -3w, 2m, 1y, 1y2m3d"
},
"date": {
"type": "string",
"description": "YYYY-MM-DD (default today, UTC)"
}
},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| url | string | A https://bozos.si URL, used when no resource_id fits |
| via | any | Where you found BOZOS contact details, for example llms or mcp. Tags the subject so BOZOS can tell which surfaces agents use. |
| kind* | any | |
| credit | boolean | Credit the agent name in the public corrections log |
| sender* | object | |
| details | string | |
| summary* | string | |
| evidence | array | Required (at least one) for corrections and source suggestions |
Exact rational arithmetic with no floating-point error. Same as GET https://bozos.si/api/v1/calc.
| Argument | Type | Description |
|---|---|---|
| expr* | string | Expression using + - * / ^ ( ) decimals and e-notation; URL-encode + as %2B |
| digits | string | Decimal places for non-terminating results (default 50, max 1000) |
{
"type": "object",
"required": [
"expr"
],
"properties": {
"expr": {
"type": "string",
"description": "Expression using + - * / ^ ( ) decimals and e-notation; URL-encode + as %2B"
},
"digits": {
"type": "string",
"description": "Decimal places for non-terminating results (default 50, max 1000)"
}
},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| id* | string | Resource id (ai-crawler-directory-data), or a record: ai-crawler-directory-data#gptbot or https://bozos.si/ai-crawlers.json#gptbot |
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "Resource id (ai-crawler-directory-data), or a record: ai-crawler-directory-data#gptbot or https://bozos.si/ai-crawlers.json#gptbot"
}
},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| ua* | string | The full User-Agent header value |
{
"type": "object",
"required": [
"ua"
],
"properties": {
"ua": {
"type": "string",
"maxLength": 1000,
"description": "The full User-Agent header value"
}
},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| cache | array | |
| resources* | array | |
| constraints | object |
{
"type": "object",
"$defs": {
"resource": {
"type": "object",
"required": [
"url"
],
"properties": {
"id": {
"type": "string"
},
"url": {
"type": "string",
"format": "uri",
"pattern": "^https?://"
},
"etag": {
"type": "string"
},
"type": {
"type": "string"
},
"bytes": {
"type": "integer",
"minimum": 0
},
"sha256": {
"type": "string",
"pattern": "^(sha256:)?[a-fA-F0-9]{64}$"
},
"last_modified": {
"type": "string",
"format": "date-time"
}
},
"additionalProperties": false
},
"cachedResource": {
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"format": "uri",
"pattern": "^https?://"
},
"etag": {
"type": "string"
},
"sha256": {
"type": "string",
"pattern": "^(sha256:)?[a-fA-F0-9]{64}$"
},
"last_modified": {
"type": "string",
"format": "date-time"
}
},
"additionalProperties": false
}
},
"title": "Agent retrieval plan request",
"required": [
"resources"
],
"properties": {
"cache": {
"type": "array",
"items": {
"$ref": "#/$defs/cachedResource"
}
},
"resources": {
"type": "array",
"items": {
"$ref": "#/$defs/resource"
}
},
"constraints": {
"type": "object",
"properties": {
"max_items": {
"type": "integer",
"minimum": 0
},
"accepted_types": {
"type": "array",
"items": {
"type": "string"
}
},
"modified_since": {
"type": "string",
"format": "date-time"
},
"max_total_bytes": {
"type": "integer",
"minimum": 0
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}Search every BOZOS reference guide, dataset, note, and tool by keyword. Returns resource ids to pass to `fetch`, with the canonical URL to cite.
| Argument | Type | Description |
|---|---|---|
| query* | string | Search words, up to 200 characters |
{
"type": "object",
"required": [
"query"
],
"properties": {
"query": {
"type": "string",
"maxLength": 200,
"description": "Search words, up to 200 characters"
}
},
"additionalProperties": false
}Measure text deterministically. Same as POST https://bozos.si/api/v1/text-stats.
| Argument | Type | Description |
|---|---|---|
| text* | string |
{
"type": "object",
"required": [
"text"
],
"properties": {
"text": {
"type": "string"
}
}
}Convert a time between IANA time zones, or give the current time anywhere. Same as GET https://bozos.si/api/v1/time.
| Argument | Type | Description |
|---|---|---|
| at | string | ISO instant with Z/offset, or local wall time when from_tz is set |
| tz | string | Comma-separated IANA zones (default UTC) |
| from_tz | string | Zone in which to interpret at |
{
"type": "object",
"required": [],
"properties": {
"at": {
"type": "string",
"description": "ISO instant with Z/offset, or local wall time when from_tz is set"
},
"tz": {
"type": "string",
"description": "Comma-separated IANA zones (default UTC)"
},
"from_tz": {
"type": "string",
"description": "Zone in which to interpret at"
}
},
"additionalProperties": false
}Get the current UTC and Unix time. Same as GET https://bozos.si/api/v1/now.
No arguments.
{
"type": "object",
"required": [],
"properties": {},
"additionalProperties": false
}Verify that an action still matches its approved fingerprint. Same as POST https://bozos.si/api/v1/verify.
| Argument | Type | Description |
|---|---|---|
| action* | object | A proposed agent action that can be normalized, reviewed, fingerprinted, and verified before execution. |
| approved_fingerprint* | string |
{
"type": "object",
"required": [
"approved_fingerprint",
"action"
],
"properties": {
"action": {
"type": "object",
"title": "BOZOS Action Preflight v1",
"required": [
"tool",
"summary",
"arguments",
"authority_basis",
"side_effects",
"data_touched",
"reversible",
"success_criteria"
],
"properties": {
"tool": {
"type": "string",
"minLength": 1
},
"summary": {
"type": "string",
"minLength": 1
},
"arguments": {},
"expires_at": {
"type": [
"string",
"null"
],
"format": "date-time"
},
"recipients": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"default": []
},
"reversible": {
"type": "boolean"
},
"data_touched": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"minItems": 1
},
"maximum_cost": {
"oneOf": [
{
"type": "null"
},
{
"type": "object",
"required": [
"amount",
"currency"
],
"properties": {
"amount": {
"type": "number",
"minimum": 0
},
"currency": {
"type": "string",
"minLength": 1
}
},
"additionalProperties": false
}
]
},
"side_effects": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"minItems": 1
},
"rollback_plan": {
"type": [
"string",
"null"
]
},
"authority_basis": {
"type": "string",
"minLength": 1
},
"idempotency_key": {
"type": [
"string",
"null"
]
},
"success_criteria": {
"type": "string",
"minLength": 1
}
},
"description": "A proposed agent action that can be normalized, reviewed, fingerprinted, and verified before execution.",
"additionalProperties": false
},
"approved_fingerprint": {
"type": "string",
"pattern": "^sha256:[a-f0-9]{64}$"
}
}
}| proposed | string | What you believe is correct, or what you need |
| resource_id | string | A stable id from https://bozos.si/content-index.json |
| quoted_claim | string | Exact text, JSON field path and value, or URL in question. Required for corrections. |
{
"type": "object",
"title": "BOZOS Agent Message v1",
"required": [
"kind",
"summary",
"sender"
],
"properties": {
"url": {
"type": "string",
"format": "uri",
"description": "A https://bozos.si URL, used when no resource_id fits"
},
"via": {
"enum": [
"home",
"contact-page",
"contact-json",
"llms",
"llms-full",
"agents-json",
"content-index",
"dataset",
"mcp",
"api",
"security-txt",
"footer"
],
"description": "Where you found BOZOS contact details, for example llms or mcp. Tags the subject so BOZOS can tell which surfaces agents use."
},
"kind": {
"enum": [
"correction",
"question",
"source",
"broken-link",
"data-request",
"feedback"
]
},
"credit": {
"type": "boolean",
"default": true,
"description": "Credit the agent name in the public corrections log"
},
"sender": {
"type": "object",
"required": [
"agent",
"human_reviewed"
],
"properties": {
"agent": {
"type": "string",
"maxLength": 120,
"minLength": 1
},
"operator": {
"type": "string",
"maxLength": 120
},
"reply_to": {
"type": "string",
"maxLength": 200,
"description": "Optional reply address. Include only if your principal agrees to share it."
},
"human_reviewed": {
"type": "boolean"
}
}
},
"details": {
"type": "string",
"maxLength": 4000
},
"summary": {
"type": "string",
"maxLength": 140,
"minLength": 1
},
"evidence": {
"type": "array",
"items": {
"type": "string",
"format": "uri"
},
"maxItems": 10,
"description": "Required (at least one) for corrections and source suggestions"
},
"proposed": {
"type": "string",
"maxLength": 4000,
"description": "What you believe is correct, or what you need"
},
"resource_id": {
"type": "string",
"description": "A stable id from https://bozos.si/content-index.json"
},
"quoted_claim": {
"type": "string",
"maxLength": 4000,
"description": "Exact text, JSON field path and value, or URL in question. Required for corrections."
}
},
"description": "A correction, question, or suggestion an AI agent wants to send to BOZOS. POST it to /api/v1/contact-draft to receive a validated email and X post. Nothing is sent by the API."
}