{
  "run_id": "brave--brave-search-mcp-server-claude-haiku-5-5-1792808070937972573",
  "checker": {
    "claims": [
      {
        "claim": "README says npm run build builds the TypeScript project",
        "command": "npm run build",
        "evidence": "shx chmod +x dist/*.js\n\n",
        "expected": "TypeScript compiles to dist",
        "input": "npm run build",
        "kind": "claim",
        "outcome": "Real input produced the expected result: shx chmod +x dist/*.js",
        "returncode": 0,
        "source": "- `npm run build`: Build the TypeScript project",
        "source_checked": true,
        "source_file": "README.md",
        "verdict": "yes"
      },
      {
        "claim": "The server needs a Brave Search API key to run",
        "command": "",
        "evidence": "No Brave Search API key is available in this guest; obtaining one would require credentials, which were not requested. Startup without a key was observed to exit 1 with 'A Brave API key is required' (see probe credentials_error check).",
        "expected": "",
        "input": "",
        "kind": "claim",
        "outcome": "No Brave Search API key is available in this guest; obtaining one would require credentials, which were not requested. Startup without a key was observed to exit 1 with 'A Brave API key is required' (see probe credentials_error check).",
        "source": "- `BRAVE_API_KEY`: Your Brave Search API key (required unless `BRAVE_API_KEY_FILE` is set)",
        "source_checked": true,
        "source_file": "README.md",
        "verdict": "blocked"
      }
    ],
    "cycle_checks": [
      {
        "claim": "Scheduled or looping main behavior",
        "command": "",
        "evidence": "Entry points inspected: README and package.json scripts (build, test, serve:http, inspector) and src/*.ts for setInterval/cron/schedule/webhook/--once/--now. The only timer is a poll delay (setTimeout pollInterval) inside the summarizer request in src/tools/summarizer/index.ts, which is not a scheduled cycle. The server runs on demand over stdio or HTTP.",
        "expected": "identify the product trigger",
        "input": "source inspection",
        "kind": "cycle",
        "outcome": "Entry points inspected: README and package.json scripts (build, test, serve:http, inspector) and src/*.ts for setInterval/cron/schedule/webhook/--once/--now. The only timer is a poll delay (setTimeout pollInterval) inside the summarizer request in src/tools/summarizer/index.ts, which is not a scheduled cycle. The server runs on demand over stdio or HTTP.",
        "source": "repository entry points",
        "verdict": "yes"
      }
    ],
    "details": {
      "checks": [
        {
          "check": "install",
          "details": {
            "argv": [
              "npm",
              "run",
              "build"
            ],
            "kind": "cli",
            "needs_browser": false,
            "needs_credentials": false,
            "returncode": 0,
            "scope": "partial: install",
            "stderr": "",
            "stdout": "\n> @brave/brave-search-mcp-server@2.1.4 build\n> shx rm -rf dist && tsc && shx chmod +x dist/*.js\n",
            "working": false
          },
          "optional": false,
          "status": "PASS"
        },
        {
          "check": "credentials_error",
          "details": {
            "argv": [
              "node",
              "dist/index.js"
            ],
            "kind": "cli",
            "needs_browser": false,
            "needs_credentials": true,
            "returncode": 1,
            "scope": "partial: missing credentials",
            "stderr": "Error: A Brave API key is required via --brave-api-key, BRAVE_API_KEY, --brave-api-key-file, or BRAVE_API_KEY_FILE. You can get one at https://brave.com/search/api/.\nInvalid configuration",
            "stdout": "",
            "working": false
          },
          "optional": false,
          "status": "PASS"
        }
      ],
      "scope": "partial checks",
      "working": false
    },
    "evidence_strength": "partly_checked",
    "example_checks": [
      {
        "claim": "Run the documented test suite",
        "command": "npm test",
        "deferred": false,
        "evidence": "rom a file\n      ---\n      duration_ms: 3.037651\n      type: 'test'\n      ...\n    # Subtest: rejects empty files\n    ok 2 - rejects empty files\n      ---\n      duration_ms: 2.905552\n      type: 'test'\n      ...\n    # Subtest: reports missing files with the path and reason\n    ok 3 - reports missing files with the path and reason\n      ---\n      duration_ms: 0.247068\n      type: 'test'\n      ...\n    1..3\nok 25 - readBraveApiKeyFromFile\n  ---\n  duration_ms: 6.289499\n  type: 'suite'\n  ...\n1..25\n# tests 78\n# suites 26\n# pass 78\n# fail 0\n# cancelled 0\n# skipped 0\n# todo 0\n# duration_ms 25363.950692",
        "expected": "78 tests, 0 failures",
        "input": "npm test",
        "kind": "example",
        "outcome": "command completed successfully",
        "returncode": 0,
        "source": "README.md Development > Available Scripts",
        "verdict": "yes"
      },
      {
        "claim": "Local HTTP serving needs an API key; the documented serve:http script was not run because it requires BRAVE_API_KEY",
        "command": "",
        "deferred": false,
        "evidence": "Brave Search API key is required by the server (BRAVE_API_KEY) and none was available; the documented npm run serve:http and MCP Inspector steps were not run. Startup without a key was checked instead (probe credentials_error).",
        "expected": "documented command completes successfully",
        "input": "",
        "kind": "example",
        "outcome": "Brave Search API key is required by the server (BRAVE_API_KEY) and none was available; the documented npm run serve:http and MCP Inspector steps were not run. Startup without a key was checked instead (probe credentials_error).",
        "source": "README.md Development > Testing via MCP Inspector",
        "verdict": "blocked"
      }
    ],
    "status": "PASS"
  },
  "diagnosis": null
}
