{"openapi":"3.1.0","info":{"title":"WorkOS (BYOK) API","version":"0.1.0","description":"WorkOS (BYOK) lets an AI assistant read your own WorkOS data through the WorkOS API with a key you supply (WorkOS API key (sk_...)). Read-only: 10 tools (list_organizations, get_organization, list_users, get_user, list_organization_memberships, list_connections, list_directories, list_directory_users, list_directory_groups, list_feature_flags). The BYOK key travels with each request, is used for...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-workos.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-workos/docs"},"termsOfService":"https://connectorbay.com/byok-workos/terms"},"servers":[{"url":"https://byok-workos.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-workos/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_organizations":{"post":{"operationId":"list_organizations","summary":"List organizations with name, external id and metadata. Filter by name text; page with the cursor in list_metadata. Use ","description":"List organizations with name, external id and metadata. Filter by name text; page with the cursor in list_metadata. Use for \"Which organizations exist in my WorkOS environment\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"search":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only organizations whose name matches this text.","title":"Search"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many results to return (1 to 100, default 10).","title":"Limit"},"after":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor: an object id from list_metadata.after of the previous answer, to get the next page.","title":"After"},"before":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor: an object id from list_metadata.before of the previous answer, to get the previous page.","title":"Before"},"order":{"anyOf":[{"enum":["normal","asc","desc"],"type":"string"},{"type":"null"}],"default":null,"description":"Order by creation time: asc, desc, or normal (descending with reversed cursor meaning). Default normal.","title":"Order"}},"title":"list_organizationsArguments","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_organization":{"post":{"operationId":"get_organization","summary":"Get one organization by its WorkOS id: name, external id, metadata and dates. Use for \"Show WorkOS organization org_01EH","description":"Get one organization by its WorkOS id: name, external id, metadata and dates. Use for \"Show WorkOS organization org_01EHWNCE74X7JSDV0X3SZ3KJNY\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"id":{"description":"Organization id (starts with org_), as returned by list_organizations.","maxLength":100,"title":"Id","type":"string"}},"required":["id"],"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_users":{"post":{"operationId":"list_users","summary":"List AuthKit users with email, name, verification flag and last sign-in. Filter by organization or exact email. Use for ","description":"List AuthKit users with email, name, verification flag and last sign-in. Filter by organization or exact email. Use for \"Who signed in to my WorkOS AuthKit app recently\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"email":{"anyOf":[{"maxLength":320,"type":"string"},{"type":"null"}],"default":null,"description":"Only the user with this exact email address.","title":"Email"},"organization_id":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only users who are members of this organization id.","title":"Organization Id"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many results to return (1 to 100, default 10).","title":"Limit"},"after":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor: an object id from list_metadata.after of the previous answer, to get the next page.","title":"After"},"before":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor: an object id from list_metadata.before of the previous answer, to get the previous page.","title":"Before"},"order":{"anyOf":[{"enum":["normal","asc","desc"],"type":"string"},{"type":"null"}],"default":null,"description":"Order by creation time: asc, desc, or normal (descending with reversed cursor meaning). Default normal.","title":"Order"}},"title":"list_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/get_user":{"post":{"operationId":"get_user","summary":"Get one AuthKit user by id: email, name, email verification, external id, last sign-in and locale. Use for \"Show WorkOS ","description":"Get one AuthKit user by id: email, name, email verification, external id, last sign-in and locale. Use for \"Show WorkOS user user_01E4ZCR3C56J083X43JQXF3JK5\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"id":{"description":"User id (starts with user_), as returned by list_users.","maxLength":100,"title":"Id","type":"string"}},"required":["id"],"title":"get_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_organization_memberships":{"post":{"operationId":"list_organization_memberships","summary":"List organization memberships with user id, organization id, status and role. Filter by organization or user. Use for \"W","description":"List organization memberships with user id, organization id, status and role. Filter by organization or user. Use for \"Which organizations is WorkOS user user_01E4ZCR3C56J083X43JQXF3JK5 a member of\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"organization_id":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only memberships of this organization id.","title":"Organization Id"},"user_id":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only memberships of this user id.","title":"User Id"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many results to return (1 to 100, default 10).","title":"Limit"},"after":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor: an object id from list_metadata.after of the previous answer, to get the next page.","title":"After"},"before":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor: an object id from list_metadata.before of the previous answer, to get the previous page.","title":"Before"},"order":{"anyOf":[{"enum":["normal","asc","desc"],"type":"string"},{"type":"null"}],"default":null,"description":"Order by creation time: asc, desc, or normal (descending with reversed cursor meaning). Default normal.","title":"Order"}},"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}},"/v1/tools/list_connections":{"post":{"operationId":"list_connections","summary":"List SSO connections with type, state, organization and domains. Filter by organization, domain or connection type. Use ","description":"List SSO connections with type, state, organization and domains. Filter by organization, domain or connection type. Use for \"Which SSO connections are active for my WorkOS organizations\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"organization_id":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only connections of this organization id.","title":"Organization Id"},"domain":{"anyOf":[{"maxLength":253,"type":"string"},{"type":"null"}],"default":null,"description":"Only connections associated with this domain.","title":"Domain"},"search":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only connections whose name matches this text.","title":"Search"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many results to return (1 to 100, default 10).","title":"Limit"},"after":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor: an object id from list_metadata.after of the previous answer, to get the next page.","title":"After"},"before":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor: an object id from list_metadata.before of the previous answer, to get the previous page.","title":"Before"},"order":{"anyOf":[{"enum":["normal","asc","desc"],"type":"string"},{"type":"null"}],"default":null,"description":"Order by creation time: asc, desc, or normal (descending with reversed cursor meaning). Default normal.","title":"Order"}},"title":"list_connectionsArguments","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_directories":{"post":{"operationId":"list_directories","summary":"List Directory Sync directories with provider type, state, organization, domain and user and group counts. Use for \"Whic","description":"List Directory Sync directories with provider type, state, organization, domain and user and group counts. Use for \"Which directories are linked in WorkOS and how many users do they have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"organization_id":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only directories of this organization id.","title":"Organization Id"},"domain":{"anyOf":[{"maxLength":253,"type":"string"},{"type":"null"}],"default":null,"description":"Only directories associated with this domain.","title":"Domain"},"search":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only directories whose name matches this text.","title":"Search"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many results to return (1 to 100, default 10).","title":"Limit"},"after":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor: an object id from list_metadata.after of the previous answer, to get the next page.","title":"After"},"before":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor: an object id from list_metadata.before of the previous answer, to get the previous page.","title":"Before"},"order":{"anyOf":[{"enum":["normal","asc","desc"],"type":"string"},{"type":"null"}],"default":null,"description":"Order by creation time: asc, desc, or normal (descending with reversed cursor meaning). Default normal.","title":"Order"}},"title":"list_directoriesArguments","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_directory_users":{"post":{"operationId":"list_directory_users","summary":"List users synced from a directory, with email, name, state and role. Filter by directory, group or email. Use for \"Who ","description":"List users synced from a directory, with email, name, state and role. Filter by directory, group or email. Use for \"Who is synced from directory directory_01ECAZ4NV9QMV47GW873HDCX74\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"directory":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Directory id to list users of (starts with directory_).","title":"Directory"},"group":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only users in this directory group id.","title":"Group"},"email":{"anyOf":[{"maxLength":320,"type":"string"},{"type":"null"}],"default":null,"description":"Only the user with this primary email; needs directory to be set too.","title":"Email"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many results to return (1 to 100, default 10).","title":"Limit"},"after":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor: an object id from list_metadata.after of the previous answer, to get the next page.","title":"After"},"before":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor: an object id from list_metadata.before of the previous answer, to get the previous page.","title":"Before"},"order":{"anyOf":[{"enum":["normal","asc","desc"],"type":"string"},{"type":"null"}],"default":null,"description":"Order by creation time: asc, desc, or normal (descending with reversed cursor meaning). Default normal.","title":"Order"}},"title":"list_directory_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_directory_groups":{"post":{"operationId":"list_directory_groups","summary":"List groups synced from a directory with name, organization and dates. Filter by directory or by user. Use for \"What gro","description":"List groups synced from a directory with name, organization and dates. Filter by directory or by user. Use for \"What groups are synced from directory directory_01ECAZ4NV9QMV47GW873HDCX74\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"directory":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Directory id to list groups of (starts with directory_).","title":"Directory"},"user":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only groups this directory user id belongs to.","title":"User"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many results to return (1 to 100, default 10).","title":"Limit"},"after":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor: an object id from list_metadata.after of the previous answer, to get the next page.","title":"After"},"before":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor: an object id from list_metadata.before of the previous answer, to get the previous page.","title":"Before"},"order":{"anyOf":[{"enum":["normal","asc","desc"],"type":"string"},{"type":"null"}],"default":null,"description":"Order by creation time: asc, desc, or normal (descending with reversed cursor meaning). Default normal.","title":"Order"}},"title":"list_directory_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/list_feature_flags":{"post":{"operationId":"list_feature_flags","summary":"List feature flags with slug, name, enabled state, default value, owner and tags. Use for \"Which feature flags are enabl","description":"List feature flags with slug, name, enabled state, default value, owner and tags. Use for \"Which feature flags are enabled in my WorkOS environment\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many results to return (1 to 100, default 10).","title":"Limit"},"after":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor: an object id from list_metadata.after of the previous answer, to get the next page.","title":"After"},"before":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor: an object id from list_metadata.before of the previous answer, to get the previous page.","title":"Before"},"order":{"anyOf":[{"enum":["normal","asc","desc"],"type":"string"},{"type":"null"}],"default":null,"description":"Order by creation time: asc, desc, or normal (descending with reversed cursor meaning). Default normal.","title":"Order"}},"title":"list_feature_flagsArguments","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}}}}