{"openapi":"3.1.0","info":{"title":"Elvanto (BYOK) API","version":"0.1.0","description":"Elvanto (BYOK) lets an AI assistant read your own Elvanto data through the Elvanto API with a key you supply (Elvanto API key (Settings, Account Settings)). Read-only: 9 tools (list_groups, list_services, list_calendars, list_calendar_events, list_songs, list_song_categories, list_people_flows, list_giving_categories, list_people_categories). The BYOK key travels with each request, is used for...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-elvanto.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-elvanto/docs"},"termsOfService":"https://connectorbay.com/byok-elvanto/terms"},"servers":[{"url":"https://byok-elvanto.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-elvanto/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/list_groups":{"post":{"operationId":"list_groups","summary":"List the church's groups (small groups, teams) with status, meeting day, time, frequency and place. Members are not requ","description":"List the church's groups (small groups, teams) with status, meeting day, time, frequency and place. Members are not requested. Use for \"What groups does our church run and when do they meet\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"page_size":{"anyOf":[{"maximum":1000,"minimum":10,"type":"integer"},{"type":"null"}],"default":100,"description":"How many records per page (10 to 1000).","title":"Page Size"},"suspended":{"anyOf":[{"enum":["yes","no"],"type":"string"},{"type":"null"}],"default":null,"description":"'yes' for only suspended groups, 'no' to leave them out (default: all).","title":"Suspended"}},"title":"list_groupsArguments","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_services":{"post":{"operationId":"list_services","summary":"List church services (worship services) with date, name, service type and location. Future services only unless all is '","description":"List church services (worship services) with date, name, service type and location. Future services only unless all is 'yes'. Volunteers and plans are not requested. Use for \"What services are coming up at our church\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"page_size":{"anyOf":[{"maximum":1000,"minimum":10,"type":"integer"},{"type":"null"}],"default":100,"description":"How many records per page (10 to 1000).","title":"Page Size"},"all":{"anyOf":[{"enum":["yes","no"],"type":"string"},{"type":"null"}],"default":null,"description":"'yes' to include past services as well as future ones (ignored when start and end are given).","title":"All"},"start":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only services from this date (YYYY-MM-DD).","title":"Start"},"end":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only services up to this date (YYYY-MM-DD).","title":"End"},"status":{"anyOf":[{"enum":["published","draft"],"type":"string"},{"type":"null"}],"default":null,"description":"Only 'published' or 'draft' services (default both).","title":"Status"}},"title":"list_servicesArguments","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 calendars that church events can be assigned to, with colour and whether they are visible to members. Use for \"","description":"List the calendars that church events can be assigned to, with colour and whether they are visible to members. Use for \"What calendars does our church have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"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_calendar_events":{"post":{"operationId":"list_calendar_events","summary":"List calendar events between two dates with name, place, start, end and whether all-day. Use 'services' as the calendar ","description":"List calendar events between two dates with name, place, start, end and whether all-day. Use 'services' as the calendar to get services. Use for \"What events are on our church calendar in December\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"start":{"description":"First date to include (YYYY-MM-DD).","maxLength":200,"title":"Start","type":"string"},"end":{"description":"Last date to include (YYYY-MM-DD).","maxLength":200,"title":"End","type":"string"},"calendar":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Id of one calendar to read events from, or 'services'.","title":"Calendar"},"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"page_size":{"anyOf":[{"maximum":1000,"minimum":10,"type":"integer"},{"type":"null"}],"default":100,"description":"How many records per page (10 to 1000).","title":"Page Size"}},"required":["start","end"],"title":"list_calendar_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_songs":{"post":{"operationId":"list_songs","summary":"List the worship song library with title, artist, album and categories, optionally searching by title or artist. Use for","description":"List the worship song library with title, artist, album and categories, optionally searching by title or artist. Use for \"Which songs in our library are by Hillsong\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"title":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Search songs by title.","title":"Title"},"artist":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Search songs by artist.","title":"Artist"},"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"page_size":{"anyOf":[{"maximum":1000,"minimum":10,"type":"integer"},{"type":"null"}],"default":100,"description":"How many records per page (10 to 1000).","title":"Page Size"}},"title":"list_songsArguments","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_song_categories":{"post":{"operationId":"list_song_categories","summary":"List the categories used to organise songs. Use for \"What song categories do we use\".","description":"List the categories used to organise songs. Use for \"What song categories do we use\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"page_size":{"anyOf":[{"maximum":1000,"minimum":10,"type":"integer"},{"type":"null"}],"default":100,"description":"How many records per page (10 to 1000).","title":"Page Size"}},"title":"list_song_categoriesArguments","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_flows":{"post":{"operationId":"list_people_flows","summary":"List the people flows (follow-up pipelines) with their steps and status. No individual is included. Use for \"What follow","description":"List the people flows (follow-up pipelines) with their steps and status. No individual is included. Use for \"What follow-up flows do we have set up\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_people_flowsArguments","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_giving_categories":{"post":{"operationId":"list_giving_categories","summary":"List the chart-of-accounts categories used for giving, with active (1) or archived (0) status. No transactions are retur","description":"List the chart-of-accounts categories used for giving, with active (1) or archived (0) status. No transactions are returned. Use for \"What giving funds does our church track\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"page_size":{"anyOf":[{"maximum":1000,"minimum":10,"type":"integer"},{"type":"null"}],"default":100,"description":"How many records per page (10 to 1000).","title":"Page Size"}},"title":"list_giving_categoriesArguments","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_categories":{"post":{"operationId":"list_people_categories","summary":"List the categories people can be placed in, with colour (for example New People, Church Members). Use for \"What people ","description":"List the categories people can be placed in, with colour (for example New People, Church Members). Use for \"What people categories does our church use\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_people_categoriesArguments","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}}}}