Documentation

Better Giving logo

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.

Demo recording

Address

Server URL: https://app.connect.better.giving/mcp

Before you connect

You need both of these:

Connect

  1. In your AI assistant, add the connector at the server URL above.
  2. Press Connect. better.giving opens.
  3. Sign in to your Better Giving account and press Allow.
  4. 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

Coming to more accounts

Example prompts

Once connected, type things like these to your AI assistant:

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.

ToolClassSide effectsErrors
list_campaignsReadNone.Only the errors any tool can return, below.
get_campaignReadNone.Only the errors any tool can return, below.
get_donation_pageReadNone.Only the errors any tool can return, below.
get_block_catalogReadNone.
  • Not offered on this account any more. Use get_content_catalog instead.
get_content_catalogReadNone.Only the errors any tool can return, below.
list_formsReadNone.Only the errors any tool can return, below.
get_formReadNone.Only the errors any tool can return, below.
get_resultsReadNone.Only the errors any tool can return, below.
list_donationsReadNone.Only the errors any tool can return, below.
list_donorsReadNone.Only the errors any tool can return, below.
get_donorReadNone.Only the errors any tool can return, below.
list_recurring_giftsReadNone.Only the errors any tool can return, below.
create_campaignWriteCreates 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_contentWriteChanges 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_formWriteCreates a donation form. Each call makes a new form.
  • The site is still working on this request. Wait, then check the list of forms before trying again.
  • Nothing is made if the site matched this request to a different one. Check the list of forms, then try again if it is still needed.
update_formWriteChanges the fields you send on a donation form. On a live form, a change donors would see waits for your yes.
  • Nothing is saved if the form changed since it was read. Read it again and retry.
  • Nothing is saved on a live form until you confirm a change donors would see.
record_donationWriteRecords 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_blocksSensitive writeReplaces the content of a campaign's page. On a live campaign, donors see the change right away.
  • Nothing is saved if the campaign changed since it was read. Read it again and retry.
  • Nothing is saved if the campaign has ended. An ended campaign stays ended.
  • Nothing is saved if the cover photo was not uploaded for this campaign. Make an upload link first.
  • Not offered on this account any more. Use update_campaign_content instead.
update_campaign_contentSensitive writeChanges 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_settingsSensitive writeChanges a campaign's goal, end date, time zone, or share message. On a live campaign, donors see the change right away.
  • Nothing is saved if the campaign changed since it was read. Read it again and retry.
  • Nothing is saved if the campaign has ended. An ended campaign stays ended.
publish_campaignSensitive writePuts a draft campaign live at its public link. The first time, it sets where the gifts go: a program, or the general fund.
  • Nothing is saved if the campaign changed since it was read. Read it again and retry.
  • Nothing is saved if the campaign has ended. An ended campaign stays ended.
  • Where a live campaign's gifts go can't be changed here. Change it in the Better Giving dashboard.
end_campaignSensitive writeEnds a campaign for good. It stops taking gifts.Only the errors any tool can return, below.
update_donation_page_blocksSensitive writeReplaces the content of the main donation page that donors see.
  • Not offered on this account any more. Use update_donation_page_content instead.
reset_donation_pageSensitive writePuts 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_linkSensitive writeMakes 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.
  • Nothing is saved if the campaign has ended. An ended campaign stays ended.

Errors any tool can return

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

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.

More