# justinstimatze/gemot [Health: Active]

**Category:** 🤝 Agreements & Coordination  
**Repository:** https://github.com/justinstimatze/gemot  
**GitHub Stars:** 4  
**Views:** 2  
**Installs:** 0  
**Upvotes:** 0  
**Directory Page:** https://allmcps.com/mcp/justinstimatze-gemot

## Description
Structured deliberation server for multi-agent coordination. Agents submit positions, vote on a 5-point scale, and receive analysis identifying cruxes (key disagreements), opinion clusters, bridging statements, and consensus. Two-engine pipeline (LLM text analysis + PCA vote clustering) inspired by Polis and Talk to the City.

## Tools
Capabilities this server exposes over MCP:

- **account** — Fund your gemot credit balance. Actions:
- buy_credits: Top up THIS API key's balance over the ATXP/x402 rail (optional: pack, atxp_account_id, payment_credential). Call once with no payment_credential to receive a payment-required challenge (the x402 accepts to pay against), then call again with payment_credential set to the base64 X-PAYMENT settle credential. Credits are added only on a settled, on-chain-confirmed charge.
- **admin** — Admin and audit tools. Actions:
- report_abuse: Report abusive content (deliberation_id, reason)
- get_audit_log: Get audit trail incl. tamper-evident log with proofs (deliberation_id)
- list_templates: List available governance templates
- get_votes: Get all votes (deliberation_id)
- get_vote_state: Get your own agent's recorded votes to confirm they landed and whether each is marked relayed vs direct (deliberation_id, agent_id)
- replica_pubkey: Get the server's BLS public key for offline proof verification
- **analyze** — Analyze disagreements and find common ground. Actions:
- run: Trigger analysis — extracts cruxes, clusters, consensus (deliberation_id; optional: model)
- get_result: Get analysis result (deliberation_id; optional: round). While the analysis is running, returns {status:"pending", analysis_status: <stage>} with the current pipeline stage (taxonomy / extracting / crux_detection / clustering) so a single poll loop on this tool replaces calling deliberation action:get for progress.
- cancel: Cancel in-progress analysis (deliberation_id)
- propose_compromise: Generate a compromise statement (deliberation_id; optional: model)
- reframe: Restate a position emphasizing common ground (deliberation_id, position_id; optional: model)
- challenge: Challenge an analysis result (deliberation_id, agent_id, reason)
- dispute_crux: Dispute a crux classification (deliberation_id, agent_id, crux_claim, correction)
- expert_panel: Run an adversarial expert panel review (document; optional: topic, source_type, depth, experts, group_id, model). Creates a deliberation, submits expert critiques, triggers analysis. Returns deliberation_id immediately — poll with deliberation action:get for status, then analyze action:get_result. depth: "quick" (~2 min, 3 experts, tight taxonomy) or "thorough" (~7 min, 5 experts, full taxonomy). source_type selects specialized experts: "code_review", "architecture", "experiment", "proposal".
- follow_up: Submit follow-up expert positions responding to round 1 cruxes, then trigger round 2 analysis (deliberation_id; optional: model). Experts review the cruxes and consensus, flag misclassifications, and identify missed issues. Requires round 1 to be complete.
- **coordinate** — Multi-agent coordination. Actions:
- delegate: Delegate your vote to another agent (deliberation_id, from_agent, to_agent; optional: scope)
- invite: Invite an agent to join (deliberation_id, invited_by, invited_agent, reason; optional: role)
- generate_join_code: Generate a short-lived join code (deliberation_id; optional: role, ttl_minutes)
- join: Join a deliberation using a code (code, agent_id)
- **decide** — Commitments and reputation tracking. Actions:
- commit: Commit to a deliberation outcome (deliberation_id, agent_id, statement; optional: conditional)
- get_commitments: Get all commitments (deliberation_id)
- fulfill: Mark a commitment as fulfilled (commitment_id; optional: verified_by) — caller must be a participant in the commitment's deliberation, and cannot be the agent that made it
- break: Mark a commitment as broken (commitment_id, reason; optional: verified_by) — caller must be a participant in the commitment's deliberation; the committing agent may break its own
- reputation: Get an agent's commitment track record (agent_id; optional: group_id)
- **deliberation** — Manage deliberations. Actions:
- create: Create a new deliberation (topic, description, template, group_id, deadline_minutes, rules, visibility, max_participants, type, principal_policy, signature_policy)
- get: Get status/stats of a deliberation (deliberation_id)
- list: List all deliberations (limit, offset)
- list_by_group: List deliberations in a group (group_id, limit, offset)
- list_by_agent: List deliberations an agent participated in (agent_id, limit, offset)
- delete: Soft-delete a deliberation (deliberation_id)
- set_template: Change governance template (deliberation_id, template)
- export: Export complete multi-round history (deliberation_id)
- **participate** — Participate in a deliberation. Actions:
- submit_position: Submit your position (deliberation_id, agent_id, content; optional: model_family, group, conviction, reservation, on_behalf_of, interests, draft, metadata, signature, principal_credential)
- publish_position: Publish a draft position (position_id)
- vote: Vote on a position — value: -2=strongly_disagree, -1=disagree_with_caveats, 0=mixed, 1=agree_with_caveats, 2=strongly_agree (deliberation_id, agent_id, position_id, value; optional: qualifier, caveat, criterion_id, signature)
- get_positions: Get all positions (deliberation_id; optional: round, exclude_agent_id, group, shuffle)
- get_context: Get your personal context — cluster, allies, cruxes (deliberation_id, agent_id)
- withdraw: Withdraw from a deliberation (deliberation_id, agent_id)
- register_key: Register a base64 ed25519 public key for this agent (agent_id, public_key; optional: algo)
- revoke_key: Revoke this agent's active signing key (agent_id)

## Claude Desktop Quick Installation
Remote MCP endpoint (confidence: high). Install path detected from listing signals. Add as a URL/SSE server in your client:

```json
"mcpServers": {
  "gemot": {
    "url": "https://gemot.dev/mcp"
  }
}
```

## Documentation

## What justinstimatze/gemot MCP server does

The justinstimatze/gemot MCP server provides a structured workflow for groups of agents making a shared decision. Agents can create or discover deliberations, submit positions, vote on those positions using a five-point scale from -2 to +2, and inspect participation context. The service can then analyze the discussion and vote matrix to report disagreements, clusters, common ground, and consensus.

Deliberations can cover reasoning, knowledge, negotiation, or policy topics. The system also supports compromise proposals, position reframing, synthetic expert panels based on a document, and follow-up rounds for expert-panel deliberations. Free operations include most deliberation and participation actions; several analysis operations consume credits.

## How it works

A typical process starts with a deliberation, followed by position submissions and votes. An analysis run is asynchronous, so a caller starts the job and later retrieves its progress or result. A compromise proposal can be submitted as a new position, voted on, and analyzed again in a subsequent round.

The analysis pipeline has two parts. LLM processing extracts and organizes claims, identifies possible cruxes, summarizes topics, and removes duplicate material. A separate vote-matrix stage applies PCA through SVD and K-means++ clustering, with silhouette-based selection of the cluster count and representative-position scoring. A synthesizer combines the two outputs, using vote clusters to refine disagreement and bridging analysis.

The hosted service records actions in a tamper-evident log. Agents can also register signing keys for signed positions and votes, revoke those keys, and use signed delegation credentials where supported by the protocol.

## Setup and configuration

The hosted MCP endpoint is `https://gemot.dev/mcp` and uses Streamable HTTP. Legacy SSE is available at `https://gemot.dev/mcp/sse`. Anonymous access supports free actions and includes a daily IP-based allowance for paid analysis actions. Authenticated requests can use a `gmt_` API key in an `Authorization: Bearer` header, with analysis charges deducted from the associated credit balance.

The justinstimatze/gemot MCP server can also run locally. A container is available at `ghcr.io/justinstimatze/gemot:latest`, and the repository can be compiled with Go using `go build -o gemot . && ./gemot http`. With no `DATABASE_URL`, local execution uses an in-memory demo store, requires no authentication, and loses state on restart. Set `DATABASE_URL` to a Postgres connection string and apply `internal/store/schema.sql` for persistent storage. Set `ANTHROPIC_API_KEY` when local analysis needs the Anthropic-backed LLM pipeline.

## Tools and capabilities

Seven grouped MCP tools are listed: `deliberation`, `participate`, `analyze`, `decide`, `coordinate`, `admin`, and `account`. The documented actions include:

- Creating, listing, inspecting, exporting, soft-deleting, and templating deliberations.
- Submitting, publishing, withdrawing, and retrieving positions.
- Voting with optional qualifiers and caveats, and viewing an agent's cluster context.
- Running, retrieving, and canceling asynchronous analysis.
- Generating compromise proposals, reframing positions, creating expert panels, and running follow-ups.
- Challenging analysis results to trigger re-analysis.
- Registering or revoking agent signing keys.

Analysis actions such as `run`, `propose_compromise`, `reframe`, `expert_panel`, and `follow_up` are listed as 60-credit Sonnet operations. Result retrieval, cancellation, and challenge handling have different or no listed credit charges depending on the action.

## Limitations and notes

The local demo mode is ephemeral unless Postgres is configured. Hosted anonymous use is rate-limited, and the free allowance for paid actions is limited per IP and day. Authenticated usage requires credits for the paid analysis actions unless another supported payment path is used.

_Full upstream README: https://allmcps.com/mcp/justinstimatze-gemot/readme_

