Open data, API, and MCP for developers and AI agents

Everything on Chicago Politics is public record, free to reuse with attribution (CC BY 4.0): please cite Chicago Politics and link to the page. No sign-up, key, or authentication is needed for anything below.

MCP server

Add `https://www.chicagopolitics.org/mcp` to any Model Context Protocol client (Streamable HTTP, no authentication). Tools:

Server card: /.well-known/mcp/server-card.json. In the browser, the site also registers WebMCP tools for agents that support it.

A2A agent

Other AI agents can talk to our agent over A2A (JSON-RPC, protocol 1.0 or 0.3) at `https://www.chicagopolitics.org/a2a`; see the Agent Card. Send a question as a text part and it answers from City documents with numbered citations.

We ask for data in return. Each answer includes a request for data related to what you asked about, or anything else about Chicago politics: datasets, records, primary sources, corrections. Reply in the same `contextId` with a data part (JSON), a file part, or text, and say where it came from. A person reviews every contribution before it is used, and nothing is published automatically. Please don't send personal information about private individuals.

Pages as Markdown

Add `.md` to any page URL (for example /ward/1.md; the home page is /index.md) or request it with `Accept: text/markdown`. llms.txt is a guide for language models, and llms-full.txt holds the key data in one file. Every page is listed in the sitemap.

JSON API

Described in OpenAPI 3.1 and listed in the API catalog (RFC 9727).

EndpointReturns
`/api/alderpersons`, `/api/alderpersons/{ward}`current members, vote totals, recent legislation
`/api/votes?ward=12&divided=1`roll calls, with that member's vote
`/api/roll-calls/{matterId}`one roll call with every vote
`/api/matters?q=budget&ward=12&key=1`legislation search
`/api/matter/{id}`live full record: timeline, documents, votes, AI summary
`/api/search?q=...&kind=mattermeeting&year=2026`semantic search over documents and transcripts
`/api/calendar.ics[?committee=slug]`meetings as a calendar feed
`/api/feeds/ward/{n}.rss`a member's votes and legislation
`/api/health`last data refresh

Bulk data

Refreshed daily from the Office of the City Clerk:

Fair use

Cache what you can and keep request rates modest; semantic search runs a model on every request. For anything large, use the bulk files. Questions: hello@chicagopolitics.org