{
  "checker": {
    "claims": [
      {
        "claim": "MCP tools provide a fix description for check references",
        "command": "/tmp/toadstone-venv/bin/python -m src.mcp --allow-writes --allow-host example.com --max-urls 5 tools/call {\"tool\": \"check_reference\", \"arguments\": {\"check\": \"missing_canonical\"}}",
        "evidence": "{\"content\": [{\"type\": \"text\", \"text\": \"{\\n  \\\"error\\\": \\\"Could not reach Toadstone at http://127.0.0.1:5057: ConnectionError: HTTPConnectionPool(host='127.0.0.1', port=5057): Max retries exceeded with url: /api/checks (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x788442a33b30>: Failed to establish a new connection: [Errno 111] Connection refused'))\\\",\\n  \\\"status\\\": null,\\n  \\\"path\\\": \\\"/api/checks\\\",\\n  \\\"hint\\\": \\\"Toadstone is not reachable; check that it is running.\\\"\\n}\"}], \"isError\": true}",
        "expected": "Missing Canonical URL",
        "input": "{\"tool\": \"check_reference\", \"arguments\": {\"check\": \"missing_canonical\"}}",
        "kind": "claim",
        "outcome": "Real input did not produce the expected result: Missing Canonical URL",
        "source": "A self-hosted SEO site crawler with a browser UI, an HTTP API, and an MCP",
        "source_checked": true,
        "source_file": "README.md",
        "verdict": "no"
      }
    ],
    "cycle_checks": [
      {
        "claim": "Scheduled or looping main behavior",
        "command": "",
        "evidence": "README and MCP docs describe manually started crawls using start_crawl; no product scheduler cycle trigger is documented for this workflow.",
        "expected": "identify the product trigger",
        "input": "source inspection",
        "kind": "cycle",
        "outcome": "README and MCP docs describe manually started crawls using start_crawl; no product scheduler cycle trigger is documented for this workflow.",
        "source": "repository entry points",
        "verdict": "yes"
      }
    ],
    "details": {
      "argv": [
        "/tmp/toadstone-venv/bin/python",
        "-m",
        "src.mcp",
        "--allow-writes",
        "--allow-host",
        "example.com",
        "--max-urls",
        "5"
      ],
      "blocker": "MCP tool result did not confirm the expected product output",
      "kind": "mcp",
      "serverInfo": {
        "name": "toadstone",
        "version": "1.0.0"
      },
      "tool_result": {
        "content": [
          {
            "text": "{\n  \"error\": \"Could not reach Toadstone at http://127.0.0.1:5057: ConnectionError: HTTPConnectionPool(host='127.0.0.1', port=5057): Max retries exceeded with url: /api/crawls/list?limit=5 (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7d1f39156cc0>: Failed to establish a new connection: [Errno 111] Connection refused'))\",\n  \"status\": null,\n  \"path\": \"/api/crawls/list\",\n  \"hint\": \"Toadstone is not reachable; check that it is running.\"\n}",
            "type": "text"
          }
        ],
        "isError": true
      },
      "tool_schema_bytes": 6410,
      "tools": [
        "list_crawls",
        "crawl_status",
        "start_crawl",
        "list_issues",
        "issue_detail",
        "page_detail",
        "regression_diff",
        "export_dataset",
        "check_reference",
        "accept_issue"
      ],
      "working": false
    },
    "evidence_strength": "partly_checked",
    "example_checks": [
      {
        "claim": "MCP quickstart CLI guardrail configuration",
        "command": "/tmp/toadstone-venv/bin/python -m src.mcp --print-config",
        "deferred": false,
        "evidence": "{\n  \"mode\": \"read-only\",\n  \"allowed_hosts\": \"only hosts already crawled in this install\",\n  \"max_urls_per_crawl\": 2000,\n  \"toadstone_url\": \"http://127.0.0.1:5057\"\n}",
        "expected": "read-only guardrails",
        "input": "--print-config",
        "kind": "example",
        "outcome": "command completed successfully",
        "returncode": 0,
        "source": "docs/mcp.md / Quick start",
        "verdict": "yes"
      }
    ],
    "status": "FAIL"
  },
  "deviations": [
    "Default MCP is read-only and refused start_crawl; used documented --allow-writes and --allow-host example.com settings.",
    "missing_canonical reference returned an empty how_to_fix field, so remediation guidance for that reference is absent."
  ],
  "fault_owner": null,
  "main_blocker": "MCP tool result did not confirm the expected product output",
  "operation": "Start local Toadstone backend; crawl https://example.com via MCP; inspect missing_canonical reference and error issues.",
  "operation_scope": "Python 3.12.3 venv with requirements installed; backend on localhost:5057; MCP explicitly enabled writes, example.com allow-list, 5 URL cap.",
  "outcome": "blocked",
  "plain_failure": null,
  "steps": [
    "Installed requirements.txt in /tmp/toadstone-venv.",
    "Started main.py --local --port 5057.",
    "Called start_crawl for https://example.com (crawl 1).",
    "Waited for completed status; 1 page crawled.",
    "Called check_reference(missing_canonical) and list_issues(severity=error); observed 4 error findings.",
    "Checker --validate --replay passed with backend running."
  ],
  "stuck_step": "/tmp/toadstone-venv/bin/python -m src.mcp --allow-writes --allow-host example.com --max-urls 5",
  "suggested_fix": null
}
