← The evidence ledger
Evidence row 303158
Observed , by probe.mcp/1.
- Kind
- mcp.tools
- About
- endpoint 5fa589e7-eaec-47c9-aefd-4768412273b1
- Recorded
- Previous row
- None: the first of its kind about this subject
- Body SHA-256
- 444a00933c267ac61a6718e900ce8a7518f1c682b7098ef1feb33657dcc89492
- Leaf
- 0xd84789cd96354b378e7318adffcc7727d617c7cd8bfc672913afe72b1383086f
What was observed
{
"count": 9,
"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"
},
{
"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"
},
{
"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"
},
{
"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"
},
{
"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"
},
{
"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"
},
{
"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"
},
{
"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"
},
{
"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"
}
]
}What the leaf hashes
{"body":"444a00933c267ac61a6718e900ce8a7518f1c682b7098ef1feb33657dcc89492","id":303158,"kind":"mcp.tools","method":"probe.mcp/1","observed_us":1793055197338999,"prev":null,"subject":"5fa589e7-eaec-47c9-aefd-4768412273b1","subject_kind":"endpoint"}Proof
Fold these into the leaf in order, hashing each sorted pair with keccak256, to reach the root of (296695 rows).
- 0xd84791a580911b0b883ebb4132bb2f7b466a9de093504fe01ae7733db8d309d7
- 0x56a36f9687ee2bd24b13860897d0faa1bdb56c637a9b90ab1a4c480cff86115c
- 0x66d55702c0f9c32846c539d15d7e975260eda54ba9d6192a2b7be5280bbd8e9b
- 0x883897a9bd2294fc3f424c18477fe407920e5358458121366089b5796d4df3fd
- 0xe4968f61406ff4101e6d5d45d3733d4be8ac552450fc68318f296de2c1064a47
- 0x644ad9e06005d4f4161b839405b6255416addc7d7680279a33840bba14704cb0
- 0xfd77693aed240597f1d4ba9f4d8d986cb2505109856604dd4ad93176c7094b0a
- 0x16c3f751a221fd05404873decb76923e86017868c0f8cb834eaa50ea29b32392
- 0x9754378ea7ac1d291fd46f945e1a2ad82fa1ca5e9d27632f20194abae2857dfc
- 0x60bb9965ad3bbe169d5f64f7e3edfb9a565192c04e9f5f80c664e2fefe04706e
- 0x2671a86f48dece064e871ca46396549de6c07bd09915bed27b7ac95a735127fd
- 0x07e91966e8a0c43a0725bd3d523259064a93333c2900e6171b69ffbfd9f423f1
- 0xcd9e3af1fa905ec61b99ee9442716d7c7a439aecacd018ec229a24def1cabf6b
- 0x6b927d53caa5125cdba9255612d524976c691f8672796c3f0885ba2c5b3af1ad
- 0x6dc40f983a3840a0ad927a9ca17f4ff1e3b649a6c735e2a09b140db7c2caf13b
- 0x703f95866af09c5e5d6ead7411e9a10f964a41a2aff64d4a55ff0053c023a023
- 0xd0651cb9bc8155eb52b5247d506e74b8a935057dc190ba52091702ac25ed3a40
- 0x9a9024edb5069d88a324facb310a5ce8e495214bbaa968f077bede437390194f
- 0x9b9ce5b74b9bab5121612ef6b64920a8d453cbf311096a423eef9702747e868a
- Day root
- 0xf43e8dcc3d451a4788b26be904c55e8c4c0fa75c9666796c51db38d37e2c0df8
- Chained
- 0x702d5ac508f08b0d1accf36af25822d8e5660367494edd17a642fb61e158a57a
- Published
- On Arc Testnet, block 69251483: 0x495162f8936e19f0039918feebe6c307f327cd6bf8c37219620b1970041fa9ae