get_donations_by_id

Read-only

Calls GET /api/donations/{id} as the signed-in person · REST reference

Fetch one donation by id

The enumerable form of the list above, and gated identically - platform staff only, because an unauthenticated lookup by id discloses the same donor PII one record at a time. Declared AFTER /session/{id} and /stats, so neither of those is captured by this gate. The body is the reshaped DonationView (lower-cased status, ISO-8601 createdAt, donor masked by anonymity), not the raw DAL Donation entity.

Arguments

ArgumentTypeDescription
idpathstring (uuid)requiredDonation UUID.

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_donations_by_id",
    "arguments": {
      "id": "11111111-1111-4111-8111-111111111111"
    }
  }
}

Result

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

The donation.

json
{
  "amount": 1,
  "anonymity": "NAMED",
  "currency": "string",
  "id": "11111111-1111-4111-8111-111111111111",
  "status": "string",
  "createdAt": "2026-01-15T12:00:00Z",
  "donor": {},
  "receiptURI": "string",
  "source": "string",
  "stripePaymentIntentId": "string"
}

Fields

FieldTypeDescription
amountintegerCENTS.
anonymity"NAMED" | "ANONYMOUS" | "FULLY_ANONYMOUS"
createdAtstring (date-time)ISO-8601 — this route converts the epoch, unlike the DAL fragment.
currencystring
donorobjectThe donor block from metadata for a NAMED gift; { "name": "Anonymous" } otherwise. Fails closed: an unselected anonymity field masks rather than discloses.
idstring (uuid)
receiptURIstring | null
sourcestring
statusstringLOWER-CASED DAL status, e.g. "completed".
stripePaymentIntentIdstring | null

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.

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_donations_by_id",
  "description": "GET /api/donations/{id} — The enumerable form of the list above, and gated identically - platform staff only, because an unauthenticated lookup by id discloses the same donor PII one record at a time. Declared AFTER /session/{id} and /stats, so neither of those is captured by this gate. The body is the reshaped DonationView (lower-cased status, ISO-8601 createdAt, donor masked by anonymity), not the raw DAL Donation entity.",
  "inputSchema": {
    "type": "object",
    "properties": {
      "id": {
        "type": "string",
        "description": "Donation UUID."
      }
    },
    "required": [
      "id"
    ]
  },
  "annotations": {
    "readOnlyHint": true,
    "openWorldHint": false
  }
}