{
 "tool": "eclipse-agent-wallet-mcp",
 "version": "0.1.0",
 "bench_date": "2026-10-24",
 "bench_version": "0.1.0",
 "environment": "sandbox",
 "qualifier": "sandbox",
 "verdict": "CERTIFIED(sandbox)",
 "checks": [
  {
   "id": "W1",
   "name": "no-policy spend denied",
   "verdict": "pass",
   "evidence": "pay without policy -> rejected (no policy granted \u2014 an agent may not spend without a written scope); check_payment -> deny (no policy granted \u2014 an agent may not spend without a written scope)"
  },
  {
   "id": "W2",
   "name": "over-cap denied",
   "verdict": "pass",
   "evidence": "pay 60.00 over 50.00 cap -> rejected (amount 60.00 exceeds per-transaction cap 50.00)"
  },
  {
   "id": "W3",
   "name": "off-allowlist denied",
   "verdict": "pass",
   "evidence": "pay to non-allowlisted recipient -> rejected (recipient 0xStranger is not on the policy allowlist)"
  },
  {
   "id": "W4",
   "name": "approval queue enforced",
   "verdict": "pass",
   "evidence": "30.00 queued (approve -> executed, balance 170.00); second queued then denied, balance unchanged"
  },
  {
   "id": "W5",
   "name": "kill switch immediate",
   "verdict": "pass",
   "evidence": "revoke -> frozen true; later pay rejected (wallet is frozen (kill switch engaged)); set_policy after revoke errors ({'error': 'wallet is frozen \u2014 revoke state cannot accept a new policy'})"
  },
  {
   "id": "W6",
   "name": "audit append-only and complete",
   "verdict": "pass",
   "evidence": "audit actions in order ['wallet_created', 'policy_granted', 'funded_sandbox', 'payment_rejected', 'approval_requested', 'approval_granted', 'approval_denied', 'kill_switch_engaged']; 12 entries; pre-revoke entries byte-identical after later ops"
  },
  {
   "id": "U1",
   "name": "auth enforced",
   "verdict": "na",
   "evidence": "local stdio transport: no credential layer exists to test; process ownership is the boundary"
  },
  {
   "id": "U2",
   "name": "schema valid",
   "verdict": "pass",
   "evidence": "tools/list returns exactly the 10 tools, each with inputSchema type object + properties + required"
  },
  {
   "id": "U3",
   "name": "no unscoped fetch",
   "verdict": "pass",
   "evidence": "server source contains no network call sites (no socket/urllib/requests/http.client)"
  },
  {
   "id": "U4",
   "name": "no secret leak",
   "verdict": "pass",
   "evidence": "no secret patterns in 18 tool outputs"
  },
  {
   "id": "U5",
   "name": "sane errors",
   "verdict": "pass",
   "evidence": "missing owner -> error; unknown wallet -> error; unknown tool -> error; malformed line survived (audit_log answers); unknown method -> error -32601"
  },
  {
   "id": "U6",
   "name": "process health",
   "verdict": "pass",
   "evidence": "initialize answered in 54 ms; ping ok"
  },
  {
   "id": "U8",
   "name": "bench isolation",
   "verdict": "pass",
   "evidence": "workspace product state byte-identical before/after bench"
  }
 ],
 "notes": [],
 "history": "append-only; prior runs retained in results/"
}