Vote-gated change control for WithVibe β the agent proposes a change via MCP; team approves first.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
Turn any WithVibe env into a team-voted workspace. When this plugin is enabled, the AI doesn't apply a prompt straight away β it opens a proposal the team votes on, and only an approved proposal gets built. Enable it on any env and that env becomes a vote-gated sandbox.
It's content-agnostic β it knows nothing about what the env contains. Whatever the env is (an app, a doc, a 3D scene, a config), enabling Voter makes every change go through the team first. Multiple envs = multiple independent boards.
WithVibe auto-injects an enabled plugin's MCP tools into the agent's turn. Voter uses that to gate prompts without any change to WithVibe core:
voter_propose_change(prompt) β opens a proposal and tells the agent to
not touch anything yet.voter_await_decision(proposal_id) β long-polls the vote. The platform's
MCP bridge caps a single tool call at 60s, so this returns after ~45s with
STILL_VOTING and the agent simply calls it again until it's terminal.APPROVED, the agent makes the change and calls voter_record_change.
On REJECTED / EXPIRED it makes no change.Meanwhile every teammate votes in the plugin's own UI panel β independent of the agent. The gate is agent-cooperative (enforced via tool instructions), which is the right trade-off for a friendly workflow; hardening it to be unbypassable is a later option that would need a small core hook.
| Tool | Purpose |
|---|---|
voter_propose_change | Open a proposal for the requested change. Agent must call this instead of editing. |
voter_await_decision | Long-poll the team's verdict (APPROVED / REJECTED / EXPIRED / STILL_VOTING). |
voter_record_change | Record what shipped after applying an approved change. |
voter_report_failure | Mark an approved change as failed (e.g. build broke). |
voter_status | Show the current board: proposals in voting + recently resolved. |
Four tables in the plugin's isolated Postgres schema (shared-postgres storage):
settings (vote window + thresholds), proposal, vote, feed_event.
Resolution rule: a proposal passes when approvals reach the threshold, fails when rejections reach the threshold, and at the deadline the majority wins (ties expire). Defaults: 600s window, 1 approval / 1 rejection β tune them in the panel.
For the marketplace this is published multi-arch as ghcr.io/withvibe/voter:<version>.
Apache License 2.0. See NOTICE for attribution.
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/withvibe-voter)<a href="https://allmcps.com/mcp/withvibe-voter"><img src="https://allmcps.com/api/badge/withvibe-voter?style=directory" alt="Withvibe Voter on AllMCPs" /></a>