Connect
Optimize
Secure
The #1 agentic semantic tool search: 91.6% first-try accuracy on S1 Search Bench • Explore Tool Discovery →
Connect your AI agent to StackOne's Bloomerang MCP server and give it 104 MCP tools out of the box. Auth, tool execution, and security all managed.
Coverage
Create, read, update, and delete across Bloomerang — and extend your agent's capabilities with custom actions.
Authentication
Per-user OAuth in one call. Your Bloomerang MCP server gets session-scoped tokens with zero credentials stored on your infra.
Agent Auth →Security
Every Bloomerang tool response scanned for prompt injection in milliseconds — 88.7% accuracy, all running on CPU.
Prompt Injection Defense →Performance
Free up to 96% of your agent's context window to enhance reasoning and reduce cost, on every Bloomerang call.
Tools Discovery →A Bloomerang MCP server lets AI agents read and write Bloomerang data through the Model Context Protocol — Anthropic's open standard for connecting LLMs to external tools. StackOne's Bloomerang MCP server ships with 104 pre-built actions, fully extensible via the Connector Builder — plus managed authentication, prompt injection defense, observability, and agent execution runtime. Connect it from MCP clients like Claude Desktop, Claude Code, Cursor, Goose, and VS Code, or from agent frameworks like OpenAI Agents SDK, LangChain, and Vercel AI SDK.
Every action from Bloomerang's API, ready for your agent. Create, read, update, and delete — scoped to exactly what you need.
Retrieves a paginated list of all constituents (donors, contacts, and organizations) from the Bloomerang CRM database via GET /constituents.
Retrieves a single constituent record by its unique numeric ID via GET /constituent/{id}, returning the complete donor or organization profile.
Performs a text search across constituents and households via GET /constituents/search, matching against names and returning paginated results.
Updates an existing constituent record by ID via PUT /constituent/{id}, applying partial updates where only provided fields are modified.
Permanently deletes a constituent record by ID via DELETE /constituent/{id}, removing the donor or organization and all associated data from the CRM.
Creates a new donation transaction for a constituent via POST /transaction, recording the gift in the CRM database without initiating a payment charge unless a WalletItem is provided.
Retrieves a paginated list of all donation transactions from the Bloomerang CRM via GET /transactions, with filters for amount range, donor, type, and transaction number.
Retrieves a single transaction record by its unique numeric ID via GET /transaction/{id}, returning the complete donation details including designations and payment information.
Updates an existing transaction record by ID via PUT /transaction/{id}, applying partial updates to donation details such as amount, date, method, and designations.
Permanently deletes a transaction record by ID via DELETE /transaction/{id}, removing the donation and all associated designations from the CRM.
Retrieves a paginated list of transaction designations via GET /transactions/designations, showing how donations are allocated across funds, campaigns, and appeals.
Retrieves a single designation record by its unique numeric ID via GET /transactions/designation/{id}, returning the complete fund/campaign/appeal allocation details.
Creates a new interaction (communication touchpoint) for a constituent via POST /interaction, logging a donor engagement activity such as an email, call, or meeting.
Retrieves a paginated list of donor interactions (touchpoints) from the Bloomerang CRM via GET /interactions, tracking all communications and engagement activities with constituents.
Retrieves a single interaction record by its unique numeric ID via GET /interaction/{id}, returning the complete communication touchpoint details.
Updates an existing interaction record by ID via PUT /interaction/{id}, applying partial updates to communication details such as channel, purpose, and notes.
Permanently deletes an interaction record by ID via DELETE /interaction/{id}, removing the communication touchpoint from the constituent's timeline.
Creates a new task (scheduled follow-up action) via POST /task, assigning a stewardship activity to a user with a due date, channel, and purpose.
Retrieves a paginated list of tasks (scheduled follow-up actions) from the Bloomerang CRM via GET /tasks, with filters for status, due date range, assignee, and associated constituent.
Retrieves a single task record by its unique numeric ID via GET /task/{id}, returning the complete scheduled action details including assignee, due date, and status.
Updates an existing task record by ID via PUT /task/{id}, applying partial updates to scheduled action details such as due date, subject, assignee, and notes.
Permanently deletes a task record by ID via DELETE /task/{id}, removing the scheduled follow-up action from the CRM.
Creates a new fundraising campaign via POST /campaign, setting up an organizational unit for tracking donations and measuring progress toward a fundraising goal.
Retrieves a paginated list of fundraising campaigns from the Bloomerang CRM via GET /campaigns, used to organize and track donation drives and fundraising initiatives.
Retrieves a single campaign record by its unique numeric ID via GET /campaign/{id}, returning the complete fundraising initiative details including goal progress.
Updates an existing campaign record by ID via PUT /campaign/{id}, applying partial updates to campaign details such as name, dates, goal, and active status.
Creates a new fundraising appeal via POST /appeal, defining a solicitation method that can be referenced in transaction designations.
Retrieves a paginated list of fundraising appeals from the Bloomerang CRM via GET /appeals, representing specific solicitation efforts or outreach methods used to generate donations.
Retrieves a single appeal record by its unique numeric ID via GET /appeal/{id}, returning the complete solicitation method details.
Updates an existing appeal record by ID via PUT /appeal/{id}, applying partial updates to the appeal name or active status.
Creates a new fund (financial account category) via POST /fund, defining a donation allocation target for use in transaction designations.
Retrieves a paginated list of funds from the Bloomerang CRM via GET /funds, representing financial accounts or categories that donations are allocated to (e.g., General Fund, Building Fund).
Retrieves a single fund record by its unique numeric ID via GET /fund/{id}, returning the complete financial account details.
Updates an existing fund record by ID via PUT /fund/{id}, applying partial updates to fund properties such as name, active status, default designation, and QuickBooks ledger class.
Creates a new household grouping via POST /household, linking individual constituents into a family unit with a designated head for combined giving and communication.
Retrieves a paginated list of households from the Bloomerang CRM via GET /households, representing family or organizational groupings of individual constituents for combined giving and communication.
Retrieves a single household record by its unique numeric ID via GET /household/{id}, returning the complete household grouping details including head, members, and name fields.
Updates an existing household record by ID via PUT /household/{id}, applying partial updates to membership, head designation, and name fields.
Permanently deletes a household grouping by ID via DELETE /household/{id}, removing the family unit but preserving all individual member constituent records.
Creates a new note (free-text annotation) for a constituent via POST /note, adding internal documentation to a donor's record.
Retrieves a paginated list of notes from the Bloomerang CRM via GET /notes, representing free-text annotations attached to constituent records for internal documentation.
Retrieves a single note record by its unique numeric ID via GET /note/{id}, returning the complete annotation including content, constituent association, and custom fields.
Updates an existing note record by ID via PUT /note/{id}, applying partial updates to the content, date, or custom field values.
Permanently deletes a note record by ID via DELETE /note/{id}, removing the annotation from the constituent's timeline.
Creates a new mailing address for a constituent via POST /address, adding a secondary address or the initial address record for a donor.
Retrieves a single address record by its unique numeric ID via GET /addresses/{id}, returning the complete mailing address details.
Updates an existing address record by ID via PUT /address/{id}, applying partial updates to mailing address fields such as street, city, state, and primary designation.
Permanently deletes an address record by ID via DELETE /address/{id}, removing the mailing address from the constituent's record.
Creates a new email address for a constituent via POST /email, adding a secondary email or the initial email record for a donor.
Retrieves a single email address record by its unique numeric ID via GET /email/{id}, returning the complete email details including type, value, and primary designation.
Updates an existing email address record by ID via PUT /email/{id}, applying partial updates to the email type, value, or primary designation.
Permanently deletes an email address record by ID via DELETE /email/{id}, removing the email from the constituent's contact information.
Creates a new phone number for a constituent via POST /phone, adding a secondary phone or the initial phone record for a donor.
Retrieves a paginated list of phone numbers from the Bloomerang CRM via GET /phones, including primary and secondary phone records for all constituents.
Retrieves a single phone number record by its unique numeric ID via GET /phone/{id}, returning the complete phone details including type, number, extension, and primary designation.
Updates an existing phone number record by ID via PUT /phone/{id}, applying partial updates to the phone type, number, extension, or primary designation.
Permanently deletes a phone number record by ID via DELETE /phone/{id}, removing the phone from the constituent's contact information.
Creates a new refund record against an existing transaction via POST /refund, recording a partial or full return of a donation amount while preserving the audit trail.
Retrieves a paginated list of refund records from the Bloomerang CRM via GET /refunds, tracking returned or reversed donation amounts.
Retrieves a single refund record by its unique numeric ID via GET /refund/{id}, returning the complete refund details including amount, date, associated transaction, and reason.
Updates an existing refund record by ID via PUT /refund/{id}, applying partial updates to the refund date, amount, or reason note.
Permanently deletes a refund record by ID via DELETE /refund/{id}, removing the refund entry and restoring the original transaction to its full amount.
Creates a new relationship between two non-household constituents via POST /relationship, defining a bidirectional connection such as Spouse, Parent/Child, or Employer/Employee.
Retrieves a single relationship record by its unique numeric ID via GET /relationship/{id}, returning the complete connection details between two constituents.
Updates an existing relationship record by ID via PUT /relationship/{id}, applying partial updates to the role type, head-of-household designation, or note.
Permanently deletes a relationship record by ID via DELETE /relationship/{id}, removing the bidirectional connection between two constituents.
Retrieves a paginated list of relationship role definitions from the Bloomerang CRM via GET /relationshiproles, providing the available connection types (e.g., Spouse, Parent, Employer) for use when creating relationships.
Retrieves a single relationship role definition by its unique numeric ID via GET /relationshiprole/{id}, returning the role name, reciprocal role, and configuration details.
Creates a new soft credit via POST /softcredit, attributing donation recognition to a constituent who influenced a gift without being the actual donor.
Retrieves a paginated list of soft credits from the Bloomerang CRM via GET /softcredits, representing donation recognition given to constituents who influenced a gift but are not the actual donor.
Retrieves a single soft credit record by its unique numeric ID via GET /softcredit/{id}, returning the complete recognition attribution details.
Updates an existing soft credit record by ID via PUT /softcredit/{id}, allowing modification of the recognized amount.
Permanently deletes a soft credit record by ID via DELETE /softcredit/{id}, removing the donation recognition attribution from the constituent.
Creates a new tribute (honorary or memorial dedication) via POST /tribute, defining a person to be honored or memorialized in donation designations.
Retrieves a paginated list of tributes from the Bloomerang CRM via GET /tributes, representing honorary or memorial dedications that can be attached to donations.
Retrieves a single tribute record by its unique numeric ID via GET /tribute/{id}, returning the complete honorary or memorial dedication details.
Performs a text search across active tributes via GET /tributes/search, matching against tribute names with a minimum 3-character query for autocomplete or lookup functionality.
Updates an existing tribute record by ID via PUT /tribute/{id}, applying partial updates to the tribute name, type, description, and other properties.
Retrieves a paginated list of email interest categories from the Bloomerang CRM via GET /emailInterests, representing the email subscription topics that constituents can opt into or out of.
Retrieves a single email interest category by its unique numeric ID via GET /emailInterest/{id}, returning the subscription topic details.
Creates a new wallet item (stored payment method) for a constituent via POST /walletitem, securely tokenizing a credit card or bank account for recurring donations.
Retrieves a list of wallet items (stored payment methods) from the Bloomerang CRM via GET /walletitems, showing saved credit cards and bank accounts used for recurring donations.
Retrieves a single wallet item (stored payment method) by its unique numeric ID via GET /walletitem/{id}, returning masked payment details including method type, last four digits, and expiration.
Permanently deletes a wallet item (stored payment method) by ID via DELETE /walletitem/{id}, removing the saved credit card or bank account from the constituent's record.
Retrieves a list of payment processors configured in the Bloomerang account via GET /processors, showing the gateways that handle credit card and bank account charges for donations.
Retrieves a single payment processor by its unique numeric ID via GET /processor/{id}, returning the complete gateway configuration including type, status, and supported payment methods.
Creates a new constituent or merges data into an existing duplicate record via POST /constituent/merge, using intelligent duplicate detection based on name plus contact info.
Retrieves all relationships for a specific constituent via GET /constituent/{id}/relationships, showing family, professional, and organizational connections.
Retrieves a chronological timeline of all activity for a constituent (or all household members if a Household ID is provided) via GET /constituent/{id}/timeline.
Retrieves a paginated list of installment schedule entries for a specific pledge via GET /pledge/{id}/installments, showing scheduled payment dates and amounts.
Retrieves a paginated list of successful payments made against a specific pledge via GET /pledge/{id}/payments, showing fulfilled installment transactions.
Retrieves a paginated list of failed payment attempts for a specific pledge via GET /pledge/{id}/paymentFailures, showing declined or errored transactions.
Retrieves a paginated list of physical mailing addresses from the Bloomerang CRM via GET /addresses, including primary and secondary addresses for all constituents.
Retrieves a paginated list of email addresses from the Bloomerang CRM via GET /emails, including primary and secondary email records for all constituents.
Retrieves a list of custom field categories for a specific entity type via GET /customFieldCategories/{type}, showing how custom fields are organized into groups in the Bloomerang CRM.
Retrieves a list of custom field definitions for a specific entity type via GET /customFields/{type}, showing the available custom data fields and their configurations.
Retrieves all selectable option values for PickOne and PickMultiple custom fields of a given entity type via GET /customValues/{type}, providing the dropdown options available when setting custom field values.
Retrieves selectable option values for a specific custom field via GET /customValues/{type}/{fieldId}, narrowing results to a single PickOne or PickMultiple field.
Updates communication preferences and restrictions for a constituent via PUT /constituent/{id}/updateCommunicationSettings, managing opt-outs and email interest subscriptions.
Searches for possible duplicate constituent records via POST /constituent/duplicates, requiring a name match plus at least one matching contact detail.
Marks a task as completed via PUT /task/{id}/complete, with an option to automatically create a corresponding interaction record from the task details.
Triggers a recalculation of all campaign goal summaries via GET /campaigns/refreshsummaries, updating progress metrics to reflect the latest transaction data.
Generates a preview installment schedule for a pledge via GET /pledge/generateInstallments without saving to the database, useful for calculating payment plans before creating or modifying a pledge.
Writes off the remaining unpaid balance of a pledge via POST /pledge/{id}/writeOff, marking the outstanding amount as uncollectible.
Connect your AI agent to Bloomerang and help your team scale the sales operations they run by hand today.
Use StackOne to connect your AI agent to your CRM, email, and calendar tools to automate post-demo follow-up.
ViewUse StackOne to connect your AI agent to your CRM, email, and calendar tools to automate deal risk scoring and pipeline alerts.
ViewUse StackOne to connect your AI agent to your CRM, sales engagement, and messaging tools to automate outbound prospecting.
ViewOne endpoint. Any framework. Your agent is talking to Bloomerang in under 10 lines of code.
Agent Frameworks
{
"mcpServers": {
"stackone": {
"command": "npx",
"args": [
"-y",
"mcp-remote@latest",
"https://api.stackone.com/mcp?x-account-id=<account_id>",
"--header",
"Authorization: Basic <YOUR_BASE64_TOKEN>"
]
}
}
}Anthropic's code_execution processes data already in context. Custom MCP code mode keeps raw tool responses in a sandbox. 14K tokens vs 500.
11 min
Benchmarking BM25, TF-IDF, and hybrid search for MCP tool discovery across 916 tools. The 80/20 TF-IDF/BM25 hybrid hits 21% Top-1 accuracy in under 1ms.
10 min
MCP tools that read emails, CRM records, and tickets are indirect prompt injection vectors. Here's how we built a two-tier defense that scans tool results in ~11ms.
12 min
origin_owner_id.All the tools you need to build and scale AI agent integrations, with best-in-class connectivity, execution, and security.