WorkOS

Enterprise-ready authentication and user management.

Community: Submitted by a user or imported; check the owner before granting accessOnlineAPI key requiredGlobalFreeRead-only

What it can do

  • Api Keys.Validations.Create: Validate an API key value and return the API key object if valid.
  • Audit Logs.Actions.List: Get a list of all Audit Log actions in the current environment.
  • Audit Logs.Actions.Schemas.List: Get a list of all schemas for the Audit Logs action identified by `:name`.

What data it sees

Do you need an account

An API key from the service settings is required

Enterprise-ready authentication and user management. Manage organizations, users, SSO connections, directory sync, audit logs, fine-grained authorization, and feature flags.

How to connect

How to connect WorkOS to Claude

The server address to paste into Claude settings:

https://workos.run.tools

  1. Open Claude (claude.ai or the desktop app).
  2. Go to Settings → Connectors.
  3. Click Add custom connector.
  4. Paste the server address copied below into Remote MCP server URL and click Add.
  5. In a chat, click + → Connectors and switch the new connector on.

Custom connectors are available on Free, Pro, Max, Team and Enterprise plans (Free is limited to one). On Team and Enterprise an organization Owner adds the connector first under Organization settings → Connectors.

Authorization

After you click Add, a sign-in window for the service opens. Sign in with your own account and approve access. Claude never sees your password.

How to connect WorkOS to ChatGPT

The server address to paste into ChatGPT settings:

https://workos.run.tools

  1. Open ChatGPT in a browser (chatgpt.com). A Plus, Pro, Business, Enterprise or Edu plan is required.
  2. Turn on developer mode once: Settings → Apps → Advanced settings → Developer mode.
  3. Open Settings → Connectors and click Create.
  4. Fill in the form: Name (anything), Description (one line about what the service does), MCP server URL (copy it below).
  5. Under Authentication choose OAuth if the service requires sign-in, otherwise None. Click Create.
  6. In a new chat open + → Apps/Connectors and enable the connector.

OpenAI has renamed this section before (Connectors → Apps/Plugins). If the label differs, search settings for "developer mode". On Business/Enterprise workspaces an admin must allow custom connectors first.

Authorization

On first use ChatGPT opens the service's sign-in window. Sign in and approve access.

How to connect WorkOS to Cursor

The server address to paste into Cursor settings:

https://workos.run.tools

Fastest: click Open in Cursor below and confirm the prompt.

Manually:

  1. In Cursor open Settings → Cursor Settings → MCP and click Add new global MCP server.
  2. Paste the JSON copied below into ~/.cursor/mcp.json (per project: .cursor/mcp.json in the repo root).
  3. Save the file. The server appears in the MCP list; authorize it there if asked.

Authorization

If the service needs sign-in, an authorize button appears next to the server in the MCP list.

Server tool list (60)

Raw names from tools/list. Only developers need these.

api_keys.validations.createValidate an API key value and return the API key object if valid.
audit_logs.actions.listGet a list of all Audit Log actions in the current environment.
audit_logs.actions.schemas.listGet a list of all schemas for the Audit Logs action identified by `:name`.
audit_logs.actions.schemas.createCreates a new Audit Log schema used to validate the payload of incoming Audit Log Events. If the `action` does not exist, it will also be created.
audit_logs.events.createCreate an Audit Log Event. This API supports idempotency which guarantees that performing the same operation multiple times will have the same result as if the operation were performed only once. This is handy in situations where you may need to retry a request due to a failure or prevent accidental duplicate requests from creating more than one resource. To achieve idempotency, you can add `Idempotency-Key` request header to a Create Event request with a unique string as the value. Each subsequent request matching this unique string will return the same response. We suggest using [v4 UUIDs](https://en.wikipedia.org/wiki/Universally_unique_identifier) for idempotency keys to avoid collisions. Idempotency keys expire after 24 hours. The API will generate a new response if you submit a request with an expired key.
audit_logs.exports.createCreate an Audit Log Export. Exports are scoped to a single organization within a specified date range.
audit_logs.exports.getGet an Audit Log Export. The URL will expire after 10 minutes. If the export is needed again at a later time, refetching the export will regenerate the URL.
auth.factors.getGets an Authentication Factor.
auth.factors.deletePermanently deletes an Authentication Factor. It cannot be undone.
authorization.organization_memberships.check.createCheck if an organization membership has a specific permission on a resource. Supports identification by resource_id OR by resource_external_id + resource_type_slug.
authorization.organization_memberships.resources.listReturns all child resources of a parent resource where the organization membership has a specific permission. This is useful for resource discovery—answering "What projects can this user access in this workspace?" You must provide either `parent_resource_id` or both `parent_resource_external_id` and `parent_resource_type_slug` to identify the parent resource.
authorization.organization_memberships.role_assignments.listList all role assignments for an organization membership. This returns all roles that have been assigned to the user on resources, including organization-level and sub-resource roles.
authorization.organization_memberships.role_assignments.createAssign a role to an organization membership on a specific resource.
authorization.organization_memberships.role_assignments.by_organization_membership_id.deleteRemove a role assignment by role slug and resource.
authorization.organization_memberships.role_assignments.deleteRemove a role assignment using its ID.
authorization.organizations.roles.listGet a list of all roles that apply to an organization. This includes both environment roles and organization-specific roles, returned in priority order.
authorization.organizations.roles.createCreate a new custom organization role. When slug is omitted, it is auto-generated from the role name.
authorization.organizations.roles.getRetrieve a role that applies to an organization by its slug. This can return either an environment role or an organization-specific role.
authorization.organizations.roles.updateUpdate an existing custom organization role. Only the fields provided in the request body will be updated.
authorization.organizations.roles.deleteDelete an existing custom organization role.
authorization.organizations.roles.permissions.createAdd a single permission to an organization role. If the permission is already assigned to the role, this operation has no effect.
authorization.organizations.roles.permissions.updateReplace all permissions on a role with the provided list.
authorization.organizations.roles.permissions.deleteRemove a single permission from an organization role by its slug.
authorization.organizations.resources.getRetrieve the details of an authorization resource by its external ID, organization, and resource type. This is useful when you only have the external ID from your system and need to fetch the full resource details.
authorization.organizations.resources.updateUpdate an existing authorization resource using its external ID.
authorization.organizations.resources.deleteDelete an authorization resource by organization, resource type, and external ID. This also deletes all descendant resources.
authorization.organizations.resources.organization_memberships.listReturns all organization memberships that have a specific permission on a resource, using the resource's external ID. This is useful for answering "Who can access this resource?" when you only have the external ID.
authorization.permissions.listGet a list of all permissions in your WorkOS environment.
authorization.permissions.createCreate a new permission in your WorkOS environment. The permission can then be assigned to environment roles and organization roles.
authorization.permissions.getRetrieve a permission by its unique slug.
authorization.permissions.updateUpdate an existing permission. Only the fields provided in the request body will be updated.
authorization.permissions.deleteDelete an existing permission. System permissions cannot be deleted.
authorization.resources.listGet a paginated list of authorization resources.
authorization.resources.createCreate a new authorization resource.
authorization.resources.getRetrieve the details of an authorization resource by its ID.
authorization.resources.updateUpdate an existing authorization resource.
authorization.resources.deleteDelete an authorization resource and all its descendants.
authorization.resources.organization_memberships.listReturns all organization memberships that have a specific permission on a resource instance. This is useful for answering "Who can access this resource?".
authorization.roles.listList all environment roles in priority order.
authorization.roles.createCreate a new environment role.
authorization.roles.getGet an environment role by its slug.
authorization.roles.updateUpdate an existing environment role.
authorization.roles.permissions.createAdd a single permission to an environment role. If the permission is already assigned to the role, this operation has no effect.
authorization.roles.permissions.updateReplace all permissions on an environment role with the provided list.
connect.applications.listList all Connect Applications in the current environment with optional filtering.
connect.applications.createCreate a new Connect Application. Supports both OAuth and Machine-to-Machine (M2M) application types.
connect.applications.getRetrieve details for a specific Connect Application by ID or client ID.
connect.applications.updateUpdate an existing Connect Application. For OAuth applications, you can update redirect URIs. For all applications, you can update the name, description, and scopes.
connect.applications.deleteDelete an existing Connect Application.
connections.listGet a list of all of your existing connections matching the criteria specified.
connections.getGet the details of an existing connection.
connections.deletePermanently deletes an existing connection. It cannot be undone.
directories.listGet a list of all of your existing directories matching the criteria specified.
directories.getGet the details of an existing directory.
directories.deletePermanently deletes an existing directory. It cannot be undone.
directory_groups.listGet a list of all of existing directory groups matching the criteria specified.
directory_groups.getGet the details of an existing Directory Group.
directory_users.listGet a list of all of existing Directory Users matching the criteria specified.
directory_users.getGet the details of an existing Directory User.
events.listList events for the current environment.