Givebutter
by Givebutter, Inc.
Overview
Givebutter is the fundraising and donor management platform trusted by tens of thousands of nonprofits. This app connects your Givebutter account to ChatGPT so your team can work with your fundraising data conversationally — no exports, no dashboards, no switching tabs. Use it to: - Look up donations, transactions, and payout activity across your campaigns - Find and summarize donor and contact records, giving history, and engagement - Check how a campaign, event, or fundraising page is performing - Pull the numbers you need for board updates, grant reports, and end-of-month reconciliation Ask things like: - "How much did we raise in our spring appeal?" - "Who are our top recurring donors this year?" - "Summarize new donors from last week." ChatGPT retrieves the answer directly from your live Givebutter data and respects your existing account permissions — it can only access what your connected account can see. Built and maintained by Givebutter. Authentication is handled securely through OAuth; you stay in control of access and can disconnect at any time.
Tools
givebutter_load_entity_context
ChatGPT{capabilities, nested_path?, resolves_references?}. Operators, descriptions, value shapes, and metric allowlists are NOT in the index — they are pulled on demand. To get full detail for specific fields, call this tool again with field_keys: ["<key>", ...]. The expansion response includes type, description, filter operators, bucket types, metric functions, and pairs_with_* cross-references. Capabilities: - "filter": the field can be used in filters.filters[] - "bucket": the field can be used in aggregates.bucket - "aggregate": the field can be used in aggregates.metrics[] - "project": the field can be returned in row output (name it in the query fields array) Typical workflow: 1. Call with entity only to see what fields exist and their capabilities. 2. Decide which fields fit the user query. 3. Call again with field_keys: [...] to get full definitions. 4. Compose givebutter_query.givebutter_query
ChatGPTfields array to choose exactly which fields come back; unknown field names are rejected with the valid set. Discover field names with givebutter_load_entity_context. Pass sort ([{field, dir}]) to order rows — use this plus limit for "top N" questions (e.g. sort by total_contributions desc, limit 10). Rows are paginated. The response carries count (this page), total (all matches), and flags.truncated. When truncated is true, more rows exist — request the next page with offset = previous offset + limit. All monetary amounts — filter values and result metrics — are in US dollars (e.g., 100 = $100). Never send or expect cents. When the aggregates block is present, metrics.fn must be one of: count|sum|avg|min|max|distinct. bucket.type must be time_bucket or terms. All bucket and metric fields must share the same nested path. A top-level intent field (a sibling of entity and aggregates, NOT nested inside the aggregates block) is required when aggregates is present. For counting rows, use {"fn":"count","field":"*","alias":"total"}. For counting distinct values of a specific field, use {"fn":"distinct","field":"<field_name>","alias":"distinct_count"}.givebutter_who_am_i
ChatGPTid to build dashboard URLs (dashboard.givebutter.com/accounts/{id}/...). Includes the account NCF (Nonprofit Context File): mission, voice, branding, and other grounding context when available, or null when the account has no context yet.




