doom
Obsolescence-risk screening: predicts if a product gets absorbed into core LLM-platform features.
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"doom": {
"url": "https://mcp.doomscore.vc"
}
}
}Remote endpoints
https://mcp.doomscore.vcstreamable-httpWhat it can do
Tool inventory
Tools (11)
⚪doom_prep
Prep Gate. Validates config + confirms the roadmap-signals KB is within the staleness threshold. Fails closed if stale. Call before assess_product.
Input Schema
{
"type": "object",
"properties": {},
"additionalProperties": false
}🟢assess_product(description, url, pitch_company_id, deck_text, mode, ...)
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).
Input Schema
{
"type": "object",
"properties": {
"description": {
"type": "string"
},
"url": {
"type": "string"
},
"pitch_company_id": {
"type": "string"
},
"deck_text": {
"type": "string"
},
"mode": {
"type": "string",
"enum": [
"quick",
"deep"
],
"default": "deep"
},
"requested_by": {
"type": "string",
"description": "Who is requesting this assessment (name/handle/agent id) — shown in the #doom-activity feed; defaults to anonymous."
}
},
"additionalProperties": false
}🟢get_assessment(job_id)
Poll an assessment job_id. Returns status + the typed assessment when complete. Hard timeout — never hangs on pending.
Input Schema
{
"type": "object",
"properties": {
"job_id": {
"type": "string"
}
},
"required": [
"job_id"
],
"additionalProperties": false
}🟢list_assessments(verdict, limit)
Recent assessments, filterable by verdict.
Input Schema
{
"type": "object",
"properties": {
"verdict": {
"type": "string"
},
"limit": {
"type": "number",
"default": 20
}
},
"additionalProperties": false
}⚪overview
Inspectable State. No input. Counts, recent activity, roadmap-signal freshness, health, last calibration run.
Input Schema
{
"type": "object",
"properties": {},
"additionalProperties": false
}⚪record_outcome(operator_key, job_id, product, actual_outcome, expected_verdict, ...)
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.
Input Schema
{
"type": "object",
"properties": {
"operator_key": {
"type": "string"
},
"job_id": {
"type": "string"
},
"product": {
"type": "string"
},
"actual_outcome": {
"type": "string",
"enum": [
"sherlocked",
"survived",
"thrived"
]
},
"expected_verdict": {
"type": "string",
"enum": [
"roadkill",
"squeezed",
"defensible",
"riding-the-wave"
]
},
"year_observed": {
"type": "number"
},
"notes": {
"type": "string"
}
},
"required": [
"operator_key",
"actual_outcome",
"expected_verdict"
],
"additionalProperties": false
}🟢list_signal_candidates(operator_key, status, limit)
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.
Input Schema
{
"type": "object",
"properties": {
"operator_key": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"pending",
"approved",
"rejected",
"signed"
]
},
"limit": {
"type": "number",
"default": 50
}
},
"required": [
"operator_key"
],
"additionalProperties": false
}⚪review_signal_candidate(operator_key, candidate_id, action)
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.
Input Schema
{
"type": "object",
"properties": {
"operator_key": {
"type": "string"
},
"candidate_id": {
"type": "string"
},
"action": {
"type": "string",
"enum": [
"approve",
"reject"
]
}
},
"required": [
"operator_key",
"candidate_id",
"action"
],
"additionalProperties": false
}🟢list_kb_signals(operator_key)
List the active (signed, grounding) roadmap signals with their ids — use to find a signal_id to retire. Operator-only.
Input Schema
{
"type": "object",
"properties": {
"operator_key": {
"type": "string"
}
},
"required": [
"operator_key"
],
"additionalProperties": false
}🟢retire_signal(operator_key, signal_id, reason)
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.
Input Schema
{
"type": "object",
"properties": {
"operator_key": {
"type": "string"
},
"signal_id": {
"type": "string"
},
"reason": {
"type": "string"
}
},
"required": [
"operator_key",
"signal_id",
"reason"
],
"additionalProperties": false
}⚪supersede_calibration_case(operator_key, case_id, reason)
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.
Input Schema
{
"type": "object",
"properties": {
"operator_key": {
"type": "string"
},
"case_id": {
"type": "string"
},
"reason": {
"type": "string"
}
},
"required": [
"operator_key",
"case_id",
"reason"
],
"additionalProperties": false
}Recommended Prompts
get_assessmentget_assessmentlist_assessmentslist_assessmentslist_assessmentsget_assessmentCommunity
Evidence