voting-mcp
Server Quality Checklist
Latest release: v0.1.3
- Disambiguation4/5
Most tools are distinct voting methods with clear descriptions. However, `aggregate_rule` duplicates the functionality of the per-rule tools, potentially causing confusion about which to use.
Naming Consistency4/5Names are all lowercase and based on voting methods, which is consistent. However, the pattern is not uniform: some are single words (e.g., `borda`) while others use underscores (e.g., `opinion_pool`), and `aggregate_rule` breaks the naming convention of referring to a specific rule.
Tool Count5/5With 9 tools covering a variety of common voting rules plus a dispatch tool, the count is well-scoped for a voting MCP server. It is neither too sparse nor overly numerous.
Completeness3/5The set includes major voting methods but lacks utility tools for managing ballots or providing rule descriptions. As a stateless tallying server, it covers core rules well but could be more complete with additional supporting tools.
Average 3.7/5 across 9 of 9 tools scored. Lowest: 3.1/5.
See the Tool Scores section below for per-tool breakdowns.
- No community issues in the last 6 months
- 16 commits in the last 12 weeks
- Last stable release on
- No critical vulnerability alerts
- No high-severity vulnerability alerts
- No code scanning findings
- CI is passing
This repository is licensed under MIT License.
This repository includes a README.md file.
No tool usage detected in the last 30 days. Usage tracking helps demonstrate server value.
Tip: use the "Try in Browser" feature on the server page to seed initial usage.
Add a glama.json file to provide metadata about your server.
If you are the author, simply .
If the server belongs to an organization, first add
glama.jsonto the root of your repository:{ "$schema": "https://glama.ai/mcp/schemas/server.json", "maintainers": [ "your-github-username" ] }Then . Browse examples.
Add related servers to improve discoverability.
How to sync the server with GitHub?
Servers are automatically synced at least once per day, but you can also sync manually at any time to instantly update the server profile.
To manually sync the server, click the "Sync Server" button in the MCP server admin interface.
How is the quality score calculated?
The overall quality score combines two components: Tool Definition Quality (70%) and Server Coherence (30%).
Tool Definition Quality measures how well each tool describes itself to AI agents. Every tool is scored 1–5 across six dimensions: Purpose Clarity (25%), Usage Guidelines (20%), Behavioral Transparency (20%), Parameter Semantics (15%), Conciseness & Structure (10%), and Contextual Completeness (10%). The server-level definition quality score is calculated as 60% mean TDQS + 40% minimum TDQS, so a single poorly described tool pulls the score down.
Server Coherence evaluates how well the tools work together as a set, scoring four dimensions equally: Disambiguation (can agents tell tools apart?), Naming Consistency, Tool Count Appropriateness, and Completeness (are there gaps in the tool surface?).
Tiers are derived from the overall score: A (≥3.5), B (≥3.0), C (≥2.0), D (≥1.0), F (<1.0). B and above is considered passing.
Tool Scores
- Behavior3/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that no winner occurs if no candidate exceeds 50% first-choice weight, and that 'winners' is empty with a 'note' explanation. However, it does not address tie-breaking behavior (though a tie_break parameter exists) or handling of non-ranking ballots, which the schema allows. Given no annotations, the description provides basic behavioral context but is incomplete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise at two sentences, stating the core rule and a key distinction. It is front-loaded with the primary purpose and avoids unnecessary words. Every sentence contributes value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness2/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description mentions the no-winner case and a 'note' explanation, but it omits important details like tie-breaking behavior (despite the tie_break parameter) and the fact that the profile can accept ballot types beyond rankings (approval, score, distribution), which the schema shows. The tool's output schema is noted as present, so return values are partly covered, but the description's scope is too narrow for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters1/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage for top-level parameters (profile, tie_break, seed), and the description does not add any meaning to these parameters. It mentions 'ranking ballots' but does not explain the profile parameter or the tie_break/seed options. The description fails to compensate for the lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool implements a strict-majority rule for ranking ballots, defines the win condition (>50% first-choice weight), and explicitly distinguishes it from plurality, a sibling tool. This provides a specific verb+resource and differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines2/5Does the description explain when to use this tool, when not to, or what alternatives exist?
While it mentions being distinct from plurality, it does not provide explicit guidance on when to use majority over other sibling tools like approval, borda, or condorcet. There is no 'when-to-use' or 'when-not-to-use' advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior3/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description discloses the core algorithm and that it errors on non-ranking ballots. However, it does not describe tie-breaking behavior, output format, or other edge cases.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three short sentences, front-loading the algorithm and key property, with no redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness2/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of a voting rule tool with multiple parameters and an output schema, the description lacks details on return values, tie-breaking, and the seed parameter, leaving gaps for the agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters2/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It only indirectly references the 'profile' parameter by mentioning ranking ballots, but ignores 'tie_break' and 'seed' entirely.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose4/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool computes Copeland scores from pairwise wins/ties and is Condorcet-consistent. It does not explicitly differentiate from sibling tools like 'condorcet', but the unique scoring mechanism is implied.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines3/5Does the description explain when to use this tool, when not to, or what alternatives exist?
It mentions Condorcet-consistent and that it only works with ranking ballots, but does not explicitly specify when to use this over alternatives like 'condorcet' or 'borda'. The error condition for non-ranking ballots provides some guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior2/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must carry full behavioral context. It only explains the dispatch nature, omitting details about side effects, auth requirements, or idempotency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is highly concise with two sentences, front-loading the core idea and listing the enum values efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness2/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 4 parameters, no schema descriptions, and an output schema, the description fails to provide sufficient context about input structure, return values, or usage examples, making it incomplete for effective agent use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters2/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description only explains the 'rule' parameter (listing its possible values). It does not describe 'profile', 'seed', or 'tie_break', leaving essential parameters undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool applies any rule by name using an enum, acting as a dispatch entrypoint. It distinguishes itself from sibling tools by noting equivalence to individual rule tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines3/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage as an alternative to per-rule tools but does not provide explicit guidance on when to choose this tool over siblings or any prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior3/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explains the core behavior (counting first-choice votes) but does not disclose tie-breaking behavior despite the tie_break parameter. No annotations exist, so description carries full burden; it partially reveals outcomes but omits edge cases.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness4/5Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with key information. No redundancy; however, it could be expanded slightly to cover more details without losing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness2/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite a complex input schema with multiple ballot types and a tie_break parameter, the description provides minimal guidance. It assumes agents know plurality only uses first choices from ranking ballots, and does not address other ballot types or edge cases. With an output schema present, completeness is acceptable for basic use but insufficient for nuanced cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters2/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so description must compensate. It only relates to the 'profile' parameter by mentioning ranking ballots, but ignores 'seed' and 'tie_break' entirely. This leaves important parameters undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool computes plurality baseline using ranking ballots, with a specific rule: most first-choice votes wins. This distinguishes it from sibling tools like approval or borda by specifying the ballot type and voting method.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines3/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use (plurality voting) but provides no explicit guidance on when to choose this tool over alternatives like approval or borda. No exclusions or alternatives mentioned, which limits its helpfulness for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries the burden. It discloses error conditions (non-ranking ballots) and behavior in cycles (empty winners, null winner, note). This is sufficient behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core purpose, no extraneous content. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness3/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (Condorcet rule, cycles, error handling) and the presence of an output schema, the description covers the main points but lacks parameter explanations. It is adequate but not exhaustive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters2/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description should explain all parameters. It only mentions that ballots must be rankings, but does not describe 'tie_break' or 'seed', leaving those unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool computes the Condorcet winner from ranking ballots, with a specific verb and resource. It distinguishes itself from siblings like plurality or approval by specifying the voting method.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines3/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly state when to use this tool over alternatives. It implies it only works with ranking ballots, but no direct comparison with sibling tools is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior3/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses that confidence is preserved, returns scores and winner, and enforces distribution constraints. However, it does not detail behavior for weighted ballots, tie-breaking, or seed parameter effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with three sentences, front-loading the core purpose and key constraints. Every sentence adds essential information without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness3/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (3 parameters, nested types) and that it has an output schema, the description covers the main operation and ballot constraint but omits important context about seed, tie_break, and weight support, leaving some gaps for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters2/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the description only partially compensates by explaining the profile's ballot structure. Parameters like seed and tie_break are not described, leaving the agent to rely on the schema's $defs which are not explicitly tied to the tool's usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool performs a linear opinion pool over probability-distribution ballots, specifies the output format (scores and winner), and distinguishes it from sibling tools by requiring distribution ballots only.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implicitly guides usage by emphasizing that ballots must be distribution ballots (summing to 1) and will error otherwise. This helps differentiate from sibling tools that handle other ballot types, but it does not explicitly state when not to use or mention alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It details the iterative process: rounds, counting top preferences, strict majority win, elimination of fewest-voted with lexicographic tie-breaking, transfer of ballots, and exhaustion. It also mentions clone-resistance. This is thorough, though it could elaborate on edge cases like all candidates tied or handling of exhausted ballots.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, using three short paragraphs that front-load the purpose and then succinctly explain the algorithm. Every sentence earns its place; no filler or redundancy. It is well-structured for quick consumption.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of STV and the presence of an output schema, the description adequately covers the algorithm, constraints, and tie-breaking behavior. It does not mention the return format, but that is unnecessary due to output schema availability. It could be improved by noting that only ranking ballots are accepted, but that is already stated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters2/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 3 parameters (profile, tie_break, seed) but the description adds no information about them beyond what is in the schema. The description does not explain the effect of tie_break or seed, nor clarify that profile must contain ranking ballots. Schema description coverage is 0%, so the description fails to compensate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it is for 'Single-winner STV / instant-runoff over ranking ballots.' This explicitly identifies the specific voting rule and ballot type, distinguishing it from sibling tools like plurality, approval, borda, etc. The verb 'compute' is implied, but the purpose is unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines3/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when a single winner is desired from ranking ballots via STV/IRV. It states 'Errors if any ballot is not a ranking,' indicating a constraint. However, it does not explicitly state when to use this tool versus alternatives (e.g., for multi-winner contexts or when ballots are not rankings), providing only implicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description covers key behaviors: accepts approval ballots, treats empty approval set as valid, and errors on non-approval ballots. However, it does not mention tie-breaking behavior (despite a tie_break parameter) or the seed parameter's effect.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences with no wasted words. It front-loads the core purpose, uses a code block for clarity on ballot format, and every sentence adds unique value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness3/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (voting rule) and the existence of an output schema, the description covers the main input requirement but omits the optional parameters (seed, tie_break). It also fails to explain handling of ballot weights or tie-breaking scenarios, leaving gaps for a thorough understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters2/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It only hints at the profile parameter ('Consumes approval ballots') and neglects to explain the 'seed' and 'tie_break' parameters at all. The description adds minimal meaning beyond the schema's titles.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Approval voting: each candidate scores the total weight approving it,' clearly specifying the voting rule and its mechanism. It distinguishes from other sibling tools by explicitly noting it only consumes approval ballots, contrasting with other rules.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states 'Consumes approval ballots... Errors if any ballot is not approval,' clearly indicating the tool is only appropriate when all ballots are approval type. It does not explicitly name alternatives, but the sibling tool names imply other rules for different ballot types.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior5/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses behavior: scoring method, handling of truncated ballots (average of remaining points), and error condition if ballots are not rankings.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
Four concise sentences, each serving a distinct purpose: function definition, contrast role, truncated ballot handling, and error condition. No extraneous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists (not shown), return values need not be explained. The description covers input constraints and key behaviors well, though it omits parameter details for seed and tie_break.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description provides critical context: only ranking ballots are valid, and scoring details. However, it does not explain the 'seed' or 'tie_break' parameters, which have defaults but remain undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it performs Borda count on ranking ballots, explains the scoring rule (top gets m-1), and distinguishes from siblings by noting it is Condorcet-inconsistent and clone-sensitive, useful as a contrast rule.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
Implicitly guides usage by specifying input must be ranking ballots only and noting its role as a contrast rule, but lacks an explicit statement of when to prefer Borda over siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GitHub Badge
Glama performs regular codebase and documentation scans to:
- Confirm that the MCP server is working as expected.
- Confirm that there are no obvious security issues.
- Evaluate tool definition quality.
Our badge communicates server capabilities, safety, and installation instructions.
Card Badge
Copy to your README.md:
Score Badge
Copy to your README.md:
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/HrishiKabra/voting-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server