{
 "tool": "white-report-mcp",
 "version": "0.1.0",
 "bench_date": "2026-10-25",
 "bench_version": "0.1.0",
 "environment": "live host",
 "qualifier": "live",
 "verdict": "CERTIFIED(live)",
 "checks": [
  {
   "id": "M1",
   "name": "get_latest",
   "verdict": "pass",
   "evidence": "live get_latest(5) newest-first (2026-10-24..2026-10-25); limit 0->1, 99->8 (=limit 20, clamp 20 engaged); headline+slug on all items; median call latency 0.92s"
  },
  {
   "id": "M2",
   "name": "search_articles",
   "verdict": "pass",
   "evidence": "live search 'bitcoin' -> 10 hits, headline match first (how-to-buy-your-first-bitcoin-safely); empty query -> isError 'query is required.'; unknown term -> 0"
  },
  {
   "id": "M3",
   "name": "get_article",
   "verdict": "pass",
   "evidence": "live get_article('best-crypto-exchanges-for-beginners-2026') returns full twin (headline: Best Crypto Exchanges for Beginners in 2026: Fees, Safety, a); malformed slug isError; missing slug isError"
  },
  {
   "id": "M4",
   "name": "get_ticker",
   "verdict": "pass",
   "evidence": "live get_ticker: crypto (5) + stocks + metrics sections; as_of 2026-10-25T14:32:20+00:00 correctly derived from generated_at; snapshot baked at build time (note field says so)"
  },
  {
   "id": "M5",
   "name": "get_scoreboard",
   "verdict": "pass",
   "evidence": "live scoreboard: 5 calls, all pending, grades null; DATA NOTE (not a code fail): 4 calls lack article_slug (companion-article content gap, same note as logic-level)"
  },
  {
   "id": "M6",
   "name": "contract",
   "verdict": "pass",
   "evidence": "LIVE contract: GET -> server info (white-report 0.1.0, 5 tools); initialize -> serverInfo; tools/list 5 tools w/ inputSchema + required (query, slug); unknown tool -32602, unknown method -32601, bad JSON -32700; notification -> HTTP 202 empty; ping -> {}"
  },
  {
   "id": "M7",
   "name": "read-only",
   "verdict": "pass",
   "evidence": "live read-only behavior: repeated get_scoreboard/get_ticker return byte-identical results; write-shaped tool 'delete_article' -> -32602; (source-level no-writes proof: logic-level M7)"
  },
  {
   "id": "M8",
   "name": "no secrets",
   "verdict": "pass",
   "evidence": "no secret patterns across 23 live response bodies (all tools, errors, GET info)"
  },
  {
   "id": "U1",
   "name": "auth enforced",
   "verdict": "na",
   "evidence": "public read-only tier by design (mcp.php header comment: no auth on the public tier); confirmed live: all calls above answered without credentials"
  },
  {
   "id": "U6",
   "name": "process health",
   "verdict": "pass",
   "evidence": "live health: 10/10 pings HTTP 200 over the bench window; latency median 0.98s, max 1.08s (via egress proxy to shared hosting)"
  },
  {
   "id": "U8",
   "name": "bench isolation",
   "verdict": "pass",
   "evidence": "workspace product state byte-identical before/after bench"
  }
 ],
 "notes": [
  "Live-host run of the wrmcp check set (suites/wrmcp_live.py): real HTTP JSON-RPC against the production endpoint. Distinct from the same-date commerce-suite control cards for this tool, which certify nothing.",
  "Transport: curl on a ~4s drip with long backoff \u2014 this VM's urllib truncates large chunked bodies and the host bot-check kills bursts. Earlier same-date cards (-5..-8) are transport-artifact PARTIALs (all-untestable), retained per append-only history.",
  "M7 is behavioral on the live host (identical repeat responses, write-shaped tool names rejected); source-level read-only proof remains the logic-level suite's M7."
 ],
 "history": "append-only; prior runs retained in results/"
}