{"id":"4792c24d-55d8-4a96-a468-c2b518b4702c","slug":"forgingstack-quorum","kind":"mcp","name":"forgingstack-quorum","summary":"Before an agent acts alone, get the quorum. One proposal, N approvals, one receipt.","owner":"jdkabattles","repoUrl":"https://github.com/jdkabattles/forgingstack-quorum","license":"MIT","licenseTier":"permissive","trust":"community","stars":0,"match":null,"fewStars":true,"format":"mcp","createdAt":"2026-11-08T17:37:55.000Z","addedAt":"2026-11-08T23:26:34.705Z","logoUrl":"https://avatars.githubusercontent.com/u/241386083?v=4","linkOnly":false,"collection":null,"skillPath":null,"categories":["utilities"],"tags":[],"runtime":"python","local":true,"cloudCapable":false,"cloudCapability":"unknown","cloudReadyOnPlatform":false,"needsApiKey":true,"reviewed":false,"syncedAt":"2026-11-08T23:28:54.223Z","sample":false,"url":"https://conduits.dev/tools/forgingstack-quorum","language":"Python","transports":["stdio"],"install":{"pypi":"forgingstack-quorum"},"requirements":{"env":[{"name":"FORGINGSTACK_API_BASE","secret":false,"required":false,"description":"Quorum API base URL. Live default."},{"name":"FORGINGSTACK_API_KEY","secret":true,"required":true,"description":"API key for Quorum. Sign up via POST /v1/signup (key shown once)."}],"upstreamMayCharge":false},"tools":null,"readme":"# ForgingStack Quorum\n\nBefore an agent acts alone, get the quorum. One proposal, N approvals, one receipt.\n\nmcp-name: io.github.jdkabattles/forgingstack-quorum\n\nThis is the **public client** for Quorum. The service itself —\nthe approval flow, the receipt chain, the key store, and billing —\nruns on ForgingStack's private service and is **not** in this repo.\nCopying this repo does not give you the service: you still need an\nAPI key and credits, from signup below.\n\nLive API: https://forgingstack-quorum.jkbattles.workers.dev\n\n## How it works\n\n1. You propose an action, name the approvers, and set how many\n   approvals are needed (N) and when the proposal expires.\n2. Each approver gets a one-time emailed link. Approvals are free.\n3. At quorum the proposal is approved and a hash-chained receipt is\n   issued. If it expires first, it expires — no receipt, and the\n   proposal cannot be approved afterwards.\n4. You can also reject a pending proposal yourself.\n\nWhat it does **not** do: decide if an action is wise, legal, or\nsafe. Quorum only — the approvers decide the rest.\n\n## Signup\n\n```bash\ncurl -X POST https://forgingstack-quorum.jkbattles.workers.dev/v1/signup \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"email\":\"you@example.com\"}'\n```\n\nReturns an API key **once** and 100 starter credits. Save the key\nimmediately — it is stored only as a hash and cannot be shown again.\nClick the verification link in the signup email before the key can\ncreate proposals (if the mail does not arrive, check spam, or\n`POST /v1/verify/resend`).\n\n## Create a proposal\n\n```bash\ncurl -X POST https://forgingstack-quorum.jkbattles.workers.dev/v1/proposals \\\n  -H \"X-API-Key: YOUR_PRIMARY_KEY\" -H \"Content-Type: application/json\" \\\n  -d '{\"action\":\"deploy the new build\",\"approvers\":[\"a@example.com\",\"b@example.com\"],\"required_approvals\":2,\"expires_at\":\"2027-01-01T00:00:00Z\"}'\n```\n\nReturns the proposal (201) with its approval state and which\napproval emails were sent. Read it back with\n`GET /v1/proposals/{id}`, list yours with `GET /v1/proposals`,\nreject a pending one with `POST /v1/proposals/{id}/reject`.\nApprovers approve by clicking the link in their email — each link\nworks once. The receipt, once issued, is at `GET /v1/receipts/{id}`.\n\n## Use it (MCP, stdio)\n\nSet the key, then run the MCP server in this repo:\n\n```bash\nexport FORGINGSTACK_API_KEY=\"your-key-here\"\npython -m app.mcp_server\n```\n\nTools: `create_proposal`, `get_proposal`, `get_credits`, `get_receipt`.\nSee `SKILL.md` for when to use it and when not to.\n\n## Price\n\n1 credit per proposal. Approvals are free. 100 starter credits on\nsignup. $10 for 1,000 credits via `POST /v1/billing/checkout`\n(Payment Link). Credits land after payment is verified — usually\nwithin the hour.\n\n## Files in this repo\n\n- `app/mcp_server.py` — MCP wrapper client (stdio, stdlib only)\n- `SKILL.md` — when to use it, how to read the result\n- `agent-card.json` — A2A-style discovery card\n- `server.json` — MCP Registry metadata\n- `pyproject.toml` — package metadata for the MCP client\n- `llms.txt` — short index for language-model readers\n"}