{"id":292279,"recorded_at":"2026-10-26T21:04:49.223998Z","observed_at":"2026-10-26T21:04:49.223834Z","subject_kind":"endpoint","subject":"babcdbcc-e772-49aa-ba90-d7375be8124b","kind":"mcp.tools","method":"probe.mcp/1","body":{"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"}]},"body_sha256":"938dce996b5483bdef000ce87643dc5a53e55f1d4e5973aa7010c731e4e3e9c8","prev_id":null,"leaf":"0xf81df718b13d70af10e230344eaa7d317d7c3b5970f06baebd12f80d606dd238","leaf_text":"{\"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\"}","day":{"day":"2026-10-26","leaves":296695,"root":"0xf43e8dcc3d451a4788b26be904c55e8c4c0fa75c9666796c51db38d37e2c0df8","chained":"0x702d5ac508f08b0d1accf36af25822d8e5660367494edd17a642fb61e158a57a","anchor_chain":"eip155:5042002","anchor_tx":"0x495162f8936e19f0039918feebe6c307f327cd6bf8c37219620b1970041fa9ae","anchor_block":69251483},"proof":["0xf81e25160f7eecdd88a7fdc97b4e7fcb39407f6e35bbcdcbc969aaf75eca0825","0x9bb985f4f8a44a563b285cec3d9e70e704bba50fbff136c0a1bf69dc0cf35fe2","0x3d3e54811700bb3d026c29166d1ae03ab6674efe15acbe62299a5bcd644631e0","0x2f115b369fb443b6c011930899827d4e67d51f43b63560a4148ed27a0d2b8ca4","0x23e5d6e3fcbfa7c93345811d794b11dd27b953581d82e999298f9d6927a547a1","0xe86505a8625eb1e67e0671ffa79391d1ec2075b2a52d413fb12e155bfb83c1d6","0x05c3ef9d3a3071897fe358535fa7344b190c91d592314637de4df7bb61d3e040","0x85775a15fd943726a8fb65c7fce73fa4993a73a3c9599164bc5682f2e54a52b6","0x2346b54e8961351591237aa6905edcee2e14f9d9d4a3f3ccc65c57e060aad838","0x0eea714eaa5097f3236c62c5eab0dbd64a4b080a83c9a924990a89ae274e7c4e","0x0836eb686ada9beddba0f76357ec59493359d2a7c51aa5c4a31d3cfe9873ea74","0xf7eba200f6f1012d700fcc53fc6d57dcafd1019c920b1030d42fa21d4af95d94","0x694eb701ea36a0e3dcde192253ab85a618738bdc1e3a6e582e6f8bf9647f7a6a","0x44945ea9ad8b24e723ad5a8fd6d014024a49531783f74ff9229c2ab6930e84c8","0x68d296b1e00b4899fb83c3fba36fffaefa311eac2903067dbebfe776a12b4a9a","0x5fb5dda563336cd1bc1b9f44c52b76237ae72ed2145cb9290f39f304ca7dd678","0x74a0a08e4e7ab9aa5bfbead33dec7e1c7e8e364cff69a63720d764bbe987aadc"]}