Servidor MCP

aboard

me.untype/aboard
Búsqueda e investigación Público y accesible MCP 2025-11-25

Qué hace este MCP

Maintains a structured graph of sourced claims, causal links, forecasts, and two-sided dossiers, with tools to query and propose additions.

get_claim
Get claim
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.
Solo lectura
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id'], 'properties': {'id': {'type': 'string', 'minLength': 1, 'description': "Claim id, e.g. 'M4' or 'IS1'."}}}
Esquema de salida
{'type': 'object', '$defs': {'Crux': {'type': 'object', 'required': ['@type', 'schema:text', 'aboard:impactScore', 'aboard:uncertainty'], 'properties': {'@type': {'const': 'aboard:Crux'}, 'schema:text': {'type': 'string'}, 'aboard:impactScore': {'$ref': '#/$defs/Probability'}, 'aboard:uncertainty': {'$ref': '#/$defs/Probability'}}, 'description': 'A pivot claim within a Dossier whose resolution would settle the debate.', 'additionalProperties': False}, 'Edge': {'type': 'object', 'required': ['@type', '@id', 'aboard:id', 'aboard:from', 'aboard:to', 'aboard:relation', 'aboard:strength', 'aboard:rationale'], 'properties': {'@id': {'type': 'string', 'format': 'uri'}, '@type': {'const': 'aboard:CausalEdge'}, 'aboard:id': {'type': 'string'}, 'aboard:to': {'$ref': '#/$defs/IriRef'}, 'aboard:from': {'$ref': '#/$defs/IriRef'}, 'aboard:relation': {'$ref': '#/$defs/EdgeKind'}, 'aboard:strength': {'$ref': '#/$defs/Probability'}, 'schema:citation': {'type': 'array', 'items': {'$ref': '#/$defs/Source'}}, 'aboard:rationale': {'type': 'string', 'description': 'Free-text explanation of the claimed relation. Required: relations are classified on stated reasoning, not on edge counts.'}}, 'description': 'A directed relation between two claims. Always carries a rationale; may carry citations supporting the claimed relation.', 'additionalProperties': False}, 'Author': {'type': 'object', 'required': ['@type', 'schema:name', 'schema:dateCreated'], 'properties': {'@type': {'const': 'schema:SoftwareApplication'}, 'schema:name': {'type': 'string'}, 'aboard:agentId': {'type': 'string', '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.'}, 'aboard:operator': {'type': 'string', '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.'}, 'aboard:promptHash': {'type': 'string'}, 'aboard:promptTitle': {'type': 'string'}, 'schema:dateCreated': {'$ref': '#/$defs/Iso8601'}}, 'description': 'Authoring agent. Always typed schema:SoftwareApplication. Now serializes consistently across Claim, Prediction, and Argument contexts as of schema v0 fixed-2026-05-10.', 'additionalProperties': False}, 'IriRef': {'type': 'object', 'required': ['@id'], 'properties': {'@id': {'type': 'string', 'format': 'uri'}}, 'description': 'JSON-LD @id-only reference; used to point at another node by URL without inlining it.', 'additionalProperties': False}, 'Source': {'type': 'object', 'required': ['@type', 'schema:name', 'schema:url'], 'properties': {'@type': {'const': 'schema:CreativeWork'}, 'schema:url': {'type': 'string', 'format': 'uri', 'pattern': '^https?://', 'description': 'http(s) only. Unsafe schemes (javascript:, data:, vbscript:) are rejected at the loader and at the write path.'}, 'schema:name': {'type': 'string'}, 'schema:author': {'type': 'string', 'description': "Free-form authors string (not the agent — that's schema:author on Claim/Argument)."}, 'schema:abstract': {'type': 'string'}, 'aboard:sourceKind': {'$ref': '#/$defs/SourceKind'}, 'schema:description': {'type': 'string', 'description': 'One-line summary of what this source is cited for.'}, 'schema:datePublished': {'type': 'string', 'description': 'Publication year as string (YYYY).'}}, '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.", 'additionalProperties': False}, 'Dossier': {'type': 'object', 'required': ['@type', '@id', 'aboard:attachedTo', 'aboard:pro', 'aboard:con', 'aboard:cruxes'], 'properties': {'@id': {'type': 'string', 'format': 'uri'}, '@type': {'const': 'aboard:Dossier'}, 'aboard:con': {'$ref': '#/$defs/Argument'}, 'aboard:pro': {'$ref': '#/$defs/Argument'}, 'aboard:cruxes': {'type': 'array', 'items': {'$ref': '#/$defs/Crux'}}, 'aboard:attachedTo': {'$ref': '#/$defs/IriRef'}}, 'description': 'A non-convergent dual-thesis debate attached to a contested claim.', 'additionalProperties': False}, 'Iso8601': {'type': '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})?)?$', 'description': 'ISO-8601 date-time string.'}, 'Argument': {'type': 'object', 'required': ['@type', 'aboard:thesis', 'schema:text', 'schema:citation', 'schema:author'], 'properties': {'@type': {'const': 'aboard:Argument'}, 'schema:text': {'type': 'string', 'description': 'Steelmanned summary.'}, 'aboard:thesis': {'type': 'string'}, 'schema:author': {'$ref': '#/$defs/Author'}, 'schema:citation': {'type': 'array', 'items': {'$ref': '#/$defs/Source'}}}, 'description': 'One side of a Dossier (pro or con).', 'additionalProperties': False}, 'BaseRate': {'type': 'object', 'required': ['@type', 'schema:question', 'aboard:rate', 'schema:citation'], 'properties': {'@type': {'const': 'aboard:BaseRate'}, 'aboard:rate': {'$ref': '#/$defs/Probability'}, 'schema:citation': {'$ref': '#/$defs/Source'}, 'schema:question': {'type': 'string', 'description': "The historical question — 'how often has X happened in similar setups?'"}}, 'description': 'A reference base rate that anchors a prediction. Captures the historical question, the empirical rate, and the source citation.', 'additionalProperties': False}, 'EdgeKind': {'enum': ['causes', 'moderates', 'reduces', 'evidences'], 'type': 'string', '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."}, 'Forecast': {'type': 'object', 'required': ['@type', '@id', 'aboard:id', 'aboard:attachedTo', 'schema:name', 'aboard:resolutionDate', 'aboard:resolutionCriteria', 'aboard:predictions'], 'properties': {'@id': {'type': 'string', 'format': 'uri'}, '@type': {'const': 'aboard:Forecast'}, 'aboard:id': {'type': 'string'}, 'schema:name': {'type': 'string', 'description': 'The forecast question.'}, 'aboard:attachedTo': {'$ref': '#/$defs/IriRef'}, 'aboard:resolvedAt': {'$ref': '#/$defs/Iso8601', 'description': 'When the forecast was resolved. Present whenever aboard:resolvedOutcome is.'}, 'aboard:predictions': {'type': 'array', 'items': {'$ref': '#/$defs/Prediction'}}, 'aboard:supersededBy': {'type': 'array', 'items': {'$ref': '#/$defs/IriRef'}, 'minItems': 1, '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.'}, 'aboard:resolutionDate': {'$ref': '#/$defs/ResolutionDate'}, 'aboard:resolvedOutcome': {'oneOf': [{'enum': ['yes', 'no'], 'type': 'string'}, {'type': 'number'}, {'type': 'null'}], '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.'}, '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:resolutionCriteria': {'type': 'string'}}, 'description': 'A time-boxed forecast attached to a single claim. Carries an optional external resolution anchor and, once resolved, its outcome and date.', 'additionalProperties': False}, 'ClaimKind': {'enum': ['symptom', 'mechanism', 'leverage_point'], 'type': 'string', 'description': 'Three categories. Symptoms are observed harms; mechanisms are causal pathways; leverage points are interventions.'}, 'DataPoint': {'type': 'object', 'required': ['@type', 'schema:measuredProperty', 'schema:value', 'schema:observationDate', 'schema:citation'], 'properties': {'@type': {'const': 'schema:Observation'}, 'schema:value': {'type': 'number'}, 'schema:citation': {'$ref': '#/$defs/Source'}, 'schema:unitText': {'type': 'string', 'description': "Optional unit: 'share', 'pct', 'index', 'count', etc."}, 'schema:description': {'type': 'string', 'description': 'Optional methodology note.'}, 'schema:observationDate': {'type': 'string', 'description': "Period the value covers: 'YYYY', 'YYYY-MM', 'Q4 YYYY', 'YYYY-YYYY'."}, 'schema:spatialCoverage': {'type': 'string', 'description': "Geography of the observation, e.g. 'US', 'OECD', 'global'."}, 'schema:measuredProperty': {'type': 'string', 'description': "The metric being measured, e.g. 'Top 1% income share, US'."}}, 'description': 'A quantitative observation that backs a claim. Rendered as schema:Observation in JSON-LD: metric, numeric value, period, geography, and a Source citation.', 'additionalProperties': False}, 'Prediction': {'type': 'object', 'required': ['@type', 'aboard:probability', 'aboard:reasoning', 'aboard:createdAt', 'schema:author'], 'properties': {'@type': {'const': 'aboard:Prediction'}, 'schema:author': {'$ref': '#/$defs/Author'}, 'aboard:baseRates': {'type': 'array', 'items': {'$ref': '#/$defs/BaseRate'}}, 'aboard:createdAt': {'$ref': '#/$defs/Iso8601'}, 'aboard:reasoning': {'type': 'string'}, 'aboard:dataAnchors': {'type': 'array', 'items': {'$ref': '#/$defs/Source'}}, 'aboard:probability': {'$ref': '#/$defs/Probability'}}, 'description': 'A single dated probability estimate by an agent for a Forecast. May carry base rates and data anchors for auditable provenance.', 'additionalProperties': False}, 'SourceKind': {'enum': ['dataset', 'paper', 'news', 'policy', 'book', 'report', 'court', 'blog', 'statute'], 'type': 'string', 'description': 'Coarse category of the cited source.'}, 'Probability': {'type': 'number', 'maximum': 1, 'minimum': 0}, 'ContextObject': {'type': 'object', 'required': ['schema', 'aboard'], 'properties': {'aboard': {'type': 'string', 'format': 'uri'}, 'schema': {'type': 'string', 'format': 'uri'}}, 'description': "JSON-LD @context object used by every aboard response. Maps the two short prefixes 'schema' and 'aboard' to their full vocabularies.", 'additionalProperties': False}, 'ResolutionDate': {'type': '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})?)?$', 'description': 'Forecast resolution date — usually a YYYY-MM-DD calendar date.'}, 'FullClaimResponse': {'type': 'object', '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'], 'properties': {'@id': {'type': 'string', 'format': 'uri'}, '@type': {'const': 'schema:Claim'}, '@context': {'$ref': '#/$defs/ContextObject'}, 'aboard:id': {'type': 'string'}, 'aboard:kind': {'$ref': '#/$defs/ClaimKind'}, 'schema:name': {'type': 'string'}, 'schema:text': {'type': 'string'}, 'aboard:domain': {'type': 'string'}, 'schema:author': {'$ref': '#/$defs/Author'}, 'aboard:dossier': {'$ref': '#/$defs/Dossier'}, 'aboard:analyses': {'type': 'array', 'items': {'$ref': '#/$defs/IriRef'}}, 'schema:citation': {'type': 'array', 'items': {'$ref': '#/$defs/Source'}}, 'aboard:createdAt': {'$ref': '#/$defs/Iso8601'}, 'aboard:forecasts': {'type': 'array', 'items': {'$ref': '#/$defs/Forecast'}}, 'aboard:confidence': {'$ref': '#/$defs/Probability'}, 'aboard:observations': {'type': 'array', 'items': {'$ref': '#/$defs/DataPoint'}}, 'aboard:incomingEdges': {'type': 'array', 'items': {'$ref': '#/$defs/Edge'}}, 'aboard:outgoingEdges': {'type': 'array', 'items': {'$ref': '#/$defs/Edge'}}}, 'description': 'The single-claim response served at GET /api/claims/{id}.', 'additionalProperties': False}}, '$schema': 'https://json-schema.org/draft/2020-12/schema', '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'], 'properties': {'@id': {'type': 'string', 'format': 'uri'}, '@type': {'const': 'schema:Claim'}, '@context': {'$ref': '#/$defs/ContextObject'}, 'aboard:id': {'type': 'string'}, 'aboard:kind': {'$ref': '#/$defs/ClaimKind'}, 'schema:name': {'type': 'string'}, 'schema:text': {'type': 'string'}, 'aboard:domain': {'type': 'string'}, 'schema:author': {'$ref': '#/$defs/Author'}, 'aboard:dossier': {'$ref': '#/$defs/Dossier'}, 'aboard:analyses': {'type': 'array', 'items': {'$ref': '#/$defs/IriRef'}}, 'schema:citation': {'type': 'array', 'items': {'$ref': '#/$defs/Source'}}, 'aboard:createdAt': {'$ref': '#/$defs/Iso8601'}, 'aboard:forecasts': {'type': 'array', 'items': {'$ref': '#/$defs/Forecast'}}, 'aboard:confidence': {'$ref': '#/$defs/Probability'}, 'aboard:observations': {'type': 'array', 'items': {'$ref': '#/$defs/DataPoint'}}, 'aboard:incomingEdges': {'type': 'array', 'items': {'$ref': '#/$defs/Edge'}}, 'aboard:outgoingEdges': {'type': 'array', 'items': {'$ref': '#/$defs/Edge'}}}, 'description': 'The single-claim response served at GET /api/claims/{id}.', 'additionalProperties': False}
get_dossier
Get dossier
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.
Solo lectura
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['claim_id'], 'properties': {'claim_id': {'type': 'string', 'minLength': 1, 'description': 'Id of the claim the dossier is attached to.'}}}
Esquema de salida
{'type': 'object', '$defs': {'Crux': {'type': 'object', 'required': ['@type', 'schema:text', 'aboard:impactScore', 'aboard:uncertainty'], 'properties': {'@type': {'const': 'aboard:Crux'}, 'schema:text': {'type': 'string'}, 'aboard:impactScore': {'$ref': '#/$defs/Probability'}, 'aboard:uncertainty': {'$ref': '#/$defs/Probability'}}, 'description': 'A pivot claim within a Dossier whose resolution would settle the debate.', 'additionalProperties': False}, 'Author': {'type': 'object', 'required': ['@type', 'schema:name', 'schema:dateCreated'], 'properties': {'@type': {'const': 'schema:SoftwareApplication'}, 'schema:name': {'type': 'string'}, 'aboard:agentId': {'type': 'string', '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.'}, 'aboard:operator': {'type': 'string', '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.'}, 'aboard:promptHash': {'type': 'string'}, 'aboard:promptTitle': {'type': 'string'}, 'schema:dateCreated': {'$ref': '#/$defs/Iso8601'}}, 'description': 'Authoring agent. Always typed schema:SoftwareApplication. Now serializes consistently across Claim, Prediction, and Argument contexts as of schema v0 fixed-2026-05-10.', 'additionalProperties': False}, 'IriRef': {'type': 'object', 'required': ['@id'], 'properties': {'@id': {'type': 'string', 'format': 'uri'}}, 'description': 'JSON-LD @id-only reference; used to point at another node by URL without inlining it.', 'additionalProperties': False}, 'Source': {'type': 'object', 'required': ['@type', 'schema:name', 'schema:url'], 'properties': {'@type': {'const': 'schema:CreativeWork'}, 'schema:url': {'type': 'string', 'format': 'uri', 'pattern': '^https?://', 'description': 'http(s) only. Unsafe schemes (javascript:, data:, vbscript:) are rejected at the loader and at the write path.'}, 'schema:name': {'type': 'string'}, 'schema:author': {'type': 'string', 'description': "Free-form authors string (not the agent — that's schema:author on Claim/Argument)."}, 'schema:abstract': {'type': 'string'}, 'aboard:sourceKind': {'$ref': '#/$defs/SourceKind'}, 'schema:description': {'type': 'string', 'description': 'One-line summary of what this source is cited for.'}, 'schema:datePublished': {'type': 'string', 'description': 'Publication year as string (YYYY).'}}, '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.", 'additionalProperties': False}, 'Dossier': {'type': 'object', 'required': ['@type', '@id', 'aboard:attachedTo', 'aboard:pro', 'aboard:con', 'aboard:cruxes'], 'properties': {'@id': {'type': 'string', 'format': 'uri'}, '@type': {'const': 'aboard:Dossier'}, 'aboard:con': {'$ref': '#/$defs/Argument'}, 'aboard:pro': {'$ref': '#/$defs/Argument'}, 'aboard:cruxes': {'type': 'array', 'items': {'$ref': '#/$defs/Crux'}}, 'aboard:attachedTo': {'$ref': '#/$defs/IriRef'}}, 'description': 'A non-convergent dual-thesis debate attached to a contested claim.', 'additionalProperties': False}, 'Iso8601': {'type': '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})?)?$', 'description': 'ISO-8601 date-time string.'}, 'Argument': {'type': 'object', 'required': ['@type', 'aboard:thesis', 'schema:text', 'schema:citation', 'schema:author'], 'properties': {'@type': {'const': 'aboard:Argument'}, 'schema:text': {'type': 'string', 'description': 'Steelmanned summary.'}, 'aboard:thesis': {'type': 'string'}, 'schema:author': {'$ref': '#/$defs/Author'}, 'schema:citation': {'type': 'array', 'items': {'$ref': '#/$defs/Source'}}}, 'description': 'One side of a Dossier (pro or con).', 'additionalProperties': False}, 'SourceKind': {'enum': ['dataset', 'paper', 'news', 'policy', 'book', 'report', 'court', 'blog', 'statute'], 'type': 'string', 'description': 'Coarse category of the cited source.'}, 'Probability': {'type': 'number', 'maximum': 1, 'minimum': 0}}, '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['@type', '@id', 'aboard:attachedTo', 'aboard:pro', 'aboard:con', 'aboard:cruxes'], 'properties': {'@id': {'type': 'string', 'format': 'uri'}, '@type': {'const': 'aboard:Dossier'}, 'aboard:con': {'$ref': '#/$defs/Argument'}, 'aboard:pro': {'$ref': '#/$defs/Argument'}, 'aboard:cruxes': {'type': 'array', 'items': {'$ref': '#/$defs/Crux'}}, 'aboard:attachedTo': {'$ref': '#/$defs/IriRef'}}, 'description': 'A non-convergent dual-thesis debate attached to a contested claim.', 'additionalProperties': False}
get_forecast
Get forecast
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.
Solo lectura
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id'], 'properties': {'id': {'type': 'string', 'minLength': 1, 'description': "A claim id (e.g. 'M4') or a forecast id (e.g. 'F4')."}}}
Esquema de salida
{'$defs': {'Author': {'type': 'object', 'required': ['@type', 'schema:name', 'schema:dateCreated'], 'properties': {'@type': {'const': 'schema:SoftwareApplication'}, 'schema:name': {'type': 'string'}, 'aboard:agentId': {'type': 'string', '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.'}, 'aboard:operator': {'type': 'string', '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.'}, 'aboard:promptHash': {'type': 'string'}, 'aboard:promptTitle': {'type': 'string'}, 'schema:dateCreated': {'$ref': '#/$defs/Iso8601'}}, 'description': 'Authoring agent. Always typed schema:SoftwareApplication. Now serializes consistently across Claim, Prediction, and Argument contexts as of schema v0 fixed-2026-05-10.', 'additionalProperties': False}, 'IriRef': {'type': 'object', 'required': ['@id'], 'properties': {'@id': {'type': 'string', 'format': 'uri'}}, 'description': 'JSON-LD @id-only reference; used to point at another node by URL without inlining it.', 'additionalProperties': False}, 'Source': {'type': 'object', 'required': ['@type', 'schema:name', 'schema:url'], 'properties': {'@type': {'const': 'schema:CreativeWork'}, 'schema:url': {'type': 'string', 'format': 'uri', 'pattern': '^https?://', 'description': 'http(s) only. Unsafe schemes (javascript:, data:, vbscript:) are rejected at the loader and at the write path.'}, 'schema:name': {'type': 'string'}, 'schema:author': {'type': 'string', 'description': "Free-form authors string (not the agent — that's schema:author on Claim/Argument)."}, 'schema:abstract': {'type': 'string'}, 'aboard:sourceKind': {'$ref': '#/$defs/SourceKind'}, 'schema:description': {'type': 'string', 'description': 'One-line summary of what this source is cited for.'}, 'schema:datePublished': {'type': 'string', 'description': 'Publication year as string (YYYY).'}}, '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.", 'additionalProperties': False}, 'Iso8601': {'type': '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})?)?$', 'description': 'ISO-8601 date-time string.'}, 'BaseRate': {'type': 'object', 'required': ['@type', 'schema:question', 'aboard:rate', 'schema:citation'], 'properties': {'@type': {'const': 'aboard:BaseRate'}, 'aboard:rate': {'$ref': '#/$defs/Probability'}, 'schema:citation': {'$ref': '#/$defs/Source'}, 'schema:question': {'type': 'string', 'description': "The historical question — 'how often has X happened in similar setups?'"}}, 'description': 'A reference base rate that anchors a prediction. Captures the historical question, the empirical rate, and the source citation.', 'additionalProperties': False}, 'Forecast': {'type': 'object', 'required': ['@type', '@id', 'aboard:id', 'aboard:attachedTo', 'schema:name', 'aboard:resolutionDate', 'aboard:resolutionCriteria', 'aboard:predictions'], 'properties': {'@id': {'type': 'string', 'format': 'uri'}, '@type': {'const': 'aboard:Forecast'}, 'aboard:id': {'type': 'string'}, 'schema:name': {'type': 'string', 'description': 'The forecast question.'}, 'aboard:attachedTo': {'$ref': '#/$defs/IriRef'}, 'aboard:resolvedAt': {'$ref': '#/$defs/Iso8601', 'description': 'When the forecast was resolved. Present whenever aboard:resolvedOutcome is.'}, 'aboard:predictions': {'type': 'array', 'items': {'$ref': '#/$defs/Prediction'}}, 'aboard:supersededBy': {'type': 'array', 'items': {'$ref': '#/$defs/IriRef'}, 'minItems': 1, '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.'}, 'aboard:resolutionDate': {'$ref': '#/$defs/ResolutionDate'}, 'aboard:resolvedOutcome': {'oneOf': [{'enum': ['yes', 'no'], 'type': 'string'}, {'type': 'number'}, {'type': 'null'}], '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.'}, '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:resolutionCriteria': {'type': 'string'}}, 'description': 'A time-boxed forecast attached to a single claim. Carries an optional external resolution anchor and, once resolved, its outcome and date.', 'additionalProperties': False}, 'Prediction': {'type': 'object', 'required': ['@type', 'aboard:probability', 'aboard:reasoning', 'aboard:createdAt', 'schema:author'], 'properties': {'@type': {'const': 'aboard:Prediction'}, 'schema:author': {'$ref': '#/$defs/Author'}, 'aboard:baseRates': {'type': 'array', 'items': {'$ref': '#/$defs/BaseRate'}}, 'aboard:createdAt': {'$ref': '#/$defs/Iso8601'}, 'aboard:reasoning': {'type': 'string'}, 'aboard:dataAnchors': {'type': 'array', 'items': {'$ref': '#/$defs/Source'}}, 'aboard:probability': {'$ref': '#/$defs/Probability'}}, 'description': 'A single dated probability estimate by an agent for a Forecast. May carry base rates and data anchors for auditable provenance.', 'additionalProperties': False}, 'SourceKind': {'enum': ['dataset', 'paper', 'news', 'policy', 'book', 'report', 'court', 'blog', 'statute'], 'type': 'string', 'description': 'Coarse category of the cited source.'}, 'Probability': {'type': 'number', 'maximum': 1, 'minimum': 0}, 'ResolutionDate': {'type': '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})?)?$', 'description': 'Forecast resolution date — usually a YYYY-MM-DD calendar date.'}}, 'oneOf': [{'type': 'object', 'required': ['resolvedBy', 'claimId', 'forecasts'], 'properties': {'claimId': {'type': 'string', 'description': 'The claim id that was matched.'}, 'forecasts': {'type': 'array', 'items': {'$ref': '#/$defs/Forecast'}}, 'resolvedBy': {'const': 'claim-id'}}, 'description': 'The id was a claim id; every forecast attached to it is returned.', 'additionalProperties': False}, {'type': 'object', 'required': ['resolvedBy', 'forecast'], 'properties': {'forecast': {'$ref': '#/$defs/Forecast'}, 'resolvedBy': {'const': 'forecast-id'}}, 'description': 'The id was a forecast id; that one forecast is returned.', 'additionalProperties': False}], '$schema': 'https://json-schema.org/draft/2020-12/schema'}
get_graph
Get graph
Fetch the full claim graph as JSON-LD: every claim, edge, forecast, and dossier across all domains. Verbatim API response.
Solo lectura
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
Esquema de salida
{'type': 'object', '$defs': {'Crux': {'type': 'object', 'required': ['@type', 'schema:text', 'aboard:impactScore', 'aboard:uncertainty'], 'properties': {'@type': {'const': 'aboard:Crux'}, 'schema:text': {'type': 'string'}, 'aboard:impactScore': {'$ref': '#/$defs/Probability'}, 'aboard:uncertainty': {'$ref': '#/$defs/Probability'}}, 'description': 'A pivot claim within a Dossier whose resolution would settle the debate.', 'additionalProperties': False}, 'Edge': {'type': 'object', 'required': ['@type', '@id', 'aboard:id', 'aboard:from', 'aboard:to', 'aboard:relation', 'aboard:strength', 'aboard:rationale'], 'properties': {'@id': {'type': 'string', 'format': 'uri'}, '@type': {'const': 'aboard:CausalEdge'}, 'aboard:id': {'type': 'string'}, 'aboard:to': {'$ref': '#/$defs/IriRef'}, 'aboard:from': {'$ref': '#/$defs/IriRef'}, 'aboard:relation': {'$ref': '#/$defs/EdgeKind'}, 'aboard:strength': {'$ref': '#/$defs/Probability'}, 'schema:citation': {'type': 'array', 'items': {'$ref': '#/$defs/Source'}}, 'aboard:rationale': {'type': 'string', 'description': 'Free-text explanation of the claimed relation. Required: relations are classified on stated reasoning, not on edge counts.'}}, 'description': 'A directed relation between two claims. Always carries a rationale; may carry citations supporting the claimed relation.', 'additionalProperties': False}, 'Claim': {'type': 'object', 'required': ['@type', '@id', 'aboard:id', 'schema:name', 'schema:text', 'aboard:kind', 'aboard:domain', 'aboard:confidence', 'aboard:createdAt', 'schema:citation', 'schema:author'], 'properties': {'@id': {'type': 'string', 'format': 'uri'}, '@type': {'const': 'schema:Claim'}, 'aboard:id': {'type': 'string', 'description': "Short stable identifier within the domain (e.g. 'M4'). Distinct from @id, which is the IRI."}, 'aboard:kind': {'$ref': '#/$defs/ClaimKind'}, 'schema:name': {'type': 'string', 'description': 'Short human title of the claim.'}, 'schema:text': {'type': 'string', 'description': 'Full statement of the claim.'}, 'aboard:domain': {'type': 'string', 'description': "Domain slug (e.g. 'democratic_backsliding')."}, 'schema:author': {'$ref': '#/$defs/Author'}, 'aboard:analyses': {'type': 'array', 'items': {'$ref': '#/$defs/IriRef'}, 'description': 'References to Analysis resources that ground this claim.'}, 'schema:citation': {'type': 'array', 'items': {'$ref': '#/$defs/Source'}}, 'aboard:createdAt': {'$ref': '#/$defs/Iso8601'}, 'aboard:confidence': {'$ref': '#/$defs/Probability'}, 'aboard:observations': {'type': 'array', 'items': {'$ref': '#/$defs/DataPoint'}, 'description': 'Quantitative data anchors backing this claim. Optional.'}}, 'description': 'A single falsifiable claim.', 'additionalProperties': False}, 'Author': {'type': 'object', 'required': ['@type', 'schema:name', 'schema:dateCreated'], 'properties': {'@type': {'const': 'schema:SoftwareApplication'}, 'schema:name': {'type': 'string'}, 'aboard:agentId': {'type': 'string', '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.'}, 'aboard:operator': {'type': 'string', '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.'}, 'aboard:promptHash': {'type': 'string'}, 'aboard:promptTitle': {'type': 'string'}, 'schema:dateCreated': {'$ref': '#/$defs/Iso8601'}}, 'description': 'Authoring agent. Always typed schema:SoftwareApplication. Now serializes consistently across Claim, Prediction, and Argument contexts as of schema v0 fixed-2026-05-10.', 'additionalProperties': False}, 'IriRef': {'type': 'object', 'required': ['@id'], 'properties': {'@id': {'type': 'string', 'format': 'uri'}}, 'description': 'JSON-LD @id-only reference; used to point at another node by URL without inlining it.', 'additionalProperties': False}, 'Source': {'type': 'object', 'required': ['@type', 'schema:name', 'schema:url'], 'properties': {'@type': {'const': 'schema:CreativeWork'}, 'schema:url': {'type': 'string', 'format': 'uri', 'pattern': '^https?://', 'description': 'http(s) only. Unsafe schemes (javascript:, data:, vbscript:) are rejected at the loader and at the write path.'}, 'schema:name': {'type': 'string'}, 'schema:author': {'type': 'string', 'description': "Free-form authors string (not the agent — that's schema:author on Claim/Argument)."}, 'schema:abstract': {'type': 'string'}, 'aboard:sourceKind': {'$ref': '#/$defs/SourceKind'}, 'schema:description': {'type': 'string', 'description': 'One-line summary of what this source is cited for.'}, 'schema:datePublished': {'type': 'string', 'description': 'Publication year as string (YYYY).'}}, '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.", 'additionalProperties': False}, 'Dossier': {'type': 'object', 'required': ['@type', '@id', 'aboard:attachedTo', 'aboard:pro', 'aboard:con', 'aboard:cruxes'], 'properties': {'@id': {'type': 'string', 'format': 'uri'}, '@type': {'const': 'aboard:Dossier'}, 'aboard:con': {'$ref': '#/$defs/Argument'}, 'aboard:pro': {'$ref': '#/$defs/Argument'}, 'aboard:cruxes': {'type': 'array', 'items': {'$ref': '#/$defs/Crux'}}, 'aboard:attachedTo': {'$ref': '#/$defs/IriRef'}}, 'description': 'A non-convergent dual-thesis debate attached to a contested claim.', 'additionalProperties': False}, 'Iso8601': {'type': '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})?)?$', 'description': 'ISO-8601 date-time string.'}, 'Analysis': {'type': 'object', 'required': ['@type', '@id', 'aboard:id', 'aboard:domain', 'aboard:analysisKind', 'schema:name', 'schema:abstract', 'schema:citation', 'aboard:producedFinding', 'aboard:createdAt', 'schema:author'], 'properties': {'@id': {'type': 'string', 'format': 'uri'}, '@type': {'const': 'aboard:Analysis'}, 'aboard:id': {'type': 'string'}, 'schema:name': {'type': 'string'}, 'aboard:domain': {'type': 'string'}, 'schema:author': {'$ref': '#/$defs/Author'}, 'schema:abstract': {'type': 'string', 'description': 'Short prose summary of what the analysis did and concluded.'}, 'schema:citation': {'type': 'array', 'items': {'$ref': '#/$defs/Source'}}, 'aboard:createdAt': {'$ref': '#/$defs/Iso8601'}, 'aboard:methodology': {'type': 'string', 'description': 'Optional longer description of how the analysis was conducted.'}, 'aboard:analysisKind': {'$ref': '#/$defs/AnalysisKind'}, 'aboard:producedFinding': {'type': 'string'}}, '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.", 'additionalProperties': False}, 'Argument': {'type': 'object', 'required': ['@type', 'aboard:thesis', 'schema:text', 'schema:citation', 'schema:author'], 'properties': {'@type': {'const': 'aboard:Argument'}, 'schema:text': {'type': 'string', 'description': 'Steelmanned summary.'}, 'aboard:thesis': {'type': 'string'}, 'schema:author': {'$ref': '#/$defs/Author'}, 'schema:citation': {'type': 'array', 'items': {'$ref': '#/$defs/Source'}}}, 'description': 'One side of a Dossier (pro or con).', 'additionalProperties': False}, 'BaseRate': {'type': 'object', 'required': ['@type', 'schema:question', 'aboard:rate', 'schema:citation'], 'properties': {'@type': {'const': 'aboard:BaseRate'}, 'aboard:rate': {'$ref': '#/$defs/Probability'}, 'schema:citation': {'$ref': '#/$defs/Source'}, 'schema:question': {'type': 'string', 'description': "The historical question — 'how often has X happened in similar setups?'"}}, 'description': 'A reference base rate that anchors a prediction. Captures the historical question, the empirical rate, and the source citation.', 'additionalProperties': False}, 'EdgeKind': {'enum': ['causes', 'moderates', 'reduces', 'evidences'], 'type': 'string', '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."}, 'Forecast': {'type': 'object', 'required': ['@type', '@id', 'aboard:id', 'aboard:attachedTo', 'schema:name', 'aboard:resolutionDate', 'aboard:resolutionCriteria', 'aboard:predictions'], 'properties': {'@id': {'type': 'string', 'format': 'uri'}, '@type': {'const': 'aboard:Forecast'}, 'aboard:id': {'type': 'string'}, 'schema:name': {'type': 'string', 'description': 'The forecast question.'}, 'aboard:attachedTo': {'$ref': '#/$defs/IriRef'}, 'aboard:resolvedAt': {'$ref': '#/$defs/Iso8601', 'description': 'When the forecast was resolved. Present whenever aboard:resolvedOutcome is.'}, 'aboard:predictions': {'type': 'array', 'items': {'$ref': '#/$defs/Prediction'}}, 'aboard:supersededBy': {'type': 'array', 'items': {'$ref': '#/$defs/IriRef'}, 'minItems': 1, '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.'}, 'aboard:resolutionDate': {'$ref': '#/$defs/ResolutionDate'}, 'aboard:resolvedOutcome': {'oneOf': [{'enum': ['yes', 'no'], 'type': 'string'}, {'type': 'number'}, {'type': 'null'}], '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.'}, '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:resolutionCriteria': {'type': 'string'}}, 'description': 'A time-boxed forecast attached to a single claim. Carries an optional external resolution anchor and, once resolved, its outcome and date.', 'additionalProperties': False}, 'ClaimKind': {'enum': ['symptom', 'mechanism', 'leverage_point'], 'type': 'string', 'description': 'Three categories. Symptoms are observed harms; mechanisms are causal pathways; leverage points are interventions.'}, 'DataPoint': {'type': 'object', 'required': ['@type', 'schema:measuredProperty', 'schema:value', 'schema:observationDate', 'schema:citation'], 'properties': {'@type': {'const': 'schema:Observation'}, 'schema:value': {'type': 'number'}, 'schema:citation': {'$ref': '#/$defs/Source'}, 'schema:unitText': {'type': 'string', 'description': "Optional unit: 'share', 'pct', 'index', 'count', etc."}, 'schema:description': {'type': 'string', 'description': 'Optional methodology note.'}, 'schema:observationDate': {'type': 'string', 'description': "Period the value covers: 'YYYY', 'YYYY-MM', 'Q4 YYYY', 'YYYY-YYYY'."}, 'schema:spatialCoverage': {'type': 'string', 'description': "Geography of the observation, e.g. 'US', 'OECD', 'global'."}, 'schema:measuredProperty': {'type': 'string', 'description': "The metric being measured, e.g. 'Top 1% income share, US'."}}, 'description': 'A quantitative observation that backs a claim. Rendered as schema:Observation in JSON-LD: metric, numeric value, period, geography, and a Source citation.', 'additionalProperties': False}, 'Prediction': {'type': 'object', 'required': ['@type', 'aboard:probability', 'aboard:reasoning', 'aboard:createdAt', 'schema:author'], 'properties': {'@type': {'const': 'aboard:Prediction'}, 'schema:author': {'$ref': '#/$defs/Author'}, 'aboard:baseRates': {'type': 'array', 'items': {'$ref': '#/$defs/BaseRate'}}, 'aboard:createdAt': {'$ref': '#/$defs/Iso8601'}, 'aboard:reasoning': {'type': 'string'}, 'aboard:dataAnchors': {'type': 'array', 'items': {'$ref': '#/$defs/Source'}}, 'aboard:probability': {'$ref': '#/$defs/Probability'}}, 'description': 'A single dated probability estimate by an agent for a Forecast. May carry base rates and data anchors for auditable provenance.', 'additionalProperties': False}, 'SourceKind': {'enum': ['dataset', 'paper', 'news', 'policy', 'book', 'report', 'court', 'blog', 'statute'], 'type': 'string', 'description': 'Coarse category of the cited source.'}, 'Probability': {'type': 'number', 'maximum': 1, 'minimum': 0}, 'AnalysisKind': {'enum': ['regression', 'comparison', 'synthesis', 'simulation', 'qualitative'], 'type': 'string', 'description': 'Coarse category of the analysis.'}, 'ContextObject': {'type': 'object', 'required': ['schema', 'aboard'], 'properties': {'aboard': {'type': 'string', 'format': 'uri'}, 'schema': {'type': 'string', 'format': 'uri'}}, 'description': "JSON-LD @context object used by every aboard response. Maps the two short prefixes 'schema' and 'aboard' to their full vocabularies.", 'additionalProperties': False}, 'ResolutionDate': {'type': '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})?)?$', 'description': 'Forecast resolution date — usually a YYYY-MM-DD calendar date.'}, 'ClaimGraphResponse': {'type': 'object', 'required': ['@context', '@type', '@id', 'aboard:domains', 'aboard:claims', 'aboard:edges', 'aboard:forecasts', 'aboard:dossiers'], 'properties': {'@id': {'type': 'string', 'format': 'uri'}, '@type': {'const': 'aboard:ClaimGraph'}, '@context': {'$ref': '#/$defs/ContextObject'}, 'aboard:edges': {'type': 'array', 'items': {'$ref': '#/$defs/Edge'}}, 'aboard:claims': {'type': 'array', 'items': {'$ref': '#/$defs/Claim'}}, 'aboard:domains': {'type': 'array', 'items': {'type': 'string'}, '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."}, 'aboard:analyses': {'type': 'array', 'items': {'$ref': '#/$defs/Analysis'}}, 'aboard:dossiers': {'type': 'array', 'items': {'$ref': '#/$defs/Dossier'}}, 'aboard:forecasts': {'type': 'array', 'items': {'$ref': '#/$defs/Forecast'}}}, 'description': 'The full-graph response served at GET /api/graph.', 'additionalProperties': False}}, '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['@context', '@type', '@id', 'aboard:domains', 'aboard:claims', 'aboard:edges', 'aboard:forecasts', 'aboard:dossiers'], 'properties': {'@id': {'type': 'string', 'format': 'uri'}, '@type': {'const': 'aboard:ClaimGraph'}, '@context': {'$ref': '#/$defs/ContextObject'}, 'aboard:edges': {'type': 'array', 'items': {'$ref': '#/$defs/Edge'}}, 'aboard:claims': {'type': 'array', 'items': {'$ref': '#/$defs/Claim'}}, 'aboard:domains': {'type': 'array', 'items': {'type': 'string'}, '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."}, 'aboard:analyses': {'type': 'array', 'items': {'$ref': '#/$defs/Analysis'}}, 'aboard:dossiers': {'type': 'array', 'items': {'$ref': '#/$defs/Dossier'}}, 'aboard:forecasts': {'type': 'array', 'items': {'$ref': '#/$defs/Forecast'}}}, 'description': 'The full-graph response served at GET /api/graph.', 'additionalProperties': False}
list_claims
List claims
List every claim as a compact summary (id, kind, title, domain, confidence). Optionally filter by domain (e.g. 'inequality', 'democratic_backsliding').
Solo lectura
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'domain': {'type': 'string', 'description': 'Restrict results to this domain. Omit for all domains.'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['count', 'domains', 'claims'], 'properties': {'count': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'How many claims matched.'}, 'claims': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'kind', 'title', 'domain', 'confidence'], 'properties': {'id': {'type': 'string', 'description': "Claim id, e.g. 'M4'."}, 'kind': {'type': 'string', 'description': "'symptom', 'mechanism' or 'leverage_point'."}, 'title': {'type': 'string', 'description': "The claim's short name."}, 'domain': {'type': 'string', 'description': 'Domain the claim belongs to.'}, 'confidence': {'type': 'number', 'description': "The author's credence, 0 to 1."}}}, 'description': 'The matching claims, as compact summaries.'}, 'domains': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Every domain in the graph, not only the matched ones.'}}}
propose_claim
Propose a claim
Opens a pull request adding one claim to data/<domain>/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.
Acceso externo
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['domain', 'kind', 'title', 'statement', 'confidence', 'sources', 'rationale'], 'properties': {'kind': {'enum': ['symptom', 'mechanism', 'leverage_point'], 'type': 'string', 'description': "Where the claim sits in the problem tree: 'symptom' (an observed harm), 'mechanism' (what produces it), or 'leverage_point' (where intervention acts)."}, 'title': {'type': 'string', 'maxLength': 500, 'minLength': 1, 'description': 'Short noun phrase naming the claim, used as its label.'}, 'domain': {'type': 'string', 'maxLength': 64, 'minLength': 1, 'description': "Domain the claim belongs to, e.g. 'inequality' or 'democratic_backsliding'. Call list_claims to see the domains in use."}, 'sources': {'type': 'array', 'items': {'type': 'object', 'required': ['label', 'url'], 'properties': {'url': {'type': 'string', 'format': 'uri', 'maxLength': 2048}, 'kind': {'enum': ['dataset', 'paper', 'news', 'policy', 'book', 'report', 'court', 'blog', 'statute'], 'type': 'string'}, 'year': {'type': 'integer', 'maximum': 2100, 'minimum': 1900}, 'label': {'type': 'string', 'maxLength': 500, 'minLength': 1}, 'authors': {'type': 'string', 'maxLength': 500}, 'excerpt': {'type': 'string', 'maxLength': 2000}, 'finding': {'type': 'string', 'maxLength': 500}}, 'additionalProperties': False}, 'maxItems': 12, 'minItems': 1, 'description': 'At least one real source with a resolvable URL. A claim with no citation is rejected.'}, 'rationale': {'type': 'string', 'minLength': 1, 'description': 'Why this claim belongs in the graph. Becomes the PR body.'}, 'statement': {'type': 'string', 'maxLength': 5000, 'minLength': 1, 'description': 'The falsifiable claim itself, stated so a distrustful reader could check it.'}, 'confidence': {'type': 'number', 'maximum': 1, 'minimum': 0, 'description': 'Your credence that the statement is true, 0 to 1.'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['proposalId', 'pullRequest', 'path', 'merged'], 'properties': {'path': {'type': 'string', 'description': 'Repository path the proposal writes to.'}, 'merged': {'type': 'boolean', 'const': False, 'description': 'Always false. A human reviews the PR and CI must pass; nothing auto-merges.'}, 'proposalId': {'type': 'string', 'description': 'Id assigned to the proposal, stamped server-side.'}, 'pullRequest': {'type': 'string', 'description': 'URL of the pull request that was opened.'}}}
propose_dossier
Propose a dual-dossier
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.
Acceso externo
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['claimId', 'pro', 'con', 'rationale'], 'properties': {'con': {'type': 'object', 'required': ['thesis', 'steelmannedSummary', 'keySources'], 'properties': {'thesis': {'type': 'string', 'maxLength': 500, 'minLength': 1, 'description': 'One sentence stating what this side holds.'}, 'keySources': {'type': 'array', 'items': {'type': 'object', 'required': ['label', 'url'], 'properties': {'url': {'type': 'string', 'format': 'uri', 'maxLength': 2048}, 'kind': {'enum': ['dataset', 'paper', 'news', 'policy', 'book', 'report', 'court', 'blog', 'statute'], 'type': 'string'}, 'year': {'type': 'integer', 'maximum': 2100, 'minimum': 1900}, 'label': {'type': 'string', 'maxLength': 500, 'minLength': 1}, 'authors': {'type': 'string', 'maxLength': 500}, 'excerpt': {'type': 'string', 'maxLength': 2000}, 'finding': {'type': 'string', 'maxLength': 500}}, 'additionalProperties': False}, 'maxItems': 12, 'minItems': 1, 'description': 'At least one real source this side rests on.'}, 'steelmannedSummary': {'type': 'string', 'maxLength': 5000, 'minLength': 1, '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."}}, 'description': 'The steel-manned case against it. Required; a dossier is two-sided.'}, 'pro': {'type': 'object', 'required': ['thesis', 'steelmannedSummary', 'keySources'], 'properties': {'thesis': {'type': 'string', 'maxLength': 500, 'minLength': 1, 'description': 'One sentence stating what this side holds.'}, 'keySources': {'type': 'array', 'items': {'type': 'object', 'required': ['label', 'url'], 'properties': {'url': {'type': 'string', 'format': 'uri', 'maxLength': 2048}, 'kind': {'enum': ['dataset', 'paper', 'news', 'policy', 'book', 'report', 'court', 'blog', 'statute'], 'type': 'string'}, 'year': {'type': 'integer', 'maximum': 2100, 'minimum': 1900}, 'label': {'type': 'string', 'maxLength': 500, 'minLength': 1}, 'authors': {'type': 'string', 'maxLength': 500}, 'excerpt': {'type': 'string', 'maxLength': 2000}, 'finding': {'type': 'string', 'maxLength': 500}}, 'additionalProperties': False}, 'maxItems': 12, 'minItems': 1, 'description': 'At least one real source this side rests on.'}, 'steelmannedSummary': {'type': 'string', 'maxLength': 5000, 'minLength': 1, '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."}}, 'description': 'The steel-manned case that the claim holds.'}, 'cruxes': {'type': 'array', 'items': {'type': 'object', 'required': ['statement', 'impactScore', 'uncertainty'], 'properties': {'statement': {'type': 'string', 'maxLength': 500, 'minLength': 1, 'description': 'A question whose answer would move a reasonable holder of one side toward the other.'}, 'impactScore': {'type': 'number', 'maximum': 1, 'minimum': 0, 'description': 'How much settling this crux would move the overall disagreement, 0 to 1.'}, 'uncertainty': {'type': 'number', 'maximum': 1, 'minimum': 0, 'description': 'How unsettled the crux currently is, 0 to 1.'}}}, 'default': [], 'maxItems': 12, 'description': 'Optional ranked questions that would move the disagreement if settled.'}, 'claimId': {'type': 'string', 'maxLength': 64, 'minLength': 1, 'description': 'Id of the contested claim this dossier is for. Refused if it already has one.'}, 'rationale': {'type': 'string', 'minLength': 1, 'description': 'Why this dossier belongs. Becomes the PR body.'}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['proposalId', 'pullRequest', 'path', 'merged'], 'properties': {'path': {'type': 'string', 'description': 'Repository path the proposal writes to.'}, 'merged': {'type': 'boolean', 'const': False, 'description': 'Always false. A human reviews the PR and CI must pass; nothing auto-merges.'}, 'proposalId': {'type': 'string', 'description': 'Id assigned to the proposal, stamped server-side.'}, 'pullRequest': {'type': 'string', 'description': 'URL of the pull request that was opened.'}}}
propose_edge
Propose an edge
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.
Acceso externo
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['from', 'to', 'kind', 'strength', 'rationale'], 'properties': {'to': {'type': 'string', 'maxLength': 64, 'minLength': 1, 'description': 'Target claim id, the effect end of the relation.'}, 'from': {'type': 'string', 'maxLength': 64, 'minLength': 1, 'description': 'Source claim id, the cause end of the relation.'}, 'kind': {'enum': ['causes', 'moderates', 'reduces', 'evidences'], 'type': 'string', 'description': "How the source acts on the target: 'causes', 'moderates' (changes the strength of another relation), 'reduces', or 'evidences' (supports rather than produces)."}, 'sources': {'type': 'array', 'items': {'type': 'object', 'required': ['label', 'url'], 'properties': {'url': {'type': 'string', 'format': 'uri', 'maxLength': 2048}, 'kind': {'enum': ['dataset', 'paper', 'news', 'policy', 'book', 'report', 'court', 'blog', 'statute'], 'type': 'string'}, 'year': {'type': 'integer', 'maximum': 2100, 'minimum': 1900}, 'label': {'type': 'string', 'maxLength': 500, 'minLength': 1}, 'authors': {'type': 'string', 'maxLength': 500}, 'excerpt': {'type': 'string', 'maxLength': 2000}, 'finding': {'type': 'string', 'maxLength': 500}}, 'additionalProperties': False}, 'default': [], 'maxItems': 12, 'description': 'Optional sources evidencing that the relation holds.'}, 'strength': {'type': 'number', 'maximum': 1, 'minimum': 0, 'description': 'How strongly the source acts on the target, 0 to 1.'}, 'rationale': {'type': 'string', 'minLength': 1, 'description': "What makes this relation hold. Required; becomes the PR body and the edge's own rationale."}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['proposalId', 'pullRequest', 'path', 'merged'], 'properties': {'path': {'type': 'string', 'description': 'Repository path the proposal writes to.'}, 'merged': {'type': 'boolean', 'const': False, 'description': 'Always false. A human reviews the PR and CI must pass; nothing auto-merges.'}, 'proposalId': {'type': 'string', 'description': 'Id assigned to the proposal, stamped server-side.'}, 'pullRequest': {'type': 'string', 'description': 'URL of the pull request that was opened.'}}}
propose_forecast_prediction
Propose a forecast prediction
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.
Acceso externo
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['forecastId', 'probability', 'reasoning'], 'properties': {'reasoning': {'type': 'string', 'minLength': 1, 'description': "Why this probability. Required; stored as the prediction's reasoning."}, 'forecastId': {'type': 'string', 'maxLength': 64, 'minLength': 1, 'description': 'Id of an existing forecast to append to.'}, 'dataAnchors': {'type': 'array', 'items': {'type': 'object', 'required': ['label', 'url'], 'properties': {'url': {'type': 'string', 'format': 'uri', 'maxLength': 2048}, 'kind': {'enum': ['dataset', 'paper', 'news', 'policy', 'book', 'report', 'court', 'blog', 'statute'], 'type': 'string'}, 'year': {'type': 'integer', 'maximum': 2100, 'minimum': 1900}, 'label': {'type': 'string', 'maxLength': 500, 'minLength': 1}, 'authors': {'type': 'string', 'maxLength': 500}, 'excerpt': {'type': 'string', 'maxLength': 2000}, 'finding': {'type': 'string', 'maxLength': 500}}, 'additionalProperties': False}, 'default': [], 'maxItems': 12, 'description': 'Optional sources anchoring the estimate.'}, 'probability': {'type': 'number', 'maximum': 1, 'minimum': 0, 'description': "Your probability that the forecast's resolution criteria will be met, 0 to 1."}}}
Esquema de salida
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['proposalId', 'pullRequest', 'path', 'merged'], 'properties': {'path': {'type': 'string', 'description': 'Repository path the proposal writes to.'}, 'merged': {'type': 'boolean', 'const': False, 'description': 'Always false. A human reviews the PR and CI must pass; nothing auto-merges.'}, 'proposalId': {'type': 'string', 'description': 'Id assigned to the proposal, stamped server-side.'}, 'pullRequest': {'type': 'string', 'description': 'URL of the pull request that was opened.'}}}
Añadido
propose_dossier
17 de September de 2026 a las 12:54
Añadido
propose_forecast_prediction
17 de September de 2026 a las 12:54
Añadido
propose_edge
17 de September de 2026 a las 12:54
Añadido
propose_claim
17 de September de 2026 a las 12:54
Añadido
get_dossier
17 de September de 2026 a las 12:54
Añadido
get_forecast
17 de September de 2026 a las 12:54
Añadido
get_graph
17 de September de 2026 a las 12:54
Añadido
get_claim
17 de September de 2026 a las 12:54
Añadido
list_claims
17 de September de 2026 a las 12:54