{"openapi":"3.1.0","info":{"title":"Liveblocks (BYOK) API","version":"0.1.0","description":"Liveblocks (BYOK) lets an AI assistant read your own Liveblocks data through the Liveblocks API with a key you supply (project secret key (sk_...)). Read-only: 8 tools (list_rooms, get_room, list_active_users, list_versions, list_threads, list_groups, get_group, list_ai_copilots). The BYOK key travels with each request, is used for that one call only and is never stored, logged or cached; it is...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-liveblocks.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-liveblocks/docs"},"termsOfService":"https://connectorbay.com/byok-liveblocks/terms"},"servers":[{"url":"https://byok-liveblocks.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-liveblocks/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_rooms":{"post":{"operationId":"list_rooms","summary":"List rooms newest first with creation time, last connection time, default access, metadata and organization, optionally ","description":"List rooms newest first with creation time, last connection time, default access, metadata and organization, optionally filtered by ID prefix or metadata query. Use for \"Which Liveblocks rooms were used most recently\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"query":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Filter expression, for example roomId^'projectA' AND metadata['status']:'open'.","title":"Query"},"organization_id":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only rooms of this organization ID.","title":"Organization Id"},"user_id":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only rooms this user ID can access.","title":"User Id"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results to return (1 to 100, default 20).","title":"Limit"},"starting_after":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor: the nextCursor value of the previous answer, to get the next page.","title":"Starting After"}},"title":"list_roomsArguments","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_room":{"post":{"operationId":"get_room","summary":"Get one room's creation time, last connection time, default accesses and metadata. Use for \"Show details of Liveblocks r","description":"Get one room's creation time, last connection time, default accesses and metadata. Use for \"Show details of Liveblocks room my-room-id\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"room_id":{"description":"The room ID, as returned by list_rooms.","maxLength":200,"title":"Room Id","type":"string"}},"required":["room_id"],"title":"get_roomArguments","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_active_users":{"post":{"operationId":"list_active_users","summary":"List users currently present in a room (connection ID, user ID and user info). Use for \"Who is in Liveblocks room my-roo","description":"List users currently present in a room (connection ID, user ID and user info). Use for \"Who is in Liveblocks room my-room-id right now\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"room_id":{"description":"The room ID, as returned by list_rooms.","maxLength":200,"title":"Room Id","type":"string"}},"required":["room_id"],"title":"list_active_usersArguments","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_versions":{"post":{"operationId":"list_versions","summary":"List the version history snapshots of a room (ID, time, authors), newest first. Use for \"What versions does Liveblocks r","description":"List the version history snapshots of a room (ID, time, authors), newest first. Use for \"What versions does Liveblocks room my-room-id have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"room_id":{"description":"The room ID, as returned by list_rooms.","maxLength":200,"title":"Room Id","type":"string"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results to return (1 to 100, default 20).","title":"Limit"},"cursor":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor: the nextCursor value of the previous answer.","title":"Cursor"}},"required":["room_id"],"title":"list_versionsArguments","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_threads":{"post":{"operationId":"list_threads","summary":"List comment threads of a room with resolved flag, visibility, timestamps and metadata (comment text is not returned). U","description":"List comment threads of a room with resolved flag, visibility, timestamps and metadata (comment text is not returned). Use for \"Which comment threads are unresolved in Liveblocks room my-room-id\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"room_id":{"description":"The room ID, as returned by list_rooms.","maxLength":200,"title":"Room Id","type":"string"},"query":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Filter expression on thread metadata, for example metadata['resolved']:false.","title":"Query"}},"required":["room_id"],"title":"list_threadsArguments","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_groups":{"post":{"operationId":"list_groups","summary":"List user groups of the project with organization, scopes and members. Use for \"Which Liveblocks groups exist\".","description":"List user groups of the project with organization, scopes and members. Use for \"Which Liveblocks groups exist\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results to return (1 to 100, default 20).","title":"Limit"},"starting_after":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor: the nextCursor value of the previous answer, to get the next page.","title":"Starting After"}},"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/get_group":{"post":{"operationId":"get_group","summary":"Get one group with its members and scopes. Use for \"Show Liveblocks group g1\".","description":"Get one group with its members and scopes. Use for \"Show Liveblocks group g1\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"group_id":{"description":"The group ID, from list_groups.","maxLength":200,"title":"Group Id","type":"string"}},"required":["group_id"],"title":"get_groupArguments","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_ai_copilots":{"post":{"operationId":"list_ai_copilots","summary":"List AI copilots with name, description, provider, model and last use (system prompts are not returned). Use for \"Which ","description":"List AI copilots with name, description, provider, model and last use (system prompts are not returned). Use for \"Which AI copilots are configured in Liveblocks\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results to return (1 to 100, default 20).","title":"Limit"},"starting_after":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor: the nextCursor value of the previous answer, to get the next page.","title":"Starting After"}},"title":"list_ai_copilotsArguments","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}}}}