get_allocations

Read-only

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

Every organization's voucher budget, and what the pool has left to give

An allocation is the money an organization may mint voucher batches against without per-batch approval. It is stored as an ORG_ALLOCATION account on the org, so there is no separate allocation entity behind this. Every FUNDABLE organization appears — each DISTRIBUTOR and the platform organization — including ones with no allocation, which come back with a zero balance: the list shows who is fundable, not only who is funded. Allocations never go to a service provider. Any other organization appears only when it already holds an allocation account, with allocatable: false, so no budget is hidden. The caller's own bearer token is forwarded to the DAL, so the DAL evaluates the real actor rather than a service identity; the platform-staff middleware here is the outer gate only. All amounts are integer CENTS.

Arguments

ArgumentTypeDescription
currencyquerystringCurrency of the allocation accounts to read. Applied only when sent as a string; anything else falls back to USD. Both the allocations and the pool use this value.

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

Result

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

The allocations and the pool position, both in CENTS.

json
{
  "allocations": [
    {
      "allocatable": true,
      "balance": 1,
      "currency": "string",
      "granted": 1,
      "orgId": "11111111-1111-4111-8111-111111111111",
      "orgName": "string",
      "accountId": "11111111-1111-4111-8111-111111111111",
      "orgStatus": "string",
      "orgType": "string",
      "updatedAt": 1
    }
  ],
  "pool": {
    "committed": 1,
    "currency": "string",
    "grantable": 1,
    "outstanding": 1,
    "poolBalance": 1
  }
}

Fields

FieldTypeDescription
allocationsarray of object
allocations[].accountIdstring (uuid) | nullNull for an org that has never been funded.
allocations[].allocatablebooleanWhether the organization's TYPE may hold an allocation — a DISTRIBUTOR or the platform organization — by the same predicate the grant applies. It does not reflect orgStatus or the pool, so POST can still refuse a grant to an allocatable organization.
allocations[].balanceintegerUnspent allocation remaining, in CENTS.
allocations[].currencystring
allocations[].grantedintegerTotal ever granted to this org, in CENTS.
allocations[].orgIdstring (uuid)
allocations[].orgNamestring
allocations[].orgStatusstring | null
allocations[].orgTypestring | null
allocations[].updatedAtinteger | nullEpoch MILLISECONDS.
poolobject
pool.committedintegerPool money already committed to minted vouchers, in CENTS.
pool.currencystring
pool.grantableintegerWhat may still be granted without over-committing the pool, in CENTS.
pool.outstandingintegerGranted-but-unspent organization allocations, in CENTS.
pool.poolBalanceintegerThe voucher pool's account balance, in CENTS.

When it fails

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

400

The request was malformed or failed a guard.

403

Authenticated, but the caller holds none of the required permissions.

404

No such resource — or none this caller may see.

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_allocations",
  "description": "GET /api/allocations — An allocation is the money an organization may mint voucher batches against without per-batch approval. It is stored as an ORG_ALLOCATION account on the org, so there is no separate allocation entity behind this. Every FUNDABLE organization appears — each DISTRIBUTOR and the platform organization — including ones with no allocation, which come back with a zero balance: the list shows who is fundable, not only who is funded. Allocations never go to a service provider. Any other organization appears only when it already holds an allocation account, with `allocatable: false`, so no budget is hidden. The caller's own bearer token is forwarded to the DAL, so the DAL evaluates the real actor rather than a service identity; the platform-staff middleware here is the outer gate only. All amounts are integer CENTS.",
  "inputSchema": {
    "type": "object",
    "properties": {
      "currency": {
        "type": "string",
        "description": "Currency of the allocation accounts to read. Applied only when sent as a string; anything else falls back to USD. Both the allocations and the pool use this value."
      }
    }
  },
  "annotations": {
    "readOnlyHint": true,
    "openWorldHint": false
  }
}