addrbookFor publishers
← The evidence ledger

Evidence row 292279

Observed , by probe.mcp/1.

Kind
mcp.tools
About
endpoint babcdbcc-e772-49aa-ba90-d7375be8124b
Recorded
Previous row
None: the first of its kind about this subject
Body SHA-256
938dce996b5483bdef000ce87643dc5a53e55f1d4e5973aa7010c731e4e3e9c8
Leaf
0xf81df718b13d70af10e230344eaa7d317d7c3b5970f06baebd12f80d606dd238

What was observed

{
  "count": 7,
  "tools": [
    {
      "description": "The complete attested record of a proposal in chronological order: creation, every blackboard write, every vote with reasoning, the outcome. Optional filter: all | writes | votes | outcome.",
      "inputSchema": {
        "properties": {
          "filter": {
            "description": "Default all.",
            "enum": [
              "all",
              "writes",
              "votes",
              "outcome"
            ],
            "type": "string"
          },
          "proposal_id": {
            "type": "string"
          }
        },
        "required": [
          "proposal_id"
        ],
        "type": "object"
      },
      "name": "history"
    },
    {
      "description": "Open a new proposal: a question, named options, expected voter identities, an aggregation algorithm, a deadline, and a quorum threshold. Returns the proposal id, the creation attestation, and the deadline. All later operations key off the proposal id.",
      "inputSchema": {
        "properties": {
          "algorithm": {
            "description": "Aggregation algorithm. Default approval -- robust general-purpose choice with no strategic incentive.",
            "enum": [
              "plurality",
              "borda",
              "condorcet",
              "approval",
              "opinion_pool",
              "supermajority"
            ],
            "type": "string"
          },
          "api_key": {
            "description": "Optional. Your Quorum API key (from register). Binds the proposal to your account so its spans push to your Telinea. Omit for anonymous use -- everything works, no spans.",
            "type": "string"
          },
          "deadline_minutes": {
            "description": "Minutes until voting closes.",
            "type": "number"
          },
          "description": {
            "description": "Optional context for the audit trail.",
            "type": "string"
          },
          "name": {
            "description": "Human-readable proposal id, e.g. pr-review-2026-09-18. Letters, digits, . _ - only; becomes the key for all subsequent calls.",
            "type": "string"
          },
          "namespace": {
            "description": "Optional tenant namespace. The proposal id becomes '<namespace>:<name>' -- different teams can reuse names without colliding. Same charset as name.",
            "type": "string"
          },
          "options": {
            "description": "Named options. Default [\"yes\",\"no\"].",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "question": {
            "description": "The thing being decided.",
            "type": "string"
          },
          "quorum": {
            "description": "Min percent of expected voters that must vote before resolution. Default 100.",
            "type": "number"
          },
          "threshold": {
            "description": "Supermajority only: required share of votes cast, percent. Default 66.67.",
            "type": "number"
          },
          "voters": {
            "description": "Expected voter identities. Only these may vote; missing voters at resolution are recorded abstained.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "name",
          "question",
          "voters",
          "deadline_minutes"
        ],
        "type": "object"
      },
      "name": "propose"
    },
    {
      "description": "Read a proposal's blackboard: every write in order with timestamp, author, and attestation id -- the complete deliberation record, or filtered to one key.",
      "inputSchema": {
        "properties": {
          "key": {
            "description": "Optional: only entries with this key.",
            "type": "string"
          },
          "proposal_id": {
            "type": "string"
          }
        },
        "required": [
          "proposal_id"
        ],
        "type": "object"
      },
      "name": "read"
    },
    {
      "description": "OPTIONAL one-time setup -- only needed if you want proposal telemetry (OTLP spans) pushed to your Telinea account. Call once before propose: it binds an api_key you choose to your Telinea API key. Afterwards, pass the same api_key on propose and every span for that proposal is pushed to your Telinea with standard OTLP bearer auth. Storage: the Telinea key is sealed with AES-256-GCM under a key derived from your api_key (HKDF-SHA256, per-account salt); only sha256(api_key) is kept as the lookup id, so neither key is ever stored in the clear. Re-registering with the same api_key rotates the stored Telinea key. Skip this tool entirely for anonymous use -- propose works without an api_key, just with no span streaming.",
      "inputSchema": {
        "properties": {
          "api_key": {
            "description": "Your Quorum API key -- chosen by you, presented on propose, never stored.",
            "type": "string"
          },
          "telinea_key": {
            "description": "Your Telinea API key -- stored encrypted, used to authenticate span pushes.",
            "type": "string"
          }
        },
        "required": [
          "api_key",
          "telinea_key"
        ],
        "type": "object"
      },
      "name": "register"
    },
    {
      "description": "Compute and attest the outcome once quorum is met (or the deadline has passed). Idempotent: resolving twice returns the recorded outcome. Condorcet cycles and missed supermajority thresholds return co_winners with status unresolved rather than an arbitrary tiebreak.",
      "inputSchema": {
        "properties": {
          "proposal_id": {
            "type": "string"
          }
        },
        "required": [
          "proposal_id"
        ],
        "type": "object"
      },
      "name": "resolve"
    },
    {
      "description": "Submit a vote from an expected voter identity, with optional reasoning stored in the attested record. Vote shape depends on the algorithm: plurality/supermajority take an option string; approval takes an option or list of options; borda takes a ranking of all options; condorcet takes a ranking or a single option; opinion_pool takes a probability distribution over options. Duplicates and post-deadline votes are rejected.",
      "inputSchema": {
        "properties": {
          "proposal_id": {
            "type": "string"
          },
          "reasoning": {
            "description": "Free-text rationale, kept in the audit trail.",
            "type": "string"
          },
          "value": {
            "description": "Ballot in the algorithm's format."
          },
          "voter": {
            "type": "string"
          }
        },
        "required": [
          "proposal_id",
          "voter",
          "value"
        ],
        "type": "object"
      },
      "name": "vote"
    },
    {
      "description": "Append a key-value entry to a proposal's blackboard. Any agent may write; writes are appended, never replaced -- the full ordered history is preserved and attested.",
      "inputSchema": {
        "properties": {
          "author": {
            "description": "Optional author identity, recorded and attested.",
            "type": "string"
          },
          "key": {
            "description": "Key other agents use to filter this entry on read.",
            "type": "string"
          },
          "proposal_id": {
            "type": "string"
          },
          "value": {
            "description": "Any JSON value."
          }
        },
        "required": [
          "proposal_id",
          "key",
          "value"
        ],
        "type": "object"
      },
      "name": "write"
    }
  ]
}

What the leaf hashes

{"body":"938dce996b5483bdef000ce87643dc5a53e55f1d4e5973aa7010c731e4e3e9c8","id":292279,"kind":"mcp.tools","method":"probe.mcp/1","observed_us":1793048689223834,"prev":null,"subject":"babcdbcc-e772-49aa-ba90-d7375be8124b","subject_kind":"endpoint"}

Proof

Fold these into the leaf in order, hashing each sorted pair with keccak256, to reach the root of (296695 rows).

  1. 0xf81e25160f7eecdd88a7fdc97b4e7fcb39407f6e35bbcdcbc969aaf75eca0825
  2. 0x9bb985f4f8a44a563b285cec3d9e70e704bba50fbff136c0a1bf69dc0cf35fe2
  3. 0x3d3e54811700bb3d026c29166d1ae03ab6674efe15acbe62299a5bcd644631e0
  4. 0x2f115b369fb443b6c011930899827d4e67d51f43b63560a4148ed27a0d2b8ca4
  5. 0x23e5d6e3fcbfa7c93345811d794b11dd27b953581d82e999298f9d6927a547a1
  6. 0xe86505a8625eb1e67e0671ffa79391d1ec2075b2a52d413fb12e155bfb83c1d6
  7. 0x05c3ef9d3a3071897fe358535fa7344b190c91d592314637de4df7bb61d3e040
  8. 0x85775a15fd943726a8fb65c7fce73fa4993a73a3c9599164bc5682f2e54a52b6
  9. 0x2346b54e8961351591237aa6905edcee2e14f9d9d4a3f3ccc65c57e060aad838
  10. 0x0eea714eaa5097f3236c62c5eab0dbd64a4b080a83c9a924990a89ae274e7c4e
  11. 0x0836eb686ada9beddba0f76357ec59493359d2a7c51aa5c4a31d3cfe9873ea74
  12. 0xf7eba200f6f1012d700fcc53fc6d57dcafd1019c920b1030d42fa21d4af95d94
  13. 0x694eb701ea36a0e3dcde192253ab85a618738bdc1e3a6e582e6f8bf9647f7a6a
  14. 0x44945ea9ad8b24e723ad5a8fd6d014024a49531783f74ff9229c2ab6930e84c8
  15. 0x68d296b1e00b4899fb83c3fba36fffaefa311eac2903067dbebfe776a12b4a9a
  16. 0x5fb5dda563336cd1bc1b9f44c52b76237ae72ed2145cb9290f39f304ca7dd678
  17. 0x74a0a08e4e7ab9aa5bfbead33dec7e1c7e8e364cff69a63720d764bbe987aadc
Day root
0xf43e8dcc3d451a4788b26be904c55e8c4c0fa75c9666796c51db38d37e2c0df8
Chained
0x702d5ac508f08b0d1accf36af25822d8e5660367494edd17a642fb61e158a57a
Published
On Arc Testnet, block 69251483: 0x495162f8936e19f0039918feebe6c307f327cd6bf8c37219620b1970041fa9ae

How to check it · This row as JSON