{
  "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"
  },
  "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"
    ]
  }
}
