{"name":"io.github.terradev-cloud/quorum","slug":"terradev-cloud-quorum","title":null,"description":"Attested multi-agent consensus: proposals, votes, and outcomes stamped and traced.","url":"https://mcp.market/server/terradev-cloud-quorum","rating":null,"grade":"B","score":79,"certified":false,"status":"active","category":"ai","tags":["ai"],"presence":{"score":20,"stars":0,"forks":0,"downloads_week":null,"last_push_at":"2026-09-27T03:26:32.000Z","license":null},"uptime":{"percent":100,"checks":28,"ok":28,"last_checked_at":"2026-11-04T09:45:27.353Z","last_ok_at":"2026-11-04T09:45:27.353Z","latency_ms":111},"claimed":false,"transport":"remote","callable_via_gateway":true,"default_price_micros":0,"repository":"https://github.com/terradev-cloud/quorum-mcp","website":null,"version":"0.1.1","remotes":[{"type":"streamable-http","url":"https://quorum-mcp.terradev.cloud/mcp"}],"packages":[],"tools":[{"name":"history","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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"proposal_id":{"type":"string"},"filter":{"type":"string","enum":["all","writes","votes","outcome"],"description":"Default all."}},"required":["proposal_id"]}},{"name":"propose","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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"api_key":{"type":"string","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."},"name":{"type":"string","description":"Human-readable proposal id, e.g. pr-review-2026-09-18. Letters, digits, . _ - only; becomes the key for all subsequent calls."},"namespace":{"type":"string","description":"Optional tenant namespace. The proposal id becomes '<namespace>:<name>' -- different teams can reuse names without colliding. Same charset as name."},"question":{"type":"string","description":"The thing being decided."},"voters":{"type":"array","items":{"type":"string"},"description":"Expected voter identities. Only these may vote; missing voters at resolution are recorded abstained."},"deadline_minutes":{"type":"number","description":"Minutes until voting closes."},"options":{"type":"array","items":{"type":"string"},"description":"Named options. Default [\"yes\",\"no\"]."},"algorithm":{"type":"string","enum":["plurality","borda","condorcet","approval","opinion_pool","supermajority"],"description":"Aggregation algorithm. Default approval -- robust general-purpose choice with no strategic incentive."},"quorum":{"type":"number","description":"Min percent of expected voters that must vote before resolution. Default 100."},"threshold":{"type":"number","description":"Supermajority only: required share of votes cast, percent. Default 66.67."},"description":{"type":"string","description":"Optional context for the audit trail."}},"required":["name","question","voters","deadline_minutes"]}},{"name":"read","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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"proposal_id":{"type":"string"},"key":{"type":"string","description":"Optional: only entries with this key."}},"required":["proposal_id"]}},{"name":"register","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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"api_key":{"type":"string","description":"Your Quorum API key -- chosen by you, presented on propose, never stored."},"telinea_key":{"type":"string","description":"Your Telinea API key -- stored encrypted, used to authenticate span pushes."}},"required":["api_key","telinea_key"]}},{"name":"resolve","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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"proposal_id":{"type":"string"}},"required":["proposal_id"]}},{"name":"vote","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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"proposal_id":{"type":"string"},"voter":{"type":"string"},"value":{"description":"Ballot in the algorithm's format."},"reasoning":{"type":"string","description":"Free-text rationale, kept in the audit trail."}},"required":["proposal_id","voter","value"]}},{"name":"write","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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"proposal_id":{"type":"string"},"key":{"type":"string","description":"Key other agents use to filter this entry on read."},"value":{"description":"Any JSON value."},"author":{"type":"string","description":"Optional author identity, recorded and attested."}},"required":["proposal_id","key","value"]}}],"scan":{"score":79,"grade":"B","scanned_at":"2026-09-27T05:26:46.459Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-27T05:26:46.453Z","components":{"code":{"score":-1,"max":25,"notes":["remote-only server, no package to scan"]},"reliability":{"score":20,"max":20,"notes":["remote reachable in 80ms"]},"poisoning":{"score":15,"max":15,"notes":["7 tool descriptions checked"]},"auth":{"score":3,"max":15,"notes":["open endpoint exposes 2 write-action tools with no auth"]},"maintenance":{"score":15,"max":15,"notes":["last push 0 days ago"]},"identity":{"score":6,"max":10,"notes":["registry namespace matches repository owner"]}},"findings":[{"id":"auth.open-write","severity":"high","component":"auth","title":"Write-action tools reachable without authentication"}],"inputs":{"probes":[{"url":"https://quorum-mcp.terradev.cloud/mcp","reachable":true,"authRequired":false,"latencyMs":80,"serverInfo":{"name":"quorum","version":"0.1.0"}}],"packages":[],"repo":{"found":true,"owner":"terradev-cloud","repo":"quorum-mcp","archived":false,"pushedAt":"2026-09-27T03:26:32Z","stars":0,"forks":0,"openIssues":0,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/334378863?v=4","ownerCreatedAt":"2026-09-27T03:03:56Z"},"icon":{"url":null,"source":"none"},"presence":{"stars":0,"forks":0,"downloadsWeek":null,"license":null,"lastPushAt":"2026-09-27T03:26:32.000Z","score":20}}}},"grade_history":[],"reviews":[]}