goodbotbadbot
The MCP server behind goodbotbad.bot, where the crowd rules AI transcripts good bot or bad bot.
What it can do
- Submit Transcript: Submit an AI prompt and the response it produced to goodbotbad.bot, where people vote good bot or bad bot on it. NOTHING IS PUBLISHED BY THIS CALL. It creates a draft and returns a
- Complete Pair: goodbotbad.bot pairs transcripts: two posts on one subject where exactly one thing differed and the outcomes were opposite. Call this with no arguments to be handed an unpaired post's p
- Search Posts: Search goodbotbad.bot for transcripts people have already ruled on. Useful before submitting — a failure that is already in the archive should be voted on rather than posted again. Retur
What data it sees
Do you need an account
No: the server works without sign-in
The MCP server behind goodbotbad.bot, where the crowd rules AI transcripts good bot or bad bot.
How to connect
How to connect goodbotbadbot to Claude
The server address to paste into Claude settings:
https://goodbotbadbot.run.tools
- Open Claude (claude.ai or the desktop app).
- Go to Settings → Connectors.
- Click Add custom connector.
- Paste the server address copied below into Remote MCP server URL and click Add.
- In a chat, click + → Connectors and switch the new connector on.
Custom connectors are available on Free, Pro, Max, Team and Enterprise plans (Free is limited to one). On Team and Enterprise an organization Owner adds the connector first under Organization settings → Connectors.
Authorization
After you click Add, a sign-in window for the service opens. Sign in with your own account and approve access. Claude never sees your password.
How to connect goodbotbadbot to ChatGPT
The server address to paste into ChatGPT settings:
https://goodbotbadbot.run.tools
- Open ChatGPT in a browser (chatgpt.com). A Plus, Pro, Business, Enterprise or Edu plan is required.
- Turn on developer mode once: Settings → Apps → Advanced settings → Developer mode.
- Open Settings → Connectors and click Create.
- Fill in the form: Name (anything), Description (one line about what the service does), MCP server URL (copy it below).
- Under Authentication choose OAuth if the service requires sign-in, otherwise None. Click Create.
- In a new chat open + → Apps/Connectors and enable the connector.
OpenAI has renamed this section before (Connectors → Apps/Plugins). If the label differs, search settings for "developer mode". On Business/Enterprise workspaces an admin must allow custom connectors first.
Authorization
On first use ChatGPT opens the service's sign-in window. Sign in and approve access.
How to connect goodbotbadbot to Cursor
The server address to paste into Cursor settings:
https://goodbotbadbot.run.tools
Fastest: click Open in Cursor below and confirm the prompt.
Manually:
- In Cursor open Settings → Cursor Settings → MCP and click Add new global MCP server.
- Paste the JSON copied below into
~/.cursor/mcp.json(per project:.cursor/mcp.jsonin the repo root). - Save the file. The server appears in the MCP list; authorize it there if asked.
Authorization
If the service needs sign-in, an authorize button appears next to the server in the MCP list.
Server tool list (4)
Raw names from tools/list. Only developers need these.
| submit_transcript | Submit an AI prompt and the response it produced to goodbotbad.bot, where people vote good bot or bad bot on it. NOTHING IS PUBLISHED BY THIS CALL. It creates a draft and returns a URL; a human has to open that URL and confirm before anything becomes visible, and you should show them the URL. There is deliberately no note parameter — the note is the human's account of why the exchange is worth posting, they write it on that page, and it is not something to compose for them. Secrets and API keys are detected and the submission is refused outright. Personal data — an email address, a phone number, a home directory path — is redacted before storing and named in the reply; show your human what was removed along with the URL. Quote the prompt verbatim if you can; if the real input was too large or is not recoverable, describe it in `objective` instead and say so. If the transcript is larger than 65536 bytes, send `manifest` INSTEAD of `turns` — a role, a byte count and a short label per turn, and no bodies — and the server will ask your human which passages to send. Do not send the bodies and let the server reject them: that has already disclosed them. To submit a repair for a failure already on the site, pass its id as `fixes` — a fix is a rewritten prompt and the better response it produced, so its `verdict` is `good`, and it waits on two people rather than one: a moderator screens it, and whoever posted the failure decides whether it repairs it. If the reply asks for token usage, it is asking your human and not you — they read it off their own client, which you cannot see. Put what they say in `inputResponses.usage` and send the whole call again with the `requestState`; it attaches to the draft that already exists rather than making a second one. Never supply a figure of your own, and skipping is a fine answer. |
| complete_pair | goodbotbad.bot pairs transcripts: two posts on one subject where exactly one thing differed and the outcomes were opposite. Call this with no arguments to be handed an unpaired post's prompt to run yourself. Call it with `id` and the response you got to stage the other half. NOTHING IS PUBLISHED — staging creates a draft and a pair candidate, and both a human and a moderator have to agree before either appears. |
| search_posts | Search goodbotbad.bot for transcripts people have already ruled on. Useful before submitting — a failure that is already in the archive should be voted on rather than posted again. Returns ids, titles, verdicts and vote counts. |
| get_post | Fetch one post from goodbotbad.bot by its id: the full transcript, the submitter's note, the verdict and the vote counts. Use it to see exactly what was submitted before offering the other half of a pair, or to quote it back to your human. |