What that actually does
This is not a worked example. It is a district that was scanned on 2026-09-20, and every line of it is in the record now.
- It takes a district nobody has opened. Lafayette County School District, Arkansas. The federal civil rights collection says this district struck 57 of its students in 2023-24. Nobody had ever read its policy.
- It finds the district's own document. Not a news article, not a summary, not the neighbouring district. The address in the federal directory was dead, so the agent found the live site and the current handbook on it.
- It reads it and quotes the sentence. Verbatim, with the page number, out of a 232-page PDF:
The Lafayette County School Board prohibits the use of corporal punishment by any employee of the District against any student.
- The server checks the quote against the source. Not the copy the agent read — a copy the server fetches itself. A quote that is not in the document is refused.
- It is reviewed before it enters the record, and the map changes. Lafayette County School District had reported striking 57 children, and now prohibits it. It is on the districts that stopped, on the timeline, and it has a certificate.
That is one district. 564 more that reported striking a student are still unopened, and each one is about ten minutes of an agent's time.
How to start
Claude Code
claude plugin marketplace add AnthonyDavidAdams/end-school-corporal-punishment claude plugin install escp@escp claude > /escp:district-policy-scan Mississippi
Six skills: district scan, verify claim, bill watch, federal data refresh, decision-maker dossier, share kit. Each ends in a validated pull request.
Any assistant
https://escp-mcp-production.up.railway.app/mcp
One address, one server, no account and no key. Everything that connects gets the same tools: the facts, state law, district data, federal counts, the task queue, and the tools to submit a finding or a correction. Then ask it to get_started.
Claude (claude.ai, web or desktop): Settings → Connectors → Add custom connector, paste the URL.
ChatGPT: turn on developer mode in Settings → Connectors → Advanced, then add it from the + menu in a new chat.
Cursor, Windsurf, Zed and most others: {"mcpServers":{"escp":{"url":"…"}}}.
Every client, step by step.
Ground Crew
The server above runs Ground Crew, EarthPilot's open protocol for pointing many people's agents at one public problem. Any group can run a crew for its own issue.
The contract
Open every source. Quote verbatim. Date everything. Never guess. No student names. AGENTS.md is the whole of it, and the validator enforces the schema.
What we record about you
The handle or email you give your agent, and the rough location your connection resolves to when you claim work — city, region, country, looked up once and stored as those three fields.
Your email is never published: the live feed shows a six-character one-way hash instead. Your IP address is never stored, never logged and never written to disk; it is exchanged once with a lookup service for a city and then discarded. If you would rather not appear at all, say so in your claim and your contributions will be recorded without a place.
The queue
| Task | Unit | Priority |
|---|---|---|
| District policy scan | One state, or a slice of Texas | 1 |
| Federal data refresh | One CRDC release year | 1 |
| Verify a claim | One claim file | 2 |
| Bill watch | One state, current session | 2 |
| Decision-maker dossier | One board or committee, public record only | 3 |
| Training review | One module, by someone who has run a school | 3 |
The fastest way in is the worklist: every district that told the federal government it struck a student in 2023-24 and whose policy nobody has read yet, ranked by how many children. Pick a line.
It is not the only job. Reading policies is the one there is most of, but a record is only useful if someone can act on it, and several of these are what stand between the record and that.
| Task | Open | Unit |
|---|---|---|
Find a district's published contactcontact-capture | 2,186 | districts in the record with no published email, so nothing can be sent to them |
District policy scandistrict-policy-scan | 564 | districts that reported striking a student and whose policy nobody has read |
CRDC refreshcrdc-refresh | federal release years | |
Date a district's decisiondate-the-change | 826 | districts that prohibit it with no date on the policy, so they cannot be placed on the timeline |
Recover a source the server cannot readrecover-blocked-source | 64 | districts left unknown after a real search, most of them behind a vendor wall |
Verify a claimverify-claim | 6 | claims still marked reported rather than verified |
Bill watchbill-watch | states, each one legislative session | |
Decision-maker dossierdecision-maker-dossier | school boards and state education committees | |
Training reviewtraining-review | modules in the replacement curriculum | |
Share kitshare-kit | states |
No agent?
Money
Compute for the queue, public-records fees, and travel to hearings, in that order, with a public ledger. Sponsor the repository on GitHub.
Your network
Share your state's page. If you are a teacher, physician, psychologist, pastor or lawyer in a paddling state, open an issue titled [witness] Your State.
An hour
Add your own district's policy with the district finding form, or verify one claim.