{"server":{"name":"dev.gemot/gemot","title":"Gemot Deliberation Server","$schema":"https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json","remotes":[{"url":"https://gemot.dev/mcp","type":"streamable-http"},{"url":"https://gemot.dev/mcp/sse","type":"sse"}],"version":"0.11.0","repository":{"url":"https://github.com/justinstimatze/gemot","source":"github"},"websiteUrl":"https://gemot.dev","description":"Deliberation primitive for multi-agent coordination: cruxes, vote clustering, consensus."},"_meta":{"io.modelcontextprotocol.registry/official":{"status":"active","isLatest":true,"updatedAt":"2026-04-30T21:01:15.534728Z","publishedAt":"2026-04-30T21:01:15.534728Z","statusChangedAt":"2026-04-30T21:01:15.534728Z"},"dev.protogrid/connectability":{"class":"R0","autonomous":true,"human_steps":[],"preferred":{"kind":"remote","idx":0},"remotes":[{"idx":0,"url":"https://gemot.dev/mcp","transport":"streamable-http","templated":false,"headers":[],"auth":{"type":"none","location":null,"secret_name":null,"oauth":null},"protocol":{"supported_versions":["2025-11-25","2025-06-18","2025-03-26","2024-11-05"],"stateless":false},"health":{"reachable":true,"uptime_30d":1,"latency_ms_p50":327,"consecutive_failures":0,"last_probe_at":"2026-10-19T22:47:20.814Z","last_ok_at":"2026-10-19T22:47:20.814Z"}},{"idx":1,"url":"https://gemot.dev/mcp/sse","transport":"sse","templated":false,"headers":[],"auth":{"type":"none","location":null,"secret_name":null,"oauth":null},"protocol":{"supported_versions":["2025-11-25"],"stateless":false},"health":{"reachable":true,"uptime_30d":1,"latency_ms_p50":331,"consecutive_failures":0,"last_probe_at":"2026-10-19T17:41:03.026Z","last_ok_at":"2026-10-19T17:41:03.026Z"}}],"packages":[]},"dev.protogrid/tools":[{"name":"account","title":null,"description":"Fund your gemot credit balance. Actions:\n- 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.","annotations":null,"source":"probe","observed_at":"2026-10-19T22:47:20.814Z"},{"name":"admin","title":null,"description":"Admin and audit tools. Actions:\n- report_abuse: Report abusive content (deliberation_id, reason)\n- get_audit_log: Get audit trail incl. tamper-evident log with proofs (deliberation_id)\n- list_templates: List available governance templates\n- get_votes: Get all votes (deliberation_id)\n- 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)\n- replica_pubkey: Get the server's BLS public key for offline proof verification","annotations":null,"source":"probe","observed_at":"2026-10-19T22:47:20.814Z"},{"name":"analyze","title":null,"description":"Analyze disagreements and find common ground. Actions:\n- run: Trigger analysis — extracts cruxes, clusters, consensus (deliberation_id; optional: model)\n- 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.\n- cancel: Cancel in-progress analysis (deliberation_id)\n- propose_compromise: Generate a compromise statement (deliberation_id; optional: model)\n- reframe: Restate a position emphasizing common ground (deliberation_id, position_id; optional: model)\n- challenge: Challenge an analysis result (deliberation_id, agent_id, reason)\n- dispute_crux: Dispute a crux classification (deliberation_id, agent_id, crux_claim, correction)\n- 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\".\n- 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.","annotations":null,"source":"probe","observed_at":"2026-10-19T22:47:20.814Z"},{"name":"coordinate","title":null,"description":"Multi-agent coordination. Actions:\n- delegate: Delegate your vote to another agent (deliberation_id, from_agent, to_agent; optional: scope)\n- invite: Invite an agent to join (deliberation_id, invited_by, invited_agent, reason; optional: role)\n- generate_join_code: Generate a short-lived join code (deliberation_id; optional: role, ttl_minutes)\n- join: Join a deliberation using a code (code, agent_id)","annotations":null,"source":"probe","observed_at":"2026-10-19T22:47:20.814Z"},{"name":"decide","title":null,"description":"Commitments and reputation tracking. Actions:\n- commit: Commit to a deliberation outcome (deliberation_id, agent_id, statement; optional: conditional)\n- get_commitments: Get all commitments (deliberation_id)\n- 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\n- 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\n- reputation: Get an agent's commitment track record (agent_id; optional: group_id)","annotations":null,"source":"probe","observed_at":"2026-10-19T22:47:20.814Z"},{"name":"deliberation","title":null,"description":"Manage deliberations. Actions:\n- create: Create a new deliberation (topic, description, template, group_id, deadline_minutes, rules, visibility, max_participants, type, principal_policy, signature_policy)\n- get: Get status/stats of a deliberation (deliberation_id)\n- list: List all deliberations (limit, offset)\n- list_by_group: List deliberations in a group (group_id, limit, offset)\n- list_by_agent: List deliberations an agent participated in (agent_id, limit, offset)\n- delete: Soft-delete a deliberation (deliberation_id)\n- set_template: Change governance template (deliberation_id, template)\n- export: Export complete multi-round history (deliberation_id)","annotations":null,"source":"probe","observed_at":"2026-10-19T22:47:20.814Z"},{"name":"participate","title":null,"description":"Participate in a deliberation. Actions:\n- 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)\n- publish_position: Publish a draft position (position_id)\n- 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)\n- get_positions: Get all positions (deliberation_id; optional: round, exclude_agent_id, group, shuffle)\n- get_context: Get your personal context — cluster, allies, cruxes (deliberation_id, agent_id)\n- withdraw: Withdraw from a deliberation (deliberation_id, agent_id)\n- register_key: Register a base64 ed25519 public key for this agent (agent_id, public_key; optional: algo)\n- revoke_key: Revoke this agent's active signing key (agent_id)","annotations":null,"source":"probe","observed_at":"2026-10-19T22:47:20.814Z"}],"dev.protogrid/trust":{"score":89,"components":{"hygiene":100,"liveness":100,"freshness":65,"provenance":85},"drivers":["+repository","+dns-namespace","+website","+reachable","+uptime-100%","~updated-172d-ago"],"flags":[],"blocked":false,"computed_at":"2026-10-19T23:37:38.193Z","disclaimer":"Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed."},"dev.protogrid/quality":{"score":76,"label":"good","components":{"auth":null,"hygiene":64,"protocol":75,"stability":100,"dependencies":null},"checks":[{"id":"protocol.modern","detail":"newest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28","status":"warn","category":"protocol"},{"id":"protocol.stateless","detail":"only applies to 2026-07-28 servers","status":"na","category":"protocol"},{"id":"protocol.transport","detail":"streamable HTTP","status":"pass","category":"protocol"},{"id":"protocol.list_ttl","detail":"only applies to 2026-07-28 servers","status":"na","category":"protocol"},{"id":"auth.prm","detail":"no remote uses OAuth","status":"na","category":"auth"},{"id":"auth.as_metadata","detail":"no remote uses OAuth","status":"na","category":"auth"},{"id":"auth.cimd","detail":"no remote uses OAuth","status":"na","category":"auth"},{"id":"auth.secret_in_url","detail":"no templated URL","status":"na","category":"auth"},{"id":"tools.descriptions","detail":"every tool has a description","status":"pass","category":"hygiene"},{"id":"tools.description_length","detail":"1 tools have descriptions over 1,024 characters, which crowds the context","status":"warn","category":"hygiene"},{"id":"tools.schemas","detail":"every tool has an object input schema","status":"pass","category":"hygiene"},{"id":"tools.annotations","detail":"no tool declares readOnlyHint or destructiveHint, so clients cannot tell safe calls from risky ones","status":"fail","category":"hygiene"},{"id":"tools.directory_hints","detail":"no tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: decide (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); deliberation (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); participate (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); …","status":"fail","category":"hygiene"},{"id":"tools.token_cost","detail":"about 2,313 tokens to load every tool","status":"pass","category":"hygiene"},{"id":"tools.api_dump","detail":"tools are not a one-to-one API dump","status":"pass","category":"hygiene"},{"id":"stability.changes","detail":"no tool changes in 30 days","status":"pass","category":"stability"},{"id":"stability.rug_pull","detail":"no tool changed its meaning under the same name","status":"pass","category":"stability"},{"id":"deps.known_vulns","detail":"no npm or PyPI package","status":"na","category":"dependencies"},{"id":"deps.mcp_sdk_version","detail":"no npm or PyPI package","status":"na","category":"dependencies"},{"id":"deps.resolvable","detail":"no npm or PyPI package","status":"na","category":"dependencies"}],"drivers":["-tools.annotations","-tools.directory_hints","~protocol.modern","~tools.description_length"],"flags":[],"tool_count":7,"token_estimate":2313,"tools_hash":"1e72d7a1ee43c3a763cf3bff67cdef06","tools_changed_at":null,"computed_at":"2026-10-19T23:50:38.934Z","disclaimer":"Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed."},"dev.protogrid/identity":{"canonical_id":"dev.gemot/gemot","aliases":[],"alias_count":0,"repository_key":"github:justinstimatze/gemot","owner":{"verified":false,"method":null,"since":null}}},"next_actions":[{"action":"list_tools","description":"Every current tool with input schemas","href":"/v1/servers/dev.gemot%2Fgemot/tools","arguments":{"name":"dev.gemot/gemot"}},{"action":"get_connection","description":"Minimal connection block for the preferred remote or package","href":"/v1/servers/dev.gemot%2Fgemot/connection?target=mcpServers","arguments":{"name":"dev.gemot/gemot","target":"mcpServers"}},{"action":"search","description":"Find other servers by intent","href":"/v1/search?q={query}","arguments":{"q":"{query}"}}]}