Documentation
The Better Giving Connector lets a nonprofit manage its Better Giving account from your AI assistant. You sign in at better.giving and press Allow.
Demo
A short recording of an MCP test client: connecting a Better Giving account, then listing campaigns, reading fundraising results, creating a draft campaign, recording a cash gift, and listing donors. It also shows three requests the connector refuses.
Address
Server URL: https://app.connect.better.giving/mcp
Before you connect
You need both of these:
- A Better Giving account you sign in to at better.giving.
- Permission to manage that account.
Connect
- In your AI assistant, add the connector at the server URL above.
- Press Connect. better.giving opens.
- Sign in to your Better Giving account and press Allow.
- You return to your AI assistant, connected to that one account.
What it can do
Your AI assistant sees only the tools your Better Giving account supports. Some aren't available on every account yet.
Available now
- List and read campaigns and their content, and create a draft campaign. Donors cannot see a draft until it is published. For the amount raised, use fundraising results.
- Edit a campaign page's title, story, and cover photo, and change its goal or end date.
- Publish or end a campaign. These change what donors see. Your AI assistant says what will change and waits for your explicit yes. The first time a campaign is published, it asks where the gifts go: a program, or the general fund. An ended campaign stays ended.
- Create and edit donation forms, including the donation page's form and each campaign's form. On a live form, a change donors would see waits for your yes.
- Make a short-lived, single-use link so you can add a campaign's cover photo from your phone. The connector does not upload the file itself.
- Read the main donation page, donation forms, donors, gifts, monthly gifts, and fundraising results. Monthly gifts cannot be changed from here.
Coming to more accounts
- Edit a campaign page's photos beside the cover, gift tiers, and questions, and the donation page's heading, or put the donation page back to its default content. The site arranges each page from its content, so your AI assistant does not set the design. Resetting discards what is there now. Your AI assistant waits for your explicit yes before it resets the page.
- Change a campaign's time zone, or the message shown when it is shared.
- Record a donation already received in cash or by check. It is not tied to a campaign. This writes a record. It moves no money, charges no card, and issues no refund. The same details again match the earlier gift and record nothing new. Add a distinguishing note to record a second gift with the same details.
Example prompts
Once connected, type things like these to your AI assistant:
- Show me my published campaigns.
- How much have we raised this month?
- Create a draft campaign called Spring Food Drive.
- Show me the gifts we received last week.
- List our donors and how much each has given.
What it cannot do
It cannot charge a card, refund a gift, or pay out funds. It acts only on the account you connected. It does not accept or return the connection key.
Tool reference
Every tool the connector can offer. Your AI assistant sees only those your account supports, and which errors a tool returns can differ by account.
- Read: changes nothing.
- Write: changes your account, but donors see nothing until you publish it, or it waits for your yes.
- Sensitive write: changes what donors see. Before it publishes, ends, or resets anything, your AI assistant waits for your explicit yes.
| Tool | Class | Side effects | Errors |
|---|---|---|---|
list_campaigns | Read | None. | Only the errors any tool can return, below. |
get_campaign | Read | None. | Only the errors any tool can return, below. |
get_donation_page | Read | None. | Only the errors any tool can return, below. |
get_block_catalog | Read | None. |
|
get_content_catalog | Read | None. | Only the errors any tool can return, below. |
list_forms | Read | None. | Only the errors any tool can return, below. |
get_form | Read | None. | Only the errors any tool can return, below. |
get_results | Read | None. | Only the errors any tool can return, below. |
list_donations | Read | None. | Only the errors any tool can return, below. |
list_donors | Read | None. | Only the errors any tool can return, below. |
get_donor | Read | None. | Only the errors any tool can return, below. |
list_recurring_gifts | Read | None. | Only the errors any tool can return, below. |
create_campaign | Write | Creates a draft campaign. Donors cannot see it until it is published. The same title sent again returns the earlier result and makes nothing new. | Only the errors any tool can return, below. |
update_donation_page_content | Write | Changes the donation page's heading in its draft. Donors see it once you publish the page in the Better Giving dashboard. | Only the errors any tool can return, below. |
create_form | Write | Creates a donation form. Each call makes a new form. |
|
update_form | Write | Changes the fields you send on a donation form. On a live form, a change donors would see waits for your yes. |
|
record_donation | Write | Records a gift already received in cash or by check, so it counts in totals and the donor's history. It moves no money. The same details again record nothing new. | Only the errors any tool can return, below. |
update_campaign_blocks | Sensitive write | Replaces the content of a campaign's page. On a live campaign, donors see the change right away. |
|
update_campaign_content | Sensitive write | Changes the parts of a campaign's page you send. On a live campaign, donors see the change right away. | Only the errors any tool can return, below. |
update_campaign_settings | Sensitive write | Changes a campaign's goal, end date, time zone, or share message. On a live campaign, donors see the change right away. |
|
publish_campaign | Sensitive write | Puts a draft campaign live at its public link. The first time, it sets where the gifts go: a program, or the general fund. |
|
end_campaign | Sensitive write | Ends a campaign for good. It stops taking gifts. | Only the errors any tool can return, below. |
update_donation_page_blocks | Sensitive write | Replaces the content of the main donation page that donors see. |
|
reset_donation_page | Sensitive write | Puts the main donation page back to its default content and discards what is there now. Donors see it right away. | Only the errors any tool can return, below. |
create_photo_upload_link | Sensitive write | Makes a short-lived, single-use link to add a photo. Nothing changes until you upload a photo there. The photo then becomes the cover, goes beside it, or replaces one, and on a live campaign donors see it right away. |
|
Errors any tool can return
- The account no longer accepts the connection, or its site moved. Connect again.
- Not available on this account yet. The other tools still work.
- The site didn't answer. Try again in a moment. If it was a change, it may have gone through, so your AI assistant checks before trying again.
- The account refused the request, for example an id that doesn't exist. The answer says why.
- Something went wrong on Better Giving's side. Try again in a moment. If it was a change, it may have gone through, so your AI assistant checks before trying again.
Each signed-in connection can make about 120 requests per minute. Past that, the account answers with HTTP 429 and the body {"code":"rate_limited","status":429}, with no Retry-After header. The connector passes that answer through without retrying, so your AI assistant should wait a minute before trying again.
Troubleshooting
- If the page says the connection timed out or didn't finish, go back to your AI assistant and press Connect again.
- If the page says better.giving didn't answer or can't connect right now, wait a moment and press Connect again.
- If a tool tells you to reconnect, the account refused the key or moved. Connect again.
Still stuck? See Support.
Disconnect
Disconnect the connector in your AI assistant. That deletes the connection stored here and asks that account to revoke the key. If a tool says the account has moved or no longer accepts the connection, connect again.