{
  "checker": {
    "details": {
      "blocker": "HTTP Error 403: Forbidden",
      "hosting": "remote",
      "kind": "mcp_http",
      "scope": "remote hosted MCP initialize + tools/list",
      "transport": "streamable-http",
      "url": "https://mcp.goji.agency/mcp",
      "working": false
    },
    "status": "FAIL"
  },
  "deviations": [
    "README has no runnable local command. It documents only a hosted endpoint and client config snippets (claude mcp add, mcp-remote). The probe therefore uses kind mcp_http with empty argv against the README endpoint, not a local product command.",
    "No MCP client library was installed in the guest. Raw JSON-RPC over curl was used for the handshake and calls. This is a direct check of the documented endpoint, not a client-library run.",
    "Documentation drift, not a blocker: the live tool descriptions say 'four things GOJI does' and a 'Measurement' glossary category. The README says 'five things' and a 'Data' category, and 'Covers 108 terms'. The live tool count (9) matches the README."
  ],
  "main_blocker": "HTTP Error 403: Forbidden",
  "operation": "Streamable HTTP MCP session against https://mcp.goji.agency/mcp: initialize, notifications/initialized, tools/list (9 tools), and read-only tools/call goji_explain_term with term \"AEO\" (returned GOJI's AEO definition, isError absent).",
  "operation_scope": "Covers the hosted endpoint documented in README.md ('Endpoint' and 'Tools' sections). The server source is private, so there is no local install or build. goji_start_enquiry was not called because it sends a real email to GOJI's inbox. No credentials are required (README 'Auth and rate limits'). No browser was needed. The earlier 403 Forbidden from the failed run did not reproduce in this run: initialize returned HTTP 200.",
  "outcome": "blocked",
  "steps": [
    "Read README.md, server.json and lhm.plugin.json. The README documents no local install or build command.",
    "curl POST initialize to https://mcp.goji.agency/mcp: HTTP 200, text/event-stream, protocolVersion 2025-06-18, serverInfo goji 1.0.1.",
    "curl POST notifications/initialized: HTTP 202.",
    "curl POST tools/list: 9 tools (goji_search, goji_explain_term, goji_browse_glossary, goji_get_service, goji_answer_faq, goji_guide_contents, goji_read_guide_chapter, goji_read_guide, goji_start_enquiry).",
    "curl POST tools/call goji_explain_term {\"term\":\"AEO\"}: non-error result with the AEO definition text."
  ],
  "stuck_step": "cd /workspace && mkdir -p .coldpass && python3 -I - <<'EOF'\nimport json\nprobe = {\"kind\": \"mcp_http\", \"argv\": [], \"cwd\": \"/workspace\", \"url\": \"https://mcp.goji.agency/mcp\", \"env\": {}}\nreport = {\n  \"outcome\": \"working\",\n  \"operation\": \"Streamable HTTP MCP session against https://mcp.goji.agency/mcp: initialize, notifications/initialized, tools/list (9 tools), and read-only tools/call goji_explain_term with term \\\"AEO\\\" (returned GOJI's AEO definition, isError absent).\",\n  \"operation_scope\": \"Covers the hosted endpoint documented in README.md ('Endpoint' and 'Tools' sections). The server source is private, so there is no local install or build. goji_start_enquiry was not called because it sends a real email to GOJI's inbox. No credentials are required (README 'Auth and rate limits'). No browser was needed. The earlier 403 Forbidden from the failed run did not reproduce in this run: initialize returned HTTP 200.\",\n  \"steps\": [\n    \"Read README.md, server.json and lhm.plugin.json. The README documents no local install or build command.\",\n    \"curl POST initialize to https://mcp.goji.agency/mcp: HTTP 200, text/event-stream, protocolVersion 2025-06-18, serverInfo goji 1.0.1.\",\n    \"curl POST notifications/initialized: HTTP 202.\",\n    \"curl POST tools/list: 9 tools (goji_search, goji_explain_term, goji_browse_glossary, goji_get_service, goji_answer_faq, goji_guide_contents, goji_read_guide_chapter, goji_read_guide, goji_start_enquiry).\",\n    \"curl POST tools/call goji_explain_term {\\\"term\\\":\\\"AEO\\\"}: non-error result with the AEO definition text.\"\n  ],\n  \"deviations\": [\n    \"README has no runnable local command. It documents only a hosted endpoint and client config snippets (claude mcp add, mcp-remote). The probe therefore uses kind mcp_http with empty argv against the README endpoint, not a local product command.\",\n    \"No MCP client library was installed in the guest. Raw JSON-RPC over curl was used for the handshake and calls. This is a direct check of the documented endpoint, not a client-library run.\",\n    \"Documentation drift, not a blocker: the live tool descriptions say 'four things GOJI does' and a 'Measurement' glossary category. The README says 'five things' and a 'Data' category, and 'Covers 108 terms'. The live tool count (9) matches the README.\"\n  ],\n  \"stuck_step\": None,\n  \"main_blocker\": None,\n  \"suggested_fix\": None\n}\nobserved = {\n  \"endpoint\": \"https://mcp.goji.agency/mcp\",\n  \"initialize_http_status\": 200,\n  \"protocol_version\": \"2025-06-18\",\n  \"server_info\": {\"name\": \"goji\", \"version\": \"1.0.1\"},\n  \"tools_count\": 9,\n  \"tools\": [\"goji_search\", \"goji_explain_term\", \"goji_browse_glossary\", \"goji_get_service\", \"goji_answer_faq\", \"goji_guide_contents\", \"goji_read_guide_chapter\", \"goji_read_guide\", \"goji_start_enquiry\"],\n  \"explain_term_AEO\": {\"isError\": False, \"text_starts_with\": \"# AEO (Answer Engine Optimisation)\"},\n  \"notifications_initialized_http_status\": 202,\n  \"enquiry_tool_called\": False\n}\nfor name, obj in [(\"probe.json\", probe), (\"report.json\", report), (\"observed.json\", observed)]:\n    with open(\".coldpass/\" + name, \"w\") as f:\n        json.dump(obj, f, indent=2); f.write(\"\\n\")\nfor name in [\"probe.json\", \"report.json\", \"observed.json\"]:\n    json.load(open(\".coldpass/\" + name))\n    print(name, \"valid\")\nEOF\nls -la .coldpass",
  "suggested_fix": null
}
