get_finance_metrics

Read-only

Calls GET /api/finance/metrics as the signed-in person · REST reference

Everything /summary reports except currency, plus a six-month revenue trend

Every field GET /api/finance/summary returns except currency, computed from the same aggregation over the same set (reversals excluded). Money is integer CENTS. availableBalance and totalAllocations are BOTH the voucher-pool total: the same number under two names, and neither reads the actual VOUCHER_POOL Account balance, so neither reflects money already spent on vouchers. The monthly trend buckets donations by createdAt over the trailing six calendar months including the current one, with no synthetic values. Unlike the totals, the buckets INCLUDE DISPUTED and REFUNDED gifts. month is a short English name ("Jan") with no year, so a 6-month window spanning a year boundary repeats no label but carries no year either. ITS 500 BODY IS NOT THE CANON ERROR SHAPE: it carries a second key, message, a fixed string alongside error.

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.

json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "get_finance_metrics",
    "arguments": {}
  }
}

Result

On success (HTTP 200) the tool returns one text item holding the API's JSON, pretty-printed.

Live metrics and the six-month trend.

json
{
  "availableBalance": 1,
  "donationCount": 1,
  "monthlyRevenue": [
    {
      "allocations": 1,
      "amount": 1,
      "month": "string"
    }
  ],
  "operationsTotal": 1,
  "totalAllocations": 1,
  "totalDonations": 1,
  "utilizationRate": 1,
  "voucherPoolTotal": 1,
  "lastUpdated": "2026-01-15T12:00:00Z",
  "operationsPercent": 1,
  "voucherEquivalents": 1,
  "voucherPoolPercent": 1,
  "voucherUnitValue": 1
}

Fields

FieldTypeDescription
availableBalanceintegerCENTS. Identical to voucherPoolTotal; not the Account balance.
donationCountinteger
lastUpdatedstring (date-time)ISO-8601, minted at request time.
monthlyRevenuearray of objectSix buckets, oldest first.
monthlyRevenue[].allocationsintegerVoucher-pool credit in that month, in CENTS.
monthlyRevenue[].amountintegerGross gifts in that month, in CENTS.
monthlyRevenue[].monthstringShort English month name, no year.
operationsPercentintegerNOT money — whole percent.
operationsTotalintegerCENTS.
totalAllocationsintegerCENTS. Also identical to voucherPoolTotal.
totalDonationsintegerCENTS.
utilizationRatenumberNOT money — pool / gross as a fraction 0-1, 2dp. 0 when there are no donations.
voucherEquivalentsnumberNOT money — fractional voucher count, 2dp.
voucherPoolPercentintegerNOT money — whole percent.
voucherPoolTotalintegerCENTS.
voucherUnitValueintegerCENTS.

When it fails

A failed call returns isError: true with the API's message as text.

403

Authenticated, 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.

json
{
  "name": "get_finance_metrics",
  "description": "GET /api/finance/metrics — Every field `GET /api/finance/summary` returns except `currency`, computed from the same aggregation over the same set (reversals excluded). Money is integer CENTS. `availableBalance` and `totalAllocations` are BOTH the voucher-pool total: the same number under two names, and neither reads the actual `VOUCHER_POOL` Account balance, so neither reflects money already spent on vouchers. The monthly trend buckets donations by `createdAt` over the trailing six calendar months including the current one, with no synthetic values. Unlike the totals, the buckets INCLUDE DISPUTED and REFUNDED gifts. `month` is a short English name (\"Jan\") with no year, so a 6-month window spanning a year boundary repeats no label but carries no year either. ITS 500 BODY IS NOT THE CANON ERROR SHAPE: it carries a second key, `message`, a fixed string alongside `error`.",
  "inputSchema": {
    "type": "object",
    "properties": {}
  },
  "annotations": {
    "readOnlyHint": true,
    "openWorldHint": false
  }
}