A remote Model Context Protocol server for SooLedger, the public ledger of public-disorder incidents in Sault Ste. Marie, Ontario, operated by Community Ledger. It lets an AI assistant answer "what is happening on the 200 block of Queen Street East?" from the ledger and cite it.
Endpoint: https://mcp.communityledger.ca/mcp (Streamable HTTP, stateless, no authentication). Read-only: it only calls the public JSON API; no personal information, addresses or business names exist in the data. Every result carries a citation (page URL, API URL, accessed-at, attribution).
Police media releases cover about 1 percent of the incidents the Police Services Board counts, so these are counts of what police made public, not of all crime; use the official statistics for volume.
ledger_status | Freshness of the SooLedger (Sault Ste. Marie public-disorder ledger): the date the data runs through, when a source last succeeded, how many records the publication rules held back (discarded, never published), and whether the nightly job is stale. Call this first when a date matters. |
ledger_summary | The funnel for Sault Ste. Marie or one zone over a window: incidents police made public, and of those how many reached an arrest, charges and a recorded court outcome; plus council decisions that act on disorder, and how many businesses and partner organisations reported. Cohort-based: of incidents reported in the window, how many have since reached each stage. |
ledger_find_block | Resolve a street name, a hundred-block phrase ("200 block Queen Street East") or a civic address ("234 Queen St E") to SooLedger block ids. Returns candidate streets and blocks with ids and display names; pass a block id to ledger_block. Addresses are reduced to the hundred-block and are not stored or returned. |
ledger_block | Everything published for one hundred-block: the funnel for the window, the trailing 8-week counts, each incident with its source URL (police release or council document), the k-suppressed business-report and partner-feed counts (null below three distinct contributors), and the block condition from walks when two auditors have walked it. Cite the block page URL in the citation field. |
ledger_incidents | Published incidents for a window and zone, newest first, each with its type, stage, outcome, block and the source URL it was read from. Optional type filter (a taxonomy key from ledger_types). Keyset-paginated: pass nextCursor back as cursor for the next page. At most 50 per call. |
ledger_types | The incident taxonomy (keys, labels, descriptions, StatCan UCR codes) with the number of published incidents of each type in the window and zone. Use the keys with ledger_incidents. |
ledger_council | City council decisions that act on public disorder (the disorder gate: a stated link, a confidence bar, a lexicon), newest meeting first, each with the agenda or minutes document it was read from, the amount when one was voted, and follow-up status. Filter by relevance or to overdue follow-ups only. |
ledger_official | Official figures as published: Police Services Board monthly reports, Statistics Canada 35-10-0180-01 (annual UCR series, ucr.*), and Ontario Court of Justice statistics (court.*). Without metrics, returns only the list of available metric names; with metrics, the rows. These are the ground truth for volume. |
ledger_reconciliation | The ledger's published counts per period beside the official figure for the mapped category, with the capture rate: monthly against the Police Services Board (against=board) or by calendar year against Statistics Canada (against=statcan). This is where the roughly 1 percent capture rate comes from; read it before comparing the ledger with official statistics. |
ledger_methodology | The full methodology (sources, extraction and publication rules, counting, privacy, reconciliation, known gaps) as Markdown, and the citation format to use when quoting the ledger. |
Resources: ledger://methodology, ledger://llms.txt, ledger://openapi. Prompt: cite_the_ledger.
Claude (claude.ai or the desktop app): Settings → Connectors → Add custom connector, name SooLedger, URL https://mcp.communityledger.ca/mcp. Claude Code:
claude mcp add --transport http sooledger https://mcp.communityledger.ca/mcp
ChatGPT: Settings → Connectors → Create (developer mode must be on), URL https://mcp.communityledger.ca/mcp, no authentication.
Cursor: add to .cursor/mcp.json (or the global one):
{
"mcpServers": {
"sooledger": { "url": "https://mcp.communityledger.ca/mcp" }
}
}
Any other MCP client that speaks Streamable HTTP can use the same URL. Requests are rate-limited per client address; a 429 carries Retry-After.
Cite as SooLedger (Community Ledger), <page URL>, accessed <date>, quote the caveat above, and link the block page (https://soo.communityledger.ca/blocks/<block id>). Read the methodology before comparing the ledger with official statistics.
Data and licensing · Terms · Privacy · hello@communityledger.ca