get_finance_donations

Read-only

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

Every live donation, as the finance dashboard's table reads them

A BARE ARRAY, not an envelope — one of the two list shapes this API uses. Reversed gifts are INCLUDED here with their DISPUTED/REFUNDED status: only the money totals on /summary and /metrics exclude them, because staff must still see a chargeback. Every money field is integer CENTS, bit-for-bit what GET /api/donations reports for the same row. The row is built by the handler and is NOT the DAL Donation entity: no donor block, no anonymity, no receiptURI.

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_donations",
    "arguments": {}
  }
}

Result

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

Every non-deleted donation, newest-first ordering as the DAL returns it.

json
[
  {
    "amount": 1,
    "currency": "string",
    "id": "11111111-1111-4111-8111-111111111111",
    "operationsAmount": 1,
    "type": "VOUCHER_POOL",
    "voucherPoolAmount": 1,
    "allocationRate": 1,
    "createdAt": 1,
    "externalId": "string",
    "source": "string",
    "status": "string"
  }
]

Fields

FieldTypeDescription
[].allocationRatenumber | nullNOT money — the policy rate (e.g. 0.7) recorded on this row.
[].amountintegerGross gift in CENTS.
[].createdAtintegerEpoch MILLISECONDS, straight off the DAL — not the ISO string /api/donations emits for the same field.
[].currencystring
[].externalIdstring | nullStripe PaymentIntent id; the ledger's idempotency key.
[].idstring (uuid)
[].operationsAmountintegerRecorded operations credit in CENTS. 0 when absent.
[].sourcestringDAL DonationSource. STRIPE for Mercury and Xeon gifts too — the real provider survives only in metadata.
[].statusstringDAL DonationStatus, UPPER-CASE. /api/donations lower-cases the same field.
[].type"VOUCHER_POOL"A constant. Every row carries it regardless of the donation.
[].voucherPoolAmountintegerRecorded voucher-pool credit in CENTS. 0 when absent — this field has no 70% fallback.

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_donations",
  "description": "GET /api/finance/donations — A BARE ARRAY, not an envelope — one of the two list shapes this API uses. Reversed gifts are INCLUDED here with their DISPUTED/REFUNDED status: only the money totals on /summary and /metrics exclude them, because staff must still see a chargeback. Every money field is integer CENTS, bit-for-bit what `GET /api/donations` reports for the same row. The row is built by the handler and is NOT the DAL Donation entity: no donor block, no anonymity, no receiptURI.",
  "inputSchema": {
    "type": "object",
    "properties": {}
  },
  "annotations": {
    "readOnlyHint": true,
    "openWorldHint": false
  }
}