{"openapi":"3.1.0","info":{"title":"Breeze (BYOK) API","version":"0.1.0","description":"Breeze (BYOK) lets an AI assistant read your own Breeze data through the Breeze API with a key you supply (Breeze API key). Read-only: 15 tools (get_account_summary, list_people, get_person, list_profile_fields, list_tags, list_tag_folders, list_events, list_calendars, list_locations, list_attendance, list_volunteers, list_volunteer_roles, list_forms, list_form_fields, list_form_entries). The...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-breeze.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-breeze/docs"},"termsOfService":"https://connectorbay.com/byok-breeze/terms"},"servers":[{"url":"https://byok-breeze.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-breeze/docs"},"security":[{"upstreamKey":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."},"upstreamKey":{"type":"apiKey","in":"header","name":"X-Upstream-Key","description":"Your own key for the service this connector wraps (bring your own key). Used for that one call only; never stored, logged or cached."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/get_account_summary":{"post":{"operationId":"get_account_summary","summary":"Show the Breeze account the key belongs to: name, subdomain, status, time zone and country. Use for \"Which Breeze accoun","description":"Show the Breeze account the key belongs to: name, subdomain, status, time zone and country. Use for \"Which Breeze account is my key connected to\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"subdomain":{"description":"Your Breeze subdomain: the part before .breezechms.com in your Breeze address (for example 'gracechurchdemo').","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Subdomain","type":"string"}},"required":["subdomain"],"title":"get_account_summaryArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_people":{"post":{"operationId":"list_people","summary":"List people in the database, optionally with full profile details; use limit and offset to page. Use for \"Who is in my B","description":"List people in the database, optionally with full profile details; use limit and offset to page. Use for \"Who is in my Breeze people database\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"subdomain":{"description":"Your Breeze subdomain: the part before .breezechms.com in your Breeze address (for example 'gracechurchdemo').","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Subdomain","type":"string"},"details":{"anyOf":[{"maximum":1,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"1 to return the full profile of each person (slower), 0 for id and name only.","title":"Details"},"limit":{"anyOf":[{"maximum":1000,"minimum":0,"type":"integer"},{"type":"null"}],"default":50,"description":"How many people to return; 0 returns everyone.","title":"Limit"},"offset":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many people to skip before the first result, for paging.","title":"Offset"}},"required":["subdomain"],"title":"list_peopleArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_person":{"post":{"operationId":"get_person","summary":"Get one person by Breeze id, with profile details when requested. Use for \"Show Breeze person 157857\".","description":"Get one person by Breeze id, with profile details when requested. Use for \"Show Breeze person 157857\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"subdomain":{"description":"Your Breeze subdomain: the part before .breezechms.com in your Breeze address (for example 'gracechurchdemo').","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Subdomain","type":"string"},"person_id":{"description":"Breeze person id.","title":"Person Id","type":"integer"},"details":{"anyOf":[{"maximum":1,"minimum":0,"type":"integer"},{"type":"null"}],"default":1,"description":"1 for the full profile, 0 for id and name only.","title":"Details"}},"required":["subdomain","person_id"],"title":"get_personArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_profile_fields":{"post":{"operationId":"list_profile_fields","summary":"List the profile sections and the fields in each section that your Breeze people records use. Use for \"Which profile fie","description":"List the profile sections and the fields in each section that your Breeze people records use. Use for \"Which profile fields exist for people in Breeze\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"subdomain":{"description":"Your Breeze subdomain: the part before .breezechms.com in your Breeze address (for example 'gracechurchdemo').","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Subdomain","type":"string"}},"required":["subdomain"],"title":"list_profile_fieldsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_tags":{"post":{"operationId":"list_tags","summary":"List the tags used to group people, optionally only those inside one tag folder. Use for \"Which tags do I have in Breeze","description":"List the tags used to group people, optionally only those inside one tag folder. Use for \"Which tags do I have in Breeze\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"subdomain":{"description":"Your Breeze subdomain: the part before .breezechms.com in your Breeze address (for example 'gracechurchdemo').","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Subdomain","type":"string"},"folder_id":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Only tags inside this folder id.","title":"Folder Id"}},"required":["subdomain"],"title":"list_tagsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_tag_folders":{"post":{"operationId":"list_tag_folders","summary":"List the tag folders with their parent folder. Use for \"How are my Breeze tags organised into folders\".","description":"List the tag folders with their parent folder. Use for \"How are my Breeze tags organised into folders\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"subdomain":{"description":"Your Breeze subdomain: the part before .breezechms.com in your Breeze address (for example 'gracechurchdemo').","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Subdomain","type":"string"}},"required":["subdomain"],"title":"list_tag_foldersArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_events":{"post":{"operationId":"list_events","summary":"List calendar events in a date range, optionally for one calendar. Use for \"What events does my church have on the Breez","description":"List calendar events in a date range, optionally for one calendar. Use for \"What events does my church have on the Breeze calendar next week\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"subdomain":{"description":"Your Breeze subdomain: the part before .breezechms.com in your Breeze address (for example 'gracechurchdemo').","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Subdomain","type":"string"},"start":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Events on or after this date, YYYY-MM-DD (default first day of the current month).","title":"Start"},"end":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Events on or before this date, YYYY-MM-DD (default last day of the current month).","title":"End"},"category_id":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only events on this calendar id (external calendars are not available).","title":"Category Id"},"limit":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":100,"description":"How many events to return (default 500, maximum 1000).","title":"Limit"}},"required":["subdomain"],"title":"list_eventsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_calendars":{"post":{"operationId":"list_calendars","summary":"List the event calendars with their names and colours. Use for \"What calendars are set up in Breeze\".","description":"List the event calendars with their names and colours. Use for \"What calendars are set up in Breeze\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"subdomain":{"description":"Your Breeze subdomain: the part before .breezechms.com in your Breeze address (for example 'gracechurchdemo').","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Subdomain","type":"string"}},"required":["subdomain"],"title":"list_calendarsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_locations":{"post":{"operationId":"list_locations","summary":"List the locations (rooms) that events can use. Use for \"Which rooms and locations can I book events in Breeze\".","description":"List the locations (rooms) that events can use. Use for \"Which rooms and locations can I book events in Breeze\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"subdomain":{"description":"Your Breeze subdomain: the part before .breezechms.com in your Breeze address (for example 'gracechurchdemo').","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Subdomain","type":"string"}},"required":["subdomain"],"title":"list_locationsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_attendance":{"post":{"operationId":"list_attendance","summary":"List who was checked in to one event instance, or the anonymous head count. Use for \"Who attended Sunday's service in Br","description":"List who was checked in to one event instance, or the anonymous head count. Use for \"Who attended Sunday's service in Breeze\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"subdomain":{"description":"Your Breeze subdomain: the part before .breezechms.com in your Breeze address (for example 'gracechurchdemo').","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Subdomain","type":"string"},"instance_id":{"description":"Id of the event instance (one occurrence of an event), as returned by list_events.","minimum":1,"title":"Instance Id","type":"integer"},"type":{"anyOf":[{"enum":["person","anonymous"],"type":"string"},{"type":"null"}],"default":"person","description":"person for named attendees or anonymous for a head count.","title":"Type"}},"required":["subdomain","instance_id"],"title":"list_attendanceArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_volunteers":{"post":{"operationId":"list_volunteers","summary":"List the volunteers scheduled for one event instance with their response and role ids. Use for \"Who is volunteering at e","description":"List the volunteers scheduled for one event instance with their response and role ids. Use for \"Who is volunteering at event instance 123456 in Breeze\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"subdomain":{"description":"Your Breeze subdomain: the part before .breezechms.com in your Breeze address (for example 'gracechurchdemo').","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Subdomain","type":"string"},"instance_id":{"description":"Id of the event instance (one occurrence of an event), as returned by list_events.","minimum":1,"title":"Instance Id","type":"integer"}},"required":["subdomain","instance_id"],"title":"list_volunteersArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_volunteer_roles":{"post":{"operationId":"list_volunteer_roles","summary":"List the volunteer roles defined for one event instance, with the number of people requested. Use for \"Which volunteer r","description":"List the volunteer roles defined for one event instance, with the number of people requested. Use for \"Which volunteer roles are needed at event instance 123456 in Breeze\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"subdomain":{"description":"Your Breeze subdomain: the part before .breezechms.com in your Breeze address (for example 'gracechurchdemo').","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Subdomain","type":"string"},"instance_id":{"description":"Id of the event instance (one occurrence of an event), as returned by list_events.","minimum":1,"title":"Instance Id","type":"integer"},"show_quantity":{"anyOf":[{"maximum":1,"minimum":0,"type":"integer"},{"type":"null"}],"default":1,"description":"1 to include the quantity requested for each role.","title":"Show Quantity"}},"required":["subdomain","instance_id"],"title":"list_volunteer_rolesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_forms":{"post":{"operationId":"list_forms","summary":"List the forms, active ones or archived ones. Use for \"Which forms do I have in Breeze\".","description":"List the forms, active ones or archived ones. Use for \"Which forms do I have in Breeze\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"subdomain":{"description":"Your Breeze subdomain: the part before .breezechms.com in your Breeze address (for example 'gracechurchdemo').","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Subdomain","type":"string"},"is_archived":{"anyOf":[{"maximum":1,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"1 to list archived forms instead of active ones.","title":"Is Archived"}},"required":["subdomain"],"title":"list_formsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_form_fields":{"post":{"operationId":"list_form_fields","summary":"List the fields of one form. Use for \"What questions does Breeze form 15326 ask\".","description":"List the fields of one form. Use for \"What questions does Breeze form 15326 ask\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"subdomain":{"description":"Your Breeze subdomain: the part before .breezechms.com in your Breeze address (for example 'gracechurchdemo').","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Subdomain","type":"string"},"form_id":{"description":"Breeze form id, from list_forms.","minimum":1,"title":"Form Id","type":"integer"}},"required":["subdomain","form_id"],"title":"list_form_fieldsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_form_entries":{"post":{"operationId":"list_form_entries","summary":"List the submissions of one form; set details to 1 to include each answer. Use for \"What responses came in on Breeze for","description":"List the submissions of one form; set details to 1 to include each answer. Use for \"What responses came in on Breeze form 15326\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"subdomain":{"description":"Your Breeze subdomain: the part before .breezechms.com in your Breeze address (for example 'gracechurchdemo').","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Subdomain","type":"string"},"form_id":{"description":"Breeze form id, from list_forms.","minimum":1,"title":"Form Id","type":"integer"},"details":{"anyOf":[{"maximum":1,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"1 to include the answers of each entry, keyed by form field id.","title":"Details"}},"required":["subdomain","form_id"],"title":"list_form_entriesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}