Developers
Use Clarion’s public data in your own tools.
A read-only API and an MCP server, with no key needed to start.
Start with one request.
Calls without a key work from any website and are cached at the edge for an hour.
curl "https://app.withclarion.com/api/v1/bills?jurisdiction=ca-on&q=housing"{
"count": 2,
"bills": [
{
"slug": "ca-on-bill-64",
"number": "Bill 64",
"titleEn": "Housing Equity and Rental Transparency Act, 2025",
"jurisdictionCode": "ca-on",
"status": "First Reading Ordered for Second Reading",
"lastEventAt": "2025-10-28"
},
{
"slug": "ca-on-bill-28",
"number": "Bill 28",
"titleEn": "Homelessness Ends with Housing Act, 2025",
"jurisdictionCode": "ca-on",
"status": "Second Reading Vote",
"lastEventAt": "2025-10-23"
}
]
}Shortened here. The full response also has titleFr, jurisdictionNameEn, jurisdictionNameFr and level.
Seven read-only endpoints.
Bills, jurisdictions, officials and the calendar, as plain JSON.
- GET/api/v1/calendar
- Committee meetings, comment deadlines, tender and funding closing dates, and sitting days, soonest first.
- GET/api/v1/bills
- Tracked federal, provincial and territorial bills, most recently active first. Filter with the jurisdiction, status and q parameters.
- GET/api/v1/bills/{slug}
- One bill: its stages over time and its passage outlook.
- GET/api/v1/jurisdictions
- Jurisdictions with tracked bills, and how many each has.
- GET/api/v1/jurisdictions/{code}
- One jurisdiction’s bill count and its most recent bills.
- GET/api/v1/people
- Tracked officials, elected and appointed.
- GET/api/v1/people/{id}
- One official: role, party, jurisdiction, contact details, and recent bills, statements and meetings.
API keys
The Firm plan includes API keys.
Create up to 5 keys in Settings, under API keys; each works for the API and the MCP server.
curl https://app.withclarion.com/api/v1/bills \
-H "Authorization: Bearer clr_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"Each key gets 10,000 requests a day, reset at midnight UTC. Over that, you get a 429 with a Retry-After header. Keyed responses carry X-RateLimit-Remaining.
What a key adds
- Three lists grow to 200 rows: a bill’s stages (from 20), a jurisdiction’s recent bills (from 25) and an official’s statements (from 10).
- Keyed responses skip the shared cache and read the database on each call.
- Field names and filters stay the same. A key changes how much you get and how recent it is, never the shape.
MCP server
The same data as three MCP tools.
Point any MCP client at one stateless endpoint, with your key if you have one.
{
"mcpServers": {
"clarion": {
"url": "https://app.withclarion.com/api/mcp",
"headers": {
"Authorization": "Bearer clr_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}
}
}
}The headers block is optional. Leave it out to use the server without a key.
Tools
upcoming_calendar
No arguments. The same data as GET /api/v1/calendar.
search_bills(jurisdiction?, status?, q?)
GET /api/v1/bills with the same three filters.
get_passage_outlook(slug)
Only the outlook, with its band and reasons, from GET /api/v1/bills/{slug}.
EndpointPOST https://app.withclarion.com/api/mcp
What is not in the API
The analysis stays in the app.
The API serves what is already public: bill status and stages, the sitting calendar, the officials list and the same passage outlook shown on each bill page. Momentum, access shifts, stance maps and co-lobbying clusters come from reading those records against your clients' files, so they stay in Clarion.
Common questions
- Do I need a key to start?
- No. The /api/v1 endpoints and the MCP server both answer without an Authorization header. API responses without a key are cached at the edge for an hour.
- What happens if a key goes over its limit?
- You get a 429 with a Retry-After header that counts down to midnight UTC, and the same JSON error body each time. Nothing is dropped without a response.
- Will v1 change under me?
- No. v1 is stable. A breaking change would ship as a new version, never as a change to v1.
- Is there a client library?
- No. It is plain JSON over HTTP and a standard MCP server, so the HTTP or MCP client you already use works.
API keys come with the Firm plan.
Firm is $1,200 a month in Canadian dollars, for up to fifteen people.