One click opens your client's own add-connector dialog with the name and address filled in. You still confirm it — nothing installs itself. ChatGPT has no install link yet, so paste the address:
https://escp-mcp-production.up.railway.app/mcpThere is one server and one address. Every client below connects to the same thing and gets the same tools; nothing here is built for one vendor. The address is:
No account, no key, no authentication. It speaks Streamable HTTP, which is the current MCP standard. Anything that takes a plain MCP server URL will work whether or not it is listed here.
Whatever you connect with, the first thing to do is ask it to call get_started. That returns the contract, what contributing means, and the exact first calls to make.
Claude (claude.ai, web or desktop)
- Settings → Connectors → Add custom connector.
- Name it whatever you like and paste the URL above.
- No authentication.
- Start a chat and say: call get_started on the corporal punishment connector.
ChatGPT
ChatGPT reaches a custom MCP server through developer mode. As of 2026-09-20, following OpenAI's current MCP documentation:
- Settings → Connectors → Advanced → Developer mode, and turn it on. (OpenAI's docs also describe the toggle under Settings → Security and login; it has moved before and may move again. It is the one that mentions MCP.)
- In a new chat, open the + menu, choose to add a connector, and paste the server URL:
https://escp-mcp-production.up.railway.app/mcp - No authentication. This server reads and writes nothing that needs a key: findings are reviewed by a person before they enter the record, and the maintainer token is only for review.
- Ask it to call
get_started. It will explain the contract and hand you the first calls.
Two things worth knowing before you try:
searchandfetchexist for this. OpenAI's research connectors look for tools with exactly those names and a particular result shape, so this server provides them as aliases oversearch_facts,get_factandget_record.searchreturns individual districts rather than the state file they live in, so asking about one district gives you that district's status, quote and source rather than a blob.- The transport is Streamable HTTP, which is the current MCP standard. Some of OpenAI's examples still show an older
/sse/endpoint. If a client insists on SSE, this server does not speak it; open an issue and say which client.
search and fetch are not a ChatGPT feature. They are aliases over tools this server already had, on the same server everything else uses, and every client gets them.
Claude Code
claude mcp add --transport http escp https://escp-mcp-production.up.railway.app/mcpThere is also a plugin with six skills that wrap the same tools into one command each:
claude plugin marketplace add AnthonyDavidAdams/end-school-corporal-punishment
claude plugin install escp@escp
claude
> /escp:district-policy-scan MississippiCursor, Windsurf, Zed, and most other HTTP-capable clients
Cursor, step by step. Open Cursor and press Cmd+Shift+J on a Mac or Ctrl+Shift+J on Windows to open Cursor Settings. In the left column choose Tools & MCP (older versions call it MCP). Click Add new global MCP server. That opens a file called mcp.json; paste the block below over whatever is there and save. Back in settings, switch the escp toggle on; its tools list appears underneath within a few seconds. Then open a chat and say: "Use the escp tools: call get_started."
If the Add to Cursor button above did nothing, that is Cursor not registering its link handler yet; the steps here do the same thing by hand.
The generic shape, in .cursor/mcp.json or that client's equivalent:
{
"mcpServers": {
"escp": { "url": "https://escp-mcp-production.up.railway.app/mcp" }
}
}Your own code
curl -s -X POST https://escp-mcp-production.up.railway.app/mcp \
-H 'content-type: application/json' \
-H 'accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"get_started","arguments":{}}}'Then what
Ask it to call get_started, then take one state off the worklist. 564 districts told the federal government they struck a child in 2023-24 and nobody has read their policy; that is 915 children. Each district is about ten minutes of an agent's time.
Give your agent a handle or an email when it claims work, and you appear on the live board and can claim a badge. Your email is never published: the feed shows a six-character one-way hash. Your IP address is never stored.
If a state you want is already leased, take another — that is what the lease is for. On a big state, claim a slice (Texas, districts 1-10) rather than the whole thing, so other people can work beside you.