# Givebutter — how to use (mcp.ai)

Connect your Givebutter account and use 58 tools for fundraising straight from your AI agent. Connect with your own API key. Givebutter is a fundraising platform that offers a free, open, and public API for developers to manage campaigns, track donations, and engage with supporters.

## Option A — via MCP (recommended)
Remote MCP endpoint (HTTP, streamable): `https://api.mcp.ai/p_givebutter?ms=1787291400000`
Add it as a custom/remote MCP connector in your client (Claude, Cursor, VS Code…), then authenticate when prompted. Once connected, ask the agent to use the server's tools (e.g. `givebutter_add_contact_tags`).

## Option B — via direct REST API
Base URL: `https://api.mcp.ai/api/givebutter`
Auth: `Authorization: Bearer sk_live_…` — create a workspace API key at https://mcp.ai/settings/api-keys
Discover endpoints: `GET https://api.mcp.ai/api/givebutter/_endpoints`

### Endpoints
- `POST https://api.mcp.ai/api/givebutter/add/contact/tags` — Tool to add tags to a contact by contact ID. Use when you need to categorize or label contacts with specific tags.
  - body: { tags: string[], contact: integer }
- `POST https://api.mcp.ai/api/givebutter/add/household/contact` — Tool to add a contact to a household. Use when you have both a household ID and contact ID to associate them together.
  - body: { household: integer, contact_id: integer }
- `POST https://api.mcp.ai/api/givebutter/archive/contact` — Tool to archive a contact by their ID. Use after ensuring the contact has no associated data (e.g., no transactions or communications). Example: "Archive contact abc123".
  - body: { contact_id: string }
- `POST https://api.mcp.ai/api/givebutter/create/campaign` — Tool to create a new campaign. Use when you have title, description, goal, and type ready, after confirming your Givebutter account is authenticated.
  - body: { goal?: integer, meta?: object, slug?: string, type: string, cover?: object, title: string, end_at?: string, currency?: string, subtitle?: string, description?: string }
- `POST https://api.mcp.ai/api/givebutter/create/campaign/ticket` — Tool to create a campaign ticket for events or fundraisers. Use when you need to add ticket options to a campaign with pricing and inventory details.
  - body: { name: string, price: number, scope: string, active?: boolean, bundles?: string[], subtype: string, campaign: integer, pictures?: string[], bundle_only?: boolean, description?: string, retail_price?: number, custom_fields?: string[], hide_remaining?: boolean, total_quantity?: integer }
- `POST https://api.mcp.ai/api/givebutter/create/contact` — Tool to create a new contact in Givebutter. Use when you need to add a new contact with first name, last name, and optionally email, phone, and other details.
  - body: { dob?: string, note?: string, title?: string, emails?: object[], gender?: string, phones?: object[], prefix?: string, suffix?: string, company?: string, employer?: string, pronouns?: string, addresses?: object[], last_name: string, first_name: string, tiktok_url?: string, external_id?: string, middle_name?: string, twitter_url?: string, website_url?: string, company_name?: string, facebook_url?: string, linkedin_url?: string, custom_fields?: object[], primary_email?: string, primary_phone?: string, preferred_name?: string }
- `POST https://api.mcp.ai/api/givebutter/create/contact/activity` — Tool to create a contact activity (e.g., note). Use when you need to log an activity for a contact. Requires contact ID and activity details.
  - body: { note: string, type: string, contact: integer }
- `POST https://api.mcp.ai/api/givebutter/create/discount/code` — Tool to create a discount code for a campaign. Use when you need to provide promotional pricing or discounts for campaign items.
  - body: { code: string, type: string, uses?: integer, items?: string[], active: boolean, amount: number, campaign: integer, starts_at?: string, expires_at?: string }
- `POST https://api.mcp.ai/api/givebutter/create/fund` — Tool to create a new fund. Use when you need to create a fund with a name and optional code.
  - body: { code?: string, name: string }
- `POST https://api.mcp.ai/api/givebutter/create/household` — Tool to create a new household in Givebutter. Use when you need to group related contacts under a single household entity.
  - body: { name: string, note?: string, envelope_name?: string, head_contact_id?: integer }
- `POST https://api.mcp.ai/api/givebutter/create/transaction` — Tool to create a new transaction for a campaign. Use when you need to record a donation or payment, typically for offline transactions like cash or check payments.
  - body: { amount: number, contact_id: integer, campaign_code?: string, transacted_at: string, campaign_title?: string, payment_method: string }
- `POST https://api.mcp.ai/api/givebutter/create/webhook` — Tool to create a new webhook subscription. Use when you need to receive real-time notifications programmatically after confirming your endpoint can validate Givebutter's signing secret.
  - body: { url: string, name: string, events: string[], enabled?: boolean }
- `POST https://api.mcp.ai/api/givebutter/delete/campaign` — Tool to delete a campaign by its ID. Use after confirming the campaign has no funds raised. Example: "Delete campaign abc123".
  - body: { campaign_id: string }
- `POST https://api.mcp.ai/api/givebutter/delete/contact/activity` — Tool to delete a contact activity by contact ID and activity ID. Use when you need to remove a specific activity from a contact's record.
  - body: { contact_id: integer, activity_id: integer }
- `POST https://api.mcp.ai/api/givebutter/delete/discount/code` — Tool to delete a discount code from a campaign. Use when you need to remove a discount code after confirming it exists.
  - body: { campaign: integer, discount_code: integer }
- `POST https://api.mcp.ai/api/givebutter/delete/fund` — Tool to delete a fund by its ID. Use when you need to remove a fund after confirming it exists. Example: "Delete fund fund_abc123".
  - body: { fund_id: string }
- `POST https://api.mcp.ai/api/givebutter/delete/household` — Tool to delete a household by its ID. Use after confirming the household exists and has no associated data. Example: "Delete household 1007067".
  - body: { household_id: integer }
- `POST https://api.mcp.ai/api/givebutter/delete/webhook` — Tool to delete a webhook by its ID. Use when you need to remove an obsolete webhook after confirming no further events are needed. Example: "Delete webhook abc123".
  - body: { webhook_id: string }
- `POST https://api.mcp.ai/api/givebutter/get/campaign` — Tool to retrieve details for a specific campaign by its ID or code. Use when you need to fetch campaign information, check status, or get fundraising progress.
  - body: { campaign: string }
- `POST https://api.mcp.ai/api/givebutter/get/campaign/ticket` — Tool to retrieve a specific campaign ticket by campaign ID and ticket ID. Use when you need details about a specific ticket item within a campaign.
  - body: { campaign: integer, ticketId: integer }
- `POST https://api.mcp.ai/api/givebutter/get/contact` — Tool to retrieve details of a specific contact by ID. Use after confirming the contact ID is valid.
  - body: { contact_id: integer }
- `POST https://api.mcp.ai/api/givebutter/get/contact/activity` — Tool to retrieve a specific contact activity by contact ID and activity ID. Use when you need detailed information about a particular activity for a contact.
  - body: { contact: integer, activity: integer }
- `POST https://api.mcp.ai/api/givebutter/get/discount/code` — Tool to retrieve details of a specific discount code for a campaign. Use when you need to view discount code information.
  - body: { campaign: integer, discount_code: integer }
- `POST https://api.mcp.ai/api/givebutter/get/fund` — Tool to retrieve details of a specific fund by its ID. Use after confirming the fund ID is valid.
  - body: { fund_id: string }
- `POST https://api.mcp.ai/api/givebutter/get/household` — Tool to retrieve details of a specific household by its ID. Use when you need information about a household including its contacts.
  - body: { household: integer }
- `POST https://api.mcp.ai/api/givebutter/get/members` — Tool to retrieve a paginated list of members for a given campaign. Use when you need to list or process campaign members.
  - body: { page?: integer, campaign_id: string }
- `POST https://api.mcp.ai/api/givebutter/get/payouts` — Tool to retrieve a list of payouts associated with your account. Use when you need to list withdrawal transactions after authentication.
  - body: { page?: integer, limit?: integer }
- `POST https://api.mcp.ai/api/givebutter/get/plans` — Tool to retrieve a list of plans associated with your account. Use after authentication to fetch recurring donation plans. Returns only plans scoped to the authenticated account; cross-account retriev
  - body: { page?: integer, limit?: integer }
- `POST https://api.mcp.ai/api/givebutter/get/teams` — Tool to retrieve a list of teams for a specific campaign. Use after creating or updating a campaign when you need to list fundraising teams. Example: "Get teams for campaign camp123".
  - body: { campaign_id: string }
- `POST https://api.mcp.ai/api/givebutter/get/tickets` — Tool to retrieve a list of tickets. Use when you need to list all tickets for your account after authentication.
- `POST https://api.mcp.ai/api/givebutter/get/transactions` — Tool to retrieve a list of transactions associated with your account. Use when you need to list all donations and payments, optionally filtered by scope.
  - body: { page?: integer, limit?: integer, scope?: string }
- `POST https://api.mcp.ai/api/givebutter/get/webhook` — Tool to retrieve a specific webhook by its ID. Use when you need details about a single webhook subscription.
  - body: { webhook: string }
- `POST https://api.mcp.ai/api/givebutter/get/webhook/activity` — Tool to retrieve a specific webhook activity by its ID. Use when you need detailed information about a single webhook delivery event.
  - body: { webhook: string, activity: string }
- `POST https://api.mcp.ai/api/givebutter/get/webhooks` — Tool to retrieve all webhooks configured for your account. Use after obtaining valid authentication.
  - body: { page?: integer, limit?: integer }
- `POST https://api.mcp.ai/api/givebutter/list/campaign/tickets` — Tool to retrieve a list of all campaign tickets for a specific campaign. Use when you need to list tickets available for a campaign.
  - body: { page?: integer, campaign: integer }
- `POST https://api.mcp.ai/api/givebutter/list/campaigns` — Tool to retrieve a paginated list of campaigns for the authenticated account. Use when you need to list all campaigns.
  - body: { page?: integer, scope?: string }
- `POST https://api.mcp.ai/api/givebutter/list/contact/activities` — Tool to retrieve all activities for a specific contact. Use when you need to view the activity history of a contact, optionally filtered by activity type.
  - body: { page?: integer, type?: string, contact: integer }
- `POST https://api.mcp.ai/api/givebutter/list/contacts` — Tool to retrieve a paginated list of contacts from your Givebutter account. Use when you need to list all contacts with optional filtering by type, date ranges, contribution amounts, tags, or sorting 
  - body: { page?: integer, tags?: string, type?: string, sortBy?: string, sortByDesc?: string, createdAfter?: string, updatedAfter?: string, createdBefore?: string, updatedBefore?: string, totalContributionsMax?: number, totalContributionsMin?: number, recurringContributionsMax?: number, recurringContributionsMin?: number }
- `POST https://api.mcp.ai/api/givebutter/list/discount/codes` — Tool to list all discount codes for a campaign. Use when you need to retrieve all active and inactive discount codes associated with a specific campaign.
  - body: { page?: integer, campaign: integer }
- `POST https://api.mcp.ai/api/givebutter/list/funds` — Tool to list all funds in your Givebutter account. Returns paginated results with up to 20 funds per page. Use when you need to retrieve multiple funds or browse all available funds.
  - body: { page?: integer }
- `POST https://api.mcp.ai/api/givebutter/list/household/contacts` — Tool to retrieve all contacts associated with a household. Use when you need to list contacts for a specific household ID.
  - body: { page?: integer, household: integer }
- `POST https://api.mcp.ai/api/givebutter/list/households` — Tool to retrieve a list of all households in your account. Use when you need to view or manage household groups and their associated contacts.
  - body: { page?: string }
- `POST https://api.mcp.ai/api/givebutter/list/messages` — Tool to retrieve a paginated list of messages. Use when you need to list messages sent through your Givebutter account. Returns paginated results; use the page parameter to navigate through pages.
  - body: { page?: integer }
- `POST https://api.mcp.ai/api/givebutter/list/pledges` — Tool to retrieve a paginated list of all pledges. Use when you need to list pledges with optional pagination support.
  - body: { page?: integer }
- `POST https://api.mcp.ai/api/givebutter/list/webhook/activities` — Tool to list all webhook activities for a specific webhook. Use when you need to retrieve activity logs for a webhook subscription.
  - body: { page?: integer, webhook: string }
- `POST https://api.mcp.ai/api/givebutter/remove/contact/tags` — Tool to remove tags from a contact in Givebutter. Use when you need to disassociate specific tags from a contact record. Requires the contact ID and a list of tag names to remove.
  - body: { tags: string[], contact: integer }
- `POST https://api.mcp.ai/api/givebutter/restore/contact` — Tool to restore a deleted contact by contact ID. Use when you need to recover a contact that was previously deleted.
  - body: { contact: integer }
- `POST https://api.mcp.ai/api/givebutter/sync/contact/tags` — Tool to sync tags for a contact. Replaces all existing tags with the specified tags. Use when you need to update the complete tag list for a contact.
  - body: { tags: string[], contact: integer }
- `POST https://api.mcp.ai/api/givebutter/update/campaign` — Tool to update an existing campaign's details by its ID. Use when you need to modify campaign attributes after creation.
  - body: { goal?: integer, meta?: object, slug?: string, type?: string, cover?: object, title?: string, end_at?: string, currency?: string, subtitle?: string, campaign_id: string, description?: string }
- `POST https://api.mcp.ai/api/givebutter/update/campaign/put` — Tool to update a campaign using PUT method. Use when you need to update campaign details like title, description, goal, or other attributes.
  - body: { goal?: integer, meta?: object, slug?: string, type?: string, cover?: object, title?: string, end_at?: string, campaign: integer, currency?: string, subtitle?: string, description?: string }
- `POST https://api.mcp.ai/api/givebutter/update/contact` — Tool to update an existing contact's details by contact ID. Use when modifying contact information after confirming the contact_id. Only provided fields will be updated.
  - body: { email?: string, phone?: string, address?: object, last_name: string, contact_id: string, first_name: string, custom_fields?: object[] }
- `POST https://api.mcp.ai/api/givebutter/update/contact/activity` — Tool to update a contact activity by contact ID and activity ID. Use when modifying an existing contact activity record.
  - body: { note?: string, type?: string, contact: integer, subject?: string, activity: integer, occurred_at?: string }
- `POST https://api.mcp.ai/api/givebutter/update/contact/put` — Tool to update a contact using PUT method. Use when you need to update contact information by contact ID.
  - body: { dob?: string, note?: string, title?: string, emails?: object[], gender?: string, phones?: object[], prefix?: string, suffix?: string, contact: integer, employer?: string, pronouns?: string, addresses?: object[], last_name: string, first_name: string, tiktok_url?: string, middle_name?: string, twitter_url?: string, website_url?: string, facebook_url?: string, linkedin_url?: string, preferred_name?: string }
- `POST https://api.mcp.ai/api/givebutter/update/discount/code` — Tool to update an existing discount code for a campaign. Use when you need to modify discount code details such as amount, expiration, or usage limits.
  - body: { code?: string, type?: string, uses?: number, items?: string[], active?: boolean, amount: number, campaign: integer, starts_at?: string, expires_at?: string, discount_code: integer }
- `POST https://api.mcp.ai/api/givebutter/update/fund` — Tool to update a fund's details by its ID. Use when you need to modify fund attributes such as name or code.
  - body: { code?: string, name?: string, fund_id: string }
- `POST https://api.mcp.ai/api/givebutter/update/household` — Tool to update an existing household's details by its ID. Use when you need to modify household information after confirming the household_id.
  - body: { name?: string, note?: string, household_id: integer, envelope_name?: string, head_contact_id?: integer }
- `POST https://api.mcp.ai/api/givebutter/update/webhook` — Tool to update an existing webhook subscription's details. Use when you need to modify a webhook's name, URL, trigger events, or enabled state after confirming its ID. Example: "Update webhook wh_1234
  - body: { id: string, url: string, name?: string, events: string[], enabled?: boolean }
- `POST https://api.mcp.ai/api/givebutter/update/webhook/put` — Tool to update a webhook using PUT method (full replacement). Use when you need to completely replace a webhook's configuration.
  - body: { url: string, name?: string, events: string[], enabled?: boolean, webhook: string }

## Example prompts
- "What can I do in Givebutter?"
- "Show me a summary of my Givebutter account"

## More
- Page: https://mcp.ai/givebutter
- Agent spec (llms.txt): https://mcp.ai/givebutter/llms.txt
- Postman collection: https://mcp.ai/givebutter/postman.json
