{"openapi":"3.1.0","info":{"title":"Livestorm (BYOK) API","version":"0.1.0","description":"Livestorm (BYOK) lets an AI assistant read your own Livestorm data through the Livestorm API with a key you supply (Livestorm API token). Read-only: 7 tools (get_organization, list_events, get_event, list_event_sessions, list_sessions, get_session, list_session_recordings). The BYOK key travels with each request, is used for that one call only and is never stored, logged or cached; it is only...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-livestorm.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-livestorm/docs"},"termsOfService":"https://connectorbay.com/byok-livestorm/terms"},"servers":[{"url":"https://byok-livestorm.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-livestorm/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 Livestorm workspace organization: name and slug. Needs a token with the identity or admin scope. Use for \"Which ","description":"Get the Livestorm workspace organization: name and slug. Needs a token with the identity or admin scope. Use for \"Which Livestorm workspace is this API 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_events":{"post":{"operationId":"list_events","summary":"List webinar events (series of sessions) with title, status, scheduling status, language, duration and session count, op","description":"List webinar events (series of sessions) with title, status, scheduling status, language, duration and session count, optionally by title or status. Use for \"Which upcoming webinars do we have on Livestorm\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"title":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only events whose title matches.","title":"Title"},"scheduling_status":{"anyOf":[{"maxLength":30,"type":"string"},{"type":"null"}],"default":null,"description":"Only events with this scheduling status: live, upcoming, on_demand, ended, not_started, draft, cancelled or not_scheduled.","title":"Scheduling Status"},"tag":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only events with this tag title (case-insensitive, comma-separated for several).","title":"Tag"},"page_size":{"anyOf":[{"maximum":50,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"Results per page (1 to 50, default 20).","title":"Page Size"},"page_number":{"anyOf":[{"maximum":10000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Page index, starting at 0. The answer's meta.next_page is null on the last page.","title":"Page Number"}},"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/get_event":{"post":{"operationId":"get_event","summary":"Get one webinar event by ID: title, status, language, duration, registration link, feature switches and session count. U","description":"Get one webinar event by ID: title, status, language, duration, registration link, feature switches and session count. Use for \"Show me the Livestorm event e1\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"event_id":{"description":"Event ID (UUID) from list_events.","maxLength":64,"title":"Event Id","type":"string"}},"required":["event_id"],"title":"get_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_sessions":{"post":{"operationId":"list_event_sessions","summary":"List the sessions (dated occurrences) of one event with status, timezone, start and end time, registrant and attendee co","description":"List the sessions (dated occurrences) of one event with status, timezone, start and end time, registrant and attendee counts. Use for \"When are the sessions of Livestorm event e1 and how many people registered\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"event_id":{"description":"Event ID (UUID) from list_events.","maxLength":64,"title":"Event Id","type":"string"},"status":{"anyOf":[{"maxLength":30,"type":"string"},{"type":"null"}],"default":null,"description":"Only sessions with this status: upcoming, live, on_demand, past or past_not_started.","title":"Status"},"date_from":{"anyOf":[{"maxLength":30,"type":"string"},{"type":"null"}],"default":null,"description":"Only sessions starting from this date (Unix timestamp or ISO 8601 date).","title":"Date From"},"date_to":{"anyOf":[{"maxLength":30,"type":"string"},{"type":"null"}],"default":null,"description":"Only sessions starting until this date (Unix timestamp or ISO 8601 date).","title":"Date To"},"page_size":{"anyOf":[{"maximum":50,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"Results per page (1 to 50, default 20).","title":"Page Size"},"page_number":{"anyOf":[{"maximum":10000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Page index, starting at 0. The answer's meta.next_page is null on the last page.","title":"Page Number"}},"required":["event_id"],"title":"list_event_sessionsArguments","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_sessions":{"post":{"operationId":"list_sessions","summary":"List all sessions across all events of the workspace with status, start time, registrant and attendee counts, optionally","description":"List all sessions across all events of the workspace with status, start time, registrant and attendee counts, optionally by status and date range. Use for \"Which Livestorm sessions took place last month and how many attended\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"status":{"anyOf":[{"maxLength":30,"type":"string"},{"type":"null"}],"default":null,"description":"Only sessions with this status: upcoming, live, on_demand, past or past_not_started.","title":"Status"},"date_from":{"anyOf":[{"maxLength":30,"type":"string"},{"type":"null"}],"default":null,"description":"Only sessions starting from this date (Unix timestamp or ISO 8601 date).","title":"Date From"},"date_to":{"anyOf":[{"maxLength":30,"type":"string"},{"type":"null"}],"default":null,"description":"Only sessions starting until this date (Unix timestamp or ISO 8601 date).","title":"Date To"},"page_size":{"anyOf":[{"maximum":50,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"Results per page (1 to 50, default 20).","title":"Page Size"},"page_number":{"anyOf":[{"maximum":10000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Page index, starting at 0. The answer's meta.next_page is null on the last page.","title":"Page Number"}},"title":"list_sessionsArguments","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_session":{"post":{"operationId":"get_session","summary":"Get one session by ID: name, status, timezone, start and end time, registrant and attendee counts and duration. Use for ","description":"Get one session by ID: name, status, timezone, start and end time, registrant and attendee counts and duration. Use for \"How many people attended Livestorm session s1\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"session_id":{"description":"Session ID (UUID) from list_sessions or list_event_sessions.","maxLength":64,"title":"Session Id","type":"string"}},"required":["session_id"],"title":"get_sessionArguments","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_session_recordings":{"post":{"operationId":"list_session_recordings","summary":"List the recordings of a session with file type, size and name (the signed download link is not returned). Use for \"Does","description":"List the recordings of a session with file type, size and name (the signed download link is not returned). Use for \"Does Livestorm session s1 have a recording\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"session_id":{"description":"Session ID (UUID) from list_sessions or list_event_sessions.","maxLength":64,"title":"Session Id","type":"string"},"page_size":{"anyOf":[{"maximum":50,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"Results per page (1 to 50, default 20).","title":"Page Size"},"page_number":{"anyOf":[{"maximum":10000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Page index, starting at 0. The answer's meta.next_page is null on the last page.","title":"Page Number"}},"required":["session_id"],"title":"list_session_recordingsArguments","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}}}}