{"openapi":"3.1.0","info":{"title":"Calendly (BYOK) API","version":"0.1.0","description":"Calendly (BYOK) lets an AI assistant read your own Calendly data through the Calendly API with a key you supply (personal access token). Read-only: 7 tools (get_current_user, list_event_types, get_event_type, list_scheduled_events, get_scheduled_event, list_event_invitees, list_organization_memberships). The BYOK key travels with each request, is used for that one call only and is never stored,...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-calendly.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-calendly/docs"},"termsOfService":"https://connectorbay.com/byok-calendly/terms"},"servers":[{"url":"https://byok-calendly.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-calendly/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_current_user":{"post":{"operationId":"get_current_user","summary":"Show the Calendly account the token belongs to: name, email, scheduling link, time zone and its user and organization UR","description":"Show the Calendly account the token belongs to: name, email, scheduling link, time zone and its user and organization URIs (needed by the other tools). Use for \"Which Calendly account is my token connected to\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"get_current_userArguments","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_event_types":{"post":{"operationId":"list_event_types","summary":"List event types (booking page templates) of a user or organization with name, duration, active flag, kind and booking l","description":"List event types (booking page templates) of a user or organization with name, duration, active flag, kind and booking link. Give user or organization, one of them is required. Use for \"What Calendly event types do I have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"user":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"User URI, for example https://api.calendly.com/users/AAAA (from get_current_user). Required unless organization is given.","title":"User"},"organization":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Organization URI, to list its event types. Required unless user is given.","title":"Organization"},"active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True for only active event types, false for only inactive. Leave empty for both.","title":"Active"},"sort":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Order as field:direction; fields name, position, created_at, updated_at; direction asc or desc, for example 'name:asc'.","title":"Sort"},"count":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results to return (1 to 100, default 20).","title":"Count"},"page_token":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Token from pagination.next_page_token of the previous answer, to fetch the next page.","title":"Page Token"}},"title":"list_event_typesArguments","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_event_type":{"post":{"operationId":"get_event_type","summary":"Get one event type by its id (the last part of its URI) with duration, booking link, locations and description. Use for ","description":"Get one event type by its id (the last part of its URI) with duration, booking link, locations and description. Use for \"Show details of my Calendly event type CCCC\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"uuid":{"description":"Event type id: the last segment of its URI, for example 'CCCC' for https://api.calendly.com/event_types/CCCC.","maxLength":200,"title":"Uuid","type":"string"}},"required":["uuid"],"title":"get_event_typeArguments","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_scheduled_events":{"post":{"operationId":"list_scheduled_events","summary":"List scheduled meetings with name, status, start and end time, location and invitee counts; filter by user, organization","description":"List scheduled meetings with name, status, start and end time, location and invitee counts; filter by user, organization, status, time window or invitee email. Use for \"What Calendly meetings do I have coming up\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"user":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"User URI whose meetings to list (from get_current_user). Use user alone for your own meetings.","title":"User"},"organization":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Organization URI; needs an admin or owner token.","title":"Organization"},"status":{"anyOf":[{"enum":["active","canceled"],"type":"string"},{"type":"null"}],"default":null,"description":"Only active or canceled meetings.","title":"Status"},"min_start_time":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only meetings starting at or after this UTC time, for example 2026-10-16T00:00:00Z.","title":"Min Start Time"},"max_start_time":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only meetings starting at or before this UTC time, for example 2026-10-31T23:59:59Z.","title":"Max Start Time"},"invitee_email":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only meetings with an invitee having this email.","title":"Invitee Email"},"sort":{"anyOf":[{"enum":["start_time:asc","start_time:desc"],"type":"string"},{"type":"null"}],"default":null,"description":"Order as start_time:asc or start_time:desc.","title":"Sort"},"count":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results to return (1 to 100, default 20).","title":"Count"},"page_token":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Token from pagination.next_page_token of the previous answer, to fetch the next page.","title":"Page Token"}},"title":"list_scheduled_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/get_scheduled_event":{"post":{"operationId":"get_scheduled_event","summary":"Get one scheduled meeting by its id with time, status, location, host memberships and guests. Use for \"Show details of m","description":"Get one scheduled meeting by its id with time, status, location, host memberships and guests. Use for \"Show details of my Calendly meeting DDDD\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"uuid":{"description":"Scheduled event id: the last segment of its URI, for example 'DDDD'.","maxLength":200,"title":"Uuid","type":"string"}},"required":["uuid"],"title":"get_scheduled_eventArguments","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_event_invitees":{"post":{"operationId":"list_event_invitees","summary":"List the people invited to one scheduled meeting with name, email, status, time zone, booking answers and cancel or resc","description":"List the people invited to one scheduled meeting with name, email, status, time zone, booking answers and cancel or reschedule links. Use for \"Who is invited to my Calendly meeting DDDD\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"uuid":{"description":"Scheduled event id: the last segment of its URI, for example 'DDDD'.","maxLength":200,"title":"Uuid","type":"string"},"status":{"anyOf":[{"enum":["active","canceled"],"type":"string"},{"type":"null"}],"default":null,"description":"Only active or canceled invitees.","title":"Status"},"email":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only the invitee with this email.","title":"Email"},"sort":{"anyOf":[{"enum":["created_at:asc","created_at:desc"],"type":"string"},{"type":"null"}],"default":null,"description":"Order as created_at:asc or created_at:desc.","title":"Sort"},"count":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results to return (1 to 100, default 20).","title":"Count"},"page_token":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Token from pagination.next_page_token of the previous answer, to fetch the next page.","title":"Page Token"}},"required":["uuid"],"title":"list_event_inviteesArguments","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_organization_memberships":{"post":{"operationId":"list_organization_memberships","summary":"List members of a Calendly organization with their role (owner, admin or user), name and email; filter by email, role or","description":"List members of a Calendly organization with their role (owner, admin or user), name and email; filter by email, role or user. Use for \"Who is in my Calendly organization\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"organization":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Organization URI to list members of (from get_current_user, current_organization).","title":"Organization"},"user":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only the membership of this user URI.","title":"User"},"email":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only the member with this email.","title":"Email"},"role":{"anyOf":[{"enum":["owner","admin","user"],"type":"string"},{"type":"null"}],"default":null,"description":"Only members with this role.","title":"Role"},"count":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results to return (1 to 100, default 20).","title":"Count"},"page_token":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Token from pagination.next_page_token of the previous answer, to fetch the next page.","title":"Page Token"}},"title":"list_organization_membershipsArguments","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}}}}