Skip to main content
Glama

quorum

Server Details

Attested multi-agent consensus: proposals, votes, and outcomes stamped and traced.

If you are the author of this connector, you can claim ownership with GitHub, an HTTP challenge, or a DNS record. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
terradev-cloud/quorum-mcp
GitHub Stars
0

TDQS

A3.9/5.0

Scored across 7 tools

Disambiguation5/5

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.

Naming Consistency5/5

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.

Tool Count5/5

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.

Completeness4/5

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 tools
historyAInspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
filterNoDefault all.
proposal_idYes

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesHuman-readable proposal id, e.g. pr-review-2026-09-18. Letters, digits, . _ - only; becomes the key for all subsequent calls.
quorumNoMin percent of expected voters that must vote before resolution. Default 100.
votersYesExpected voter identities. Only these may vote; missing voters at resolution are recorded abstained.
api_keyNoOptional. 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.
optionsNoNamed options. Default ["yes","no"].
questionYesThe thing being decided.
algorithmNoAggregation algorithm. Default approval -- robust general-purpose choice with no strategic incentive.
namespaceNoOptional tenant namespace. The proposal id becomes '<namespace>:<name>' -- different teams can reuse names without colliding. Same charset as name.
thresholdNoSupermajority only: required share of votes cast, percent. Default 66.67.
descriptionNoOptional context for the audit trail.
deadline_minutesYesMinutes until voting closes.

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyNoOptional: only entries with this key.
proposal_idYes

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
api_keyYesYour Quorum API key -- chosen by you, presented on propose, never stored.
telinea_keyYesYour Telinea API key -- stored encrypted, used to authenticate span pushes.

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
proposal_idYes

TDQS

A4.3/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
valueYesBallot in the algorithm's format.
voterYes
reasoningNoFree-text rationale, kept in the audit trail.
proposal_idYes

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesKey other agents use to filter this entry on read.
valueYesAny JSON value.
authorNoOptional author identity, recorded and attested.
proposal_idYes

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

  1. 7 tool updates
    • First observedhistory
    • First observedpropose
    • First observedread
    • First observedregister
    • First observedresolve
    • First observedvote
    • First observedwrite

Related MCP Connectors

Related MCP Servers

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.