NL Ledger
by nlledger.ca · remote · no sign-in to list tools · v0.4.0 · published by ca.nlledger
NL provincial and federal spending records, each with its source. Addresses do not locate work.
15 tools: 2 change things and 13 only read.
Scanned Oct 21, 2026
- Deletes or cancels0Claude Code: deny
- Can't be undone0Claude Code: ask
- Changes things2Claude Code: ask: see these tools
- Only reads13Claude Code: allow: see these tools
No check matched anything in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http nl-ledger https://nlledger.ca/mcpTools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
15 tools
Changes things 2Claude Code: ask
human_scaleHypothetically divide a supported CAD amount by the NL population, households and reference median wage.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Hypothetically divide a supported CAD amount by the NL population, households and reference median wage. Result states the denominator assumption and carries no geographic allocation, resident liability or local wage/employment claim. Includes Statistics Canada sources.
Annotations the server declares
- title: Put an amount in human terms
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
tax_receiptEstimate provincial income tax on annual employment income and illustrate department spending shares, using the receipt page's assumptions.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Estimate provincial income tax on annual employment income and illustrate department spending shares, using the receipt page's assumptions. Not a personal tax assessment or a trace of your tax payments.
Annotations the server declares
- title: Employment income tax receipt
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
Only reads 13Claude Code: allow
fetchFetch the full text of one result from search, by id.No findings
Why it is in this group
- The name "fetch" says "fetch": a word for reading.
Description, as the server wrote it Fetch the full text of one result from search, by id.
Annotations the server declares
- title: Fetch
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_bodyA public body's reported values by year and source, and largest suppliers, matching its page.No findings
Why it is in this group
- The name "get_body" says "get": a word for reading.
Description, as the server wrote it A public body's reported values by year and source, and largest suppliers, matching its page. Award values are not payments; overlapping and federal sources stay labelled. Omit name to list bodies.
Annotations the server declares
- title: Public body records
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_budgetGet what the province budgeted and what it spent in a fiscal year, the difference, the annual surplus or deficit, net debt, and every department's budget against its spending, larg…No findings
Why it is in this group
- The name "get_budget" says "get": a word for reading.
Description, as the server wrote it Get what the province budgeted and what it spent in a fiscal year, the difference, the annual surplus or deficit, net debt, and every department's budget against its spending, largest difference first. Years from 2019-20; the newest budgets have no published results yet. Two bases that must not be added together: departments_spending is modified cash (the Estimates given to the House against the Report on the Program Expenditures and Revenues); whole_government is the audited Public Accounts (accrual, all government bodies), the only source for the surplus or deficit and net debt. Every figure has its source link. Leave out year for the latest year with published results.
Annotations the server declares
- title: Budget against actual, the deficit and net debt
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_departmentGet a provincial department's gross spending by program: actual against amended and original estimates, for a fiscal year from 2019-20 to 2024-25, or the 2025-26 and 2026-27 estima…No findings
Why it is in this group
- The name "get_department" says "get": a word for reading.
Description, as the server wrote it Get a provincial department's gross spending by program: actual against amended and original estimates, for a fiscal year from 2019-20 to 2024-25, or the 2025-26 and 2026-27 estimates. Leave out name to list the departments and years.
Annotations the server declares
- title: Get a provincial department's spending
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_flagGet one pattern by id (from list_flags): why people look at it, exactly how it is computed, what it cannot tell you, and its largest results.No findings
Why it is in this group
- The name "get_flag" says "get": a word for reading.
Description, as the server wrote it Get one pattern by id (from list_flags): why people look at it, exactly how it is computed, what it cannot tell you, and its largest results.
Annotations the server declares
- title: Get one spending pattern
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_membersRank Members of the House of Assembly by allowance spending for a fiscal year, overall or for one category (for example travel), with the average.No findings
Why it is in this group
- The name "get_members" says "get": a word for reading.
Description, as the server wrote it Rank Members of the House of Assembly by allowance spending for a fiscal year, overall or for one category (for example travel), with the average. Give a name to get one member's spending by year and category. Set group to ministers for ministers' expense claim totals.
Annotations the server declares
- title: Compare MHA and minister expenses
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_payPublished pay above $100,000 by employer and calendar year, people, common titles, overtime and severance.No findings
Why it is in this group
- The name "get_pay" says "get": a word for reading.
Description, as the server wrote it Published pay above $100,000 by employer and calendar year, people, common titles, overtime and severance. Missing lists are not zero; this is not total payroll. Omit employer to list employers. Individuals use search_records.
Annotations the server declares
- title: Pay by employer
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_recordGet one line item by its 12-character id.No findings
Why it is in this group
- The name "get_record" says "get": a word for reading.
Description, as the server wrote it Get one line item by its 12-character id. Returns retained source fields, evidence, inclusion rule, reported address/conflicts, separately supported location, native currency, amount kind and period, and citations. Federal amounts have no automatic provincial scaling.
Annotations the server declares
- title: Get one record
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_supplierGet included reported record values, all years, for a supplier or recipient, with explicit overlap/exclusion policy and breakdowns by source, amount kind, period, native currency a…No findings
Why it is in this group
- The name "get_supplier" says "get": a word for reading.
Description, as the server wrote it Get included reported record values, all years, for a supplier or recipient, with explicit overlap/exclusion policy and breakdowns by source, amount kind, period, native currency and location evidence. These are not everything received, unique spending or spending in NL. Give a name or supplier_id; unmatched names return close matches.
Annotations the server declares
- title: Get a supplier or recipient
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_totalsFull-record totals or rankings filtered by supplier, named buyer, year or source.No findings
Why it is in this group
- The name "get_totals" says "get": a word for reading.
Description, as the server wrote it Full-record totals or rankings filtered by supplier, named buyer, year or source. Groups by supplier, buyer/department, year or source, separately by source and currency with overlap exclusions. Awards are not payments; use get_department for program spending. No paginated-search sums.
Annotations the server declares
- title: Totals and rankings
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
list_flagsList the patterns people read as waste or perks (for example sole-source awards, contracts that grew, purchases just under a limit), with counts.No findings
Why it is in this group
- The name "list_flags" says "list": a word for reading.
Description, as the server wrote it List the patterns people read as waste or perks (for example sole-source awards, contracts that grew, purchases just under a limit), with counts. Each pattern is a question, not a finding.
Annotations the server declares
- title: List spending patterns
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
searchSearch the records and return a short list of results, each with id, title and url.No findings
Why it is in this group
- The name "search" says "search": a word for reading.
Description, as the server wrote it Search the records and return a short list of results, each with id, title and url. Use fetch with an id to get the full record. Prefer search_records when you can pass filters.
Annotations the server declares
- title: Search
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
search_recordsSearch every line item: contract awards, federal contracts and grants, minister and MHA expense lines, and pay over $100,000.No findings
Why it is in this group
- The name "search_records" says "search": a word for reading.
Description, as the server wrote it Search every line item: contract awards, federal contracts and grants, minister and MHA expense lines, and pay over $100,000. records holds exact matches: every word matches (by prefix), largest amount first, up to 25 per page (use page for more). A misspelled word is corrected when nothing matches exactly (see corrected). On page 1, related_by_meaning adds up to 20 records about the same thing that do not contain every word, closest first. Give a query, a filter, or both. Each record has its source citation. Sources: ppa = Provincial contract award; fed_contract = Federal contract; fed_grant = Federal grant or contribution; canadabuys = Federal award notice; pa_pss = Federal professional services payment; pa_tp = Federal transfer payment; sunshine = Public sector pay over $100,000; minister = Minister's expense claim; mha = MHA expense.
Annotations the server declares
- title: Search spending records
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 0.4.0. Values in angle brackets are yours to fill in.
claude mcp add --transport http nl-ledger https://nlledger.ca/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__nl-ledger__get_pay",
"mcp__nl-ledger__get_body",
"mcp__nl-ledger__get_totals",
"mcp__nl-ledger__search_records",
"mcp__nl-ledger__get_record",
"mcp__nl-ledger__get_supplier",
"mcp__nl-ledger__get_department",
"mcp__nl-ledger__get_budget",
"mcp__nl-ledger__get_members",
"mcp__nl-ledger__list_flags",
"mcp__nl-ledger__get_flag",
"mcp__nl-ledger__search",
"mcp__nl-ledger__fetch"
],
"ask": [
"mcp__nl-ledger__tax_receipt",
"mcp__nl-ledger__human_scale"
],
"deny": []
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as nl-ledger. Review it before you use it.