Add gift
Saves one gift on a donor record with its codes.
MCP tool donorperfect_write → add_gift
Saves one gift on the donor record, like Add Gift in the app. Codes are DonorPerfect codes from list_codes, not descriptions. If your organization has a SmartAction on new gifts, DonorPerfect runs it when the gift is saved. If the donor has an open pledge, DonorPerfect asks whether to apply the gift as a pledge payment; this tool answers no, so use apply_pledge_payment for pledge payments. It returns the gift_id. By default you confirm each call; you can switch that off for this tool.
Parameters
| Name | Type | Description |
|---|---|---|
| donor_id integer required | integer | Donor ID from search_donors. |
| date date required | date | Gift date. |
| amount number required | number | Gift amount. |
| gift_type string required | string | Gift type code from list_codes. |
| gl_code string | string | General ledger code from list_codes. |
| solicitation string | string | Solicitation code from list_codes. |
| sub_solicitation string | string | Sub solicitation code. |
| campaign string | string | Campaign code. |
| thank_you_letter string | string | Thank you letter code from list_codes. |
| reference string | string | Reference, such as a check number. |
| memo string | string | Comments saved with the gift. |
tools/call
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "donorperfect_write",
"arguments": {
"operation": "add_gift",
"arguments": {
"donor_id": 48213,
"date": "2026-10-21",
"amount": 250,
"gift_type": "Check",
"gl_code": "GEN",
"solicitation": "FALLAPPEAL",
"thank_you_letter": "STANDARD",
"reference": "4471"
}
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"gift_id": 90417,
"donor_id": 48213,
"date": "2026-10-21",
"amount": 250,
"gift_type": "Check",
"solicitation": "FALLAPPEAL",
"thank_you_letter": "STANDARD",
"status": "saved"
},
"isError": false
}