quorum
Server Details
Attested multi-agent consensus: proposals, votes, and outcomes stamped and traced.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- terradev-cloud/quorum-mcp
- GitHub Stars
- 0
TDQS
Scored across 7 tools
Each tool has a clearly distinct purpose: propose creates, vote submits votes, write appends blackboard entries, read retrieves blackboard, history provides the full chronological record, resolve computes outcomes, and register handles optional telemetry setup. There is no overlap or ambiguity between tools.
All tool names are single-word lowercase verbs or nouns (history, propose, read, register, resolve, vote, write), following a consistent, predictable pattern. The naming style is uniform and easy to infer.
With 7 tools, the server is well-scoped for a proposal and voting system. Each tool covers a distinct part of the lifecycle without redundancy, and the count feels appropriate for the domain.
The tool set covers the full proposal lifecycle: creation, voting, blackboard writes, reading, history, and resolution. Minor gaps exist, such as no explicit tool to list proposals or retrieve proposal metadata directly, but the history tool provides comprehensive access to proposal details, so agents can work around these gaps.
Available Tools
7 toolshistoryAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| filter | No | Default all. | |
| proposal_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does well by disclosing the chronological ordering, the inclusion of every write and vote with reasoning, and the presence of an outcome filter. It does not mention failure behavior or permissions, but the core read-only behavior and return contents are transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two tight sentences with no filler. The primary behavior is front-loaded, and the optional filter is appended cleanly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple two-parameter interface and no output schema, the description adequately explains what will be returned and how to optionally filter it. Minor gaps like behavior when the proposal does not exist or how the outcome is represented do not block correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already fully documents the filter enum and its default, and the description restates those values with their semantic categories. For proposal_id, the schema only gives a string type, and the description's 'of a proposal' adds minimal context but no format or example. At 50% schema coverage, the description partially compensates but does not fully explain every parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states exactly what the tool returns: the complete chronological record of a proposal, including creation, blackboard writes, votes with reasoning, and the outcome. It is clearly differentiated from sibling actions like propose, vote, or write by being an historical read-only aggregation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes it clear the tool is for retrieving a proposal's full history, but it does not explicitly say when to prefer history over the sibling read tool or when not to use it. Usage is implied rather than stated with explicit conditions or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
proposeAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Human-readable proposal id, e.g. pr-review-2026-09-18. Letters, digits, . _ - only; becomes the key for all subsequent calls. | |
| quorum | No | Min percent of expected voters that must vote before resolution. Default 100. | |
| voters | Yes | Expected voter identities. Only these may vote; missing voters at resolution are recorded abstained. | |
| api_key | No | 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. | |
| options | No | Named options. Default ["yes","no"]. | |
| question | Yes | The thing being decided. | |
| algorithm | No | Aggregation algorithm. Default approval -- robust general-purpose choice with no strategic incentive. | |
| namespace | No | Optional tenant namespace. The proposal id becomes '<namespace>:<name>' -- different teams can reuse names without colliding. Same charset as name. | |
| threshold | No | Supermajority only: required share of votes cast, percent. Default 66.67. | |
| description | No | Optional context for the audit trail. | |
| deadline_minutes | Yes | Minutes until voting closes. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. It discloses the return payload (proposal id, creation attestation, deadline), the keying relationship for later calls, and the api_key behavior (binds proposal to account, pushes spans to Telinea; anonymous use works without spans). It does not mention side effects like whether creation is reversible or whether duplicate names fail, but the disclosed behaviors are meaningful and go beyond a simple 'creates a proposal' statement.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single dense paragraph that front-loads the core purpose and return values, then adds the keying relationship. It is efficient and every sentence adds value, though it could be slightly more scannable with line breaks or bullet-like structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a creation tool with 11 parameters, 100% schema coverage, and no output schema, the description covers the essential workflow context: what is created, what is returned, and how the result is used downstream. It does not explain failure modes, idempotency, or duplicate-name behavior, but the combination of schema and description is adequate for an agent to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 11 parameters. The description adds context about the proposal id becoming the key for subsequent calls and the api_key's account-binding behavior, but most parameter semantics are already in the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb ('Open a new proposal') and enumerates the full set of inputs (question, named options, expected voters, aggregation algorithm, deadline, quorum threshold) plus the return values (proposal id, creation attestation, deadline). It also states that all later operations key off the proposal id, which distinguishes it from siblings like vote, resolve, and history.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes the tool's role clear as the creation entry point and notes that later operations key off the returned proposal id, implying this should be called before vote/resolve/history. It does not explicitly name sibling alternatives or state when not to use them, but the context is sufficient for an agent to sequence calls correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
readCInspect
Read a proposal's blackboard: every write in order with timestamp, author, and attestation id -- the complete deliberation record, or filtered to one key.
| Name | Required | Description | Default |
|---|---|---|---|
| key | No | Optional: only entries with this key. | |
| proposal_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden of behavioral disclosure. It implies a read-only operation but does not state side effects, permissions, rate limits, or error behavior. The description does disclose the return structure (ordered writes with metadata) which adds some context, but it falls short of describing potential pitfalls or requirements for a safe invocation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence that front-loads the core action and includes essential details about the output. It is concise without unnecessary fluff. A slight improvement would be to break it into two sentences for readability, but it is appropriately sized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read tool with 2 parameters and no output schema or annotations, the description gives a good sense of what is returned (complete record with metadata) and the filter option. However, it lacks details on error conditions, return format specifics, or any prerequisites. It is adequate for basic usage but not fully comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description covers 50% of parameters (only 'key' has a description). The description adds meaning to 'proposal_id' by referencing 'a proposal's blackboard', clarifying its role. However, it does not elaborate on the format or constraints of 'proposal_id', and the 'key' parameter is already described in the schema. Overall, it provides some added context but not comprehensive compensation for the schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'read', the resource 'proposal's blackboard', and the output (complete deliberation record or filtered by key). It provides specific content details (timestamp, author, attestation id) that help distinguish it from generic read operations. However, it does not explicitly differentiate from the sibling 'history' tool, which might overlap in purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives like 'history' or when not to use it. The description only states what it does, not the conditions under which an agent should select it over siblings. No exclusions or alternative tools are mentioned, leaving the selection to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
registerAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| api_key | Yes | Your Quorum API key -- chosen by you, presented on propose, never stored. | |
| telinea_key | Yes | Your Telinea API key -- stored encrypted, used to authenticate span pushes. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses the binding action, storage encryption details, re-registration rotation, and the fact that keys are never stored in the clear. However, it doesn't specify what happens if a different api_key is used for registration (multiple bindings vs. overwrite), leaving slight ambiguity for a non-standard call pattern.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but well-structured, front-loading the key conditionality and then building out the mechanics. Each sentence adds distinct information (setup timing, post-use, storage, rotation, skip), so no sentence is wasted. The length is justified by the security detail, but it could be trimmed without losing core meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given two required parameters, no output schema, and no annotations, the description covers all invocation-relevant aspects: when to use, how to call, what happens after, and the anonymous alternative. It doesn't describe error cases or response details, but for a one-time setup tool that's acceptable. Minor ambiguity about multi-registration with different api_keys is the only notable gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds meaning beyond the schema by explaining the relationship: api_key is presented on propose and binds to telinea_key, while telinea_key is stored encrypted. It also clarifies that propose works without both, which illuminates the parameters' roles in the broader flow.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb (register/bind) and resource (api_key to Telinea key) for a telemetry setup. It immediately differentiates from siblings by marking itself as 'OPTIONAL' and explicitly names 'propose' as the dependent tool. An agent can easily tell this from propose, read, or write.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage guidance is explicit: it says to call once before propose, to pass the same api_key on propose, and to skip entirely for anonymous use. It even gives the alternative of using propose without registration, making the conditional decision crystal clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resolveAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| proposal_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so well: it discloses idempotency ('resolving twice returns the recorded outcome') and edge-case behavior (Condorcet cycles and supermajority failures returning co_winners with status unresolved). This is substantive behavioral disclosure beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each earning its place: the first defines the core action and trigger, the second covers idempotency, and the third handles edge cases. No filler or redundant restatement of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter tool with no output schema and no annotations, the description covers the core behavior, idempotency, and peculiar edge cases. It does not specify the success return format in detail, but the edge-case return behavior is already explained, making it largely complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for the proposal_id parameter, but it does not mention it at all. The parameter name is self-explanatory, but the description adds no semantic guidance about what value to pass or how it connects to quorum/deadline context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Compute and attest the outcome' for a proposal. It clearly distinguishes itself from siblings like vote or propose by focusing on finalization after quorum/deadline, making the tool's role unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear trigger condition: 'once quorum is met (or the deadline has passed)'. This tells the agent when to invoke the tool, though it does not explicitly name sibling alternatives or state when not to use it. This is clear contextual guidance without formal exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
voteAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | Ballot in the algorithm's format. | |
| voter | Yes | ||
| reasoning | No | Free-text rationale, kept in the audit trail. | |
| proposal_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It states that duplicates and post-deadline votes are rejected, and details how the ballot shape varies by algorithm. It does not cover authentication, return values, or error behavior, but the provided details are substantive and helpful.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the core action. The algorithm-specific formats are listed efficiently without redundancy. Every sentence adds necessary detail; there is no fluff or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex tool with multiple algorithm-dependent ballot shapes, the description covers the critical variations and rejection rules. It lacks explicit return-value information and does not explain how the algorithm is determined (likely from the proposal), but given the absence of an output schema and annotations, it provides substantial context. A 4 is appropriate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 50%; only 'value' and 'reasoning' have schema descriptions. The description significantly enriches the 'value' parameter by enumerating allowed formats per algorithm, which is valuable. However, 'proposal_id' and 'voter' are not explained beyond the phrase 'expected voter identity', leaving their semantics incomplete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Submit a vote' and specifies the resource (a vote for a proposal). It also distinguishes itself by describing algorithm-specific ballot formats, which sets it apart from siblings like propose or resolve. However, it does not explicitly name alternative tools, so it's not a perfect 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context: the voter must be 'expected' (registered) and votes are rejected if duplicate or post-deadline. However, it does not explicitly state when to use this tool versus alternatives, nor does it mention prerequisites like registration. It gives some context but lacks explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
writeAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | Key other agents use to filter this entry on read. | |
| value | Yes | Any JSON value. | |
| author | No | Optional author identity, recorded and attested. | |
| proposal_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It explicitly reveals that writes are appended, never replaced, ordered, preserved, and attested. This goes well beyond a simple 'write' statement, though it does not describe return values or failure behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence: the core action appears first, followed by essential behavioral guarantees. Every clause earns its place, and there is no redundant or unclear wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple append tool, the description covers the target resource, data model, permissions, and persistence semantics despite lacking annotations and an output schema. It does not mention response behavior or interaction with history/read tools, but the essential context for calling it correctly is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 75%, so the schema already documents key, value, and author. The description adds context by framing these as a 'key-value entry' on the proposal's blackboard, but it does not meaningfully elaborate on parameter formats or constraints beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('Append') and resource ('key-value entry to a proposal's blackboard'), clearly distinguishing this from sibling tools like read, history, propose, and vote. It is not a tautology and immediately conveys the tool's function.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'Any agent may write' gives helpful permissive context, and the append-only semantics clarify how writes behave, but the description does not explicitly say when to choose write over alternatives such as propose, register, resolve, or vote. Usage guidance is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
7 tool updates
- First observed
history - First observed
propose - First observed
read - First observed
register - First observed
resolve - First observed
vote - First observed
write
Related MCP Connectors
Tamper-evident audit log service for agent-to-agent transactions
Trust gate for AI agents: multi-model adversarial consensus, signed and verifiable verdicts.
Cryptographically anchored evidence for agents: verified run receipts, proof-gated settlement.
Attestation infrastructure for the agentic economy: signed, independently verifiable verdicts.
Related MCP Servers
AlicenseNot gradedqualityCmaintenanceTamper-evident receipts for AI agent actions. The notary layer for agent-to-agent transactions.23 npm1MIT- FlicenseNot gradedqualityCmaintenanceCryptographically anchored, tamper-evident evidence receipts for AI agents — verified run receipts, existence-at-time proofs, and cited answers from an anchored public record. Remote MCP with proof-gated settlement; attests existence and integrity, never truth.-

Synpareia Trust Toolkitofficial
AlicenseAqualityBmaintenanceVerifiable dealings with other agents: prove what you did, vet who you deal with, bind agreements3643 PyPIApache 2.0- AlicenseNot gradedqualityAmaintenanceEnables AI agents to verify proposed actions through federated adversarial consensus among multiple LLMs, providing Ed25519-signed attestations to prevent hallucinations, unverified counterparties, and compliance risks before execution.2MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.