{
  "schema_version": "1.0",
  "updated": "2026-10-24",
  "base_url": "https://bozos.si",
  "documentation": "https://bozos.si/tools/agent-start.md",
  "authentication_required": false,
  "execution_policy": "Run read_only examples to check access. Never auto-run write examples. Outbound network examples fetch a public page. Client permissions apply.",
  "recipes": [
    {
      "id": "check-citations",
      "task": "Check whether cited links resolve and read",
      "description": "Report each link's final URL, redirects, HTTP status, content type, title, and content hash, or the specific reason it could not be read. Readable is not accurate.",
      "documentation": "/tools/citation-checker.md",
      "read_only": true,
      "http": {
        "method": "GET",
        "path": "/api/v1/citation-check?url=https%3A%2F%2Fbozos.si%2Ftools%2Fquote-checker.md"
      },
      "mcp": {
        "name": "checkCitations",
        "arguments": {
          "urls": [
            "https://bozos.si/tools/quote-checker.md"
          ]
        }
      },
      "expect": {
        "status": 200,
        "paths": [
          "summary",
          "results"
        ]
      }
    },
    {
      "id": "check-quote",
      "task": "Check a quotation against source text",
      "description": "Locate an exact or whitespace-normalized quotation and return the original source passage, positions, context, and hash. A match establishes textual presence, not truth.",
      "documentation": "/tools/quote-checker.md",
      "read_only": true,
      "http": {
        "method": "GET",
        "path": "/api/v1/quote-check?quote=Agents%20can%20check%20quotations.&source_text=Agents%20can%20check%20quotations."
      },
      "mcp": {
        "name": "checkQuote",
        "arguments": {
          "quote": "Agents can check quotations.",
          "source_text": "Agents can check quotations."
        }
      },
      "expect": {
        "status": 200,
        "equals": {
          "status": "exact_match",
          "matched": true
        },
        "paths": [
          "matches",
          "source.checked_text_sha256"
        ]
      }
    },
    {
      "id": "search",
      "task": "Find a BOZOS source",
      "description": "Search first, then retrieve the smallest matching resource or record. Cite the canonical URL from the result.",
      "documentation": "/tools/fetch#search",
      "read_only": true,
      "http": {
        "method": "GET",
        "path": "/api/v1/search?q=GPTBot&limit=3"
      },
      "mcp": {
        "name": "search",
        "arguments": {
          "query": "GPTBot"
        }
      },
      "expect": {
        "status": 200,
        "paths": [
          "results"
        ]
      }
    },
    {
      "id": "one-record",
      "task": "Read one crawler record",
      "description": "Use ?id= for an HTTP response containing one record; a #fragment alone is not sent to the HTTP server. MCP fetch also resolves record fragments.",
      "documentation": "/reference/ai-crawlers",
      "read_only": true,
      "http": {
        "method": "GET",
        "path": "/ai-crawlers.json?id=gptbot"
      },
      "mcp": {
        "name": "fetch",
        "arguments": {
          "id": "ai-crawler-directory-data#gptbot"
        }
      },
      "expect": {
        "status": 200,
        "equals": {
          "id": "gptbot"
        },
        "paths": [
          "record",
          "permalink"
        ]
      }
    },
    {
      "id": "calculate",
      "task": "Calculate an exact result",
      "description": "Exact rational arithmetic. URL-encode a plus sign as %2B so it is not interpreted as a space.",
      "documentation": "/tools/fetch#calc",
      "read_only": true,
      "http": {
        "method": "GET",
        "path": "/api/v1/calc?expr=0.1%2B0.2"
      },
      "mcp": {
        "name": "exactCalc",
        "arguments": {
          "expr": "0.1+0.2"
        }
      },
      "expect": {
        "status": 200,
        "paths": [
          "answer"
        ]
      }
    },
    {
      "id": "read-source",
      "task": "Read a public HTTPS source as Markdown",
      "description": "Read HTML, Markdown, or plain text. Check output.truncated and warnings, and cite final_url. No PDF, login, or JavaScript rendering. This example reads BOZOS's own public guide.",
      "documentation": "/tools/source-reader.md",
      "read_only": true,
      "outbound_network": true,
      "http": {
        "method": "GET",
        "path": "/api/v1/source-reader?url=https%3A%2F%2Fbozos.si%2Freference%2Fai-crawlers.md&max_characters=1000"
      },
      "mcp": {
        "name": "readSource",
        "arguments": {
          "url": "https://bozos.si/reference/ai-crawlers.md",
          "max_characters": 1000
        }
      },
      "expect": {
        "status": 200,
        "paths": [
          "markdown",
          "final_url",
          "citation",
          "output.truncated"
        ]
      }
    },
    {
      "id": "report",
      "task": "Report a BOZOS issue",
      "description": "Replace the example with a real, public, task-relevant issue. This stores a private report and may email the owner. Use within your operator's permissions, retain the receipt, and do not send this example as a test. No sender email is required.",
      "documentation": "/tools/contact-submit.md",
      "read_only": false,
      "execute_by_default": false,
      "http": {
        "method": "POST",
        "path": "/api/v1/contact-submit",
        "body": {
          "kind": "feedback",
          "resource_id": "agent-start",
          "summary": "Replace with a specific BOZOS issue",
          "details": "Describe the actual issue and evidence here.",
          "sender": {
            "agent": "Your agent name"
          },
          "credit": false
        }
      },
      "mcp": {
        "name": "submitFeedback",
        "arguments": {
          "kind": "feedback",
          "resource_id": "agent-start",
          "summary": "Replace with a specific BOZOS issue",
          "details": "Describe the actual issue and evidence here.",
          "sender": {
            "agent": "Your agent name"
          },
          "credit": false
        }
      },
      "expect": {
        "status": 201,
        "paths": [
          "report_id",
          "received"
        ]
      }
    }
  ]
}
