Quorum

Majority vote among LLM agents fails on disputed questions because agents trained on overlapping data share systematic blind spots, they are not the…

Community: Submitted by a user or imported; check the owner before granting accessOnlineNo sign-inGlobalFreeCan modify data

What it can do

  • Register: One-time account setup: bind a Quorum API key to a Telinea API key. The Telinea key is stored encrypted under a key derived from the Quorum key (AES-256-GCM, HKDF) -- the Quorum key itself i
  • Propose: 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
  • Write: 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.

What data it sees

Do you need an account

No: the server works without sign-in

Majority vote among LLM agents fails on disputed questions because agents trained on overlapping data share systematic blind spots, they are not the independent voters... When agents do decide together, the decision process is invisible. Quorum is a complete primitive: algorithm, plus state, plus provenance.

7 Tools.

  1. register— 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. Skip this tool entirely for anonymous use, propose works without an api_key, just with no span streaming.

  2. propose — open a proposal: api_key (from register), name (becomes the proposal id), question, voters (expected identities), deadline_minutes.

Optional: options (default ["yes","no"]), algorithm (default approval), quorum (min % of voters, default 100), threshold (supermajority share, default 66.67), description. Returns the proposal id, creation attestation id, deadline, and blackboard URI.

  1. write — append key/value to the proposal's blackboard, with optional author. Writes are appended, never replaced — the full ordered history is preserved and attested.

  2. read — read the blackboard: every write in order with timestamp, author, and attestation id. Optional key filter. The deliberation record before voting.

  3. vote — submit a ballot from an expected voter identity, with optional reasoning (stored in the attested record, never affects the outcome). Ballot shape depends on the algorithm — see below. Duplicate votes and post-deadline votes are rejected with structured errors.

  4. resolve — apply the algorithm and attest the outcome. Callable once quorum is met (or after the deadline); also fires automatically when the deadline passes with quorum. Idempotent. Condorcet cycles and missed supermajority thresholds return co_winners with status unresolved, genuine ambiguity is surfaced, never hidden.

  5. history — the complete attested record: creation, every write, every vote with reasoning, the outcome. Optional filter: all | writes | votes | outcome. The compliance artifact.

Disclaimer: Implementers are responsible for what they put in payloads. Usage in production systems is at the implementer's risk.

How to connect

How to connect Quorum to Claude

The server address to paste into Claude settings:

https://quorum-mcp--wolfendentheo.run.tools

  1. Open Claude (claude.ai or the desktop app).
  2. Go to Settings → Connectors.
  3. Click Add custom connector.
  4. Paste the server address copied below into Remote MCP server URL and click Add.
  5. In a chat, click + → Connectors and switch the new connector on.

Custom connectors are available on Free, Pro, Max, Team and Enterprise plans (Free is limited to one). On Team and Enterprise an organization Owner adds the connector first under Organization settings → Connectors.

Authorization

After you click Add, a sign-in window for the service opens. Sign in with your own account and approve access. Claude never sees your password.

How to connect Quorum to ChatGPT

The server address to paste into ChatGPT settings:

https://quorum-mcp--wolfendentheo.run.tools

  1. Open ChatGPT in a browser (chatgpt.com). A Plus, Pro, Business, Enterprise or Edu plan is required.
  2. Turn on developer mode once: Settings → Apps → Advanced settings → Developer mode.
  3. Open Settings → Connectors and click Create.
  4. Fill in the form: Name (anything), Description (one line about what the service does), MCP server URL (copy it below).
  5. Under Authentication choose OAuth if the service requires sign-in, otherwise None. Click Create.
  6. In a new chat open + → Apps/Connectors and enable the connector.

OpenAI has renamed this section before (Connectors → Apps/Plugins). If the label differs, search settings for "developer mode". On Business/Enterprise workspaces an admin must allow custom connectors first.

Authorization

On first use ChatGPT opens the service's sign-in window. Sign in and approve access.

How to connect Quorum to Cursor

The server address to paste into Cursor settings:

https://quorum-mcp--wolfendentheo.run.tools

Fastest: click Open in Cursor below and confirm the prompt.

Manually:

  1. In Cursor open Settings → Cursor Settings → MCP and click Add new global MCP server.
  2. Paste the JSON copied below into ~/.cursor/mcp.json (per project: .cursor/mcp.json in the repo root).
  3. Save the file. The server appears in the MCP list; authorize it there if asked.

Authorization

If the service needs sign-in, an authorize button appears next to the server in the MCP list.

Server tool list (7)

Raw names from tools/list. Only developers need these.

registerOne-time account setup: bind a Quorum API key to a Telinea API key. The Telinea key is stored encrypted under a key derived from the Quorum key (AES-256-GCM, HKDF) -- the Quorum key itself is never stored. Every span for this account's proposals is then pushed with the stored Telinea key, standard OTLP bearer auth.
proposeOpen 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.
writeAppend 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.
readRead a proposal's blackboard: every write in order with timestamp, author, and attestation id -- the complete deliberation record, or filtered to one key.
voteSubmit 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.
resolveCompute 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.
historyThe 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.