{"openapi":"3.1.0","info":{"title":"Upcoach (BYOK) API","version":"0.1.0","description":"Upcoach (BYOK) lets an AI assistant read your own Upcoach data through the Upcoach API with a key you supply (Upcoach API token (organization admin area, Advanced, Integrations)). Read-only: 11 tools (get_organization, list_programs, list_program_members, list_program_timezones, list_clients, list_team_members, list_courses, list_events, list_tasks, list_forum_posts, list_smart_documents). The...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-upcoach.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-upcoach/docs"},"termsOfService":"https://connectorbay.com/byok-upcoach/terms"},"servers":[{"url":"https://byok-upcoach.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-upcoach/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_organization":{"post":{"operationId":"get_organization","summary":"Get the organization the API token belongs to with its name, sub-domain, home URL and creation time. Use for \"Which Upco","description":"Get the organization the API token belongs to with its name, sub-domain, home URL and creation time. Use for \"Which Upcoach organization is this token for\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"get_organizationArguments","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_programs":{"post":{"operationId":"list_programs","summary":"List coaching programs with name and creation time. Use for \"Which coaching programs do I run in Upcoach\".","description":"List coaching programs with name and creation time. Use for \"Which coaching programs do I run in Upcoach\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":15,"description":"How many records per page.","title":"Per Page"}},"title":"list_programsArguments","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_program_members":{"post":{"operationId":"list_program_members","summary":"List the members of one program with name, role (leader, coach or member), time zone and join date; emails and custom cl","description":"List the members of one program with name, role (leader, coach or member), time zone and join date; emails and custom client fields are left out. Use for \"Who is in program prg-1234\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"program_id":{"description":"Program id (see list_programs).","maxLength":64,"title":"Program Id","type":"string"},"role":{"anyOf":[{"enum":["leader","coach","member"],"type":"string"},{"type":"null"}],"default":null,"description":"Only members with this role.","title":"Role"},"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":15,"description":"How many records per page.","title":"Per Page"}},"required":["program_id"],"title":"list_program_membersArguments","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_program_timezones":{"post":{"operationId":"list_program_timezones","summary":"List the distinct time zones of the members of one program. Use for \"Which time zones are the members of program prg-123","description":"List the distinct time zones of the members of one program. Use for \"Which time zones are the members of program prg-1234 in\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"program_id":{"description":"Program id (see list_programs).","maxLength":64,"title":"Program Id","type":"string"}},"required":["program_id"],"title":"list_program_timezonesArguments","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_clients":{"post":{"operationId":"list_clients","summary":"List coaching clients with name, time zone and creation time; emails and custom client fields are left out. Use for \"Who","description":"List coaching clients with name, time zone and creation time; emails and custom client fields are left out. Use for \"Who are my clients in Upcoach\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":15,"description":"How many records per page.","title":"Per Page"}},"title":"list_clientsArguments","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_team_members":{"post":{"operationId":"list_team_members","summary":"List coaches and admins of the organization with name, role and time zone (emails are left out). Use for \"Who are the co","description":"List coaches and admins of the organization with name, role and time zone (emails are left out). Use for \"Who are the coaches in my Upcoach organization\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"role":{"anyOf":[{"enum":["coach","admin"],"type":"string"},{"type":"null"}],"default":null,"description":"Only this team role.","title":"Role"}},"title":"list_team_membersArguments","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_courses":{"post":{"operationId":"list_courses","summary":"List the courses one user is enrolled in with progress, lesson counts and completion date. Use for \"How far along is cli","description":"List the courses one user is enrolled in with progress, lesson counts and completion date. Use for \"How far along is client usr-1 in their courses\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"user":{"description":"User id of the enrolled client (see list_clients).","maxLength":64,"title":"User","type":"string"},"program":{"anyOf":[{"maxLength":64,"type":"string"},{"type":"null"}],"default":null,"description":"Only courses of this program id.","title":"Program"}},"required":["user"],"title":"list_coursesArguments","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 upcoming or past events of one program with title, dates, time zone and recurrence (call and meeting links are left","description":"List upcoming or past events of one program with title, dates, time zone and recurrence (call and meeting links are left out). Use for \"What events are coming up in program prg-1234\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"program":{"description":"Program id (see list_programs).","maxLength":64,"title":"Program","type":"string"},"status":{"anyOf":[{"enum":["upcoming","past"],"type":"string"},{"type":"null"}],"default":null,"description":"Upcoming (default) or past events.","title":"Status"},"page_date":{"anyOf":[{"maxLength":20,"type":"string"},{"type":"null"}],"default":null,"description":"Start paging from this date, formatted Y-m-d H:i.","title":"Page Date"}},"required":["program"],"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_tasks":{"post":{"operationId":"list_tasks","summary":"List client tasks with description, due date, done flag, priority and program; assignee details are left out. Use for \"W","description":"List client tasks with description, due date, done flag, priority and program; assignee details are left out. Use for \"Which Upcoach tasks are overdue\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"done":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Only done (true) or not done (false) tasks.","title":"Done"},"overdue":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Only overdue (true) or not overdue (false) tasks.","title":"Overdue"},"due_date":{"anyOf":[{"enum":["today","yesterday","this-week","last-week","this-month","last-month"],"type":"string"},{"type":"null"}],"default":null,"description":"Only tasks due in this period.","title":"Due Date"},"user":{"anyOf":[{"maxLength":64,"type":"string"},{"type":"null"}],"default":null,"description":"Only tasks assigned to this user id.","title":"User"},"program":{"anyOf":[{"maxLength":64,"type":"string"},{"type":"null"}],"default":null,"description":"Only tasks of this program id.","title":"Program"}},"title":"list_tasksArguments","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_forum_posts":{"post":{"operationId":"list_forum_posts","summary":"List community forum posts with title, category, likes, comments and program. Use for \"What is being discussed in the Up","description":"List community forum posts with title, category, likes, comments and program. Use for \"What is being discussed in the Upcoach forum\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"user":{"anyOf":[{"maxLength":64,"type":"string"},{"type":"null"}],"default":null,"description":"Only posts by this author user id.","title":"User"},"program":{"anyOf":[{"maxLength":64,"type":"string"},{"type":"null"}],"default":null,"description":"Only posts of this program id.","title":"Program"}},"title":"list_forum_postsArguments","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_smart_documents":{"post":{"operationId":"list_smart_documents","summary":"List smart documents (worksheets) with title, course, program and completion progress. Use for \"Which smart documents ar","description":"List smart documents (worksheets) with title, course, program and completion progress. Use for \"Which smart documents are in progress\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"user":{"anyOf":[{"maxLength":64,"type":"string"},{"type":"null"}],"default":null,"description":"Only documents assigned to this user id.","title":"User"},"program":{"anyOf":[{"maxLength":64,"type":"string"},{"type":"null"}],"default":null,"description":"Only documents of this program id.","title":"Program"}},"title":"list_smart_documentsArguments","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}}}}