get_finance_summary
Calls GET /api/finance/summary as the signed-in person · REST reference
Ledger totals for the finance dashboard header
Computed live from every non-deleted donation. Money is integer CENTS. DISPUTED and REFUNDED gifts are EXCLUDED from every total and from donationCount, so the counter and the money describe the same set, and the totals reconcile with /api/analytics/dashboard and the DAL's getDonationStats, which exclude the same two statuses. Three fields are not money: the two percents, and voucherEquivalents, which is a ratio. voucherEquivalents here is FRACTIONAL (2dp) while /api/analytics/dashboard reports a WHOLE voucher count off the same pool — two different numbers under one name, not reconciled.
Arguments
This tool takes no arguments.
Example call
A client sends this over the MCP session; Claude and other agents build it for you. The values are placeholders — the shape is real.
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_finance_summary",
"arguments": {}
}
}Result
On success (HTTP 200) the tool returns one text item holding the API's JSON, pretty-printed.
Live totals.
{
"currency": "string",
"donationCount": 1,
"operatingBalance": 1,
"operationsTotal": 1,
"totalDonations": 1,
"voucherPoolBalance": 1,
"voucherPoolTotal": 1,
"lastUpdated": "2026-01-15T12:00:00Z",
"operationsPercent": 1,
"voucherEquivalents": 1,
"voucherPoolPercent": 1,
"voucherUnitValue": 1
}Fields
| Field | Type | Description |
|---|---|---|
currency | string | Taken from the FIRST donation in the list, not validated across the set. |
donationCount | integer | Spendable gifts only — reversals excluded. |
lastUpdated | string (date-time) | ISO-8601, minted at request time. Not a data timestamp. |
operatingBalance | integer | CENTS — the OPERATING account's balance now, after fees and bank payouts; negative when they outrun the operations share. |
operationsPercent | integer | NOT money — the remainder as a whole percent (30). |
operationsTotal | integer | CENTS retained for operations by every spendable gift to date. Only grows. |
totalDonations | integer | CENTS. |
voucherEquivalents | number | NOT money — a fractional voucher count (pool BALANCE / unit value), rounded to 2dp. |
voucherPoolBalance | integer | CENTS — the VOUCHER_POOL account's balance now, after claims; what the ledger holds. |
voucherPoolPercent | integer | NOT money — the policy rate as a whole percent (70). |
voucherPoolTotal | integer | CENTS credited to the voucher pool by every spendable gift to date. Only grows. |
voucherUnitValue | integer | CENTS — the face value one voucher is costed at. |
When it fails
A failed call returns isError: true with the API's message as text.
403Authenticated, but the caller holds none of the required permissions.
What the model is shown
This is the tool exactly as the server lists it in tools/list. The description starts with the REST call it makes.
{
"name": "get_finance_summary",
"description": "GET /api/finance/summary — Computed live from every non-deleted donation. Money is integer CENTS. DISPUTED and REFUNDED gifts are EXCLUDED from every total and from `donationCount`, so the counter and the money describe the same set, and the totals reconcile with `/api/analytics/dashboard` and the DAL's getDonationStats, which exclude the same two statuses. Three fields are not money: the two percents, and `voucherEquivalents`, which is a ratio. `voucherEquivalents` here is FRACTIONAL (2dp) while `/api/analytics/dashboard` reports a WHOLE voucher count off the same pool — two different numbers under one name, not reconciled.",
"inputSchema": {
"type": "object",
"properties": {}
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false
}
}