Skip to content

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.

Request
curl "https://app.withclarion.com/api/v1/bills?jurisdiction=ca-on&q=housing"
Response
{
  "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.

See the endpoint indexOpen the OpenAPI file

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.

Send the key as a bearer token
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.

Client configuration
{
  "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.