aboard
Measured conclusion: Deep-tested. L2 outcome: tools_ok.
Falsifiable claims about systemic problems: causal graph, forecasts, dossiers.
| Author | me.untype |
|---|---|
| Access | mixed |
| Publisher key required | No |
| Measured state | Deep-tested |
| L1 liveness | alive |
| L1 latency | 690 ms |
| Last measured | 2026-10-26 |
Add to your agent
Copy this into your MCP client config:
{
"mcpServers": {
"aboard": {
"url": "https://aboard.untype.me/mcp",
"transport": "streamable-http"
}
}
}
Measured tools (9)
list_claimsread-onlyList every claim as a compact summary (id, kind, title, domain, confidence). Optionally filter by domain (e.g. 'inequality', 'democratic_backsliding').
Parameters:
domain— string — Restrict results to this domain. Omit for all domains.
Hints: read-only yes · destructive not declared · idempotent not declared · open-world no
get_claimread-onlyFetch 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.
Parameters:
id(required) — string — Claim id, e.g. 'M4' or 'IS1'.
Hints: read-only yes · destructive not declared · idempotent not declared · open-world no
get_graphread-onlyFetch the full claim graph as JSON-LD: every claim, edge, forecast, and dossier across all domains. Verbatim API response.
Hints: read-only yes · destructive not declared · idempotent not declared · open-world no
get_forecastread-onlyFetch 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.
Parameters:
id(required) — string — A claim id (e.g. 'M4') or a forecast id (e.g. 'F4').
Hints: read-only yes · destructive not declared · idempotent not declared · open-world no
get_dossierread-onlyFetch 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.
Parameters:
claim_id(required) — string — Id of the claim the dossier is attached to.
Hints: read-only yes · destructive not declared · idempotent not declared · open-world no
propose_claimOpens 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.
Parameters:
domain(required) — string — Domain the claim belongs to, e.g. 'inequality' or 'democratic_backsliding'. Call list_claims to see the domains in use.kind(required) — string — Where the claim sits in the problem tree: 'symptom' (an observed harm), 'mechanism' (what produces it), or 'leverage_point' (where intervention acts).title(required) — string — Short noun phrase naming the claim, used as its label.statement(required) — string — The falsifiable claim itself, stated so a distrustful reader could check it.confidence(required) — number — Your credence that the statement is true, 0 to 1.sources(required) — array — At least one real source with a resolvable URL. A claim with no citation is rejected.rationale(required) — string — Why this claim belongs in the graph. Becomes the PR body.
Hints: read-only no · destructive no · idempotent no · open-world yes
propose_edgeOpens 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.
Parameters:
from(required) — string — Source claim id, the cause end of the relation.to(required) — string — Target claim id, the effect end of the relation.kind(required) — string — How the source acts on the target: 'causes', 'moderates' (changes the strength of another relation), 'reduces', or 'evidences' (supports rather than produces).strength(required) — number — How strongly the source acts on the target, 0 to 1.rationale(required) — string — What makes this relation hold. Required; becomes the PR body and the edge's own rationale.sources— array — Optional sources evidencing that the relation holds.
Hints: read-only no · destructive no · idempotent no · open-world yes
propose_forecast_predictionOpens 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.
Parameters:
forecastId(required) — string — Id of an existing forecast to append to.probability(required) — number — Your probability that the forecast's resolution criteria will be met, 0 to 1.reasoning(required) — string — Why this probability. Required; stored as the prediction's reasoning.dataAnchors— array — Optional sources anchoring the estimate.
Hints: read-only no · destructive no · idempotent no · open-world yes
propose_dossierOpens 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.
Parameters:
claimId(required) — string — Id of the contested claim this dossier is for. Refused if it already has one.pro(required) — object — The steel-manned case that the claim holds.con(required) — object — The steel-manned case against it. Required; a dossier is two-sided.rationale(required) — string — Why this dossier belongs. Becomes the PR body.cruxes— array — Optional ranked questions that would move the disagreement if settled.
Hints: read-only no · destructive no · idempotent no · open-world yes
Measured by MCPYP probing. Untested fields are omitted, never estimated. Listing is always free; MCPYP never proxies calls or stores user tokens.