{
  "checker": {
    "claims": [
      {
        "claim": "The CLI indexes and searches without a running server",
        "command": "npx -y @arabold/docs-mcp-server@latest --store-path <guest-path> search mylib zebra-quartz-marker --output yaml --telemetry=false",
        "evidence": "The zebra-quartz-marker option enables the widget cache.\n  score: 0.0000019642857142857144\n  mimeType: text/markdown\n  sourceMimeType: text/markdown\n",
        "expected": "the indexed sentence is returned",
        "input": "search of the locally scraped mylib library for zebra-quartz-marker",
        "kind": "claim",
        "outcome": "Real input produced the expected result: The zebra-quartz-marker option enables the widget cache.",
        "returncode": 0,
        "source": "The CLI indexes and searches without a running server, which suits scripts and coding agents.",
        "source_checked": true,
        "source_file": "README.md",
        "verdict": "yes"
      },
      {
        "claim": "Works with any MCP client over stdio",
        "command": "npx -y @arabold/docs-mcp-server@latest --protocol stdio --store-path <guest-path> tools/call {\"tool\": \"search_docs\", \"arguments\": {\"library\": \"mylib\", \"query\": \"zebra-quartz-marker\"}}",
        "evidence": "The zebra-quartz-marker option enables the widget cache.\\n\"}], \"isError\": false}",
        "expected": "the indexed sentence is returned by the MCP tool",
        "input": "{\"tool\": \"search_docs\", \"arguments\": {\"library\": \"mylib\", \"query\": \"zebra-quartz-marker\"}}",
        "kind": "claim",
        "outcome": "Real input produced the expected result: The zebra-quartz-marker option enables the widget cache.",
        "source": "Works with any MCP client, over stdio or Streamable HTTP.",
        "source_checked": true,
        "source_file": "README.md",
        "verdict": "yes"
      }
    ],
    "cycle_checks": [
      {
        "claim": "Scheduled or looping main behavior",
        "command": "",
        "evidence": "Inspected README.md, docs/setup/installation.md, docs/guides/basic-usage.md and src/ for cron, schedule, --once, --now, loop or webhook triggers. None found: scrape, refresh and search run only when a user or agent invokes them. The only setInterval calls are internal keep-alive and heartbeat timers (src/services/mcpService.ts, src/pipeline/PipelineManager.ts), not documented product cycles.",
        "expected": "identify the product trigger",
        "input": "source inspection",
        "kind": "cycle",
        "outcome": "Inspected README.md, docs/setup/installation.md, docs/guides/basic-usage.md and src/ for cron, schedule, --once, --now, loop or webhook triggers. None found: scrape, refresh and search run only when a user or agent invokes them. The only setInterval calls are internal keep-alive and heartbeat timers (src/services/mcpService.ts, src/pipeline/PipelineManager.ts), not documented product cycles.",
        "source": "repository entry points",
        "verdict": "yes"
      }
    ],
    "details": {
      "argv": [
        "npx",
        "-y",
        "@arabold/docs-mcp-server@latest",
        "--protocol",
        "stdio",
        "--store-path",
        "<guest-path>"
      ],
      "kind": "mcp",
      "scope": "product operation",
      "serverInfo": {
        "name": "docs-mcp-server",
        "version": "3.3.0"
      },
      "tool_result": {
        "content": [
          {
            "text": "\n------------------------------------------------------------\nResult 1: file://<guest-path>\n\n# Guide\nThe zebra-quartz-marker option enables the widget cache.\n",
            "type": "text"
          }
        ],
        "isError": false
      },
      "tool_result_checked": true,
      "tool_schema_bytes": 9431,
      "tools": [
        "scrape_docs",
        "refresh_version",
        "search_docs",
        "read_page",
        "list_pages",
        "list_libraries",
        "find_version",
        "list_jobs",
        "get_job_info",
        "cancel_job",
        "remove_docs",
        "fetch_url"
      ],
      "working": true
    },
    "evidence_strength": "readme_checked",
    "example_checks": [
      {
        "claim": "Search the indexed documentation from the command line",
        "command": "npx -y @arabold/docs-mcp-server@latest --store-path <guest-path> search mylib zebra-quartz-marker --output yaml --telemetry=false",
        "deferred": false,
        "evidence": "- url: file://<guest-path>\n  content: |-\n    # Guide\n    The zebra-quartz-marker option enables the widget cache.\n  score: 0.0000019642857142857144\n  mimeType: text/markdown\n  sourceMimeType: text/markdown",
        "expected": "YAML result containing the indexed sentence",
        "input": "search mylib zebra-quartz-marker --output yaml",
        "kind": "example",
        "outcome": "command completed successfully",
        "returncode": 0,
        "source": "README.md Command Line section",
        "verdict": "yes"
      },
      {
        "claim": "Fetch one page as Markdown without indexing it",
        "command": "npx -y @arabold/docs-mcp-server@latest fetch-url file://<guest-path> --telemetry=false",
        "deferred": false,
        "evidence": "# Guide\n\nThe zebra-quartz-marker option enables the widget cache.",
        "expected": "Markdown page containing the sentence",
        "input": "fetch-url file://<guest-path>",
        "kind": "example",
        "outcome": "command completed successfully",
        "returncode": 0,
        "source": "README.md Command Line section",
        "verdict": "yes"
      }
    ],
    "status": "PASS"
  },
  "deviations": [
    "Node.js and npm were not present in the guest; installed Node 22 via NodeSource with sudo and apt. This is the README-required version.",
    "Scraped a local file:// folder created at <guest-path> instead of a live documentation website, since the README documents local-folder indexing and this run was offline. Web and network scraping were not exercised.",
    "Used cwd /tmp for all npx commands, as required for published packages.",
    "Did not run the web UI, Docker, or an embedding provider; no API keys were used. The local-file workflow needed no headless-browser component.",
    "MCP check used the stdio entry point, not the HTTP endpoint on localhost:6280."
  ],
  "fault_owner": null,
  "main_blocker": null,
  "operation": "Index a local Markdown folder with the documented scrape command, then search it and read it back through the documented CLI, fetch-url, and the stdio MCP search_docs tool",
  "operation_scope": "Offline, local file:// source only. Requires Node.js 22+ (installed 22.23.4) and npm 10.9.9. Telemetry off via DOCS_MCP_TELEMETRY=false and --telemetry=false. Store at <guest-path> npx @latest resolved to package version 3.3.0.",
  "outcome": "working",
  "plain_failure": null,
  "steps": [
    "git init; git remote add origin https://github.com/arabold/docs-mcp-server; git fetch --depth 1 origin 715c0777a34b14b474f786ee2deef1cd8ec2c00d; git reset --mixed FETCH_HEAD",
    "sudo NodeSource setup_22.x and apt-get install nodejs (README requires Node.js 22 or later)",
    "npx -y @arabold/docs-mcp-server@latest --version",
    "npx -y @arabold/docs-mcp-server@latest --store-path <guest-path> scrape mylib file://<guest-path> -> Successfully scraped 2 pages",
    "npx -y @arabold/docs-mcp-server@latest --store-path <guest-path> search mylib zebra-quartz-marker --output yaml",
    "npx -y @arabold/docs-mcp-server@latest fetch-url file://<guest-path>",
    "npx -y @arabold/docs-mcp-server@latest --protocol stdio --store-path <guest-path> (MCP tools/call search_docs)",
    "<env-var>=<guest-path> python3 -I <guest-path> --validate --replay -> valid true, replay PASS"
  ],
  "stuck_step": null,
  "suggested_fix": "None required for the tested path. Optional: pin the npx package version, since @latest currently resolves to 3.3.0, so runs are reproducible."
}
