usefulapi

Breeze ChMS MCP server. Manage Breeze ChMS people, tags, events, check-ins, volunteers and contributions.

Claude

  1. Open Settings → Connectors → Add custom connector
  2. Paste this URL:
    https://breeze-chms.usefulapi.io/mcp
  3. Authenticate with Breeze ChMS when prompted

Cursor · VS Code · Windsurf · Cline

Add to your MCP config, then reload & authorize:

{
  "mcpServers": {
    "breeze-chms": {
      "url": "https://breeze-chms.usefulapi.io/mcp"
    }
  }
}
live26 toolsFree 100 tool calls / monthPro $9/mo · $90/yr

Tools 26

ToolTypeWhat it does
breeze_get_account_summaryread
Get the account summary
The church account this key belongs to: name, subdomain, status, timezone and country/currency. A cheap way to confirm BREEZE_SUBDOMAIN and BREEZE_API_KEY are right. Breeze: GET /api/account/summary.
breeze_list_peopleread
List people
List people in the church database, optionally filtered (by tag, status, gender, etc.) and paginated with limit/offset. Without details you get id, first_name, last_name and photo path; with details=true every profile field is returned keyed by field_id (slower). Filter keys are profile field_ids (see breeze_list_profile_fields) or special keys, e.g. {"tag_contains":"y_16681"} for people in a tag, or {"2000138015":"226-227"} for a Status field matching options 226 or 227. Breeze: GET /api/people.
breeze_get_personread
Get a person
Fetch one person's profile by id, including address and — by default — every profile field keyed by field_id, plus family members. Pair with breeze_list_profile_fields to label the field ids. Breeze: GET /api/people/{person_id}.
breeze_list_profile_fieldsread
List profile fields
The church's profile layout: sections, each with its fields (field_id, field_type, name) and, for multiple-choice fields, their options (option_id, name). Needed to read person details, to build list_people filters, and to write fields with breeze_add_person / breeze_update_person. Breeze: GET /api/profile.
breeze_list_tagsread
List tags
List tags (Breeze's groups/lists) with id, name, created_on and folder_id, optionally only those in one folder. To list the people in a tag, call breeze_list_people with filter {"tag_contains":"y_<tag_id>"}. Breeze: GET /api/tags/list_tags.
breeze_list_eventsread
List events
List event instances in a date range (default: the current month), optionally on one calendar. Each row's `id` is the INSTANCE id used by attendance, volunteer and get_event tools; `event_id` is the series. Responses are cached by Breeze and may lag up to 15 minutes. Breeze: GET /api/events.
breeze_get_eventread
Get an event instance
Fetch one event instance, optionally with the other instances in its series (then the response is an array of {id, start} only). Cached by Breeze, may lag up to 15 minutes. Breeze: GET /api/events/list_event.
breeze_list_calendarsread
List calendars
List the church's event calendars (id, name, color and iCal feed address). The id is the category_id for breeze_list_events and breeze_add_event. Breeze: GET /api/events/calendars/list.
breeze_list_attendanceread
List attendance
Who checked in to one event instance (person_id, check-in time created_on, check_out), optionally with each person's details, or the anonymous head count instead. Breeze: GET /api/events/attendance/list.
breeze_list_formsread
List forms
List the church's online forms (id, name, url_slug, is_archived) — active ones by default, or archived ones. Breeze: GET /api/forms/list_forms.
breeze_list_form_fieldsread
List form fields
The fields of one form (field_id, field_type, name, options). Form entry responses are keyed by these field_ids. Breeze: GET /api/forms/list_form_fields.
breeze_list_form_entriesread
List form entries
Submissions to one form (id, created_on, person_id), and with details=true each entry's responses keyed by form field_id (see breeze_list_form_fields). Breeze: GET /api/forms/list_form_entries.
breeze_list_volunteersread
List volunteers
Volunteers scheduled for one event instance: person_id, response, comment, rsvped_on and role_ids. Breeze: GET /api/volunteers/list.
breeze_list_account_logread
List the account log
The account's audit log for one action type (e.g. person_updated, tag_assign, contribution_added), optionally within a date range or by one user. Good for 'what changed since…' and incremental sync. Breeze: GET /api/account/list_log.
breeze_list_fundsread
List funds
List giving funds (id, name, tax_deductible, is_default), optionally with the total given to each. Legacy endpoint: no longer shown on Breeze's current API reference; churches whose giving runs through Tithely may get an error. Breeze: GET /api/funds/list.
breeze_list_contributionsread
List contributions
List recorded contributions (gifts) given within a date range, optionally narrowed by giver (with their family), amount, payment method, fund, envelope, batch or form. Read-only: this server never adds, edits or deletes gifts. Legacy endpoint: no longer shown on Breeze's current API reference; churches whose giving runs through Tithely may get an error. Breeze: GET /api/giving/list.
breeze_add_personwrite
Add a person
WRITE: create a new person profile with a first and last name, and optionally set profile fields in the same call (same field shape as breeze_update_person). Check breeze_list_people first to avoid duplicates. Returns the new profile including its id. Breeze: GET /api/people/add.
breeze_update_personwrite
Update a person
WRITE: set profile fields on an existing person — email, phone, address, dates, multiple-choice options, family role, and custom fields. Only the fields you pass change; the previous values are overwritten (read them first with breeze_get_person if you may need to restore them). field_id and option ids come from breeze_list_profile_fields. Breeze: GET /api/people/update.
breeze_add_tagwrite
Create a tag
WRITE: create a new tag, at the top level or inside a folder. Returns the new tag with its id. Breeze: GET /api/tags/add_tag.
breeze_assign_tagwrite
Assign a tag to a person
WRITE: add a tag to one person (e.g. put them in a small group or list). Undo with breeze_unassign_tag. Breeze: GET /api/tags/assign.
breeze_unassign_tagwrite
Remove a tag from a person
WRITE: remove a tag from one person. The person and the tag both remain; re-assign with breeze_assign_tag. Breeze: GET /api/tags/unassign.
breeze_add_eventwrite
Add an event
WRITE: create an event on the church calendar, optionally as another instance of an existing series. Times are Unix timestamps in seconds. This server cannot delete events, so a mistaken event must be removed in the Breeze app. Breeze: GET /api/events/add.
breeze_record_attendancewrite
Check a person in or out
WRITE: record attendance for one person at one event instance — check them in (default) or check them out (records when they left; checking out someone not checked in creates a record with matching in/out times). Breeze: GET /api/events/attendance/add.
breeze_schedule_volunteerwrite
Schedule a volunteer
WRITE: schedule one person as a volunteer for one event instance. Breeze: GET /api/volunteers/add.
breeze_chms_usage_statusmeta
Usage status (free-tier meter)
Report the caller's current free-tier usage this month: calls used, monthly limit, remaining, and whether the cap is reached. Read-only; does not count against the meter.
breeze_chms_upgrademeta
Upgrade to Pro (unlimited)
Subscribe to the Pro plan for UNLIMITED Breeze ChMS tool calls (the free tier caps monthly usage). Choose monthly ($9/month) or yearly ($90/year — 2 months free) billing. Returns a Stripe Checkout link to open in your browser; after payment your account upgrades automatically. Read-only; does not count against the meter.

Pricing

PlanPriceLimit
Free$0100 tool calls / month
Proper user$9/mo · $90/yrUnlimited

This is a Model Context Protocol endpoint — meant to be connected from an AI client, not opened in a browser. An invalid_token response at the URL is the auth gate working as designed; clients authenticate automatically.