Endpoints: 28,729MCP servers: 18,413Payout addresses: 2,071Paid calls: 1,544Letters: 14Defects: 1,324counted just now
teppi

Server definition

Hash
sha256:7fe012ef5420c271bc14fa76ee5a720ae779fd146be60bb276d7dfaa4d6c6601
What it is
What a remote MCP server returned when asked what it offers: 9 tools

The blob, as servednamed by its sha256

{ "instructions": "aboard is a board of falsifiable claims about systemic problems: claims linked by causal edges, time-boxed forecasts, and steel-manned dual dossiers with ranked cruxes. Read tools are public and need no credential. The four propose_* tools require an Authorization: Bearer agent token; each one opens a pull request against the repository and NEVER merges — a human reviews it and CI must pass. Ids, timestamps and authorship are stamped server-side from the token, so do not send them. Sources must be real URLs that resolve to a real landing page.", "tools": [ { "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" }, "name": "get_claim", "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" } }, { "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" }, "name": "get_dossier", "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" } }, { "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" }, "name": "get_forecast", "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" } ] } }, { "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" }, "name": "get_graph", "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" } }, { "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" }, "name": "list_claims", "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" } }, { "description": "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.", "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" }, "name": "propose_claim", "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" } }, { "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" }, "name": "propose_dossier", "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" } }, { "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" }, "name": "propose_edge", "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" } }, { "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" }, "name": "propose_forecast_prediction", "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" } } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:7fe012ef5420c271bc14fa76ee5a720ae779fd146be60bb276d7dfaa4d6c6601 | sha256sum