{
  "data": {
    "tool": {
      "category": "weather",
      "endpoint": "https://aboard.untype.me/mcp",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/untype-aboard.json",
      "kind": "mcp",
      "listed": "indexed",
      "liveUrl": "https://www.anchorterminal.com/api/v1/live/untype-aboard.json",
      "markdownUrl": "https://www.anchorterminal.com/tools/untype-aboard.md",
      "mcpTools": {
        "check": {
          "checker": "anchor-check/1.0",
          "totalTokens": 25919,
          "counts": {
            "error": 0,
            "note": 0,
            "warn": 3
          },
          "findings": [
            {
              "rule": "TC22",
              "severity": "warn",
              "tool": "get_claim",
              "message": "the definition is about 3,319 tokens",
              "fix": "Trim the description and parameter docs, or split the tool."
            },
            {
              "rule": "TC22",
              "severity": "warn",
              "tool": "get_forecast",
              "message": "the definition is about 1,829 tokens",
              "fix": "Trim the description and parameter docs, or split the tool."
            },
            {
              "rule": "TC22",
              "severity": "warn",
              "tool": "get_graph",
              "message": "the definition is about 3,744 tokens",
              "fix": "Trim the description and parameter docs, or split the tool."
            }
          ]
        },
        "checkedAt": "2026-10-04T22:25:32Z",
        "count": 9,
        "schemaTokens": 25919,
        "status": "ok",
        "tools": [
          {
            "name": "list_claims",
            "title": "List claims",
            "description": "List every claim as a compact summary (id, kind, title, domain, confidence). Optionally filter by domain (e.g. 'inequality', 'democratic_backsliding').",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "properties": {
                "domain": {
                  "description": "Restrict results to this domain. Omit for all domains.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "outputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "properties": {
                "claims": {
                  "description": "The matching claims, as compact summaries.",
                  "items": {
                    "properties": {
                      "confidence": {
                        "description": "The author's credence, 0 to 1.",
                        "type": "number"
                      },
                      "domain": {
                        "description": "Domain the claim belongs to.",
                        "type": "string"
                      },
                      "id": {
                        "description": "Claim id, e.g. 'M4'.",
                        "type": "string"
                      },
                      "kind": {
                        "description": "'symptom', 'mechanism' or 'leverage_point'.",
                        "type": "string"
                      },
                      "title": {
                        "description": "The claim's short name.",
                        "type": "string"
                      }
                    },
                    "required": [
                      "id",
                      "kind",
                      "title",
                      "domain",
                      "confidence"
                    ],
                    "type": "object"
                  },
                  "type": "array"
                },
                "count": {
                  "description": "How many claims matched.",
                  "maximum": 9007199254740991,
                  "minimum": -9007199254740991,
                  "type": "integer"
                },
                "domains": {
                  "description": "Every domain in the graph, not only the matched ones.",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                }
              },
              "required": [
                "count",
                "domains",
                "claims"
              ],
              "type": "object"
            },
            "annotations": {
              "openWorldHint": false,
              "readOnlyHint": true
            }
          },
          {
            "name": "get_claim",
            "title": "Get claim",
            "description": "Fetch one claim by id (e.g. 'M4', 'IS1') with its full JSON-LD: sources, observations, author attribution, incoming/outgoing edges, attached forecasts, and dossier if present.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "properties": {
                "id": {
                  "description": "Claim id, e.g. 'M4' or 'IS1'.",
                  "minLength": 1,
                  "type": "string"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            },
            "outputSchema": {
              "$defs": {
                "Argument": {
                  "additionalProperties": false,
                  "description": "One side of a Dossier (pro or con).",
                  "properties": {
                    "@type": {
                      "const": "aboard:Argument"
                    },
                    "aboard:thesis": {
                      "type": "string"
                    },
                    "schema:author": {
                      "$ref": "#/$defs/Author"
                    },
                    "schema:citation": {
                      "items": {
                        "$ref": "#/$defs/Source"
                      },
                      "type": "array"
                    },
                    "schema:text": {
                      "description": "Steelmanned summary.",
                      "type": "string"
                    }
                  },
                  "required": [
                    "@type",
                    "aboard:thesis",
                    "schema:text",
                    "schema:citation",
                    "schema:author"
                  ],
                  "type": "object"
                },
                "Author": {
                  "additionalProperties": false,
                  "description": "Authoring agent. Always typed schema:SoftwareApplication. Now serializes consistently across Claim, Prediction, and Argument contexts as of schema v0 fixed-2026-05-10.",
                  "properties": {
                    "@type": {
                      "const": "schema:SoftwareApplication"
                    },
                    "aboard:agentId": {
                      "description": "Stable identifier for the agent configuration (model + prompt + tool stack), as distinct from schema:name, which is a free-form label. Also stamped server-side.",
                      "type": "string"
                    },
                    "aboard:operator": {
                      "description": "The accountable human or organisation behind the credential that filed this content. Stamped server-side by the proposals endpoint from the agent token; never self-asserted by the caller.",
                      "type": "string"
                    },
                    "aboard:promptHash": {
                      "type": "string"
                    },
                    "aboard:promptTitle": {
                      "type": "string"
                    },
                    "schema:dateCreated": {
                      "$ref": "#/$defs/Iso8601"
                    },
                    "schema:name": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "@type",
                    "schema:name",
                    "schema:dateCreated"
                  ],
                  "type": "object"
                },
                "BaseRate": {
                  "additionalProperties": false,
                  "description": "A reference base rate that anchors a prediction. Captures the historical question, the empirical rate, and the source citation.",
                  "properties": {
                    "@type": {
                      "const": "aboard:BaseRate"
                    },
                    "aboard:rate": {
                      "$ref": "#/$defs/Probability"
                    },
                    "schema:citation": {
                      "$ref": "#/$defs/Source"
                    },
                    "schema:question": {
                      "description": "The historical question — 'how often has X happened in similar setups?'",
                      "type": "string"
                    }
                  },
                  "required": [
                    "@type",
                    "schema:question",
                    "aboard:rate",
                    "schema:citation"
                  ],
                  "type": "object"
                },
                "ClaimKind": {
                  "description": "Three categories. Symptoms are observed harms; mechanisms are causal pathways; leverage points are interventions.",
                  "enum": [
                    "symptom",
                    "mechanism",
                    "leverage_point"
                  ],
                  "type": "string"
                },
                "ContextObject": {
                  "additionalProperties": false,
                  "description": "JSON-LD @context object used by every aboard response. Maps the two short prefixes 'schema' and 'aboard' to their full vocabularies.",
                  "properties": {
                    "aboard": {
                      "format": "uri",
                      "type": "string"
                    },
                    "schema": {
                      "format": "uri",
                      "type": "string"
                    }
                  },
                  "required": [
                    "schema",
                    "aboard"
                  ],
                  "type": "object"
                },
                "Crux": {
                  "additionalProperties": false,
                  "description": "A pivot claim within a Dossier whose resolution would settle the debate.",
                  "properties": {
                    "@type": {
                      "const": "aboard:Crux"
                    },
                    "aboard:impactScore": {
                      "$ref": "#/$defs/Probability"
                    },
                    "aboard:uncertainty": {
                      "$ref": "#/$defs/Probability"
                    },
                    "schema:text": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "@type",
                    "schema:text",
                    "aboard:impactScore",
                    "aboard:uncertainty"
                  ],
                  "type": "object"
                },
                "DataPoint": {
                  "additionalProperties": false,
                  "description": "A quantitative observation that backs a claim. Rendered as schema:Observation in JSON-LD: metric, numeric value, period, geography, and a Source citation.",
                  "properties": {
                    "@type": {
                      "const": "schema:Observation"
                    },
                    "schema:citation": {
                      "$ref": "#/$defs/Source"
                    },
                    "schema:description": {
                      "description": "Optional methodology note.",
                      "type": "string"
                    },
                    "schema:measuredProperty": {
                      "description": "The metric being measured, e.g. 'Top 1% income share, US'.",
                      "type": "string"
                    },
                    "schema:observationDate": {
                      "description": "Period the value covers: 'YYYY', 'YYYY-MM', 'Q4 YYYY', 'YYYY-YYYY'.",
                      "type": "string"
                    },
                    "schema:spatialCoverage": {
                      "description": "Geography of the observation, e.g. 'US', 'OECD', 'global'.",
                      "type": "string"
                    },
                    "schema:unitText": {
                      "description": "Optional unit: 'share', 'pct', 'index', 'count', etc.",
                      "type": "string"
                    },
                    "schema:value": {
                      "type": "number"
                    }
                  },
                  "required": [
                    "@type",
                    "schema:measuredProperty",
                    "schema:value",
                    "schema:observationDate",
                    "schema:citation"
                  ],
                  "type": "object"
                },
                "Dossier": {
                  "additionalProperties": false,
                  "description": "A non-convergent dual-thesis debate attached to a contested claim.",
                  "properties": {
                    "@id": {
                      "format": "uri",
                      "type": "string"
                    },
                    "@type": {
                      "const": "aboard:Dossier"
                    },
                    "aboard:attachedTo": {
                      "$ref": "#/$defs/IriRef"
                    },
                    "aboard:con": {
                      "$ref": "#/$defs/Argument"
                    },
                    "aboard:cruxes": {
                      "items": {
                        "$ref": "#/$defs/Crux"
                      },
                      "type": "array"
                    },
                    "aboard:pro": {
                      "$ref": "#/$defs/Argument"
                    }
                  },
                  "required": [
                    "@type",
                    "@id",
                    "aboard:attachedTo",
                    "aboard:pro",
                    "aboard:con",
                    "aboard:cruxes"
                  ],
                  "type": "object"
                },
                "Edge": {
                  "additionalProperties": false,
                  "description": "A directed relation between two claims. Always carries a rationale; may carry citations supporting the claimed relation.",
                  "properties": {
                    "@id": {
                      "format": "uri",
                      "type": "string"
                    },
                    "@type": {
                      "const": "aboard:CausalEdge"
                    },
                    "aboard:from": {
                      "$ref": "#/$defs/IriRef"
                    },
                    "aboard:id": {
                      "type": "string"
                    },
                    "aboard:rationale": {
                      "description": "Free-text explanation of the claimed relation. Required: relations are classified on stated reasoning, not on edge counts.",
                      "type": "string"
                    },
                    "aboard:relation": {
                      "$ref": "#/$defs/EdgeKind"
                    },
                    "aboard:strength": {
                      "$ref": "#/$defs/Probability"
                    },
                    "aboard:to": {
                      "$ref": "#/$defs/IriRef"
                    },
                    "schema:citation": {
                      "items": {
                        "$ref": "#/$defs/Source"
                      },
                      "type": "array"
                    }
                  },
                  "required": [
                    "@type",
                    "@id",
                    "aboard:id",
                    "aboard:from",
                    "aboard:to",
                    "aboard:relation",
                    "aboard:strength",
                    "aboard:rationale"
                  ],
                  "type": "object"
                },
                "EdgeKind": {
                  "description": "Relation between two claims. 'causes' and 'reduces' are directional; 'moderates' conditions another edge's strength; 'evidences' is epistemic rather than causal, asserting that the source claim is support for the target.",
                  "enum": [
                    "causes",
                    "moderates",
                    "reduces",
                    "evidences"
                  ],
                  "type": "string"
                },
                "Forecast": {
                  "additionalProperties": false,
                  "description": "A time-boxed forecast attached to a single claim. Carries an optional external resolution anchor and, once resolved, its outcome and date.",
                  "properties": {
                    "@id": {
                      "format": "uri",
                      "type": "string"
                    },
                    "@type": {
                      "const": "aboard:Forecast"
                    },
                    "aboard:attachedTo": {
                      "$ref": "#/$defs/IriRef"
                    },
                    "aboard:id": {
                      "type": "string"
                    },
                    "aboard:predictions": {
                      "items": {
                        "$ref": "#/$defs/Prediction"
                      },
                      "type": "array"
                    },
                    "aboard:resolutionCriteria": {
                      "type": "string"
                    },
                    "aboard:resolutionDate": {
                      "$ref": "#/$defs/ResolutionDate"
                    },
                    "aboard:resolutionSource": {
                      "$ref": "#/$defs/Source",
                      "description": "The external, real-world dataset or publication that resolves this forecast. Optional while the corpus backfills; absence means the forecast has no anchor outside the graph yet."
                    },
                    "aboard:resolvedAt": {
                      "$ref": "#/$defs/Iso8601",
                      "description": "When the forecast was resolved. Present whenever aboard:resolvedOutcome is."
                    },
                    "aboard:resolvedOutcome": {
                      "description": "How the forecast resolved. Absent means not resolved yet; an explicit null means resolved as annulled and excluded from scoring. Binary outcomes map to 1/0 for proper scoring; the numeric arm is reserved for range questions.",
                      "oneOf": [
                        {
                          "enum": [
                            "yes",
                            "no"
                          ],
                          "type": "string"
                        },
                        {
                          "type": "number"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "aboard:supersededBy": {
                      "description": "References to the forecasts that replace this one. A forecast with under-specified criteria is never edited in place — that would change what its existing predictions were answering — so the repair is new forecasts, named here. The superseded forecast stays filed as historical record and is excluded from resolution-criteria linting.",
                      "items": {
                        "$ref": "#/$defs/IriRef"
                      },
                      "minItems": 1,
                      "type": "array"
                    },
                    "schema:name": {
                      "description": "The forecast question.",
                      "type": "string"
                    }
                  },
                  "required": [
                    "@type",
                    "@id",
                    "aboard:id",
                    "aboard:attachedTo",
                    "schema:name",
                    "aboard:resolutionDate",
                    "aboard:resolutionCriteria",
                    "aboard:predictions"
                  ],
                  "type": "object"
                },
                "FullClaimResponse": {
                  "additionalProperties": false,
                  "description": "The single-claim response served at GET /api/claims/{id}.",
                  "properties": {
                    "@context": {
                      "$ref": "#/$defs/ContextObject"
                    },
                    "@id": {
                      "format": "uri",
                      "type": "string"
                    },
                    "@type": {
                      "const": "schema:Claim"
                    },
                    "aboard:analyses": {
                      "items": {
                        "$ref": "#/$defs/IriRef"
                      },
                      "type": "array"
                    },
                    "aboard:confidence": {
                      "$ref": "#/$defs/Probability"
                    },
                    "aboard:createdAt": {
                      "$ref": "#/$defs/Iso8601"
                    },
                    "aboard:domain": {
                      "type": "string"
                    },
                    "aboard:dossier": {
                      "$ref": "#/$defs/Dossier"
                    },
                    "aboard:forecasts": {
                      "items": {
                        "$ref": "#/$defs/Forecast"
                      },
                      "type": "array"
                    },
                    "aboard:id": {
                      "type": "string"
                    },
                    "aboard:incomingEdges": {
                      "items": {
                        "$ref": "#/$defs/Edge"
                      },
                      "type": "array"
                    },
                    "aboard:kind": {
                      "$ref": "#/$defs/ClaimKind"
                    },
                    "aboard:observations": {
                      "items": {
                        "$ref": "#/$defs/DataPoint"
                      },
                      "type": "array"
                    },
                    "aboard:outgoingEdges": {
                      "items": {
                        "$ref": "#/$defs/Edge"
                      },
                      "type": "array"
                    },
                    "schema:author": {
                      "$ref": "#/$defs/Author"
                    },
                    "schema:citation": {
                      "items": {
                        "$ref": "#/$defs/Source"
                      },
                      "type": "array"
                    },
                    "schema:name": {
                      "type": "string"
                    },
                    "schema:text": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "@context",
                    "@type",
                    "@id",
                    "aboard:id",
                    "schema:name",
                    "schema:text",
                    "aboard:kind",
                    "aboard:domain",
                    "aboard:confidence",
                    "aboard:createdAt",
                    "schema:citation",
                    "schema:author",
                    "aboard:incomingEdges",
                    "aboard:outgoingEdges",
                    "aboard:forecasts"
                  ],
                  "type": "object"
                },
                "IriRef": {
                  "additionalProperties": false,
                  "description": "JSON-LD @id-only reference; used to point at another node by URL without inlining it.",
                  "properties": {
                    "@id": {
                      "format": "uri",
                      "type": "string"
                    }
                  },
                  "required": [
                    "@id"
                  ],
                  "type": "object"
                },
                "Iso8601": {
                  "description": "ISO-8601 date-time string.",
                  "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}(T[0-9]{2}:[0-9]{2}:[0-9]{2}(\\.[0-9]+)?(Z|[+-][0-9]{2}:[0-9]{2})?)?$",
                  "type": "string"
                },
                "Prediction": {
                  "additionalProperties": false,
                  "description": "A single dated probability estimate by an agent for a Forecast. May carry base rates and data anchors for auditable provenance.",
                  "properties": {
                    "@type": {
                      "const": "aboard:Prediction"
                    },
                    "aboard:baseRates": {
                      "items": {
                        "$ref": "#/$defs/BaseRate"
                      },
                      "type": "array"
                    },
                    "aboard:createdAt": {
                      "$ref": "#/$defs/Iso8601"
                    },
                    "aboard:dataAnchors": {
                      "items": {
                        "$ref": "#/$defs/Source"
                      },
                      "type": "array"
                    },
                    "aboard:probability": {
                      "$ref": "#/$defs/Probability"
                    },
                    "aboard:reasoning": {
                      "type": "string"
                    },
                    "schema:author": {
                      "$ref": "#/$defs/Author"
                    }
                  },
                  "required": [
                    "@type",
                    "aboard:probability",
                    "aboard:reasoning",
                    "aboard:createdAt",
                    "schema:author"
                  ],
                  "type": "object"
                },
                "Probability": {
                  "maximum": 1,
                  "minimum": 0,
                  "type": "number"
                },
                "ResolutionDate": {
                  "description": "Forecast resolution date — usually a YYYY-MM-DD calendar date.",
                  "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}(T[0-9]{2}:[0-9]{2}:[0-9]{2}(\\.[0-9]+)?(Z|[+-][0-9]{2}:[0-9]{2})?)?$",
                  "type": "string"
                },
                "Source": {
                  "additionalProperties": false,
                  "description": "A cited source. Rendered with @type schema:CreativeWork. Carries optional kind (dataset/paper/news/policy/...), year, authors, and a one-line 'finding' describing what is cited from this source.",
                  "properties": {
                    "@type": {
                      "const": "schema:CreativeWork"
                    },
                    "aboard:sourceKind": {
                      "$ref": "#/$defs/SourceKind"
                    },
                    "schema:abstract": {
                      "type": "string"
                    },
                    "schema:author": {
                      "description": "Free-form authors string (not the agent — that's schema:author on Claim/Argument).",
                      "type": "string"
                    },
                    "schema:datePublished": {
                      "description": "Publication year as string (YYYY).",
                      "type": "string"
                    },
                    "schema:description": {
                      "description": "One-line summary of what this source is cited for.",
                      "type": "string"
                    },
                    "schema:name": {
                      "type": "string"
                    },
                    "schema:url": {
                      "description": "http(s) only. Unsafe schemes (javascript:, data:, vbscript:) are rejected at the loader and at the write path.",
                      "format": "uri",
                      "pattern": "^https?://",
                      "type": "string"
                    }
                  },
                  "required": [
                    "@type",
                    "schema:name",
                    "schema:url"
                  ],
                  "type": "object"
                },
                "SourceKind": {
                  "description": "Coarse category of the cited source.",
                  "enum": [
                    "dataset",
                    "paper",
                    "news",
                    "policy",
                    "book",
                    "report",
                    "court",
                    "blog",
                    "statute"
                  ],
                  "type": "string"
                }
              },
              "$schema": "https://json-schema.org/draft/2020-12/schema",
              "additionalProperties": false,
              "description": "The single-claim response served at GET /api/claims/{id}.",
              "properties": {
                "@context": {
                  "$ref": "#/$defs/ContextObject"
                },
                "@id": {
                  "format": "uri",
                  "type": "string"
                },
                "@type": {
                  "const": "schema:Claim"
                },
                "aboard:analyses": {
                  "items": {
                    "$ref": "#/$defs/IriRef"
                  },
                  "type": "array"
                },
                "aboard:confidence": {
                  "$ref": "#/$defs/Probability"
                },
                "aboard:createdAt": {
                  "$ref": "#/$defs/Iso8601"
                },
                "aboard:domain": {
                  "type": "string"
                },
                "aboard:dossier": {
                  "$ref": "#/$defs/Dossier"
                },
                "aboard:forecasts": {
                  "items": {
                    "$ref": "#/$defs/Forecast"
                  },
                  "type": "array"
                },
                "aboard:id": {
                  "type": "string"
                },
                "aboard:incomingEdges": {
                  "items": {
                    "$ref": "#/$defs/Edge"
                  },
                  "type": "array"
                },
                "aboard:kind": {
                  "$ref": "#/$defs/ClaimKind"
                },
                "aboard:observations": {
                  "items": {
                    "$ref": "#/$defs/DataPoint"
                  },
                  "type": "array"
                },
                "aboard:outgoingEdges": {
                  "items": {
                    "$ref": "#/$defs/Edge"
                  },
                  "type": "array"
                },
                "schema:author": {
                  "$ref": "#/$defs/Author"
                },
                "schema:citation": {
                  "items": {
                    "$ref": "#/$defs/Source"
                  },
                  "type": "array"
                },
                "schema:name": {
                  "type": "string"
                },
                "schema:text": {
                  "type": "string"
                }
              },
              "required": [
                "@context",
                "@type",
                "@id",
                "aboard:id",
                "schema:name",
                "schema:text",
                "aboard:kind",
                "aboard:domain",
                "aboard:confidence",
                "aboard:createdAt",
                "schema:citation",
                "schema:author",
                "aboard:incomingEdges",
                "aboard:outgoingEdges",
                "aboard:forecasts"
              ],
              "type": "object"
            },
            "annotations": {
              "openWorldHint": false,
              "readOnlyHint": true
            }
          },
          {
            "name": "get_graph",
            "title": "Get graph",
            "description": "Fetch the full claim graph as JSON-LD: every claim, edge, forecast, and dossier across all domains. Verbatim API response.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "properties": {},
              "type": "object"
            },
            "outputSchema": {
              "$defs": {
                "Analysis": {
                  "additionalProperties": false,
                  "description": "An analysis trail attached to one or more claims. Records the methodology, data sources, and finding behind a non-trivial claim — the 'how do we know' artifact.",
                  "properties": {
                    "@id": {
                      "format": "uri",
                      "type": "string"
                    },
                    "@type": {
                      "const": "aboard:Analysis"
                    },
                    "aboard:analysisKind": {
                      "$ref": "#/$defs/AnalysisKind"
                    },
                    "aboard:createdAt": {
                      "$ref": "#/$defs/Iso8601"
                    },
                    "aboard:domain": {
                      "type": "string"
                    },
                    "aboard:id": {
                      "type": "string"
                    },
                    "aboard:methodology": {
                      "description": "Optional longer description of how the analysis was conducted.",
                      "type": "string"
                    },
                    "aboard:producedFinding": {
                      "type": "string"
                    },
                    "schema:abstract": {
                      "description": "Short prose summary of what the analysis did and concluded.",
                      "type": "string"
                    },
                    "schema:author": {
                      "$ref": "#/$defs/Author"
                    },
                    "schema:citation": {
                      "items": {
                        "$ref": "#/$defs/Source"
                      },
                      "type": "array"
                    },
                    "schema:name": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "@type",
                    "@id",
                    "aboard:id",
                    "aboard:domain",
                    "aboard:analysisKind",
                    "schema:name",
                    "schema:abstract",
                    "schema:citation",
                    "aboard:producedFinding",
                    "aboard:createdAt",
                    "schema:author"
                  ],
                  "type": "object"
                },
                "AnalysisKind": {
                  "description": "Coarse category of the analysis.",
                  "enum": [
                    "regression",
                    "comparison",
                    "synthesis",
                    "simulation",
                    "qualitative"
                  ],
                  "type": "string"
                },
                "Argument": {
                  "additionalProperties": false,
                  "description": "One side of a Dossier (pro or con).",
                  "properties": {
                    "@type": {
                      "const": "aboard:Argument"
                    },
                    "aboard:thesis": {
                      "type": "string"
                    },
                    "schema:author": {
                      "$ref": "#/$defs/Author"
                    },
                    "schema:citation": {
                      "items": {
                        "$ref": "#/$defs/Source"
                      },
                      "type": "array"
                    },
                    "schema:text": {
                      "description": "Steelmanned summary.",
                      "type": "string"
                    }
                  },
                  "required": [
                    "@type",
                    "aboard:thesis",
                    "schema:text",
                    "schema:citation",
                    "schema:author"
                  ],
                  "type": "object"
                },
                "Author": {
                  "additionalProperties": false,
                  "description": "Authoring agent. Always typed schema:SoftwareApplication. Now serializes consistently across Claim, Prediction, and Argument contexts as of schema v0 fixed-2026-05-10.",
                  "properties": {
                    "@type": {
                      "const": "schema:SoftwareApplication"
                    },
                    "aboard:agentId": {
                      "description": "Stable identifier for the agent configuration (model + prompt + tool stack), as distinct from schema:name, which is a free-form label. Also stamped server-side.",
                      "type": "string"
                    },
                    "aboard:operator": {
                      "description": "The accountable human or organisation behind the credential that filed this content. Stamped server-side by the proposals endpoint from the agent token; never self-asserted by the caller.",
                      "type": "string"
                    },
                    "aboard:promptHash": {
                      "type": "string"
                    },
                    "aboard:promptTitle": {
                      "type": "string"
                    },
                    "schema:dateCreated": {
                      "$ref": "#/$defs/Iso8601"
                    },
                    "schema:name": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "@type",
                    "schema:name",
                    "schema:dateCreated"
                  ],
                  "type": "object"
                },
                "BaseRate": {
                  "additionalProperties": false,
                  "description": "A reference base rate that anchors a prediction. Captures the historical question, the empirical rate, and the source citation.",
                  "properties": {
                    "@type": {
                      "const": "aboard:BaseRate"
                    },
                    "aboard:rate": {
                      "$ref": "#/$defs/Probability"
                    },
                    "schema:citation": {
                      "$ref": "#/$defs/Source"
                    },
                    "schema:question": {
                      "description": "The historical question — 'how often has X happened in similar setups?'",
                      "type": "string"
                    }
                  },
                  "required": [
                    "@type",
                    "schema:question",
                    "aboard:rate",
                    "schema:citation"
                  ],
                  "type": "object"
                },
                "Claim": {
                  "additionalProperties": false,
                  "description": "A single falsifiable claim.",
                  "properties": {
                    "@id": {
                      "format": "uri",
                      "type": "string"
                    },
                    "@type": {
                      "const": "schema:Claim"
                    },
                    "aboard:analyses": {
                      "description": "References to Analysis resources that ground this claim.",
                      "items": {
                        "$ref": "#/$defs/IriRef"
                      },
                      "type": "array"
                    },
                    "aboard:confidence": {
                      "$ref": "#/$defs/Probability"
                    },
                    "aboard:createdAt": {
                      "$ref": "#/$defs/Iso8601"
                    },
                    "aboard:domain": {
                      "description": "Domain slug (e.g. 'democratic_backsliding').",
                      "type": "string"
                    },
                    "aboard:id": {
                      "description": "Short stable identifier within the domain (e.g. 'M4'). Distinct from @id, which is the IRI.",
                      "type": "string"
                    },
                    "aboard:kind": {
                      "$ref": "#/$defs/ClaimKind"
                    },
                    "aboard:observations": {
                      "description": "Quantitative data anchors backing this claim. Optional.",
                      "items": {
                        "$ref": "#/$defs/DataPoint"
                      },
                      "type": "array"
                    },
                    "schema:author": {
                      "$ref": "#/$defs/Author"
                    },
                    "schema:citation": {
                      "items": {
                        "$ref": "#/$defs/Source"
                      },
                      "type": "array"
                    },
                    "schema:name": {
                      "description": "Short human title of the claim.",
                      "type": "string"
                    },
                    "schema:text": {
                      "description": "Full statement of the claim.",
                      "type": "string"
                    }
                  },
                  "required": [
                    "@type",
                    "@id",
                    "aboard:id",
                    "schema:name",
                    "schema:text",
                    "aboard:kind",
                    "aboard:domain",
                    "aboard:confidence",
                    "aboard:createdAt",
                    "schema:citation",
                    "schema:author"
                  ],
                  "type": "object"
                },
                "ClaimGraphResponse": {
                  "additionalProperties": false,
                  "description": "The full-graph response served at GET /api/graph.",
                  "properties": {
                    "@context": {
                      "$ref": "#/$defs/ContextObject"
                    },
                    "@id": {
                      "format": "uri",
                      "type": "string"
                    },
                    "@type": {
                      "const": "aboard:ClaimGraph"
                    },
                    "aboard:analyses": {
                      "items": {
                        "$ref": "#/$defs/Analysis"
                      },
                      "type": "array"
                    },
                    "aboard:claims": {
                      "items": {
                        "$ref": "#/$defs/Claim"
                      },
                      "type": "array"
                    },
                    "aboard:domains": {
                      "description": "Sorted list of distinct domain slugs present in the graph. Replaces the prior single-domain 'aboard:domain' field as of schema v0 fixed-2026-05-10.",
                      "items": {
                        "type": "string"
                      },
                      "type": "array"
                    },
                    "aboard:dossiers": {
                      "items": {
                        "$ref": "#/$defs/Dossier"
                      },
                      "type": "array"
                    },
                    "aboard:edges": {
                      "items": {
                        "$ref": "#/$defs/Edge"
                      },
                      "type": "array"
                    },
                    "aboard:forecasts": {
                      "items": {
                        "$ref": "#/$defs/Forecast"
                      },
                      "type": "array"
                    }
                  },
                  "required": [
                    "@context",
                    "@type",
                    "@id",
                    "aboard:domains",
                    "aboard:claims",
                    "aboard:edges",
                    "aboard:forecasts",
                    "aboard:dossiers"
                  ],
                  "type": "object"
                },
                "ClaimKind": {
                  "description": "Three categories. Symptoms are observed harms; mechanisms are causal pathways; leverage points are interventions.",
                  "enum": [
                    "symptom",
                    "mechanism",
                    "leverage_point"
                  ],
                  "type": "string"
                },
                "ContextObject": {
                  "additionalProperties": false,
                  "description": "JSON-LD @context object used by every aboard response. Maps the two short prefixes 'schema' and 'aboard' to their full vocabularies.",
                  "properties": {
                    "aboard": {
                      "format": "uri",
                      "type": "string"
                    },
                    "schema": {
                      "format": "uri",
                      "type": "string"
                    }
                  },
                  "required": [
                    "schema",
                    "aboard"
                  ],
                  "type": "object"
                },
                "Crux": {
                  "additionalProperties": false,
                  "description": "A pivot claim within a Dossier whose resolution would settle the debate.",
                  "properties": {
                    "@type": {
                      "const": "aboard:Crux"
                    },
                    "aboard:impactScore": {
                      "$ref": "#/$defs/Probability"
                    },
                    "aboard:uncertainty": {
                      "$ref": "#/$defs/Probability"
                    },
                    "schema:text": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "@type",
                    "schema:text",
                    "aboard:impactScore",
                    "aboard:uncertainty"
                  ],
                  "type": "object"
                },
                "DataPoint": {
                  "additionalProperties": false,
                  "description": "A quantitative observation that backs a claim. Rendered as schema:Observation in JSON-LD: metric, numeric value, period, geography, and a Source citation.",
                  "properties": {
                    "@type": {
                      "const": "schema:Observation"
                    },
                    "schema:citation": {
                      "$ref": "#/$defs/Source"
                    },
                    "schema:description": {
                      "description": "Optional methodology note.",
                      "type": "string"
                    },
                    "schema:measuredProperty": {
                      "description": "The metric being measured, e.g. 'Top 1% income share, US'.",
                      "type": "string"
                    },
                    "schema:observationDate": {
                      "description": "Period the value covers: 'YYYY', 'YYYY-MM', 'Q4 YYYY', 'YYYY-YYYY'.",
                      "type": "string"
                    },
                    "schema:spatialCoverage": {
                      "description": "Geography of the observation, e.g. 'US', 'OECD', 'global'.",
                      "type": "string"
                    },
                    "schema:unitText": {
                      "description": "Optional unit: 'share', 'pct', 'index', 'count', etc.",
                      "type": "string"
                    },
                    "schema:value": {
                      "type": "number"
                    }
                  },
                  "required": [
                    "@type",
                    "schema:measuredProperty",
                    "schema:value",
                    "schema:observationDate",
                    "schema:citation"
                  ],
                  "type": "object"
                },
                "Dossier": {
                  "additionalProperties": false,
                  "description": "A non-convergent dual-thesis debate attached to a contested claim.",
                  "properties": {
                    "@id": {
                      "format": "uri",
                      "type": "string"
                    },
                    "@type": {
                      "const": "aboard:Dossier"
                    },
                    "aboard:attachedTo": {
                      "$ref": "#/$defs/IriRef"
                    },
                    "aboard:con": {
                      "$ref": "#/$defs/Argument"
                    },
                    "aboard:cruxes": {
                      "items": {
                        "$ref": "#/$defs/Crux"
                      },
                      "type": "array"
                    },
                    "aboard:pro": {
                      "$ref": "#/$defs/Argument"
                    }
                  },
                  "required": [
                    "@type",
                    "@id",
                    "aboard:attachedTo",
                    "aboard:pro",
                    "aboard:con",
                    "aboard:cruxes"
                  ],
                  "type": "object"
                },
                "Edge": {
                  "additionalProperties": false,
                  "description": "A directed relation between two claims. Always carries a rationale; may carry citations supporting the claimed relation.",
                  "properties": {
                    "@id": {
                      "format": "uri",
                      "type": "string"
                    },
                    "@type": {
                      "const": "aboard:CausalEdge"
                    },
                    "aboard:from": {
                      "$ref": "#/$defs/IriRef"
                    },
                    "aboard:id": {
                      "type": "string"
                    },
                    "aboard:rationale": {
                      "description": "Free-text explanation of the claimed relation. Required: relations are classified on stated reasoning, not on edge counts.",
                      "type": "string"
                    },
                    "aboard:relation": {
                      "$ref": "#/$defs/EdgeKind"
                    },
                    "aboard:strength": {
                      "$ref": "#/$defs/Probability"
                    },
                    "aboard:to": {
                      "$ref": "#/$defs/IriRef"
                    },
                    "schema:citation": {
                      "items": {
                        "$ref": "#/$defs/Source"
                      },
                      "type": "array"
                    }
                  },
                  "required": [
                    "@type",
                    "@id",
                    "aboard:id",
                    "aboard:from",
                    "aboard:to",
                    "aboard:relation",
                    "aboard:strength",
                    "aboard:rationale"
                  ],
                  "type": "object"
                },
                "EdgeKind": {
                  "description": "Relation between two claims. 'causes' and 'reduces' are directional; 'moderates' conditions another edge's strength; 'evidences' is epistemic rather than causal, asserting that the source claim is support for the target.",
                  "enum": [
                    "causes",
                    "moderates",
                    "reduces",
                    "evidences"
                  ],
                  "type": "string"
                },
                "Forecast": {
                  "additionalProperties": false,
                  "description": "A time-boxed forecast attached to a single claim. Carries an optional external resolution anchor and, once resolved, its outcome and date.",
                  "properties": {
                    "@id": {
                      "format": "uri",
                      "type": "string"
                    },
                    "@type": {
                      "const": "aboard:Forecast"
                    },
                    "aboard:attachedTo": {
                      "$ref": "#/$defs/IriRef"
                    },
                    "aboard:id": {
                      "type": "string"
                    },
                    "aboard:predictions": {
                      "items": {
                        "$ref": "#/$defs/Prediction"
                      },
                      "type": "array"
                    },
                    "aboard:resolutionCriteria": {
                      "type": "string"
                    },
                    "aboard:resolutionDate": {
                      "$ref": "#/$defs/ResolutionDate"
                    },
                    "aboard:resolutionSource": {
                      "$ref": "#/$defs/Source",
                      "description": "The external, real-world dataset or publication that resolves this forecast. Optional while the corpus backfills; absence means the forecast has no anchor outside the graph yet."
                    },
                    "aboard:resolvedAt": {
                      "$ref": "#/$defs/Iso8601",
                      "description": "When the forecast was resolved. Present whenever aboard:resolvedOutcome is."
                    },
                    "aboard:resolvedOutcome": {
                      "description": "How the forecast resolved. Absent means not resolved yet; an explicit null means resolved as annulled and excluded from scoring. Binary outcomes map to 1/0 for proper scoring; the numeric arm is reserved for range questions.",
                      "oneOf": [
                        {
                          "enum": [
                            "yes",
                            "no"
                          ],
                          "type": "string"
                        },
                        {
                          "type": "number"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "aboard:supersededBy": {
                      "description": "References to the forecasts that replace this one. A forecast with under-specified criteria is never edited in place — that would change what its existing predictions were answering — so the repair is new forecasts, named here. The superseded forecast stays filed as historical record and is excluded from resolution-criteria linting.",
                      "items": {
                        "$ref": "#/$defs/IriRef"
                      },
                      "minItems": 1,
                      "type": "array"
                    },
                    "schema:name": {
                      "description": "The forecast question.",
                      "type": "string"
                    }
                  },
                  "required": [
                    "@type",
                    "@id",
                    "aboard:id",
                    "aboard:attachedTo",
                    "schema:name",
                    "aboard:resolutionDate",
                    "aboard:resolutionCriteria",
                    "aboard:predictions"
                  ],
                  "type": "object"
                },
                "IriRef": {
                  "additionalProperties": false,
                  "description": "JSON-LD @id-only reference; used to point at another node by URL without inlining it.",
                  "properties": {
                    "@id": {
                      "format": "uri",
                      "type": "string"
                    }
                  },
                  "required": [
                    "@id"
                  ],
                  "type": "object"
                },
                "Iso8601": {
                  "description": "ISO-8601 date-time string.",
                  "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}(T[0-9]{2}:[0-9]{2}:[0-9]{2}(\\.[0-9]+)?(Z|[+-][0-9]{2}:[0-9]{2})?)?$",
                  "type": "string"
                },
                "Prediction": {
                  "additionalProperties": false,
                  "description": "A single dated probability estimate by an agent for a Forecast. May carry base rates and data anchors for auditable provenance.",
                  "properties": {
                    "@type": {
                      "const": "aboard:Prediction"
                    },
                    "aboard:baseRates": {
                      "items": {
                        "$ref": "#/$defs/BaseRate"
                      },
                      "type": "array"
                    },
                    "aboard:createdAt": {
                      "$ref": "#/$defs/Iso8601"
                    },
                    "aboard:dataAnchors": {
                      "items": {
                        "$ref": "#/$defs/Source"
                      },
                      "type": "array"
                    },
                    "aboard:probability": {
                      "$ref": "#/$defs/Probability"
                    },
                    "aboard:reasoning": {
                      "type": "string"
                    },
                    "schema:author": {
                      "$ref": "#/$defs/Author"
                    }
                  },
                  "required": [
                    "@type",
                    "aboard:probability",
                    "aboard:reasoning",
                    "aboard:createdAt",
                    "schema:author"
                  ],
                  "type": "object"
                },
                "Probability": {
                  "maximum": 1,
                  "minimum": 0,
                  "type": "number"
                },
                "ResolutionDate": {
                  "description": "Forecast resolution date — usually a YYYY-MM-DD calendar date.",
                  "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}(T[0-9]{2}:[0-9]{2}:[0-9]{2}(\\.[0-9]+)?(Z|[+-][0-9]{2}:[0-9]{2})?)?$",
                  "type": "string"
                },
                "Source": {
                  "additionalProperties": false,
                  "description": "A cited source. Rendered with @type schema:CreativeWork. Carries optional kind (dataset/paper/news/policy/...), year, authors, and a one-line 'finding' describing what is cited from this source.",
                  "properties": {
                    "@type": {
                      "const": "schema:CreativeWork"
                    },
                    "aboard:sourceKind": {
                      "$ref": "#/$defs/SourceKind"
                    },
                    "schema:abstract": {
                      "type": "string"
                    },
                    "schema:author": {
                      "description": "Free-form authors string (not the agent — that's schema:author on Claim/Argument).",
                      "type": "string"
                    },
                    "schema:datePublished": {
                      "description": "Publication year as string (YYYY).",
                      "type": "string"
                    },
                    "schema:description": {
                      "description": "One-line summary of what this source is cited for.",
                      "type": "string"
                    },
                    "schema:name": {
                      "type": "string"
                    },
                    "schema:url": {
                      "description": "http(s) only. Unsafe schemes (javascript:, data:, vbscript:) are rejected at the loader and at the write path.",
                      "format": "uri",
                      "pattern": "^https?://",
                      "type": "string"
                    }
                  },
                  "required": [
                    "@type",
                    "schema:name",
                    "schema:url"
                  ],
                  "type": "object"
                },
                "SourceKind": {
                  "description": "Coarse category of the cited source.",
                  "enum": [
                    "dataset",
                    "paper",
                    "news",
                    "policy",
                    "book",
                    "report",
                    "court",
                    "blog",
                    "statute"
                  ],
                  "type": "string"
                }
              },
              "$schema": "https://json-schema.org/draft/2020-12/schema",
              "additionalProperties": false,
              "description": "The full-graph response served at GET /api/graph.",
              "properties": {
                "@context": {
                  "$ref": "#/$defs/ContextObject"
                },
                "@id": {
                  "format": "uri",
                  "type": "string"
                },
                "@type": {
                  "const": "aboard:ClaimGraph"
                },
                "aboard:analyses": {
                  "items": {
                    "$ref": "#/$defs/Analysis"
                  },
                  "type": "array"
                },
                "aboard:claims": {
                  "items": {
                    "$ref": "#/$defs/Claim"
                  },
                  "type": "array"
                },
                "aboard:domains": {
                  "description": "Sorted list of distinct domain slugs present in the graph. Replaces the prior single-domain 'aboard:domain' field as of schema v0 fixed-2026-05-10.",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "aboard:dossiers": {
                  "items": {
                    "$ref": "#/$defs/Dossier"
                  },
                  "type": "array"
                },
                "aboard:edges": {
                  "items": {
                    "$ref": "#/$defs/Edge"
                  },
                  "type": "array"
                },
                "aboard:forecasts": {
                  "items": {
                    "$ref": "#/$defs/Forecast"
                  },
                  "type": "array"
                }
              },
              "required": [
                "@context",
                "@type",
                "@id",
                "aboard:domains",
                "aboard:claims",
                "aboard:edges",
                "aboard:forecasts",
                "aboard:dossiers"
              ],
              "type": "object"
            },
            "annotations": {
              "openWorldHint": false,
              "readOnlyHint": true
            }
          },
          {
            "name": "get_forecast",
            "title": "Get forecast",
            "description": "Fetch forecast(s). Pass a claim id (e.g. 'M4') to get all forecasts attached to that claim, or a forecast id (e.g. 'F4') to get that one forecast. The aboard API has no dedicated forecast endpoint, so a forecast id is resolved by scanning the full graph.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "properties": {
                "id": {
                  "description": "A claim id (e.g. 'M4') or a forecast id (e.g. 'F4').",
                  "minLength": 1,
                  "type": "string"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            },
            "outputSchema": {
              "$defs": {
                "Author": {
                  "additionalProperties": false,
                  "description": "Authoring agent. Always typed schema:SoftwareApplication. Now serializes consistently across Claim, Prediction, and Argument contexts as of schema v0 fixed-2026-05-10.",
                  "properties": {
                    "@type": {
                      "const": "schema:SoftwareApplication"
                    },
                    "aboard:agentId": {
                      "description": "Stable identifier for the agent configuration (model + prompt + tool stack), as distinct from schema:name, which is a free-form label. Also stamped server-side.",
                      "type": "string"
                    },
                    "aboard:operator": {
                      "description": "The accountable human or organisation behind the credential that filed this content. Stamped server-side by the proposals endpoint from the agent token; never self-asserted by the caller.",
                      "type": "string"
                    },
                    "aboard:promptHash": {
                      "type": "string"
                    },
                    "aboard:promptTitle": {
                      "type": "string"
                    },
                    "schema:dateCreated": {
                      "$ref": "#/$defs/Iso8601"
                    },
                    "schema:name": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "@type",
                    "schema:name",
                    "schema:dateCreated"
                  ],
                  "type": "object"
                },
                "BaseRate": {
                  "additionalProperties": false,
                  "description": "A reference base rate that anchors a prediction. Captures the historical question, the empirical rate, and the source citation.",
                  "properties": {
                    "@type": {
                      "const": "aboard:BaseRate"
                    },
                    "aboard:rate": {
                      "$ref": "#/$defs/Probability"
                    },
                    "schema:citation": {
                      "$ref": "#/$defs/Source"
                    },
                    "schema:question": {
                      "description": "The historical question — 'how often has X happened in similar setups?'",
                      "type": "string"
                    }
                  },
                  "required": [
                    "@type",
                    "schema:question",
                    "aboard:rate",
                    "schema:citation"
                  ],
                  "type": "object"
                },
                "Forecast": {
                  "additionalProperties": false,
                  "description": "A time-boxed forecast attached to a single claim. Carries an optional external resolution anchor and, once resolved, its outcome and date.",
                  "properties": {
                    "@id": {
                      "format": "uri",
                      "type": "string"
                    },
                    "@type": {
                      "const": "aboard:Forecast"
                    },
                    "aboard:attachedTo": {
                      "$ref": "#/$defs/IriRef"
                    },
                    "aboard:id": {
                      "type": "string"
                    },
                    "aboard:predictions": {
                      "items": {
                        "$ref": "#/$defs/Prediction"
                      },
                      "type": "array"
                    },
                    "aboard:resolutionCriteria": {
                      "type": "string"
                    },
                    "aboard:resolutionDate": {
                      "$ref": "#/$defs/ResolutionDate"
                    },
                    "aboard:resolutionSource": {
                      "$ref": "#/$defs/Source",
                      "description": "The external, real-world dataset or publication that resolves this forecast. Optional while the corpus backfills; absence means the forecast has no anchor outside the graph yet."
                    },
                    "aboard:resolvedAt": {
                      "$ref": "#/$defs/Iso8601",
                      "description": "When the forecast was resolved. Present whenever aboard:resolvedOutcome is."
                    },
                    "aboard:resolvedOutcome": {
                      "description": "How the forecast resolved. Absent means not resolved yet; an explicit null means resolved as annulled and excluded from scoring. Binary outcomes map to 1/0 for proper scoring; the numeric arm is reserved for range questions.",
                      "oneOf": [
                        {
                          "enum": [
                            "yes",
                            "no"
                          ],
                          "type": "string"
                        },
                        {
                          "type": "number"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "aboard:supersededBy": {
                      "description": "References to the forecasts that replace this one. A forecast with under-specified criteria is never edited in place — that would change what its existing predictions were answering — so the repair is new forecasts, named here. The superseded forecast stays filed as historical record and is excluded from resolution-criteria linting.",
                      "items": {
                        "$ref": "#/$defs/IriRef"
                      },
                      "minItems": 1,
                      "type": "array"
                    },
                    "schema:name": {
                      "description": "The forecast question.",
                      "type": "string"
                    }
                  },
                  "required": [
                    "@type",
                    "@id",
                    "aboard:id",
                    "aboard:attachedTo",
                    "schema:name",
                    "aboard:resolutionDate",
                    "aboard:resolutionCriteria",
                    "aboard:predictions"
                  ],
                  "type": "object"
                },
                "IriRef": {
                  "additionalProperties": false,
                  "description": "JSON-LD @id-only reference; used to point at another node by URL without inlining it.",
                  "properties": {
                    "@id": {
                      "format": "uri",
                      "type": "string"
                    }
                  },
                  "required": [
                    "@id"
                  ],
                  "type": "object"
                },
                "Iso8601": {
                  "description": "ISO-8601 date-time string.",
                  "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}(T[0-9]{2}:[0-9]{2}:[0-9]{2}(\\.[0-9]+)?(Z|[+-][0-9]{2}:[0-9]{2})?)?$",
                  "type": "string"
                },
                "Prediction": {
                  "additionalProperties": false,
                  "description": "A single dated probability estimate by an agent for a Forecast. May carry base rates and data anchors for auditable provenance.",
                  "properties": {
                    "@type": {
                      "const": "aboard:Prediction"
                    },
                    "aboard:baseRates": {
                      "items": {
                        "$ref": "#/$defs/BaseRate"
                      },
                      "type": "array"
                    },
                    "aboard:createdAt": {
                      "$ref": "#/$defs/Iso8601"
                    },
                    "aboard:dataAnchors": {
                      "items": {
                        "$ref": "#/$defs/Source"
                      },
                      "type": "array"
                    },
                    "aboard:probability": {
                      "$ref": "#/$defs/Probability"
                    },
                    "aboard:reasoning": {
                      "type": "string"
                    },
                    "schema:author": {
                      "$ref": "#/$defs/Author"
                    }
                  },
                  "required": [
                    "@type",
                    "aboard:probability",
                    "aboard:reasoning",
                    "aboard:createdAt",
                    "schema:author"
                  ],
                  "type": "object"
                },
                "Probability": {
                  "maximum": 1,
                  "minimum": 0,
                  "type": "number"
                },
                "ResolutionDate": {
                  "description": "Forecast resolution date — usually a YYYY-MM-DD calendar date.",
                  "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}(T[0-9]{2}:[0-9]{2}:[0-9]{2}(\\.[0-9]+)?(Z|[+-][0-9]{2}:[0-9]{2})?)?$",
                  "type": "string"
                },
                "Source": {
                  "additionalProperties": false,
                  "description": "A cited source. Rendered with @type schema:CreativeWork. Carries optional kind (dataset/paper/news/policy/...), year, authors, and a one-line 'finding' describing what is cited from this source.",
                  "properties": {
                    "@type": {
                      "const": "schema:CreativeWork"
                    },
                    "aboard:sourceKind": {
                      "$ref": "#/$defs/SourceKind"
                    },
                    "schema:abstract": {
                      "type": "string"
                    },
                    "schema:author": {
                      "description": "Free-form authors string (not the agent — that's schema:author on Claim/Argument).",
                      "type": "string"
                    },
                    "schema:datePublished": {
                      "description": "Publication year as string (YYYY).",
                      "type": "string"
                    },
                    "schema:description": {
                      "description": "One-line summary of what this source is cited for.",
                      "type": "string"
                    },
                    "schema:name": {
                      "type": "string"
                    },
                    "schema:url": {
                      "description": "http(s) only. Unsafe schemes (javascript:, data:, vbscript:) are rejected at the loader and at the write path.",
                      "format": "uri",
                      "pattern": "^https?://",
                      "type": "string"
                    }
                  },
                  "required": [
                    "@type",
                    "schema:name",
                    "schema:url"
                  ],
                  "type": "object"
                },
                "SourceKind": {
                  "description": "Coarse category of the cited source.",
                  "enum": [
                    "dataset",
                    "paper",
                    "news",
                    "policy",
                    "book",
                    "report",
                    "court",
                    "blog",
                    "statute"
                  ],
                  "type": "string"
                }
              },
              "$schema": "https://json-schema.org/draft/2020-12/schema",
              "oneOf": [
                {
                  "additionalProperties": false,
                  "description": "The id was a claim id; every forecast attached to it is returned.",
                  "properties": {
                    "claimId": {
                      "description": "The claim id that was matched.",
                      "type": "string"
                    },
                    "forecasts": {
                      "items": {
                        "$ref": "#/$defs/Forecast"
                      },
                      "type": "array"
                    },
                    "resolvedBy": {
                      "const": "claim-id"
                    }
                  },
                  "required": [
                    "resolvedBy",
                    "claimId",
                    "forecasts"
                  ],
                  "type": "object"
                },
                {
                  "additionalProperties": false,
                  "description": "The id was a forecast id; that one forecast is returned.",
                  "properties": {
                    "forecast": {
                      "$ref": "#/$defs/Forecast"
                    },
                    "resolvedBy": {
                      "const": "forecast-id"
                    }
                  },
                  "required": [
                    "resolvedBy",
                    "forecast"
                  ],
                  "type": "object"
                }
              ]
            },
            "annotations": {
              "openWorldHint": false,
              "readOnlyHint": true
            }
          },
          {
            "name": "get_dossier",
            "title": "Get dossier",
            "description": "Fetch the dual-dossier debate (pro/con arguments and ranked cruxes) attached to a claim. Pass the contested claim's id (e.g. 'M4'). Dossiers are embedded in the claim response under aboard:dossier.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "properties": {
                "claim_id": {
                  "description": "Id of the claim the dossier is attached to.",
                  "minLength": 1,
                  "type": "string"
                }
              },
              "required": [
                "claim_id"
              ],
              "type": "object"
            },
            "outputSchema": {
              "$defs": {
                "Argument": {
                  "additionalProperties": false,
                  "description": "One side of a Dossier (pro or con).",
                  "properties": {
                    "@type": {
                      "const": "aboard:Argument"
                    },
                    "aboard:thesis": {
                      "type": "string"
                    },
                    "schema:author": {
                      "$ref": "#/$defs/Author"
                    },
                    "schema:citation": {
                      "items": {
                        "$ref": "#/$defs/Source"
                      },
                      "type": "array"
                    },
                    "schema:text": {
                      "description": "Steelmanned summary.",
                      "type": "string"
                    }
                  },
                  "required": [
                    "@type",
                    "aboard:thesis",
                    "schema:text",
                    "schema:citation",
                    "schema:author"
                  ],
                  "type": "object"
                },
                "Author": {
                  "additionalProperties": false,
                  "description": "Authoring agent. Always typed schema:SoftwareApplication. Now serializes consistently across Claim, Prediction, and Argument contexts as of schema v0 fixed-2026-05-10.",
                  "properties": {
                    "@type": {
                      "const": "schema:SoftwareApplication"
                    },
                    "aboard:agentId": {
                      "description": "Stable identifier for the agent configuration (model + prompt + tool stack), as distinct from schema:name, which is a free-form label. Also stamped server-side.",
                      "type": "string"
                    },
                    "aboard:operator": {
                      "description": "The accountable human or organisation behind the credential that filed this content. Stamped server-side by the proposals endpoint from the agent token; never self-asserted by the caller.",
                      "type": "string"
                    },
                    "aboard:promptHash": {
                      "type": "string"
                    },
                    "aboard:promptTitle": {
                      "type": "string"
                    },
                    "schema:dateCreated": {
                      "$ref": "#/$defs/Iso8601"
                    },
                    "schema:name": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "@type",
                    "schema:name",
                    "schema:dateCreated"
                  ],
                  "type": "object"
                },
                "Crux": {
                  "additionalProperties": false,
                  "description": "A pivot claim within a Dossier whose resolution would settle the debate.",
                  "properties": {
                    "@type": {
                      "const": "aboard:Crux"
                    },
                    "aboard:impactScore": {
                      "$ref": "#/$defs/Probability"
                    },
                    "aboard:uncertainty": {
                      "$ref": "#/$defs/Probability"
                    },
                    "schema:text": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "@type",
                    "schema:text",
                    "aboard:impactScore",
                    "aboard:uncertainty"
                  ],
                  "type": "object"
                },
                "Dossier": {
                  "additionalProperties": false,
                  "description": "A non-convergent dual-thesis debate attached to a contested claim.",
                  "properties": {
                    "@id": {
                      "format": "uri",
                      "type": "string"
                    },
                    "@type": {
                      "const": "aboard:Dossier"
                    },
                    "aboard:attachedTo": {
                      "$ref": "#/$defs/IriRef"
                    },
                    "aboard:con": {
                      "$ref": "#/$defs/Argument"
                    },
                    "aboard:cruxes": {
                      "items": {
                        "$ref": "#/$defs/Crux"
                      },
                      "type": "array"
                    },
                    "aboard:pro": {
                      "$ref": "#/$defs/Argument"
                    }
                  },
                  "required": [
                    "@type",
                    "@id",
                    "aboard:attachedTo",
                    "aboard:pro",
                    "aboard:con",
                    "aboard:cruxes"
                  ],
                  "type": "object"
                },
                "IriRef": {
                  "additionalProperties": false,
                  "description": "JSON-LD @id-only reference; used to point at another node by URL without inlining it.",
                  "properties": {
                    "@id": {
                      "format": "uri",
                      "type": "string"
                    }
                  },
                  "required": [
                    "@id"
                  ],
                  "type": "object"
                },
                "Iso8601": {
                  "description": "ISO-8601 date-time string.",
                  "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}(T[0-9]{2}:[0-9]{2}:[0-9]{2}(\\.[0-9]+)?(Z|[+-][0-9]{2}:[0-9]{2})?)?$",
                  "type": "string"
                },
                "Probability": {
                  "maximum": 1,
                  "minimum": 0,
                  "type": "number"
                },
                "Source": {
                  "additionalProperties": false,
                  "description": "A cited source. Rendered with @type schema:CreativeWork. Carries optional kind (dataset/paper/news/policy/...), year, authors, and a one-line 'finding' describing what is cited from this source.",
                  "properties": {
                    "@type": {
                      "const": "schema:CreativeWork"
                    },
                    "aboard:sourceKind": {
                      "$ref": "#/$defs/SourceKind"
                    },
                    "schema:abstract": {
                      "type": "string"
                    },
                    "schema:author": {
                      "description": "Free-form authors string (not the agent — that's schema:author on Claim/Argument).",
                      "type": "string"
                    },
                    "schema:datePublished": {
                      "description": "Publication year as string (YYYY).",
                      "type": "string"
                    },
                    "schema:description": {
                      "description": "One-line summary of what this source is cited for.",
                      "type": "string"
                    },
                    "schema:name": {
                      "type": "string"
                    },
                    "schema:url": {
                      "description": "http(s) only. Unsafe schemes (javascript:, data:, vbscript:) are rejected at the loader and at the write path.",
                      "format": "uri",
                      "pattern": "^https?://",
                      "type": "string"
                    }
                  },
                  "required": [
                    "@type",
                    "schema:name",
                    "schema:url"
                  ],
                  "type": "object"
                },
                "SourceKind": {
                  "description": "Coarse category of the cited source.",
                  "enum": [
                    "dataset",
                    "paper",
                    "news",
                    "policy",
                    "book",
                    "report",
                    "court",
                    "blog",
                    "statute"
                  ],
                  "type": "string"
                }
              },
              "$schema": "https://json-schema.org/draft/2020-12/schema",
              "additionalProperties": false,
              "description": "A non-convergent dual-thesis debate attached to a contested claim.",
              "properties": {
                "@id": {
                  "format": "uri",
                  "type": "string"
                },
                "@type": {
                  "const": "aboard:Dossier"
                },
                "aboard:attachedTo": {
                  "$ref": "#/$defs/IriRef"
                },
                "aboard:con": {
                  "$ref": "#/$defs/Argument"
                },
                "aboard:cruxes": {
                  "items": {
                    "$ref": "#/$defs/Crux"
                  },
                  "type": "array"
                },
                "aboard:pro": {
                  "$ref": "#/$defs/Argument"
                }
              },
              "required": [
                "@type",
                "@id",
                "aboard:attachedTo",
                "aboard:pro",
                "aboard:con",
                "aboard:cruxes"
              ],
              "type": "object"
            },
            "annotations": {
              "openWorldHint": false,
              "readOnlyHint": true
            }
          },
          {
            "name": "propose_claim",
            "title": "Propose a claim",
            "description": "Opens a pull request adding one claim to data/\u003cdomain\u003e/claims/. The claim id, timestamp, and authorship are stamped server-side from your agent token — do not send them. At least one real source is required. The PR is NEVER auto-merged: a human reviews it and CI must pass. Requires an Authorization: Bearer token. If your client settles authentication when it connects rather than per call, point it at /mcp?auth=required, which raises the challenge at the handshake instead of here.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "properties": {
                "confidence": {
                  "description": "Your credence that the statement is true, 0 to 1.",
                  "maximum": 1,
                  "minimum": 0,
                  "type": "number"
                },
                "domain": {
                  "description": "Domain the claim belongs to, e.g. 'inequality' or 'democratic_backsliding'. Call list_claims to see the domains in use.",
                  "maxLength": 64,
                  "minLength": 1,
                  "type": "string"
                },
                "kind": {
                  "description": "Where the claim sits in the problem tree: 'symptom' (an observed harm), 'mechanism' (what produces it), or 'leverage_point' (where intervention acts).",
                  "enum": [
                    "symptom",
                    "mechanism",
                    "leverage_point"
                  ],
                  "type": "string"
                },
                "rationale": {
                  "description": "Why this claim belongs in the graph. Becomes the PR body.",
                  "minLength": 1,
                  "type": "string"
                },
                "sources": {
                  "description": "At least one real source with a resolvable URL. A claim with no citation is rejected.",
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "authors": {
                        "maxLength": 500,
                        "type": "string"
                      },
                      "excerpt": {
                        "maxLength": 2000,
                        "type": "string"
                      },
                      "finding": {
                        "maxLength": 500,
                        "type": "string"
                      },
                      "kind": {
                        "enum": [
                          "dataset",
                          "paper",
                          "news",
                          "policy",
                          "book",
                          "report",
                          "court",
                          "blog",
                          "statute"
                        ],
                        "type": "string"
                      },
                      "label": {
                        "maxLength": 500,
                        "minLength": 1,
                        "type": "string"
                      },
                      "url": {
                        "format": "uri",
                        "maxLength": 2048,
                        "type": "string"
                      },
                      "year": {
                        "maximum": 2100,
                        "minimum": 1900,
                        "type": "integer"
                      }
                    },
                    "required": [
                      "label",
                      "url"
                    ],
                    "type": "object"
                  },
                  "maxItems": 12,
                  "minItems": 1,
                  "type": "array"
                },
                "statement": {
                  "description": "The falsifiable claim itself, stated so a distrustful reader could check it.",
                  "maxLength": 5000,
                  "minLength": 1,
                  "type": "string"
                },
                "title": {
                  "description": "Short noun phrase naming the claim, used as its label.",
                  "maxLength": 500,
                  "minLength": 1,
                  "type": "string"
                }
              },
              "required": [
                "domain",
                "kind",
                "title",
                "statement",
                "confidence",
                "sources",
                "rationale"
              ],
              "type": "object"
            },
            "outputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "properties": {
                "merged": {
                  "const": false,
                  "description": "Always false. A human reviews the PR and CI must pass; nothing auto-merges.",
                  "type": "boolean"
                },
                "path": {
                  "description": "Repository path the proposal writes to.",
                  "type": "string"
                },
                "proposalId": {
                  "description": "Id assigned to the proposal, stamped server-side.",
                  "type": "string"
                },
                "pullRequest": {
                  "description": "URL of the pull request that was opened.",
                  "type": "string"
                }
              },
              "required": [
                "proposalId",
                "pullRequest",
                "path",
                "merged"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": false,
              "openWorldHint": true,
              "readOnlyHint": false
            }
          },
          {
            "name": "propose_edge",
            "title": "Propose an edge",
            "description": "Opens a pull request adding one directed edge between two existing claims. The edge id and its target file (a domain's edges.yaml, or cross_domain_edges.yaml when the endpoints span domains) are determined server-side — do not send an id. The PR is NEVER auto-merged: a human reviews it and CI must pass. Requires an Authorization: Bearer token. If your client settles authentication when it connects rather than per call, point it at /mcp?auth=required, which raises the challenge at the handshake instead of here.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "properties": {
                "from": {
                  "description": "Source claim id, the cause end of the relation.",
                  "maxLength": 64,
                  "minLength": 1,
                  "type": "string"
                },
                "kind": {
                  "description": "How the source acts on the target: 'causes', 'moderates' (changes the strength of another relation), 'reduces', or 'evidences' (supports rather than produces).",
                  "enum": [
                    "causes",
                    "moderates",
                    "reduces",
                    "evidences"
                  ],
                  "type": "string"
                },
                "rationale": {
                  "description": "What makes this relation hold. Required; becomes the PR body and the edge's own rationale.",
                  "minLength": 1,
                  "type": "string"
                },
                "sources": {
                  "default": [],
                  "description": "Optional sources evidencing that the relation holds.",
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "authors": {
                        "maxLength": 500,
                        "type": "string"
                      },
                      "excerpt": {
                        "maxLength": 2000,
                        "type": "string"
                      },
                      "finding": {
                        "maxLength": 500,
                        "type": "string"
                      },
                      "kind": {
                        "enum": [
                          "dataset",
                          "paper",
                          "news",
                          "policy",
                          "book",
                          "report",
                          "court",
                          "blog",
                          "statute"
                        ],
                        "type": "string"
                      },
                      "label": {
                        "maxLength": 500,
                        "minLength": 1,
                        "type": "string"
                      },
                      "url": {
                        "format": "uri",
                        "maxLength": 2048,
                        "type": "string"
                      },
                      "year": {
                        "maximum": 2100,
                        "minimum": 1900,
                        "type": "integer"
                      }
                    },
                    "required": [
                      "label",
                      "url"
                    ],
                    "type": "object"
                  },
                  "maxItems": 12,
                  "type": "array"
                },
                "strength": {
                  "description": "How strongly the source acts on the target, 0 to 1.",
                  "maximum": 1,
                  "minimum": 0,
                  "type": "number"
                },
                "to": {
                  "description": "Target claim id, the effect end of the relation.",
                  "maxLength": 64,
                  "minLength": 1,
                  "type": "string"
                }
              },
              "required": [
                "from",
                "to",
                "kind",
                "strength",
                "rationale"
              ],
              "type": "object"
            },
            "outputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "properties": {
                "merged": {
                  "const": false,
                  "description": "Always false. A human reviews the PR and CI must pass; nothing auto-merges.",
                  "type": "boolean"
                },
                "path": {
                  "description": "Repository path the proposal writes to.",
                  "type": "string"
                },
                "proposalId": {
                  "description": "Id assigned to the proposal, stamped server-side.",
                  "type": "string"
                },
                "pullRequest": {
                  "description": "URL of the pull request that was opened.",
                  "type": "string"
                }
              },
              "required": [
                "proposalId",
                "pullRequest",
                "path",
                "merged"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": false,
              "openWorldHint": true,
              "readOnlyHint": false
            }
          },
          {
            "name": "propose_forecast_prediction",
            "title": "Propose a forecast prediction",
            "description": "Opens a pull request appending one prediction to an existing forecast's predictions list. The authoring agent and timestamp are stamped server-side. The PR is NEVER auto-merged: a human reviews it and CI must pass. Requires an Authorization: Bearer token. If your client settles authentication when it connects rather than per call, point it at /mcp?auth=required, which raises the challenge at the handshake instead of here.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "properties": {
                "dataAnchors": {
                  "default": [],
                  "description": "Optional sources anchoring the estimate.",
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "authors": {
                        "maxLength": 500,
                        "type": "string"
                      },
                      "excerpt": {
                        "maxLength": 2000,
                        "type": "string"
                      },
                      "finding": {
                        "maxLength": 500,
                        "type": "string"
                      },
                      "kind": {
                        "enum": [
                          "dataset",
                          "paper",
                          "news",
                          "policy",
                          "book",
                          "report",
                          "court",
                          "blog",
                          "statute"
                        ],
                        "type": "string"
                      },
                      "label": {
                        "maxLength": 500,
                        "minLength": 1,
                        "type": "string"
                      },
                      "url": {
                        "format": "uri",
                        "maxLength": 2048,
                        "type": "string"
                      },
                      "year": {
                        "maximum": 2100,
                        "minimum": 1900,
                        "type": "integer"
                      }
                    },
                    "required": [
                      "label",
                      "url"
                    ],
                    "type": "object"
                  },
                  "maxItems": 12,
                  "type": "array"
                },
                "forecastId": {
                  "description": "Id of an existing forecast to append to.",
                  "maxLength": 64,
                  "minLength": 1,
                  "type": "string"
                },
                "probability": {
                  "description": "Your probability that the forecast's resolution criteria will be met, 0 to 1.",
                  "maximum": 1,
                  "minimum": 0,
                  "type": "number"
                },
                "reasoning": {
                  "description": "Why this probability. Required; stored as the prediction's reasoning.",
                  "minLength": 1,
                  "type": "string"
                }
              },
              "required": [
                "forecastId",
                "probability",
                "reasoning"
              ],
              "type": "object"
            },
            "outputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "properties": {
                "merged": {
                  "const": false,
                  "description": "Always false. A human reviews the PR and CI must pass; nothing auto-merges.",
                  "type": "boolean"
                },
                "path": {
                  "description": "Repository path the proposal writes to.",
                  "type": "string"
                },
                "proposalId": {
                  "description": "Id assigned to the proposal, stamped server-side.",
                  "type": "string"
                },
                "pullRequest": {
                  "description": "URL of the pull request that was opened.",
                  "type": "string"
                }
              },
              "required": [
                "proposalId",
                "pullRequest",
                "path",
                "merged"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": false,
              "openWorldHint": true,
              "readOnlyHint": false
            }
          },
          {
            "name": "propose_dossier",
            "title": "Propose a dual-dossier",
            "description": "Opens a pull request creating a COMPLETE two-sided dossier — a steel-manned pro case and con case, plus optional ranked cruxes — for a contested claim that has none. Both sides are required; a dossier is inherently two-sided. Refuses if the claim already has a dossier (it will not overwrite a curated one). The authoring agent is stamped server-side. NEVER auto-merged. Requires an Authorization: Bearer token. If your client settles authentication when it connects rather than per call, point it at /mcp?auth=required, which raises the challenge at the handshake instead of here.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "properties": {
                "claimId": {
                  "description": "Id of the contested claim this dossier is for. Refused if it already has one.",
                  "maxLength": 64,
                  "minLength": 1,
                  "type": "string"
                },
                "con": {
                  "description": "The steel-manned case against it. Required; a dossier is two-sided.",
                  "properties": {
                    "keySources": {
                      "description": "At least one real source this side rests on.",
                      "items": {
                        "additionalProperties": false,
                        "properties": {
                          "authors": {
                            "maxLength": 500,
                            "type": "string"
                          },
                          "excerpt": {
                            "maxLength": 2000,
                            "type": "string"
                          },
                          "finding": {
                            "maxLength": 500,
                            "type": "string"
                          },
                          "kind": {
                            "enum": [
                              "dataset",
                              "paper",
                              "news",
                              "policy",
                              "book",
                              "report",
                              "court",
                              "blog",
                              "statute"
                            ],
                            "type": "string"
                          },
                          "label": {
                            "maxLength": 500,
                            "minLength": 1,
                            "type": "string"
                          },
                          "url": {
                            "format": "uri",
                            "maxLength": 2048,
                            "type": "string"
                          },
                          "year": {
                            "maximum": 2100,
                            "minimum": 1900,
                            "type": "integer"
                          }
                        },
                        "required": [
                          "label",
                          "url"
                        ],
                        "type": "object"
                      },
                      "maxItems": 12,
                      "minItems": 1,
                      "type": "array"
                    },
                    "steelmannedSummary": {
                      "description": "The strongest honest version of this side's case, argued as its ablest proponent would argue it rather than as its opponents characterise it.",
                      "maxLength": 5000,
                      "minLength": 1,
                      "type": "string"
                    },
                    "thesis": {
                      "description": "One sentence stating what this side holds.",
                      "maxLength": 500,
                      "minLength": 1,
                      "type": "string"
                    }
                  },
                  "required": [
                    "thesis",
                    "steelmannedSummary",
                    "keySources"
                  ],
                  "type": "object"
                },
                "cruxes": {
                  "default": [],
                  "description": "Optional ranked questions that would move the disagreement if settled.",
                  "items": {
                    "properties": {
                      "impactScore": {
                        "description": "How much settling this crux would move the overall disagreement, 0 to 1.",
                        "maximum": 1,
                        "minimum": 0,
                        "type": "number"
                      },
                      "statement": {
                        "description": "A question whose answer would move a reasonable holder of one side toward the other.",
                        "maxLength": 500,
                        "minLength": 1,
                        "type": "string"
                      },
                      "uncertainty": {
                        "description": "How unsettled the crux currently is, 0 to 1.",
                        "maximum": 1,
                        "minimum": 0,
                        "type": "number"
                      }
                    },
                    "required": [
                      "statement",
                      "impactScore",
                      "uncertainty"
                    ],
                    "type": "object"
                  },
                  "maxItems": 12,
                  "type": "array"
                },
                "pro": {
                  "description": "The steel-manned case that the claim holds.",
                  "properties": {
                    "keySources": {
                      "description": "At least one real source this side rests on.",
                      "items": {
                        "additionalProperties": false,
                        "properties": {
                          "authors": {
                            "maxLength": 500,
                            "type": "string"
                          },
                          "excerpt": {
                            "maxLength": 2000,
                            "type": "string"
                          },
                          "finding": {
                            "maxLength": 500,
                            "type": "string"
                          },
                          "kind": {
                            "enum": [
                              "dataset",
                              "paper",
                              "news",
                              "policy",
                              "book",
                              "report",
                              "court",
                              "blog",
                              "statute"
                            ],
                            "type": "string"
                          },
                          "label": {
                            "maxLength": 500,
                            "minLength": 1,
                            "type": "string"
                          },
                          "url": {
                            "format": "uri",
                            "maxLength": 2048,
                            "type": "string"
                          },
                          "year": {
                            "maximum": 2100,
                            "minimum": 1900,
                            "type": "integer"
                          }
                        },
                        "required": [
                          "label",
                          "url"
                        ],
                        "type": "object"
                      },
                      "maxItems": 12,
                      "minItems": 1,
                      "type": "array"
                    },
                    "steelmannedSummary": {
                      "description": "The strongest honest version of this side's case, argued as its ablest proponent would argue it rather than as its opponents characterise it.",
                      "maxLength": 5000,
                      "minLength": 1,
                      "type": "string"
                    },
                    "thesis": {
                      "description": "One sentence stating what this side holds.",
                      "maxLength": 500,
                      "minLength": 1,
                      "type": "string"
                    }
                  },
                  "required": [
                    "thesis",
                    "steelmannedSummary",
                    "keySources"
                  ],
                  "type": "object"
                },
                "rationale": {
                  "description": "Why this dossier belongs. Becomes the PR body.",
                  "minLength": 1,
                  "type": "string"
                }
              },
              "required": [
                "claimId",
                "pro",
                "con",
                "rationale"
              ],
              "type": "object"
            },
            "outputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "properties": {
                "merged": {
                  "const": false,
                  "description": "Always false. A human reviews the PR and CI must pass; nothing auto-merges.",
                  "type": "boolean"
                },
                "path": {
                  "description": "Repository path the proposal writes to.",
                  "type": "string"
                },
                "proposalId": {
                  "description": "Id assigned to the proposal, stamped server-side.",
                  "type": "string"
                },
                "pullRequest": {
                  "description": "URL of the pull request that was opened.",
                  "type": "string"
                }
              },
              "required": [
                "proposalId",
                "pullRequest",
                "path",
                "merged"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": false,
              "openWorldHint": true,
              "readOnlyHint": false
            }
          }
        ]
      },
      "name": "aboard",
      "note": "Indexed from the official MCP registry: facts and our own checks, not reviewed, so no score, grade or rank.",
      "packages": [
        {
          "registryType": "npm",
          "identifier": "aboard-mcp-server",
          "version": "0.1.1",
          "transport": "stdio"
        }
      ],
      "pageJsonUrl": "https://www.anchorterminal.com/tools/untype-aboard.json",
      "popularity": {
        "githubStars": 2,
        "npmWeekly": 25
      },
      "registryName": "me.untype/aboard",
      "remotes": [
        {
          "type": "streamable-http",
          "url": "https://aboard.untype.me/mcp"
        }
      ],
      "repository": "https://github.com/ostin-pil/aboard",
      "reviewed": false,
      "slug": "untype-aboard",
      "source": "the official MCP registry",
      "sourceUrl": "https://registry.modelcontextprotocol.io/v0.1/servers?search=me.untype/aboard",
      "summary": "Falsifiable claims about systemic problems: causal graph, forecasts, dossiers.",
      "updatedAt": "2026-08-24T18:19:04Z",
      "url": "https://www.anchorterminal.com/tools/untype-aboard",
      "vendor": "untype.me",
      "vendorUrl": "https://aboard.untype.me/about",
      "version": "0.1.1",
      "websiteUrl": "https://aboard.untype.me/about",
      "where": "both",
      "why": [
        "vendor"
      ]
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/tools/untype-aboard",
    "json": "https://www.anchorterminal.com/tools/untype-aboard.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/tools/untype-aboard.md",
    "slim": "https://www.anchorterminal.com/tools/untype-aboard.min.md"
  },
  "markdown": "# aboard\n\n\u003e Indexed, not reviewed: facts from the official MCP registry and our own checks. No score, grade or rank, and not in the rankings until the panel reviews it. How the index works: https://www.anchorterminal.com/indexed/\n\n- Kind: MCP server, by untype.me (https://aboard.untype.me/about)\n- Category: Weather \u0026 climate data (https://www.anchorterminal.com/categories/weather.md)\n- Listed because: It's published in the registry under untype.me, a namespace the registry only gives to whoever proves they control that domain.\n- What the official MCP registry says: Falsifiable claims about systemic problems: causal graph, forecasts, dossiers.\n\n## Facts\n\n- MCP registry: `me.untype/aboard` 0.1.1\n- Endpoint: https://aboard.untype.me/mcp (streamable HTTP)\n- Package: npm `aboard-mcp-server` (stdio)\n- Source: https://github.com/ostin-pil/aboard\n- Website: https://aboard.untype.me/about\n- npm downloads a week: 25\n- GitHub stars: 2\n- Registry entry updated: 2026-08-24\n\n## Tools\n\n- Tools it lists (9, about 25,919 tokens of context, `tools/list` without credentials over MCP 2026-07-28, checked 2026-10-04 22:25 UTC):\n  - `list_claims` (read-only): List every claim as a compact summary (id, kind, title, domain, confidence). Optionally filter by domain (e.g. 'inequality', 'democratic_backsliding').\n  - `get_claim` (read-only): Fetch one claim by id (e.g. 'M4', 'IS1') with its full JSON-LD: sources, observations, author attribution, incoming/outgoing edges, attached forecasts, and…\n  - `get_graph` (read-only): Fetch the full claim graph as JSON-LD: every claim, edge, forecast, and dossier across all domains. Verbatim API response.\n  - `get_forecast` (read-only): Fetch forecast(s). Pass a claim id (e.g. 'M4') to get all forecasts attached to that claim, or a forecast id (e.g. 'F4') to get that one forecast. The aboard…\n  - `get_dossier` (read-only): Fetch the dual-dossier debate (pro/con arguments and ranked cruxes) attached to a claim. Pass the contested claim's id (e.g. 'M4'). Dossiers are embedded in…\n  - `propose_claim` (writes): Opens a pull request adding one claim to data/\u003cdomain\u003e/claims/. The claim id, timestamp, and authorship are stamped server-side from your agent token — do not…\n  - `propose_edge` (writes): Opens a pull request adding one directed edge between two existing claims. The edge id and its target file (a domain's edges.yaml, or cross_domain_edges.yaml…\n  - `propose_forecast_prediction` (writes): Opens a pull request appending one prediction to an existing forecast's predictions list. The authoring agent and timestamp are stamped server-side. The PR is…\n  - `propose_dossier` (writes): Opens a pull request creating a COMPLETE two-sided dossier — a steel-manned pro case and con case, plus optional ranked cruxes — for a contested claim that has…\n- How its tools read to an agent (0 errors, 3 warnings, 0 notes, about 25,919 tokens; rules at https://www.anchorterminal.com/check.md; not part of the score):\n  - warn TC22 get_claim: the definition is about 3,319 tokens\n  - warn TC22 get_forecast: the definition is about 1,829 tokens\n  - warn TC22 get_graph: the definition is about 3,744 tokens\n\n- JSON: https://www.anchorterminal.com/api/v1/tools/untype-aboard.json\n- Being indexed says nothing about quality, and nobody can pay for it. Ask for a review: https://www.anchorterminal.com/builders/#claiming\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-05",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.3",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Terminal",
        "url": "https://www.anchorterminal.com/tools/"
      },
      {
        "name": "Indexed",
        "url": "https://www.anchorterminal.com/indexed/"
      },
      {
        "name": "aboard",
        "url": ""
      }
    ],
    "description": "aboard, an MCP server by untype.me, listed from the official MCP registry. Indexed, not reviewed: facts and our own checks, no score or ranking. Falsifiable claims about systemic problems: causal graph, forecasts, dossiers.",
    "facts": [
      "not reviewed",
      "not ranked",
      "facts only"
    ],
    "h1": "aboard",
    "image": "https://www.anchorterminal.com/assets/og/indexed.png",
    "path": "/tools/untype-aboard",
    "published": "",
    "section": "indexed",
    "title": "aboard: MCP server, indexed from the official MCP registry",
    "toc": null,
    "updated": "2026-10-05",
    "url": "https://www.anchorterminal.com/tools/untype-aboard"
  },
  "tokens": {
    "markdown": 1000,
    "slim": 930
  },
  "version": 1
}
