ChurchSuite MCP by usefulapi
by usefulapi.io · remote · no sign-in to list tools · v1.7.3 · published by io.usefulapi
Read ChurchSuite contacts, children, small groups, rotas, events and attendance; add contact notes.
25 tools: 1 change things and 24 only read.
Scanned Oct 21, 2026
- Deletes or cancels0Claude Code: deny
- Can't be undone0Claude Code: ask
- Changes things1Claude Code: ask: see these tools
- Only reads24Claude Code: allow: see these tools
No check matched anything in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http churchsuite https://churchsuite.usefulapi.io/mcpTools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
25 tools
Changes things 1Claude Code: ask
churchsuite_add_contact_noteWRITE: add a new note to a contact's record in ChurchSuite (it is visible to other ChurchSuite users who can see the contact, unless private_to_me is true).No findings
Why it is in this group
- The name "churchsuite_add_contact_note" says "add": a word for a change.
Description, as the server wrote it WRITE: add a new note to a contact's record in ChurchSuite (it is visible to other ChurchSuite users who can see the contact, unless private_to_me is true). Only adds a note: never edits or deletes anything, sends nothing to the contact. API: POST /addressbook/contacts/{id}/notes.
Annotations the server declares
- title: Add a note to a contact
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
Only reads 24Claude Code: allow
churchsuite_get_accountThe church's ChurchSuite account summary: name, unique id, subdomain, time zone, currency, language and first day of week (no billing or data-protection contact details).No findings
Why it is in this group
- The name "churchsuite_get_account" says "get": a word for reading.
Description, as the server wrote it The church's ChurchSuite account summary: name, unique id, subdomain, time zone, currency, language and first day of week (no billing or data-protection contact details). A good first call. API: GET /account/info.
Annotations the server declares
- title: Get church account
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
churchsuite_get_childGet one child by id (names, date of birth, school, contact details, custom fields, consents, sites, status).No findings
Why it is in this group
- The name "churchsuite_get_child" says "get": a word for reading.
Description, as the server wrote it Get one child by id (names, date of birth, school, contact details, custom fields, consents, sites, status). Medical and additional-needs fields only with include_medical: true. API: GET /children/children/{id}.
Annotations the server declares
- title: Get a child
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
churchsuite_get_contactGet one Address Book contact by id: names, sex, date of birth, marital status and spouse id, address, phones, email, job, custom fields, communication preferences, sites, status.No findings
Why it is in this group
- The name "churchsuite_get_contact" says "get": a word for reading.
Description, as the server wrote it Get one Address Book contact by id: names, sex, date of birth, marital status and spouse id, address, phones, email, job, custom fields, communication preferences, sites, status. API: GET /addressbook/contacts/{id}.
Annotations the server declares
- title: Get a contact
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
churchsuite_get_eventGet one calendar event by id (times, status, category, location, description, visibility, sign-up options).No findings
Why it is in this group
- The name "churchsuite_get_event" says "get": a word for reading.
Description, as the server wrote it Get one calendar event by id (times, status, category, location, description, visibility, sign-up options). API: GET /calendar/events/{id}.
Annotations the server declares
- title: Get a calendar event
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
churchsuite_get_small_groupGet one small group by id (schedule, location, description, custom fields, sign-up options, sites).No findings
Why it is in this group
- The name "churchsuite_get_small_group" says "get": a word for reading.
Description, as the server wrote it Get one small group by id (schedule, location, description, custom fields, sign-up options, sites). API: GET /smallgroups/groups/{id}.
Annotations the server declares
- title: Get a small group
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
churchsuite_list_attendance_recordsList attendance records (headcounts per gathering and date: total number, total people, notes), sorted by date.No findings
Why it is in this group
- The name "churchsuite_list_attendance_records" says "list": a word for reading.
Description, as the server wrote it List attendance records (headcounts per gathering and date: total number, total people, notes), sorted by date. Filter by gathering, weekday or a date window (YYYY-MM-DD). API: GET /attendance/records.
Annotations the server declares
- title: List attendance records
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
churchsuite_list_childrenSearch or list children in the Children module (name, date of birth, school year, contact details, sites, status, consent flags).No findings
Why it is in this group
- The name "churchsuite_list_children" says "list": a word for reading.
Description, as the server wrote it Search or list children in the Children module (name, date of birth, school year, contact details, sites, status, consent flags). Medical and additional-needs fields are left out unless include_medical is true. API: GET /children/children.
Annotations the server declares
- title: List children
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
churchsuite_list_children_groupsList the Children module's groups (classes/age groups: id, name, entry age, check-in capacity and ratio, status).No findings
Why it is in this group
- The name "churchsuite_list_children_groups" says "list": a word for reading.
Description, as the server wrote it List the Children module's groups (classes/age groups: id, name, entry age, check-in capacity and ratio, status). API: GET /children/groups.
Annotations the server declares
- title: List children's groups
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
churchsuite_list_contact_notesList the pastoral/admin notes on a contact (content, pinned, visibility, who wrote it and when), pinned first.No findings
Why it is in this group
- The name "churchsuite_list_contact_notes" says "list": a word for reading.
Description, as the server wrote it List the pastoral/admin notes on a contact (content, pinned, visibility, who wrote it and when), pinned first. API: GET /addressbook/contacts/{id}/notes.
Annotations the server declares
- title: List contact notes
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
churchsuite_list_contact_tagsList Address Book tags (id, name, category, whether it is a smart tag).No findings
Why it is in this group
- The name "churchsuite_list_contact_tags" says "list": a word for reading.
Description, as the server wrote it List Address Book tags (id, name, category, whether it is a smart tag). Use a tag id as tag_ids in list_contacts to list the people with that tag. API: GET /addressbook/tags.
Annotations the server declares
- title: List address book tags
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
churchsuite_list_contactsSearch or list adult contacts in the Address Book (name, contact details, address, sites, status, tags via tag_ids).No findings
Why it is in this group
- The name "churchsuite_list_contacts" says "list": a word for reading.
Description, as the server wrote it Search or list adult contacts in the Address Book (name, contact details, address, sites, status, tags via tag_ids). Personal data: ask only for what you need. API: GET /addressbook/contacts.
Annotations the server declares
- title: List address book contacts
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
churchsuite_list_event_categoriesList calendar categories (id, name, colour, status).No findings
Why it is in this group
- The name "churchsuite_list_event_categories" says "list": a word for reading.
Description, as the server wrote it List calendar categories (id, name, colour, status). Use the ids as category_ids in list_events. API: GET /calendar/categories.
Annotations the server declares
- title: List event categories
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
churchsuite_list_eventsList calendar events (name, start/end, status, category, location, description, sign-up options, sites).No findings
Why it is in this group
- The name "churchsuite_list_events" says "list": a word for reading.
Description, as the server wrote it List calendar events (name, start/end, status, category, location, description, sign-up options, sites). Use starts_after/starts_before (YYYY-MM-DD) for a date window. API: GET /calendar/events.
Annotations the server declares
- title: List calendar events
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
churchsuite_list_gatheringsList the Attendance module's gatherings (services/meetings whose attendance is counted: id, name, sites, status).No findings
Why it is in this group
- The name "churchsuite_list_gatherings" says "list": a word for reading.
Description, as the server wrote it List the Attendance module's gatherings (services/meetings whose attendance is counted: id, name, sites, status). API: GET /attendance/gatherings.
Annotations the server declares
- title: List attendance gatherings
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
churchsuite_list_giving_fundsList the church's giving funds (id, name, description, Gift Aid / tax-deductible flags, whether shown in Donate, status).No findings
Why it is in this group
- The name "churchsuite_list_giving_funds" says "list": a word for reading.
Description, as the server wrote it List the church's giving funds (id, name, description, Gift Aid / tax-deductible flags, whether shown in Donate, status). Funds only: no donors, donations or amounts. API: GET /giving/funds.
Annotations the server declares
- title: List giving funds
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
churchsuite_list_ministriesList the Rotas module's ministries (worship team, welcome team…: id, name, description, days, rota and rotation type, status, sites).No findings
Why it is in this group
- The name "churchsuite_list_ministries" says "list": a word for reading.
Description, as the server wrote it List the Rotas module's ministries (worship team, welcome team…: id, name, description, days, rota and rotation type, status, sites). API: GET /rotas/ministries.
Annotations the server declares
- title: List rota ministries
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
churchsuite_list_ministry_membersList who serves in rota ministries (ministry id, team id, person = contact or child id, role ids).No findings
Why it is in this group
- The name "churchsuite_list_ministry_members" says "list": a word for reading.
Description, as the server wrote it List who serves in rota ministries (ministry id, team id, person = contact or child id, role ids). Look people up with get_contact / get_child. API: GET /rotas/ministry_members.
Annotations the server declares
- title: List ministry members
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
churchsuite_list_ministry_teamsList the teams inside rota ministries (id, ministry id, name, order).No findings
Why it is in this group
- The name "churchsuite_list_ministry_teams" says "list": a word for reading.
Description, as the server wrote it List the teams inside rota ministries (id, ministry id, name, order). API: GET /rotas/ministry_teams.
Annotations the server declares
- title: List ministry teams
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
churchsuite_list_plan_itemsList the running order of one or more service plans (items: type, name, song arrangement, duration, start time, notes, people).No findings
Why it is in this group
- The name "churchsuite_list_plan_items" says "list": a word for reading.
Description, as the server wrote it List the running order of one or more service plans (items: type, name, song arrangement, duration, start time, notes, people). API: GET /planning/plan_items.
Annotations the server declares
- title: List service plan items
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
churchsuite_list_service_plansList service plans from the Planning module (name, date, time, status, linked event, sites).No findings
Why it is in this group
- The name "churchsuite_list_service_plans" says "list": a word for reading.
Description, as the server wrote it List service plans from the Planning module (name, date, time, status, linked event, sites). API: GET /planning/plans.
Annotations the server declares
- title: List service plans
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
churchsuite_list_sitesList the church's sites (campuses/congregations: id, name, initials, address).No findings
Why it is in this group
- The name "churchsuite_list_sites" says "list": a word for reading.
Description, as the server wrote it List the church's sites (campuses/congregations: id, name, initials, address). Site ids filter contacts, children, groups, events and plans. API: GET /account/sites.
Annotations the server declares
- title: List sites
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
churchsuite_list_small_group_membersList small group memberships (group id, person = contact or child id, status, role ids, joined date).No findings
Why it is in this group
- The name "churchsuite_list_small_group_members" says "list": a word for reading.
Description, as the server wrote it List small group memberships (group id, person = contact or child id, status, role ids, joined date). Filter by group to get a group's members, or by contact/child to get a person's groups; look people up with get_contact / get_child. API: GET /smallgroups/members.
Annotations the server declares
- title: List small group members
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
churchsuite_list_small_groupsList small groups (home groups/life groups: name, day, time, frequency, location, description, dates, sign-up options).No findings
Why it is in this group
- The name "churchsuite_list_small_groups" says "list": a word for reading.
Description, as the server wrote it List small groups (home groups/life groups: name, day, time, frequency, location, description, dates, sign-up options). API: GET /smallgroups/groups.
Annotations the server declares
- title: List small groups
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 1.7.3. Values in angle brackets are yours to fill in.
claude mcp add --transport http churchsuite https://churchsuite.usefulapi.io/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__churchsuite__churchsuite_get_account",
"mcp__churchsuite__churchsuite_list_sites",
"mcp__churchsuite__churchsuite_list_contacts",
"mcp__churchsuite__churchsuite_get_contact",
"mcp__churchsuite__churchsuite_list_contact_notes",
"mcp__churchsuite__churchsuite_list_contact_tags",
"mcp__churchsuite__churchsuite_list_children",
"mcp__churchsuite__churchsuite_get_child",
"mcp__churchsuite__churchsuite_list_children_groups",
"mcp__churchsuite__churchsuite_list_small_groups",
"mcp__churchsuite__churchsuite_get_small_group",
"mcp__churchsuite__churchsuite_list_small_group_members",
"mcp__churchsuite__churchsuite_list_events",
"mcp__churchsuite__churchsuite_get_event",
"mcp__churchsuite__churchsuite_list_event_categories",
"mcp__churchsuite__churchsuite_list_ministries",
"mcp__churchsuite__churchsuite_list_ministry_teams",
"mcp__churchsuite__churchsuite_list_ministry_members",
"mcp__churchsuite__churchsuite_list_unavailability",
"mcp__churchsuite__churchsuite_list_service_plans",
"mcp__churchsuite__churchsuite_list_plan_items",
"mcp__churchsuite__churchsuite_list_giving_funds",
"mcp__churchsuite__churchsuite_list_gatherings",
"mcp__churchsuite__churchsuite_list_attendance_records"
],
"ask": [
"mcp__churchsuite__churchsuite_add_contact_note"
],
"deny": []
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as churchsuite. Review it before you use it.