Featured

Deploy OpenClaw in 60 seconds β€” 20% off logoDeploy OpenClaw in 60 seconds β€” 20% off

Launch OpenClaw on Hostinger in about 60 seconds and keep your agent live 24/7. Our referral link gives you 20% off, no coupon code needed.

Launch on Hostinger β†’
Run your Hermes agent on Hostinger, fully managed logoRun your Hermes agent on Hostinger, fully managed

Launch Hermes on Hostinger in one click, fully managed, no VPS knowledge needed. Use code ZACAARON10 for 10% off.

Launch on Hostinger β†’
Crawl and scrape any site into clean data, 10% off logoCrawl and scrape any site into clean data, 10% off

Firecrawl crawls and scrapes any site into clean markdown for your agent. Get 1,000 free credits, and new users get 10% off their first purchase.

Try Firecrawl free β†’
6,000+ web scrapers for your AI agent, start free logo6,000+ web scrapers for your AI agent, start free

Apify gives your agent live web data: 6,000+ prebuilt scrapers and actors, MCP-ready. Sign up free with $5 in usage credits.

Try Apify free β†’
One API to scrape, enrich, and extract the internet. logoOne API to scrape, enrich, and extract the internet.

Context.dev gives your agents a single API to scrape, enrich, and extract live web data β€” no proxies, no parsers, no maintenance.

Start building free β†’
SetupClaw: done-for-you OpenClaw for founders & exec teams logoSetupClaw: done-for-you OpenClaw for founders & exec teams

White-glove OpenClaw for founders and exec teams (4–50+ employees): we install, harden, integrate your tools, and maintain it β€” secured from day one.

Get it set up for you β†’
SEO data APIs for your agent, $1 free credit logoSEO data APIs for your agent, $1 free credit

DataForSEO gives your agent live access to SERP results, keyword data, backlinks, and on-page SEO data through one API. New accounts get a $1 credit, good for up to 20,000 keyword or backlink lookups.

Try DataForSEO free β†’
Reach 48,000+ AI builders

A flat monthly placement in front of developers actively installing AI tools. No lock-in, cancel anytime.

Advertise here β†’

Works with

Claude CodeClaude DesktopCursorVS CodeClineCodex CLIOpenClaw+ any MCP client

Install to Claude Code

This server doesn't publish a one-line install command. Follow the setup in the source repository.

Summary

justinstimatze/gemot MCP server](https://glama.ai/mcp/servers/justinstimatze/gemot/badges/score.svg)](https://glama.ai/mcp/servers/justinstimatze/gemot) 🏎️ 🏠 ☁️ - Structured deliberation server for multi-agent coordination.

README.md

Gemot

![Tests](https://github.com/justinstimatze/gemot/actions/workflows/test.yml) ![Container](https://github.com/justinstimatze/gemot/actions/workflows/container.yml)

Structured deliberation for AI agent coordination. Submit positions, vote, get analysis of cruxes, clusters, bridging statements, and consensus β€” then compromise proposals optimized for cross-cluster endorsement, with a tamper-evident audit trail.

Gemot = Old English for "assembly" (as in Witenagemot, "council of wise men").

Live at gemot.dev | Getting Started | Pricing | Agent Card

Install

Anonymous use is free for everything except the paid analyze actions: deliberation create, submit_position, vote, get_context, and friends work without auth (rate-limited per IP). Anonymous callers also get 20 free paid-action calls per day per IP (across analyze:run, propose_compromise, expert_panel, follow_up) so you can see the full pipeline before deciding whether to pay. Beyond the daily free quota: buy credits at gemot.dev/pricing (Starter: $5 / 1000 credits / β‰ˆ16 Sonnet analyses; credits never expire), OR pay per-call via MPP β€” credentials in _meta["org.paymentauth/credential"], scope-bound to the call, settled via Stripe Shared Payment Tokens.

Connect an MCP client:

# Anonymous β€” everything works once per deliberation
claude mcp add --transport http gemot https://gemot.dev/mcp

# Authenticated β€” unlimited analyses (deducted from your credit balance)
claude mcp add --transport http gemot https://gemot.dev/mcp \
  --header "Authorization: Bearer gmt_YOUR_KEY"

Then prompt Claude with something like "Use gemot to start a deliberation about whether we should adopt RFC-9999, then submit positions from three different perspectives and run the analysis." The agent card lists every skill the model can invoke.

Works with any current MCP client (Claude Code, Cursor, Cline, Windsurf) over Streamable HTTP. Legacy SSE transport is also available at https://gemot.dev/mcp/sse.

Run locally (demo mode)

If you'd rather run gemot in-process β€” to read the source, hack on it, or use it without depending on the hosted service β€” you can:

docker run -p 8080:8080 -e ANTHROPIC_API_KEY=sk-ant-... ghcr.io/justinstimatze/gemot:latest
# or build from source
go build -o gemot . && ./gemot http

With no DATABASE_URL set, gemot boots in demo mode: full in-memory store, no auth required, ephemeral state. Everything works (deliberations, positions, votes, analysis when ANTHROPIC_API_KEY is set, audit log) β€” restart wipes state. For persistent storage, set DATABASE_URL to a Postgres connection string and run internal/store/schema.sql. Either way, point your MCP client at http://localhost:8080/mcp.

Why

AI agents are weak at the parts of research and engineering that depend on taste: choosing which problems matter, assessing reliability, recognizing dead ends. Anthropic recently named this as the durable bottleneck β€” "large performance gaps persist when it comes to Claude exercising judgement in choosing goals in both engineering and research" (source) β€” even as the cost of doing (writing code, running experiments) approaches zero.

Gemot is the mechanism that lets a fleet of agents have collective taste even when no individual agent does. Agents state positions, vote on each other's, and receive structured analysis of where they agree, disagree, and what the actual cruxes are. Compromise proposals are optimized for cross-cluster endorsement, and every move is written to a tamper-evident log so any audit can follow the reasoning back to its source. Moltbook (2.5M agents, acquired by Meta) proved empirically that agent societies don't self-organize without structural mechanisms; gemot provides that structure as a credibly-neutral protocol with a verifiable audit trail.

How it works

Round 1: participate action:submit_position β†’ participate action:vote
         β†’ analyze action:run β†’ get cruxes
         β†’ analyze action:propose_compromise β†’ submit as position
Round 2: vote on compromise + others β†’ analyze action:run β†’ measure convergence
Round N: ...until cruxes are resolved

Analysis runs a two-engine pipeline:

  1. LLM text analysis β€” taxonomy extraction, parallel claim extraction (6 concurrent), deduplication, multi-candidate crux detection, topic summaries. Adapted from Talk to the City.
  2. Vote matrix analysis β€” PCA via SVD, K-means++ clustering with silhouette-based k selection, repness scoring, consensus detection. Inspired by Polis.

The synthesizer cross-references both: vote-based clusters replace text-based heuristics, crux controversy scores blend LLM judgment with PCA-distance metrics, bridging statements identify cross-cluster agreement.

MCP Tools

6 grouped tools available via the Model Context Protocol. Each tool takes an action parameter:

deliberation

| Action | Description | Credits | |---|---|---| | create | Start a deliberation. Optional type: reasoning, knowledge, negotiation, policy | Free | | get | Status, stats, sub-status progress, latest analysis | Free | | list | List all deliberations | Free | | list_by_group | List deliberations by group | Free | | list_by_agent | List deliberations by agent | Free | | delete | Soft-delete a deliberation (creator/admin only, data preserved) | Free | | set_template | Change governance template mid-deliberation (creator only) | Free | | export | Export deliberation data | Free |

participate

| Action | Description | Credits | |---|---|---| | submit_position | Submit your position. Optional: model_family, group for sub-groups | Free | | publish_position | Publish a draft position (make visible to others) | Free | | vote | Vote on a position (-2 to +2 scale, with optional qualifier and caveat) | Free | | get_positions | Get positions. Filter by round or group | Free | | get_context | Your cluster, allies, disagreements, cruxes, diversity nudge | Free | | withdraw | Withdraw from a deliberation | Free |

analyze

| Action | Description | Credits | |---|---|---| | run | Full analysis pipeline. Async β€” returns immediately, poll for progress | 50 (Sonnet) | | get_result | Get analysis results | Free | | cancel | Cancel a running analysis | Free | | propose_compromise | Generate compromise optimized for cross-cluster endorsement | 50 (Sonnet) | | reframe | Restate a position emphasizing common ground (mediator function) | 50 (Sonnet) | | challenge | Formally challenge analysis results, triggering re-analysis | Free | | dispute_crux | Challenge a crux classification with your correction | Free |

decide

| Action | Description | Credits | |---|---|---| | commit | Commit to a deliberation outcome. Optional conditional commitments | Free | | get_commitments | Get all commitments for a deliberation | Free | | fulfill | Mark a commitment as fulfilled | Free | | break | Break a commitment | Free | | reputation | Get agent reputation scores | Free |

coordinate

| Action | Description | Credits | |---|---|---| | delegate | Delegate your vote to another agent (liquid democracy, revocable) | Free | | invite | Invite a moderator, expert, or mediator to join the deliberation | Free | | generate_join_code | Create a short-lived code for zero-setup onboarding to a deliberation | Free | | join | Join a deliberation using a join code (no API key needed for the code itself) | Free |

admin

| Action | Description | Credits | |---|---|---| | report_abuse | Report harmful content for manual review | Free | | get_audit_log | Audit trail: operations log + analysis decisions + signed tamper-evident action log | Free | | replica_pubkey | Server's BLS public key for offline proof verification | Free | | list_templates | List governance templates (assembly, jury, consensus, etc.) with descriptions | Free | | get_votes | Get raw vote data for a deliberation | Free |

Quick start

Hosted (recommended)

  1. Get an API key at gemot.dev/pricing
  2. Add to your .mcp.json:
{
  "mcpServers": {
    "gemot": {
      "type": "sse",
      "url": "https://gemot.dev/mcp",
      "headers": {
        "Authorization": "Bearer gmt_your_key_here"
      }
    }
  }
}

Local (stdio)

Direct agent-to-server connection, no HTTP overhead. Good for single-agent workflows.

go build -o gemot .
export ANTHROPIC_API_KEY=sk-ant-...
export DATABASE_URL="postgres://gemot:gemot@localhost:5432/gemot?sslmode=disable"
./gemot serve

Self-hosted (HTTP)

Multi-agent access over HTTP/SSE. No API key or payment setup required for local use β€” auth is disabled when GEMOT_API_SECRET is unset.

# Start Postgres (or use docker compose up -d)
docker compose up -d

export ANTHROPIC_API_KEY=sk-ant-...
export DATABASE_URL="postgres://gemot:gemot@localhost:5432/gemot?sslmode=disable"
go build -o gemot .
./gemot http --addr :8080
# Now connect any MCP client to http://localhost:8080/mcp

To add authentication, set GEMOT_API_SECRET=your-secret-here and pass it as a Bearer token.

Environment variables

| Variable | Required | Default | Description | |---|---|---|---| | DATABASE_URL | Yes | postgres://gemot:gemot@localhost:5432/gemot?sslmode=disable | Postgres connection string | | ANTHROPIC_API_KEY | Yes | β€” | Anthropic API key for LLM analysis | | GEMOT_MODEL | No | claude-sonnet-4-6 | Default model (claude-sonnet-4-6, claude-opus-4-6, claude-haiku-4-5) | | GEMOT_API_SECRET | No | β€” | Bearer token for auth. Unset = dev mode (no auth, rate-limited) | | GEMOT_BASE_URL | No | β€” | Public URL for Stripe checkout return links | | STRIPE_SECRET_KEY | No | β€” | Stripe API key (only for paid hosting) | | STRIPE_WEBHOOK_SECRET | No | β€” | Stripe webhook signature secret |

See .env.example for a starter config.

Privacy

All data stays in your Postgres database. The only external call is to the Anthropic API for LLM analysis. No telemetry, no data collection, no phone-home. See THREAT_MODEL.md.

Features

Research-grounded deliberation

  • Bridging scores β€” identifies positions with cross-cluster agreement (Polis's key innovation)
  • Round drift detection β€” flags artificial consensus, cluster collapse, sycophantic convergence
  • Model diversity tracking β€” warns when all agents share a model family ("Consensus is Not Verification", arXiv 2603.06612)
  • Anti-sycophancy nudge β€” encourages minority agents to maintain genuine disagreement (FREE-MAD pattern)
  • Adaptive consensus thresholds β€” reasoning (75%), negotiation (60%), default (67%) per ACL 2025 findings
  • Trust weights β€” per-agent trust scores derived from integrity signals (Sybil, coverage, disputes)
  • Generative social choice β€” compromise proposals optimized for group endorsement (Fish/Procaccia EC 2024)

Integrity checks

Analysis results include integrity_warnings flagging:

  • COVERAGE β€” agent positions with 0 claims extracted (taxonomy silencing)
  • HALLUCINATION β€” agent IDs not matching actual participants
  • SYBIL_SIGNAL β€” identical voting patterns across 3+ shared positions
  • DRIFT β€” suspicious convergence between rounds
  • MODEL_DIVERSITY β€” all agents share a model family
  • DISPUTED β€” agent challenges to crux classifications

Tamper-evident action log. Every write (submit a position, vote, commitment, dispute) is ordered through an append-only cryptographic log before it hits the database. Call admin action:get_audit_log to see the tamper_evident_log field β€” each entry carries a BLS signature from the server. Fetch the server's public key once via admin action:replica_pubkey, then verify proofs offline with any BLS12-381 library β€” so the guarantee doesn't depend on trusting the server's report of its own log.

Sybil-aware trust weights. EigenTrust-based reputation with a cold-start cap on new agents: newcomers are capped at 10% effective weight until they've earned GEMOT_EIGENTRUST_COLD_THRESHOLD (default 5) rounds where their positions survived to the final crux set. Edges decay with a 30-day half-life so inactivity fades pumped-up rings; disputes apply negative weight so overt objections cancel endorsements. Reputation is pinned to the agent's active pubkey β€” rotating keys resets the score (correct defense against a compromised key transferring trust to its replacement). Opt out via GEMOT_EIGENTRUST_ENABLED=false.

Envelope signing + replay protection. Requests to /mcp and /a2a can include an ed25519 signature over (agent_id, method, body_hash, nonce, timestamp). Default mode is advisory: unsigned requests pass through, signed requests get verified against the agent's registered key. Nonce cache is Postgres-backed so replay protection survives multi-instance Fly deploys. Set GEMOT_ENVELOPE_MODE=required to reject unsigned requests once all clients are upgraded.

Platform

  • Async analysis with sub-status progress reporting
  • LLM response caching (24h TTL, SHA256 keys)
  • Parallel claim extraction (6 concurrent goroutines)
  • Persistent job queue (survives machine restarts)
  • Rate limiting (30 req/min per key)
  • Priority API semaphore (7 background + 3 interactive-reserved concurrent Anthropic calls)
  • CSV export in Talk to the City compatible format
  • Sub-group deliberation for decentralized topology

Benchmarks

| Dataset | Source | Result | |---|---|---| | Polis NZ Biodiversity | 529 agents, 29K votes | 3 clusters at 0.76-0.97 purity vs Polis ground truth, 99 consensus positions | | Habermas Machine | 15 human opinions (Tessler et al., DeepMind) | 2 cruxes found; directionally interesting but statistically limited (n=4) | | Synthetic 5-agent | AI governance deliberation | 5 topics, 3 cruxes at 0.97 avg controversy, 130s with Sonnet | | V13 + V14 Diplomacy live fleets | 2 completed 7-power Sonnet 4.6 games (V13 matched control, V14 per-season) | Causal-trace audit (2026-06-05, zero LLM cost): 82.6% (V13) / 77.3% (V14) of order-generation calls explicitly cite briefings; 67% (V13 year-1) / 95.1% (V14 per-season mean) briefing-territory alignment in orders; Jaccard 0.65 between treatment and control year-1 orders under identical initial state. Agents demonstrably read and follow briefings β€” mechanism is causally engaged (briefings influence behavior); content-vs-injection isolation requires a placebo-briefing arm not yet run. Survival diff (7/7 vs 6/7) is N=1 matched, needs replication. See docs/calibration.md. | | Calibration corpus v2 (GPQA) | 25 GPQA Diamond questions (Rein et al., arXiv:2311.12022) | Rolled back 2026-06-04. Five measurement bugs fixed 2026-06-05 (temperature, topic length, solo discard, compromise-vs-vote, runner stripped-down). After fixes, Sonnet fleet 64% vs solo 56% (+8pp, Wilson [0.45, 0.80]), but GPQA Diamond is the wrong corpus for gemot's claim β€” graduate-science MCQ has canonical right answers, no coordination signal. Not republished as a reference class; calibration field now publishes game-outcome data instead. |

Security

See THREAT_MODEL.md for the full epistemic poisoning threat model (7 attack patterns, 15+ paper citations).

Architecture

gemot/
β”œβ”€β”€ main.go                          # CLI: serve (stdio) | http (SSE)
β”œβ”€β”€ internal/
β”‚   β”œβ”€β”€ mcp/
β”‚   β”‚   β”œβ”€β”€ server.go                # 6 grouped MCP tools + Streamable HTTP
β”‚   β”‚   └── http.go                  # SSE/Streamable auto-negotiation, auth, billing, pages
β”‚   β”œβ”€β”€ deliberation/
β”‚   β”‚   β”œβ”€β”€ service.go               # Business logic, async analysis, drift detection
β”‚   β”‚   β”œβ”€β”€ models.go                # Deliberation, Position, Vote, Dispute
β”‚   β”‚   └── analysis.go              # Crux, Cluster, Consensus, Bridging, Trust types
β”‚   β”œβ”€β”€ analysis/
β”‚   β”‚   β”œβ”€β”€ text.go                  # Analysis pipeline + compromise generation
β”‚   β”‚   β”œβ”€β”€ votes.go                 # PCA, K-means++, repness, consensus
β”‚   β”‚   β”œβ”€β”€ synthesizer.go           # Cross-references text + vote analysis
β”‚   β”‚   β”œβ”€β”€ trust.go                 # Integrity-derived trust weights
β”‚   β”‚   β”œβ”€β”€ integrity.go             # Coverage, crux, Sybil, model diversity checks
β”‚   β”‚   └── prompts.go              # Analysis prompt templates
β”‚   β”œβ”€β”€ payments/                    # Stripe billing, credits, rate limiting, MPP
β”‚   β”œβ”€β”€ llm/client.go               # Anthropic SDK + global API semaphore
β”‚   β”œβ”€β”€ store/                       # Postgres persistence + LLM cache + job queue
β”‚   β”œβ”€β”€ sanitize/                    # PII stripping, prompt injection detection
β”‚   └── cost/tracker.go             # Per-deliberation model-aware cost tracking
β”œβ”€β”€ tests/                           # 286 tests
β”œβ”€β”€ THREAT_MODEL.md

Integrations & Demos

  • Calendar Scheduling β€” 5 agents negotiate a meeting time without sharing calendars. Privacy-preserving, conviction-weighted, ZOPA-aware. go run ./scripts/calendar-scheduling
  • GitHub PR Review β€” Action posts crux analysis on PRs with join codes for contributor agents. Workflows
  • Talk to the City β€” Turn published positions into synthetic deliberation agents. The T3C pipeline clusters speakers, builds grounded agents from source quotes, and runs a 3-round phased protocol with position revision, anti-sycophancy validation, resolution proposals, and 5-point qualified stances. Anonymized by default. go run ./scripts/t3c-import/ report.json --mode structural --rounds 3 --spot-check --report report.md
  • Wasteland β€” Deliberation for federated agent work. Stamp mapping, A2A examples
  • Hermes Agent β€” Proposal for consensus/voting integration (addresses NousResearch/hermes-agent#412)
  • Research Lineage β€” From Semantic Web (2001) and FIPA to modern agent deliberation
  • Agent Decision Tree β€” When to use which of the tools

License

Apache 2.0 β€” see LICENSE

Acknowledgments

  • Talk to the City (T3C) β€” claim extraction and crux detection pipeline
  • Polis β€” vote matrix analysis, bridging scores concept
  • Plurality (Weyl, Tang et al.) β€” correlation discounting, quadratic voting, broad listening framework
  • Habermas Machine β€” AI mediator generating common-ground statements, 5,734 UK participants (Tessler, Bakker et al., Science, 2024)
  • Moltbook β€” empirical validation that agent societies need structural mechanisms
  • Generative Social Choice β€” compromise proposal generation framework (Fish, Procaccia et al., EC 2024)
  • From Debate to Deliberation: Structured Collective Reasoning with Typed Epistemic Acts β€” typed epistemic acts, convergent flow, minority reports (Prakash, 2026)
  • The Empty Chair β€” LLM personas for missing stakeholder perspectives in deliberation (Fulay, Dimitrakopoulou & Roy, NeurIPS 2025 PersonaLLM workshop)
  • Debate or Vote β€” voting matters more than debate; structure matters more than rounds (Choi, Zhu & Li, NeurIPS 2025 Spotlight)
  • FREE-MAD β€” anti-conformity mechanism for multi-agent debate
  • CQs-Gen β€” critical question generation as crux detection (ArgMining @ ACL 2025)
  • Mechanism Design for LLMs β€” weighted aggregation, incentive compatibility (WWW 2024)
  • ANAC β€” automated negotiation protocol design (AAMAS 2025)
  • SmartJudge β€” mediator-verifier commitment pattern
  • LiquidFeedback β€” delegated voting in production
  • Bridging Systems β€” cross-cluster agreement detection (Ovadya & Thorburn)
  • CRSEC β€” norm emergence in agent societies (IJCAI 2024)

See related servers & alternatives β†’

Related MCP servers

Browse all β†’

Related guides

Hand-picked reading to help you choose and use AI & ML servers.