Skip to content

Releases: HrishiKabra/voting-mcp

v0.1.3 — security hardening

Choose a tag to compare

@HrishiKabra HrishiKabra released this 02 Jul 07:20

Input hardening from a full security review (bandit, pip-audit, wheel inspection, manual exploit-class review, live stdio probing):

  • Reject non-finite floats (Infinity/NaN, which JSON parsers accept) on ballot weights and score values — these previously reached the rules and produced nan/inf scores or a silently-wrong winner.
  • Cap ballot weights at 1e12 so no within-bounds sum can overflow to infinity.
  • Bound profile size (1,000 candidates / 100,000 ballots) — the pairwise tally is O(candidates²), an OOM vector.
  • Add SECURITY.md documenting the pure-compute posture.

No known vulnerabilities in dependencies (pip-audit clean); wheel ships only voting_mcp/.

v0.1.2 — paired significance testing + official MCP registry

Choose a tag to compare

@HrishiKabra HrishiKabra released this 02 Jul 06:58

What's new

  • Paired bootstrap significance testing in the benchmark: each rule is now compared to the majority-vote baseline on the per-question accuracy difference (shared question difficulty cancels), reported as a CI on Δ plus a two-sided p-value. On MMLU-Pro this makes the negative findings rigorous — every ranking-consuming rule is significantly below majority vote (p ≤ 0.014) — while opinion_pool's +2.0pp remains suggestive (p = 0.225) at n=200.
  • Listed on the official MCP registry as io.github.HrishiKabra/voting-mcp (server.json included; aggregators such as PulseMCP and Glama index from there).
  • README: related-research link to Optimizing Voting Rules for Social Welfare and Beyond (AAMAS); repository links now surface on PyPI.

Install: uvx voting-mcp · PyPI: https://pypi.org/project/voting-mcp/0.1.2/

voting-mcp 0.1.0

Choose a tag to compare

@HrishiKabra HrishiKabra released this 30 Jun 21:06

First release. An MCP server exposing principled social-choice aggregation rules as tools, plus a reproducible LLM-ensemble benchmark.

Install: uvx voting-mcp · on PyPI: https://pypi.org/project/voting-mcp/

Tools (stdio, pure compute): borda, copeland, condorcet, approval, stv, opinion_pool, plurality, majority, aggregate_rule — strict JSON schemas; ties surfaced as co-winners; explicit no-winner on Condorcet cycles.

Benchmark finding (honest): on MMLU-Pro (hard, 73.5% baseline) the confidence-preserving opinion_pool is the only rule above naive majority vote (+2.0pp; CI overlaps, so suggestive not conclusive), while forcing the distributions into full rankings hurts — borda collapses to 0.472 because the tail of a 10-option ranking is noise. On near-ceiling ARC-Challenge nothing separates. Takeaway: aggregate the confidence, don't force rankings. See RESULTS.md.