get_analytics_dashboard

Read-only

Calls GET /api/analytics/dashboard as the signed-in person · REST reference

Dashboard KPIs aggregated in the graph

Three DAL aggregation round-trips; the sums and counts happen in Neo4j, so nothing is paged or summed here. Money is integer CENTS, forwarded from the DAL rather than converted. TWO FIELDS ARE PLACEHOLDERS, not data: averageClaimSLA is always the literal string "N/A", and claimsToday is not per-day at all — it counts every voucher currently in a claim state (CLAIMED / APPROVED / QUEUED_FOR_CHECKOUT / PAID), all time. voucherEquivalents here is a WHOLE voucher count (floor); /api/finance/summary reports a fractional one off the same pool. Two numbers, 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.

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

Result

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

Live KPIs and the voucher state breakdown.

json
{
  "kpis": {
    "averageClaimSLA": "string",
    "claimsToday": 1,
    "currency": "string",
    "donationCount": 1,
    "operationsBalance": 1,
    "orgCount": 1,
    "poolBalance": 1,
    "totalDonations": 1,
    "voucherEquivalents": 1
  },
  "totalVouchers": 1,
  "vouchersByState": [
    {
      "count": 1,
      "state": "string",
      "value": 1
    }
  ]
}

Fields

FieldTypeDescription
kpisobject
kpis.averageClaimSLAstringAlways the literal "N/A". No SLA is computed.
kpis.claimsTodayintegerNOT a daily figure — every voucher in a claim state, all time. See the description.
kpis.currencystring
kpis.donationCountinteger
kpis.operationsBalanceintegerCENTS.
kpis.orgCountintegerEvery organization, unfiltered by type or status.
kpis.poolBalanceintegerCENTS. The voucher-pool total, not the live Account balance.
kpis.totalDonationsintegerCENTS. Excludes DISPUTED/REFUNDED — the DAL's getDonationStats does the filtering.
kpis.voucherEquivalentsintegerNOT money — WHOLE vouchers the pool covers (floor).
totalVouchersinteger
vouchersByStatearray of objectDescending by count.
vouchersByState[].countinteger
vouchersByState[].statestringA voucher lifecycle state.
vouchersByState[].valueintegerSummed face value of the vouchers in this state, in CENTS.

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_analytics_dashboard",
  "description": "GET /api/analytics/dashboard — Three DAL aggregation round-trips; the sums and counts happen in Neo4j, so nothing is paged or summed here. Money is integer CENTS, forwarded from the DAL rather than converted. TWO FIELDS ARE PLACEHOLDERS, not data: `averageClaimSLA` is always the literal string \"N/A\", and `claimsToday` is not per-day at all — it counts every voucher currently in a claim state (CLAIMED / APPROVED / QUEUED_FOR_CHECKOUT / PAID), all time. `voucherEquivalents` here is a WHOLE voucher count (floor); `/api/finance/summary` reports a fractional one off the same pool. Two numbers, one name, not reconciled.",
  "inputSchema": {
    "type": "object",
    "properties": {}
  },
  "annotations": {
    "readOnlyHint": true,
    "openWorldHint": false
  }
}