Search Bloomerang constituents and donations; log interactions, notes and tasks.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
WRITE: create a new individual or organization constituent. For an individual give first_name/last_name; for an organization give full_name. Search first (bloomerang_search_constituents) to avoid creating a duplicate donor. Bloomerang: POST /constituent.
Record type.
Must match a prefix configured in the CRM, e.g. Mr., Ms., Dr.
Constituent status.
Must match a suffix configured in the CRM.
Birth date (YYYY-MM-DD).
Organization name, or an explicit individual full name.
Primary email address.
Primary phone.
Primary postal address.
The server marks this tool as destructive. Running it may delete or overwrite data on the server or in any account you connected with your headers.
WRITE: create a new individual or organization constituent. For an individual give first_name/last_name; for an organization give full_name. Search first (bloomerang_search_constituents) to avoid creating a duplicate donor. Bloomerang: POST /constituent.
| Argument | Type | Description |
|---|---|---|
| type* | string | Record type. |
| gender | string | |
| prefix | string | Must match a prefix configured in the CRM, e.g. Mr., Ms., Dr. |
| status | string | Constituent status. |
| suffix | string | Must match a suffix configured in the CRM. |
| website | string | |
| employer | string | |
| birthdate | string | Birth date (YYYY-MM-DD). |
| full_name | string | Organization name, or an explicit individual full name. |
| job_title | string | |
| last_name | string | |
| first_name | string | |
| formal_name | string | |
| middle_name | string | |
| envelope_name | string | |
| informal_name | string | |
| primary_email | object | Primary email address. |
| primary_phone | object | Primary phone. |
| primary_address | object | Primary postal address. |
| recognition_name | string |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"type"
],
"properties": {
"type": {
"enum": [
"Individual",
"Organization"
],
"type": "string",
"description": "Record type."
},
"gender": {
"enum": [
"Male",
"Female",
"Other"
],
"type": "string"
},
"prefix": {
"type": "string",
"description": "Must match a prefix configured in the CRM, e.g. Mr., Ms., Dr."
},
"status": {
"enum": [
"Active",
"Inactive",
"Deceased"
],
"type": "string",
"description": "Constituent status."
},
"suffix": {
"type": "string",
"description": "Must match a suffix configured in the CRM."
},
"website": {
"type": "string"
},
"employer": {
"type": "string"
},
"birthdate": {
"type": "string",
"description": "Birth date (YYYY-MM-DD)."
},
"full_name": {
"type": "string",
"description": "Organization name, or an explicit individual full name."
},
"job_title": {
"type": "string"
},
"last_name": {
"type": "string"
},
"first_name": {
"type": "string"
},
"formal_name": {
"type": "string"
},
"middle_name": {
"type": "string"
},
"envelope_name": {
"type": "string"
},
"informal_name": {
"type": "string"
},
"primary_email": {
"type": "object",
"required": [
"Value"
],
"properties": {
"Type": {
"enum": [
"Home",
"Work"
],
"type": "string"
},
"Value": {
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"description": "The email address."
}
},
"description": "Primary email address."
},
"primary_phone": {
"type": "object",
"required": [
"Number"
],
"properties": {
"Type": {
"enum": [
"Home",
"Work",
"Mobile",
"Fax"
],
"type": "string"
},
"Number": {
"type": "string",
"description": "The phone number, formatting allowed, without the extension."
},
"Extension": {
"type": "string"
}
},
"description": "Primary phone."
},
"primary_address": {
"type": "object",
"properties": {
"City": {
"type": "string"
},
"Type": {
"enum": [
"Home",
"Vacation",
"Work"
],
"type": "string"
},
"State": {
"type": "string",
"description": "Must match a state configured in the Bloomerang CRM."
},
"Street": {
"type": "string"
},
"Country": {
"type": "string",
"description": "Must match a country configured in the Bloomerang CRM."
},
"PostalCode": {
"type": "string"
}
},
"description": "Primary postal address."
},
"recognition_name": {
"type": "string"
}
}
}WRITE: log an interaction with a constituent — a call, email, meeting, letter, etc. — on their timeline. Bloomerang: POST /interaction.
| Argument | Type | Description |
|---|---|---|
| date* | string | When it happened (YYYY-MM-DD). |
| note | string | Details. |
| channel* | string | How it happened. |
| purpose* | string | Why it happened. |
| subject* | string | Short subject line. |
| is_inbound | boolean | True if the constituent initiated it. |
| constituent_id* | integer | The API Id of the constituent (not the CRM AccountNumber). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"constituent_id",
"date",
"channel",
"purpose",
"subject"
],
"properties": {
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "When it happened (YYYY-MM-DD)."
},
"note": {
"type": "string",
"description": "Details."
},
"channel": {
"enum": [
"Email",
"MassEmail",
"Phone",
"TextMessage",
"Mail",
"InPerson",
"SocialMedia",
"Website",
"Twitter",
"Other",
"EngagementSurveyEmail",
"EngagementSurvey"
],
"type": "string",
"description": "How it happened."
},
"purpose": {
"enum": [
"Acknowledgement",
"ImpactCultivation",
"Newsletter",
"Receipt",
"Solicitation",
"SpecialEvent",
"VolunteerActivity",
"PledgeReminder",
"Welcome",
"BenevonPointOfEntry",
"BenevonFollowUp",
"BenevonAskEvent",
"BenevonOneOnOneAsk",
"BenevonOngoingCultivation",
"Other"
],
"type": "string",
"description": "Why it happened."
},
"subject": {
"type": "string",
"minLength": 1,
"description": "Short subject line."
},
"is_inbound": {
"type": "boolean",
"description": "True if the constituent initiated it."
},
"constituent_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "The API Id of the constituent (not the CRM AccountNumber).",
"exclusiveMinimum": 0
}
}
}WRITE: add a note to a constituent's record. Bloomerang: POST /note.
| Argument | Type | Description |
|---|---|---|
| date* | string | Note date (YYYY-MM-DD). |
| note* | string | The note text. |
| constituent_id* | integer | The API Id of the constituent (not the CRM AccountNumber). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"constituent_id",
"date",
"note"
],
"properties": {
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Note date (YYYY-MM-DD)."
},
"note": {
"type": "string",
"minLength": 1,
"description": "The note text."
},
"constituent_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "The API Id of the constituent (not the CRM AccountNumber).",
"exclusiveMinimum": 0
}
}
}WRITE: create a follow-up task, optionally tied to a constituent and assigned to a user (find user Ids via bloomerang_get_current_user or existing tasks). Bloomerang: POST /task.
| Argument | Type | Description |
|---|---|---|
| note | string | Details. |
| channel | string | Planned channel. |
| purpose | string | Planned purpose. |
| subject* | string | Short subject line. |
| due_date* | string | Due date (YYYY-MM-DD). |
| constituent_id | integer | Constituent the task is about. |
| assignee_user_id | integer | User Id to assign it to. |
| send_notifications | boolean | If true, Bloomerang emails the assignee about the task. Default false. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"due_date",
"subject"
],
"properties": {
"note": {
"type": "string",
"description": "Details."
},
"channel": {
"enum": [
"Email",
"MassEmail",
"Phone",
"TextMessage",
"Mail",
"InPerson",
"SocialMedia",
"Website",
"Twitter",
"Other",
"EngagementSurveyEmail",
"EngagementSurvey"
],
"type": "string",
"description": "Planned channel."
},
"purpose": {
"enum": [
"Acknowledgement",
"ImpactCultivation",
"Newsletter",
"Receipt",
"Solicitation",
"SpecialEvent",
"VolunteerActivity",
"PledgeReminder",
"Welcome",
"BenevonPointOfEntry",
"BenevonFollowUp",
"BenevonAskEvent",
"BenevonOneOnOneAsk",
"BenevonOngoingCultivation",
"Other"
],
"type": "string",
"description": "Planned purpose."
},
"subject": {
"type": "string",
"minLength": 1,
"description": "Short subject line."
},
"due_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Due date (YYYY-MM-DD)."
},
"constituent_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Constituent the task is about.",
"exclusiveMinimum": 0
},
"assignee_user_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "User Id to assign it to.",
"exclusiveMinimum": 0
},
"send_notifications": {
"type": "boolean",
"description": "If true, Bloomerang emails the assignee about the task. Default false."
}
}
}Fetch one constituent's full profile — names, primary and secondary contact details, household, communication preferences, engagement score and custom values. Bloomerang: GET /constituent/{id}.
| Argument | Type | Description |
|---|---|---|
| constituent_id* | integer | The API Id of the constituent (not the CRM AccountNumber). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"constituent_id"
],
"properties": {
"constituent_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "The API Id of the constituent (not the CRM AccountNumber).",
"exclusiveMinimum": 0
}
}
}The activity timeline for a constituent — gifts, interactions, notes, tasks and more, newest first. Pass a household Id to get the timeline of every member. Bloomerang: GET /constituent/{id}/timeline.
| Argument | Type | Description |
|---|---|---|
| skip | integer | Records to skip (offset). Default 0. |
| take | integer | Page size, 1-50. Default 50. |
| constituent_id* | integer | The API Id of the constituent or household (not the CRM AccountNumber). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"constituent_id"
],
"properties": {
"skip": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Records to skip (offset). Default 0."
},
"take": {
"type": "integer",
"maximum": 50,
"minimum": 1,
"description": "Page size, 1-50. Default 50."
},
"constituent_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "The API Id of the constituent or household (not the CRM AccountNumber).",
"exclusiveMinimum": 0
}
}
}Fetch the Bloomerang user the API key belongs to — name, email and permission level. A cheap way to confirm the key works and see what it may do. Bloomerang: GET /user/current.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}Fetch a household — its names, head of household (HeadId) and member constituent Ids. A constituent's HouseholdId points here. Bloomerang: GET /household/{id}.
| Argument | Type | Description |
|---|---|---|
| household_id* | integer | The API Id of the household (not the CRM AccountNumber). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"household_id"
],
"properties": {
"household_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "The API Id of the household (not the CRM AccountNumber).",
"exclusiveMinimum": 0
}
}
}Fetch one transaction with its payment method, amounts, refund status and every designation (fund, campaign, appeal, tribute, acknowledgement status). Bloomerang: GET /transaction/{id}.
| Argument | Type | Description |
|---|---|---|
| transaction_id* | integer | The API Id of the transaction (not the CRM AccountNumber). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"transaction_id"
],
"properties": {
"transaction_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "The API Id of the transaction (not the CRM AccountNumber).",
"exclusiveMinimum": 0
}
}
}List appeals — the specific asks (a year-end letter, a gala invitation) that gifts are attributed to. Bloomerang: GET /appeals.
| Argument | Type | Description |
|---|---|---|
| ids | array | Only these record Ids. |
| skip | integer | Records to skip (offset). Default 0. |
| take | integer | Page size, 1-50. Default 50. |
| search | string | Only names containing this text. |
| is_active | boolean | Only active (true) or inactive (false). |
| last_modified | string | Only records last modified after this date/time (ISO 8601, e.g. 2026-01-31). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"ids": {
"type": "array",
"items": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
"description": "Only these record Ids."
},
"skip": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Records to skip (offset). Default 0."
},
"take": {
"type": "integer",
"maximum": 50,
"minimum": 1,
"description": "Page size, 1-50. Default 50."
},
"search": {
"type": "string",
"description": "Only names containing this text."
},
"is_active": {
"type": "boolean",
"description": "Only active (true) or inactive (false)."
},
"last_modified": {
"type": "string",
"description": "Only records last modified after this date/time (ISO 8601, e.g. 2026-01-31)."
}
}
}List fundraising campaigns with their goals and dates. Bloomerang: GET /campaigns.
| Argument | Type | Description |
|---|---|---|
| ids | array | Only these record Ids. |
| skip | integer | Records to skip (offset). Default 0. |
| take | integer | Page size, 1-50. Default 50. |
| search | string | Only names containing this text. |
| has_goal | boolean | Only campaigns with a non-zero (true) or zero (false) goal. |
| is_active | boolean | Only active (true) or inactive (false). |
| last_modified | string | Only records last modified after this date/time (ISO 8601, e.g. 2026-01-31). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"ids": {
"type": "array",
"items": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
"description": "Only these record Ids."
},
"skip": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Records to skip (offset). Default 0."
},
"take": {
"type": "integer",
"maximum": 50,
"minimum": 1,
"description": "Page size, 1-50. Default 50."
},
"search": {
"type": "string",
"description": "Only names containing this text."
},
"has_goal": {
"type": "boolean",
"description": "Only campaigns with a non-zero (true) or zero (false) goal."
},
"is_active": {
"type": "boolean",
"description": "Only active (true) or inactive (false)."
},
"last_modified": {
"type": "string",
"description": "Only records last modified after this date/time (ISO 8601, e.g. 2026-01-31)."
}
}
}Relationships between this constituent and others (spouse, employer, board member ...), with the role on each side. Bloomerang: GET /constituent/{id}/relationships.
| Argument | Type | Description |
|---|---|---|
| skip | integer | Records to skip (offset). Default 0. |
| take | integer | Page size, 1-50. Default 50. |
| last_modified | string | Only records last modified after this date/time (ISO 8601, e.g. 2026-01-31). |
| constituent_id* | integer | The API Id of the constituent (not the CRM AccountNumber). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"constituent_id"
],
"properties": {
"skip": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Records to skip (offset). Default 0."
},
"take": {
"type": "integer",
"maximum": 50,
"minimum": 1,
"description": "Page size, 1-50. Default 50."
},
"last_modified": {
"type": "string",
"description": "Only records last modified after this date/time (ISO 8601, e.g. 2026-01-31)."
},
"constituent_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "The API Id of the constituent (not the CRM AccountNumber).",
"exclusiveMinimum": 0
}
}
}List constituents with filters — by Id, type, favorites, last-modified date, or a custom field value — and sorting. Good for syncing recent changes. Bloomerang: GET /constituents.
| Argument | Type | Description |
|---|---|---|
| ids | array | Only these constituent Ids. |
| skip | integer | Records to skip (offset). Default 0. |
| take | integer | Page size, 1-50. Default 50. |
| type | string | |
| order_by | string | |
| is_favorite | boolean | Only constituents the key's user has favorited. |
| last_modified | string | Only records last modified after this date/time (ISO 8601, e.g. 2026-01-31). |
| custom_field_id | integer | Custom field Id to filter by. |
| order_direction | string | Sort direction. |
List the funds gifts can be designated to (e.g. General Operating, Scholarship). Bloomerang: GET /funds.
| Argument | Type | Description |
|---|---|---|
| ids | array | Only these record Ids. |
| skip | integer | Records to skip (offset). Default 0. |
| take | integer | Page size, 1-50. Default 50. |
| search | string | Only names containing this text. |
| is_active | boolean | Only active (true) or inactive (false). |
| is_default | boolean | Only the default (true) or non-default (false) fund. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"ids": {
"type": "array",
"items": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
"description": "Only these record Ids."
},
"skip": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Records to skip (offset). Default 0."
},
"take": {
"type": "integer",
"maximum": 50,
"minimum": 1,
"description": "Page size, 1-50. Default 50."
},
"search": {
"type": "string",
"description": "Only names containing this text."
},
"is_active": {
"type": "boolean",
"description": "Only active (true) or inactive (false)."
},
"is_default": {
"type": "boolean",
"description": "Only the default (true) or non-default (false) fund."
}
}
}List logged interactions (calls, emails, meetings, letters ...) — filter by constituent, channel or purpose. Bloomerang: GET /interactions.
| Argument | Type | Description |
|---|---|---|
| ids | array | Only these interaction Ids. |
| skip | integer | Records to skip (offset). Default 0. |
| take | integer | Page size, 1-50. Default 50. |
| channels | array | Only these channels. |
| order_by | string | Default Date. |
| purposes | array | Only these purposes. |
| constituent_ids | array | Only these constituent Ids. |
| order_direction | string | Sort direction. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"ids": {
"type": "array",
"items": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
"description": "Only these interaction Ids."
},
"skip": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Records to skip (offset). Default 0."
},
"take": {
"type": "integer",
"maximum": 50,
"minimum": 1,
"description": "Page size, 1-50. Default 50."
},
"channels": {
"type": "array",
"items": {
"enum": [
"Email",
"MassEmail",
"Phone",
"TextMessage",
"Mail",
"InPerson",
"SocialMedia",
"Website",
"Twitter",
"Other",
"EngagementSurveyEmail",
"EngagementSurvey"
],
"type": "string"
},
"description": "Only these channels."
},
"order_by": {
"enum": [
"CreatedDate",
"Date",
"LastModifiedDate"
],
"type": "string",
"description": "Default Date."
},
"purposes": {
"type": "array",
"items": {
"enum": [
"Acknowledgement",
"ImpactCultivation",
"Newsletter",
"Receipt",
"Solicitation",
"SpecialEvent",
"VolunteerActivity",
"PledgeReminder",
"Welcome",
"BenevonPointOfEntry",
"BenevonFollowUp",
"BenevonAskEvent",
"BenevonOneOnOneAsk",
"BenevonOngoingCultivation",
"Other"
],
"type": "string"
},
"description": "Only these purposes."
},
"constituent_ids": {
"type": "array",
"items": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
"description": "Only these constituent Ids."
},
"order_direction": {
"enum": [
"Asc",
"Desc"
],
"type": "string",
"description": "Sort direction."
}
}
}List notes, optionally for specific constituents. Bloomerang: GET /notes.
| Argument | Type | Description |
|---|---|---|
| ids | array | Only these note Ids. |
| skip | integer | Records to skip (offset). Default 0. |
| take | integer | Page size, 1-50. Default 50. |
| order_by | string | Default Date. |
| constituent_ids | array | Only these constituent Ids. |
| order_direction | string | Sort direction. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"ids": {
"type": "array",
"items": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
"description": "Only these note Ids."
},
"skip": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Records to skip (offset). Default 0."
},
"take": {
"type": "integer",
"maximum": 50,
"minimum": 1,
"description": "Page size, 1-50. Default 50."
},
"order_by": {
"enum": [
"CreatedDate",
"Date",
"LastModifiedDate"
],
"type": "string",
"description": "Default Date."
},
"constituent_ids": {
"type": "array",
"items": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
"description": "Only these constituent Ids."
},
"order_direction": {
"enum": [
"Asc",
"Desc"
],
"type": "string",
"description": "Sort direction."
}
}
}List tasks (follow-ups) — filter by status, due-date range, assignee user, constituent, channel or purpose. Bloomerang: GET /tasks.
| Argument | Type | Description |
|---|---|---|
| ids | array | Only these task Ids. |
| skip | integer | Records to skip (offset). Default 0. |
| take | integer | Page size, 1-50. Default 50. |
| channels | array | |
| order_by | string | |
| purposes | array | |
| statuses | array | Only these statuses. |
| max_due_date | string | Due on or before this date (YYYY-MM-DD). |
| min_due_date | string | Due on or after this date (YYYY-MM-DD). |
| constituent_ids | array | Only these constituent Ids. |
List transactions — donations, pledges, pledge payments, recurring donations and their payments — with their designations (fund, campaign, appeal). Filter by constituent, amount range, type or last-modified date. Read only. Bloomerang: GET /transactions.
| Argument | Type | Description |
|---|---|---|
| ids | array | Only these transaction Ids. |
| skip | integer | Records to skip (offset). Default 0. |
| take | integer | Page size, 1-50. Default 50. |
| types | array | Only transactions with at least one designation of these types. |
| order_by | string | Default Date. |
| max_amount | number | Maximum amount, inclusive. |
| min_amount | number | Minimum amount, inclusive. |
| last_modified | string | Only records last modified after this date/time (ISO 8601, e.g. 2026-01-31). |
| constituent_ids | array |
Full-text search across constituents (individuals and organizations) and households by name, email, etc. Start here to find a donor's Id. Bloomerang: GET /constituents/search.
| Argument | Type | Description |
|---|---|---|
| skip | integer | Records to skip (offset). Default 0. |
| take | integer | Page size, 1-50. Default 50. |
| type | string | Only this record type. |
| search* | string | Text to search for, e.g. a name or email. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"search"
],
"properties": {
"skip": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Records to skip (offset). Default 0."
},
"take": {
"type": "integer",
"maximum": 50,
"minimum": 1,
"description": "Page size, 1-50. Default 50."
},
"type": {
"enum": [
"Individual",
"Organization",
"Household"
],
"type": "string",
"description": "Only this record type."
},
"search": {
"type": "string",
"minLength": 1,
"description": "Text to search for, e.g. a name or email."
}
}
}WRITE: update fields on an existing constituent's profile (names, job, status, primary address/email/phone). Only the fields you supply are sent. Bloomerang: PUT /constituent/{id}.
| Argument | Type | Description |
|---|---|---|
| gender | string | |
| prefix | string | Must match a prefix configured in the CRM, e.g. Mr., Ms., Dr. |
| status | string | Constituent status. |
| suffix | string | Must match a suffix configured in the CRM. |
| website | string | |
| employer | string | |
| birthdate | string | Birth date (YYYY-MM-DD). |
| full_name | string | Organization name, or an explicit individual full name. |
| job_title | string | |
| last_name | string |
| custom_field_value |
| string |
| Custom field value to filter by. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"ids": {
"type": "array",
"items": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
"description": "Only these constituent Ids."
},
"skip": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Records to skip (offset). Default 0."
},
"take": {
"type": "integer",
"maximum": 50,
"minimum": 1,
"description": "Page size, 1-50. Default 50."
},
"type": {
"enum": [
"Individual",
"Organization"
],
"type": "string"
},
"order_by": {
"enum": [
"Id",
"CreatedDate",
"LastModifiedDate"
],
"type": "string"
},
"is_favorite": {
"type": "boolean",
"description": "Only constituents the key's user has favorited."
},
"last_modified": {
"type": "string",
"description": "Only records last modified after this date/time (ISO 8601, e.g. 2026-01-31)."
},
"custom_field_id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Custom field Id to filter by."
},
"order_direction": {
"enum": [
"Asc",
"Desc"
],
"type": "string",
"description": "Sort direction."
},
"custom_field_value": {
"type": "string",
"description": "Custom field value to filter by."
}
}
}| order_direction | string | Sort direction. |
| assignee_user_ids | array | Only tasks assigned to these user Ids. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"ids": {
"type": "array",
"items": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
"description": "Only these task Ids."
},
"skip": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Records to skip (offset). Default 0."
},
"take": {
"type": "integer",
"maximum": 50,
"minimum": 1,
"description": "Page size, 1-50. Default 50."
},
"channels": {
"type": "array",
"items": {
"enum": [
"Email",
"MassEmail",
"Phone",
"TextMessage",
"Mail",
"InPerson",
"SocialMedia",
"Website",
"Twitter",
"Other",
"EngagementSurveyEmail",
"EngagementSurvey"
],
"type": "string"
}
},
"order_by": {
"enum": [
"CreatedDate",
"Date",
"LastModifiedDate"
],
"type": "string"
},
"purposes": {
"type": "array",
"items": {
"enum": [
"Acknowledgement",
"ImpactCultivation",
"Newsletter",
"Receipt",
"Solicitation",
"SpecialEvent",
"VolunteerActivity",
"PledgeReminder",
"Welcome",
"BenevonPointOfEntry",
"BenevonFollowUp",
"BenevonAskEvent",
"BenevonOneOnOneAsk",
"BenevonOngoingCultivation",
"Other"
],
"type": "string"
}
},
"statuses": {
"type": "array",
"items": {
"enum": [
"Active",
"Complete",
"Archived"
],
"type": "string"
},
"description": "Only these statuses."
},
"max_due_date": {
"type": "string",
"description": "Due on or before this date (YYYY-MM-DD)."
},
"min_due_date": {
"type": "string",
"description": "Due on or after this date (YYYY-MM-DD)."
},
"constituent_ids": {
"type": "array",
"items": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
"description": "Only these constituent Ids."
},
"order_direction": {
"enum": [
"Asc",
"Desc"
],
"type": "string",
"description": "Sort direction."
},
"assignee_user_ids": {
"type": "array",
"items": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
"description": "Only tasks assigned to these user Ids."
}
}
}| Only these constituent (AccountId) Ids. |
| order_direction | string | Sort direction (default Desc). |
| transaction_numbers | array | Only these TransactionNumbers (called Payment Number in CRM reporting). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"ids": {
"type": "array",
"items": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
"description": "Only these transaction Ids."
},
"skip": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Records to skip (offset). Default 0."
},
"take": {
"type": "integer",
"maximum": 50,
"minimum": 1,
"description": "Page size, 1-50. Default 50."
},
"types": {
"type": "array",
"items": {
"enum": [
"Donation",
"Pledge",
"PledgePayment",
"RecurringDonation",
"RecurringDonationPayment"
],
"type": "string"
},
"description": "Only transactions with at least one designation of these types."
},
"order_by": {
"enum": [
"Amount",
"CreatedDate",
"Date",
"LastModifiedDate"
],
"type": "string",
"description": "Default Date."
},
"max_amount": {
"type": "number",
"description": "Maximum amount, inclusive."
},
"min_amount": {
"type": "number",
"description": "Minimum amount, inclusive."
},
"last_modified": {
"type": "string",
"description": "Only records last modified after this date/time (ISO 8601, e.g. 2026-01-31)."
},
"constituent_ids": {
"type": "array",
"items": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
"description": "Only these constituent (AccountId) Ids."
},
"order_direction": {
"enum": [
"Asc",
"Desc"
],
"type": "string",
"description": "Sort direction (default Desc)."
},
"transaction_numbers": {
"type": "array",
"items": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
"description": "Only these TransactionNumbers (called Payment Number in CRM reporting)."
}
}
}| first_name | string |
| formal_name | string |
| middle_name | string |
| envelope_name | string |
| informal_name | string |
| primary_email | object | Primary email address. |
| primary_phone | object | Primary phone. |
| constituent_id* | integer | The API Id of the constituent (not the CRM AccountNumber). |
| primary_address | object | Primary postal address. |
| recognition_name | string |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"constituent_id"
],
"properties": {
"gender": {
"enum": [
"Male",
"Female",
"Other"
],
"type": "string"
},
"prefix": {
"type": "string",
"description": "Must match a prefix configured in the CRM, e.g. Mr., Ms., Dr."
},
"status": {
"enum": [
"Active",
"Inactive",
"Deceased"
],
"type": "string",
"description": "Constituent status."
},
"suffix": {
"type": "string",
"description": "Must match a suffix configured in the CRM."
},
"website": {
"type": "string"
},
"employer": {
"type": "string"
},
"birthdate": {
"type": "string",
"description": "Birth date (YYYY-MM-DD)."
},
"full_name": {
"type": "string",
"description": "Organization name, or an explicit individual full name."
},
"job_title": {
"type": "string"
},
"last_name": {
"type": "string"
},
"first_name": {
"type": "string"
},
"formal_name": {
"type": "string"
},
"middle_name": {
"type": "string"
},
"envelope_name": {
"type": "string"
},
"informal_name": {
"type": "string"
},
"primary_email": {
"type": "object",
"required": [
"Value"
],
"properties": {
"Type": {
"enum": [
"Home",
"Work"
],
"type": "string"
},
"Value": {
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"description": "The email address."
}
},
"description": "Primary email address."
},
"primary_phone": {
"type": "object",
"required": [
"Number"
],
"properties": {
"Type": {
"enum": [
"Home",
"Work",
"Mobile",
"Fax"
],
"type": "string"
},
"Number": {
"type": "string",
"description": "The phone number, formatting allowed, without the extension."
},
"Extension": {
"type": "string"
}
},
"description": "Primary phone."
},
"constituent_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "The API Id of the constituent (not the CRM AccountNumber).",
"exclusiveMinimum": 0
},
"primary_address": {
"type": "object",
"properties": {
"City": {
"type": "string"
},
"Type": {
"enum": [
"Home",
"Vacation",
"Work"
],
"type": "string"
},
"State": {
"type": "string",
"description": "Must match a state configured in the Bloomerang CRM."
},
"Street": {
"type": "string"
},
"Country": {
"type": "string",
"description": "Must match a country configured in the Bloomerang CRM."
},
"PostalCode": {
"type": "string"
}
},
"description": "Primary postal address."
},
"recognition_name": {
"type": "string"
}
}
}