{"id":383130,"recorded_at":"2026-10-27T00:09:28.016988Z","observed_at":"2026-10-27T00:09:28.016941Z","subject_kind":"endpoint","subject":"6911ea5d-a4d2-47eb-96c9-d13ca70ea7a3","kind":"mcp.tools","method":"probe.mcp/1","body":{"count":11,"tools":[{"description":"Assess one product's obsolescence risk. Provide exactly ONE of description/url/pitch_company_id/deck_text. Async — returns job_id; poll get_assessment. Defaults to deep mode. Optionally pass requested_by to identify the caller (shown in the activity feed).","inputSchema":{"additionalProperties":false,"properties":{"deck_text":{"type":"string"},"description":{"type":"string"},"mode":{"default":"deep","enum":["quick","deep"],"type":"string"},"pitch_company_id":{"type":"string"},"requested_by":{"description":"Who is requesting this assessment (name/handle/agent id) — shown in the #doom-activity feed; defaults to anonymous.","type":"string"},"url":{"type":"string"}},"type":"object"},"name":"assess_product"},{"description":"Prep Gate. Validates config + confirms the roadmap-signals KB is within the staleness threshold. Fails closed if stale. Call before assess_product.","inputSchema":{"additionalProperties":false,"properties":{},"type":"object"},"name":"doom_prep"},{"description":"Poll an assessment job_id. Returns status + the typed assessment when complete. Hard timeout — never hangs on pending.","inputSchema":{"additionalProperties":false,"properties":{"job_id":{"type":"string"}},"required":["job_id"],"type":"object"},"name":"get_assessment"},{"description":"Recent assessments, filterable by verdict.","inputSchema":{"additionalProperties":false,"properties":{"limit":{"default":20,"type":"number"},"verdict":{"type":"string"}},"type":"object"},"name":"list_assessments"},{"description":"List the active (signed, grounding) roadmap signals with their ids — use to find a signal_id to retire. Operator-only.","inputSchema":{"additionalProperties":false,"properties":{"operator_key":{"type":"string"}},"required":["operator_key"],"type":"object"},"name":"list_kb_signals"},{"description":"KB-refresh review queue. List auto-scraped candidate roadmap signals (default: pending). Operator-only. Approve/reject with review_signal_candidate; the weekly cron signs approved ones into the live KB.","inputSchema":{"additionalProperties":false,"properties":{"limit":{"default":50,"type":"number"},"operator_key":{"type":"string"},"status":{"enum":["pending","approved","rejected","signed"],"type":"string"}},"required":["operator_key"],"type":"object"},"name":"list_signal_candidates"},{"description":"Inspectable State. No input. Counts, recent activity, roadmap-signal freshness, health, last calibration run.","inputSchema":{"additionalProperties":false,"properties":{},"type":"object"},"name":"overview"},{"description":"Outcome-feedback (learning loop). Record what ACTUALLY happened to a previously-assessed product as a labeled calibration case; the weekly recalibration folds it into the gate. Operator-only (requires operator_key). Provide either job_id (links the case to that assessment + reuses its product) or product text.","inputSchema":{"additionalProperties":false,"properties":{"actual_outcome":{"enum":["sherlocked","survived","thrived"],"type":"string"},"expected_verdict":{"enum":["roadkill","squeezed","defensible","riding-the-wave"],"type":"string"},"job_id":{"type":"string"},"notes":{"type":"string"},"operator_key":{"type":"string"},"product":{"type":"string"},"year_observed":{"type":"number"}},"required":["operator_key","actual_outcome","expected_verdict"],"type":"object"},"name":"record_outcome"},{"description":"UNLEARN a KB signal that became false/obsolete (e.g. a rumored feature cancelled, or a signal no longer predictive). Soft-deletes it (active=false) so it stops grounding assessments immediately — recoverable. Operator-only. Find the id via list_kb_signals.","inputSchema":{"additionalProperties":false,"properties":{"operator_key":{"type":"string"},"reason":{"type":"string"},"signal_id":{"type":"string"}},"required":["operator_key","signal_id","reason"],"type":"object"},"name":"retire_signal"},{"description":"Approve or reject a KB-refresh candidate signal. Operator-only. Approved candidates are signed (Ed25519) into the live roadmap_signals KB by the next refresh run; rejected ones are dropped. Controls what becomes grounding truth.","inputSchema":{"additionalProperties":false,"properties":{"action":{"enum":["approve","reject"],"type":"string"},"candidate_id":{"type":"string"},"operator_key":{"type":"string"}},"required":["operator_key","candidate_id","action"],"type":"object"},"name":"review_signal_candidate"},{"description":"UNLEARN a calibration case whose label turned out wrong or obsolete — retires it (active=false) so the recalibration gate stops scoring it. To correct, retire the wrong case then record_outcome the right one. Operator-only.","inputSchema":{"additionalProperties":false,"properties":{"case_id":{"type":"string"},"operator_key":{"type":"string"},"reason":{"type":"string"}},"required":["operator_key","case_id","reason"],"type":"object"},"name":"supersede_calibration_case"}]},"body_sha256":"55ffb65466e9706e66dfeeaf7f3363da5d9c2c36e68ed44cdac4ca7ebad1b2a2","prev_id":null,"leaf":"0xf604b6257b4804267123f6e8d66d9fca5097f0c77dfad38b3c92d7440993c406","leaf_text":"{\"body\":\"55ffb65466e9706e66dfeeaf7f3363da5d9c2c36e68ed44cdac4ca7ebad1b2a2\",\"id\":383130,\"kind\":\"mcp.tools\",\"method\":\"probe.mcp/1\",\"observed_us\":1793059768016941,\"prev\":null,\"subject\":\"6911ea5d-a4d2-47eb-96c9-d13ca70ea7a3\",\"subject_kind\":\"endpoint\"}","day":null,"proof":[]}