{
  "checker": {
    "claims": [
      {
        "claim": "The stdio MCP server runs via serve --stdio and exposes decoy tools that return fabricated results",
        "command": "node <guest-path> serve --stdio tools/call {\"tool\": \"canary_transfer_funds\", \"arguments\": {\"from_account\": \"A1\", \"to_account\": \"B2\", \"amount\": 5}}",
        "evidence": "\u2026T+0 (internal accounts)\\\"\\n}\"}]}",
        "expected": "status initiated with settlement T+0 (internal accounts)",
        "input": "{\"tool\": \"canary_transfer_funds\", \"arguments\": {\"from_account\": \"A1\", \"to_account\": \"B2\", \"amount\": 5}}",
        "kind": "claim",
        "outcome": "Real input produced the expected result: T+0 (internal accounts)",
        "source": "To run the MCP server over stdio, use agent-canary serve --stdio or run the container with -i and the same arguments.",
        "source_checked": true,
        "source_file": "README.md",
        "verdict": "yes"
      },
      {
        "claim": "Agent Canary provides decoy tools as a security toolkit",
        "command": "node <guest-path> serve --stdio tools/call {\"tool\": \"canary_transfer_funds\", \"arguments\": {\"from_account\": \"A1\", \"to_account\": \"B2\", \"amount\": 5}}",
        "evidence": "\u2026T+0 (internal accounts)\\\"\\n}\"}]}",
        "expected": "decoy reply containing settlement T+0 (internal accounts)",
        "input": "{\"tool\": \"canary_transfer_funds\", \"arguments\": {\"from_account\": \"A1\", \"to_account\": \"B2\", \"amount\": 5}}",
        "kind": "claim",
        "outcome": "Real input produced the expected result: T+0 (internal accounts)",
        "source": "It provides decoy tools, canary tokens, a guarded execution gateway, local self-tests, and an optional risk-policy console.",
        "source_checked": true,
        "source_file": "README.md",
        "verdict": "yes"
      }
    ],
    "cycle_checks": [
      {
        "claim": "Scheduled or looping main behavior",
        "command": "",
        "evidence": "Inspected README.md and src/ entrypoints (serve --stdio, self-test, ai console, integrate). No cron, scheduler, loop, webhook, or --once/--now trigger found; the only setInterval is browser-side UI polling in src/ai/console-page.ts, which is not a product cycle.",
        "expected": "identify the product trigger",
        "input": "source inspection",
        "kind": "cycle",
        "outcome": "Inspected README.md and src/ entrypoints (serve --stdio, self-test, ai console, integrate). No cron, scheduler, loop, webhook, or --once/--now trigger found; the only setInterval is browser-side UI polling in src/ai/console-page.ts, which is not a product cycle.",
        "source": "repository entry points",
        "verdict": "yes"
      }
    ],
    "details": {
      "argv": [
        "node",
        "<guest-path>",
        "serve",
        "--stdio"
      ],
      "kind": "mcp",
      "scope": "product operation",
      "serverInfo": {
        "name": "agent-canary",
        "version": "1.2.7"
      },
      "tool_result": {
        "content": [
          {
            "text": "{\n  \"status\": \"initiated\",\n  \"transfer_id\": \"cnry_nruP-2JvxnsTg6X0u3_4qVYe\",\n  \"from\": \"A1\",\n  \"to\": \"B2\",\n  \"amount\": 5,\n  \"currency\": \"USD\",\n  \"settlement\": \"T+0 (internal accounts)\"\n}",
            "type": "text"
          }
        ]
      },
      "tool_result_checked": true,
      "tool_schema_bytes": 10868,
      "tools": [
        "canary_transfer_funds",
        "canary_read_secrets",
        "canary_run_shell",
        "canary_delete_files",
        "canary_send_email",
        "canary_export_database",
        "canary_fetch_internal",
        "canary_disable_security",
        "canary_cloud_console",
        "canary_k8s_exec",
        "canary_secrets_rotate",
        "canary_git_force_push"
      ],
      "working": true
    },
    "evidence_strength": "readme_checked",
    "example_checks": [
      {
        "claim": "Local development verification builds, tests, and smoke-tests the package",
        "command": "npm run verify",
        "deferred": false,
        "evidence": "\"}\n{\"scope\":\"actual manifest bytes, not runtime certification or E4\",\"files\":181,\"mismatches\":[]}\n{\"status\":\"VERIFIED_BOUNDED_OPERATOR_DEMO\",\"mode\":\"OPERATOR_TRIGGERED_REAL_TEMPORARY_IO_NOT_MODEL_ATTACK\",\"resultFile\":\"/tmp/canary-roadshow-home-HpjlLu/roadshow-result.json\",\"fixture\":\"/tmp/agent-canary-honeypot-ii17zR\",\"caseCount\":6,\"E4\":\"NOT_VERIFIED_NO_EXTERNAL_OPERATOR\",\"sha256\":\"8f2958d4e262dd76fe92a57e247302546aae9d70640090135a0bc84bbab836fa\"}\n\n> @dorianchn/agent-canary@3.0.0 pack:check\n> node scripts/check-package.mjs\n\npackage smoke check passed: dorianchn-agent-canary-3.0.0.tgz (72 files)",
        "expected": "package smoke check passes",
        "input": "npm run verify",
        "kind": "example",
        "outcome": "command completed successfully",
        "returncode": 0,
        "source": "README.md Local development",
        "verdict": "yes"
      }
    ],
    "status": "PASS"
  },
  "deviations": [
    "README global install (npm config set @dorianchn:registry + npm login + npm install -g @dorianchn/agent-canary@3.0.0) was not run because it needs a GitHub PAT with read:packages; the README Local development path (npm ci, npm run verify) was used instead.",
    "Probes and claims call the package bin directly as node <guest-path> serve --stdio rather than the agent-canary command on PATH.",
    "MCP initialize reports serverInfo.version 1.2.7 (src/config.ts VERSION) while package.json and README say 3.0.0; recorded as an observation, not a test failure.",
    "npm ci reported 6 vulnerabilities (4 moderate, 2 high); not remediated.",
    "npm test in verify reported 97 pass, 0 fail, 3 skipped of 100.",
    "No scheduler/cycle found; cycles.json has detected=false."
  ],
  "fault_owner": null,
  "main_blocker": null,
  "operation": "Run the Agent Canary 3.0 stdio MCP server (serve --stdio) and call a decoy tool (canary_transfer_funds), plus the README Local development verification (npm run verify).",
  "operation_scope": "Linux guest, Node v22.23.4 and npm 10.9.9 (README requires Node 20+). No GitHub Packages login, no browser, no credentials. Decoy tools are inert and return fabricated results.",
  "outcome": "working",
  "plain_failure": null,
  "steps": [
    "npm ci",
    "npm run verify",
    "node dist/competition.js serve --stdio (MCP tools/call canary_transfer_funds)",
    "<env-var>=<guest-path> python3 -I <guest-path> --validate --replay"
  ],
  "stuck_step": null,
  "suggested_fix": "Optional: align VERSION in src/config.ts with package.json (3.0.0); run npm audit fix for the reported advisories; document that the global install needs GitHub Packages auth."
}
