get_finance_transfers

Read-only

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

Every internal transfer between PFF's two Stripe accounts, newest first, and what operations owes the pool (platform staff)

Each transfer with its direction, memo, how its cash settles and its outcome, plus owed — the cash operations still owes the pool, settled from the next gift's share. Reads only.

Arguments

ArgumentTypeDescription
limitqueryinteger

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

Result

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

The transfers

json
{
  "count": 1,
  "data": [
    {
      "amount": 1,
      "attempts": 1,
      "cashSettlement": "STRIPE_TRANSFER",
      "completedAt": 1,
      "createdAt": 1,
      "createdBy": "11111111-1111-4111-8111-111111111111",
      "currency": "string",
      "destinationAccount": "STRIPE_PLATFORM",
      "direction": "OPERATIONS_TO_POOL",
      "id": "11111111-1111-4111-8111-111111111111",
      "lastError": "string",
      "memo": "string",
      "settledAmount": 1,
      "sourceAccount": "STRIPE_PLATFORM"
    }
  ],
  "owed": {
    "owed": 1,
    "posted": 1,
    "settled": 1
  }
}

Fields

FieldTypeDescription
countinteger
dataarray of object
data[].amountintegerCENTS moved.
data[].attemptsintegerFailed attempts recorded.
data[].cashSettlement"STRIPE_TRANSFER" | "WITHHOLDING"How the cash settles. STRIPE_TRANSFER (the pool repaying operations): a Stripe transfer, SENT or FAILED. WITHHOLDING (operations covering the pool): the fund posted at once and the cash is kept on the platform out of later operations-share transfers until settled.
data[].completedAtinteger | nullEpoch milliseconds the transfer was recorded SENT.
data[].createdAtintegerEpoch milliseconds.
data[].createdBystring (uuid) | nullThe platform staff member who asked for it.
data[].currencystring
data[].destinationAccount"STRIPE_PLATFORM" | "STRIPE_OPERATIONS"The Stripe balance the cash reached.
data[].direction"OPERATIONS_TO_POOL" | "POOL_TO_OPERATIONS"Which way an internal transfer moves PFF's money, and the fund with it. OPERATIONS_TO_POOL: operations covers the voucher pool — cash from the operations connected account to the platform balance, OPERATING to VOUCHER_POOL. POOL_TO_OPERATIONS: the pool repays operations, the reverse of both.
data[].idstring (uuid)The INTERNAL_TRANSFER Transaction's id.
data[].lastErrorstring | nullStripe's refusal, when the transfer failed.
data[].memostringWhy the money moved, as the operator wrote it.
data[].settledAmountintegerWITHHOLDING only — CENTS of later operations shares kept on the platform against this transfer so far.
data[].sourceAccount"STRIPE_PLATFORM" | "STRIPE_OPERATIONS"The Stripe balance the cash left.
data[].status"PENDING" | "COMPLETED" | "FAILED" | "REVERSED" | "CANCELLED" | "PROCESSING" | … (7 values)PENDING until Stripe answers, COMPLETED once SENT, FAILED when Stripe refused.
data[].stripeTransferIdstring | nullThe Stripe transfer (tr_…) that moved the cash; null until one is recorded.
data[].transferState"PENDING" | "SENT" | "FAILED" | "NOT_REQUIRED"The Stripe transfer's outbox state; NOT_REQUIRED never applies here.
owedobjectWhat operations owes the voucher pool in cash, derived from the ledger. CENTS.
owed.owedintegerposted − settled — what the next operations-share transfers still withhold.
owed.postedintegerMoved OPERATING → VOUCHER_POOL by withholding transfers.
owed.settledintegerOperations shares since kept on the platform against it.

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.

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_transfers",
  "description": "GET /api/finance/transfers — Each transfer with its direction, memo, how its cash settles and its outcome, plus `owed` — the cash operations still owes the pool, settled from the next gift's share. Reads only.",
  "inputSchema": {
    "type": "object",
    "properties": {
      "limit": {
        "type": "string"
      }
    }
  },
  "annotations": {
    "readOnlyHint": true,
    "openWorldHint": false
  }
}