{"openapi":"3.1.0","info":{"title":"Roblox Open Cloud (BYOK) API","version":"0.1.0","description":"Roblox Open Cloud (BYOK) lets an AI assistant read your own Roblox Open Cloud data through the Roblox Open Cloud API with a key you supply (Open Cloud API key (give it only read permissions for the experiences or groups you need)). Read-only: 10 tools (get_universe, get_place, list_data_stores, list_data_store_entries, get_data_store_entry, list_user_restrictions, get_group, list_group_roles,...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-roblox.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-roblox/docs"},"termsOfService":"https://connectorbay.com/byok-roblox/terms"},"servers":[{"url":"https://byok-roblox.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-roblox/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_universe":{"post":{"operationId":"get_universe","summary":"Get one experience (universe): name, description, owner user or group, visibility, age rating, supported platforms and r","description":"Get one experience (universe): name, description, owner user or group, visibility, age rating, supported platforms and root place. Needs a key with universe read permission. Use for \"What is the display name and visibility of my Roblox universe 1234567890\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"universe_id":{"description":"Roblox universe (experience) ID, a number shown in Creator Hub for the experience, for example '1234567890'.","maxLength":20,"title":"Universe Id","type":"string"}},"required":["universe_id"],"title":"get_universeArguments","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_place":{"post":{"operationId":"get_place","summary":"Get one place of an experience: display name, description, server size and whether it is the root place. Use for \"Show p","description":"Get one place of an experience: display name, description, server size and whether it is the root place. Use for \"Show place 987654321 of Roblox universe 1234567890\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"universe_id":{"description":"Roblox universe (experience) ID, a number shown in Creator Hub for the experience, for example '1234567890'.","maxLength":20,"title":"Universe Id","type":"string"},"place_id":{"description":"Roblox place ID, a number such as '987654321'.","maxLength":20,"title":"Place Id","type":"string"}},"required":["universe_id","place_id"],"title":"get_placeArguments","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_data_stores":{"post":{"operationId":"list_data_stores","summary":"List the standard data stores of an experience with id and state. Needs a key with data store list permission. Use for \"","description":"List the standard data stores of an experience with id and state. Needs a key with data store list permission. Use for \"What data stores does my Roblox universe have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"universe_id":{"description":"Roblox universe (experience) ID, a number shown in Creator Hub for the experience, for example '1234567890'.","maxLength":20,"title":"Universe Id","type":"string"},"max_page_size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many data stores to return (1 to 100, default 10).","title":"Max Page Size"},"page_token":{"anyOf":[{"maxLength":1000,"type":"string"},{"type":"null"}],"default":null,"description":"Paging token: the nextPageToken value of the previous answer (leave empty for the first page).","title":"Page Token"},"filter":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only data stores whose id starts with this text, written as: id.startsWith(\"Player\").","title":"Filter"}},"required":["universe_id"],"title":"list_data_storesArguments","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_data_store_entries":{"post":{"operationId":"list_data_store_entries","summary":"List the entries (keys and values) of a data store with id, value, state, revision and users. Needs a key with data stor","description":"List the entries (keys and values) of a data store with id, value, state, revision and users. Needs a key with data store read permission. Use for \"List the entries in the PlayerData data store of my Roblox universe\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"universe_id":{"description":"Roblox universe (experience) ID, a number shown in Creator Hub for the experience, for example '1234567890'.","maxLength":20,"title":"Universe Id","type":"string"},"data_store_id":{"description":"Name of a standard data store in the universe, for example 'PlayerData'.","maxLength":100,"title":"Data Store Id","type":"string"},"max_page_size":{"anyOf":[{"maximum":256,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many entries to return (1 to 256, default 10).","title":"Max Page Size"},"page_token":{"anyOf":[{"maxLength":1000,"type":"string"},{"type":"null"}],"default":null,"description":"Paging token: the nextPageToken value of the previous answer (leave empty for the first page).","title":"Page Token"},"filter":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only entries whose id starts with this text, written as: id.startsWith(\"user_\").","title":"Filter"}},"required":["universe_id","data_store_id"],"title":"list_data_store_entriesArguments","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_data_store_entry":{"post":{"operationId":"get_data_store_entry","summary":"Get one data store entry by its key: value, state, revision, linked users and attributes. Use for \"What is stored under ","description":"Get one data store entry by its key: value, state, revision, linked users and attributes. Use for \"What is stored under key user_1 in PlayerData\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"universe_id":{"description":"Roblox universe (experience) ID, a number shown in Creator Hub for the experience, for example '1234567890'.","maxLength":20,"title":"Universe Id","type":"string"},"data_store_id":{"description":"Name of a standard data store in the universe, for example 'PlayerData'.","maxLength":100,"title":"Data Store Id","type":"string"},"entry_id":{"description":"Entry key, for example 'user_1'.","maxLength":200,"title":"Entry Id","type":"string"}},"required":["universe_id","data_store_id","entry_id"],"title":"get_data_store_entryArguments","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_user_restrictions":{"post":{"operationId":"list_user_restrictions","summary":"List users restricted (banned) from an experience with the user, active flag, reason and start time. Use for \"Who is ban","description":"List users restricted (banned) from an experience with the user, active flag, reason and start time. Use for \"Who is banned from my Roblox universe\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"universe_id":{"description":"Roblox universe (experience) ID, a number shown in Creator Hub for the experience, for example '1234567890'.","maxLength":20,"title":"Universe Id","type":"string"},"max_page_size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many restrictions to return (1 to 100, default 10).","title":"Max Page Size"},"page_token":{"anyOf":[{"maxLength":1000,"type":"string"},{"type":"null"}],"default":null,"description":"Paging token: the nextPageToken value of the previous answer (leave empty for the first page).","title":"Page Token"}},"required":["universe_id"],"title":"list_user_restrictionsArguments","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: name, description, owner, member count, whether it is verified, locked or open for public entry. Use for ","description":"Get one group: name, description, owner, member count, whether it is verified, locked or open for public entry. Use for \"How many members does Roblox group 1234567 have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"group_id":{"description":"Roblox group ID, the number in the group's URL, for example '1234567'.","maxLength":20,"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_group_roles":{"post":{"operationId":"list_group_roles","summary":"List a group's roles with name, rank, member count and description. Use for \"What roles does my Roblox group have\".","description":"List a group's roles with name, rank, member count and description. Use for \"What roles does my Roblox group have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"group_id":{"description":"Roblox group ID, the number in the group's URL, for example '1234567'.","maxLength":20,"title":"Group Id","type":"string"},"max_page_size":{"anyOf":[{"maximum":20,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many roles to return (1 to 20, default 10).","title":"Max Page Size"},"page_token":{"anyOf":[{"maxLength":1000,"type":"string"},{"type":"null"}],"default":null,"description":"Paging token: the nextPageToken value of the previous answer (leave empty for the first page).","title":"Page Token"}},"required":["group_id"],"title":"list_group_rolesArguments","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_group_memberships":{"post":{"operationId":"list_group_memberships","summary":"List the members of a group with user and role resource names. A filter such as user == 'users/123' narrows it. Use for ","description":"List the members of a group with user and role resource names. A filter such as user == 'users/123' narrows it. Use for \"Who are the members of my Roblox group\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"group_id":{"description":"Roblox group ID, the number in the group's URL, for example '1234567'.","maxLength":20,"title":"Group Id","type":"string"},"max_page_size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many memberships to return (1 to 100, default 10).","title":"Max Page Size"},"page_token":{"anyOf":[{"maxLength":1000,"type":"string"},{"type":"null"}],"default":null,"description":"Paging token: the nextPageToken value of the previous answer (leave empty for the first page).","title":"Page Token"},"filter":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Optional filter, for example: user == 'users/123' or role == 'groups/1234567/roles/42'.","title":"Filter"}},"required":["group_id"],"title":"list_group_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}},"/v1/tools/list_group_forum_categories":{"post":{"operationId":"list_group_forum_categories","summary":"List a group's forum categories with name, creator and archive time. Use for \"What forum categories does my Roblox group","description":"List a group's forum categories with name, creator and archive time. Use for \"What forum categories does my Roblox group have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"group_id":{"description":"Roblox group ID, the number in the group's URL, for example '1234567'.","maxLength":20,"title":"Group Id","type":"string"},"max_page_size":{"anyOf":[{"maximum":10,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many categories to return (1 to 10, default 10).","title":"Max Page Size"},"page_token":{"anyOf":[{"maxLength":1000,"type":"string"},{"type":"null"}],"default":null,"description":"Paging token: the nextPageToken value of the previous answer (leave empty for the first page).","title":"Page Token"}},"required":["group_id"],"title":"list_group_forum_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}}}}