Skip to content

Connectors · Identity & security

Okta MCP server for AI agents.

actionlake is an MCP gateway: one remote MCP server that connects Claude and other MCP clients to Okta and the rest of your systems. It gives your agent 646 Okta actions (257 reads, 269 writes and 120 that wait for a confirmation) and holds the Okta credential itself, so the agent never does. It paces Okta's limits and records every call.

100,000 free calls a month. No card, no email, no password: press Start a free sandbox on the next screen and keep the key it shows you.

claude mcp add --transport http actionlake https://connect.actionlake.com/mcp
the first call
do {  action: "okta.users.list",  intent: "check which Okta account is connected"}# List all users · read · 1 upstream call
  • 646actionsin one signed file
  • 257readlook, never change
  • 269writecreate and update
  • 120wait for a yesdestructive, confirmed first

Set up

Connect Okta in three steps.

  1. 01

    Add actionlake to Claude.

    Run the command once in Claude Code; its consent page can create a free sandbox: 100,000 calls a month, no card. In the Claude app, add a custom connector with the URL below and paste your key on the consent page. Creating a new sandbox from the Claude app is not yet tested by us.

    https://connect.actionlake.com/mcp
  2. 02

    Connect Okta.

    API key. No consent screen: your agent can connect it for you, but the key then passes through your chat. To keep it out of the model's context, paste it in the console instead. actionlake stores what you paste write-only, sealed under your tenant's key.

    • api_tokenOkta API token
    • org_hostWhere your Okta lives: your org host
    account { op: "connections.requirements", service: "okta" }
    # free: exactly what to paste, and what is found for you
  3. 03

    Make the first call. Check before a write.

    Ask in plain words; Claude picks the action. Before anything changes, check validates the call and prices it, for free.

    do    { action: "okta.users.list" }# list all users · read · 1 upstream callcheck { action: "okta.users.create", input: { … } }# free: inputs, permissions, cost and confirmations, nothing sent

Okta at a glance

Sign-in
API key. No consent screen: your agent can connect it for you, but the key then passes through your chat. To keep it out of the model's context, paste it in the console instead.
You provide
api_token
Setup fields
org_host
Limits we pace to
600 calls a minute, per connection
API covered
Okta API 1, at your Okta instance's API base URL, which you enter when connecting (path /api/v1)
Built from
Okta's documentation, read 15 September 2026OpenAPI spec (GitHub)
Service file
Version 2.0.0, signed (Ed25519)
Cached reads
227 of 257 reads, for up to an hour; a write clears what it affects
Ready-made plans
10 in the store
Shared entities
5, so ask can line Okta up with your other systems
Data
Processed and stored in Sydney, Australia. No US region yet

Capabilities

What an AI agent can do in Okta.

646 actions in 12 areas. Every one carries its effect, so a key can allow the reads and hold the rest.

  • 257readlook, never change
  • 269writecreate and update
  • 120destructivewait for a confirmation
  1. Directory

    299

    109 read · 127 write · 63 destructive

    List all users · List all groups · Create a user · Add a group

  2. Administration

    79

    34 read · 35 write · 10 destructive

    List all custom roles · Create a custom role · Retrieve a role · Replace a custom role

  3. Applications

    71

    29 read · 30 write · 12 destructive

    List all applications · Create an application · Preview the application SAML metadata · Retrieve an application

  4. Branding

    49

    26 read · 13 write · 10 destructive

    List all domains associated with a brand · List all email templates · List all email customizations · Create an email customization

  5. Oauth

    48

    18 read · 20 write · 10 destructive

    List all client resources for an authorization server · List all custom token scopes · List all associated authorization servers · List all policies

  6. Federation

    26

    12 read · 10 write · 4 destructive

    List all users for IdP · Retrieve a user for IdP · List all tokens from OIDC IdP · List all IdPs

  7. Schema

    23

    11 read · 9 write · 3 destructive

    Update the app user profile schema for an app · List all linked object definitions · Create a linked object definition · List all user types

  8. Policy

    21

    7 read · 11 write · 3 destructive

    List all apps mapped to a policy · List all policies · List all policy rules · Clone an existing policy

4 more areas · 30 actions
  • Authentication 18
  • Devices 8
  • Sessions 3
  • Audit 1

Top actions

The Okta API, shaped for agents.

The ids your agent types, what each does, and the one name it shares with other systems. 252 of Okta's 271 action names are shared with at least one other connector, so an agent learns them once.

ActionWhat it doesEffectSame name in
okta.users.listList all usersList all users. Paged by Link header; each page is one upstream call.readidentity.user.list474 connectors
okta.groups.listList all groupsList all groups. Paged by Link header; each page is one upstream call.readidentity.group.list262 connectors
okta.users.createCreate a userCreate a user.writeidentity.user.create262 connectors
okta.apps.listList all applicationsList all applications. Paged by Link header; each page is one upstream call.readidentity.application.list37 connectors
okta.groups.addAdd a groupAdd a group.writeidentity.group.create205 connectors
okta.custom_roles.listList all custom rolesList all custom roles. Paged by Link header; each page is one upstream call.readidentity.role.list184 connectors
okta.users.deleteDelete a userDelete a user. Permanent — Okta does not soft-delete.destructiveidentity.user.delete253 connectors
okta.user_clients.listList all clientsList all clients. Paged by Link header; each page is one upstream call.readidentity.application.list37 connectors
okta.custom_roles.createCreate a custom roleCreate a custom role.writeidentity.role.create105 connectors
okta.user_groups.listList all groupsList all groups. Paged by Link header; each page is one upstream call.readidentity.group_member.list103 connectors
okta.group_members.listList all member usersList all member users. Paged by Link header; each page is one upstream call.readidentity.group_member.list103 connectors
okta.group_roles.list_targets_roleList all group role group targetsList all group role group targets. Paged by Link header; each page is one upstream call.readidentity.role_assignment.list41 connectors

Try it

Prompts to paste into Claude.

Each one names the Okta actions it will call, so you know what it reads and what it changes before you send it.

  1. Readread

    Which Okta devices have not checked in for a week?

    callsokta.devices.list

  2. Plandestructive

    Offboard a user by cutting sessions, grants and factors in Okta. Ask me before anything is sent or changed.

    callsokta.user_roles.list_assigned_rolesokta.user_groups.listokta.user_clients.list_grantsokta.user_sessions.revokeokta.user_clients.revoke_grants+2 more

  3. Planread

    Investigate suspicious sign-in activity for a user in Okta.

    callsokta.system_log.list_eventsokta.user_classification.getokta.user_factors.list_supported_factorsokta.user_groups.listokta.user_app_links.list+1 more

  4. Writewrite

    Create a user in Okta. Show me exactly what you will send before you save it.

    callsokta.users.create

The plan store

Ready-made plans for Okta.

10 plans in the store. Install one and your agent runs it by name; the reply says which connections are still missing. A schedule can run a plan on a timetable. There are no triggers or webhooks, by design.

  1. Review which applications each group grants

    Use it when Preparing an access review or answering what applications a set of Okta groups grants access to.

    Effect
    read
    Steps
    3 · loops
    Needs
    group query and group rule id
    Install
    okta-review-group-app-assignments
  2. Audit who holds admin roles across the org

    Use it when Someone asks for a privileged access review or wants to know who can administer Okta and with what permissions.

    Effect
    read
    Steps
    4 · loops
    Needs
    resource set
    Install
    okta-audit-admin-role-assignments
  3. Investigate suspicious sign-in activity for a user

    Use it when A user's sign-ins look suspicious and an analyst needs the surrounding context before deciding whether to lock the account.

    Effect
    read
    Steps
    6
    Needs
    log filter, since and user id
    Install
    okta-investigate-suspicious-signins
  4. Publish a themed sign-in page for a brand

    Use it when A brand's sign-in page or theme colours need updating and the change must be reviewed before it goes live to end users.

    A person decidesPublish a new themed sign-in page on brand brand id using widget version widget version and primary colour primary color hex.

    Effect
    write
    Steps
    6
    Needs
    brand id, page content, primary color hex, secondary color hex, theme id and widget version
    Install
    okta-publish-brand-sign-in-page
  5. Roll out an agent pool update and wait for it to finish

    Use it when An Okta agent pool needs its auto-update scheduled, resumed and watched through to completion.

    A person decidesSchedule and resume an agent update on pool pool id, which will briefly interrupt directory sync.

    Effect
    write
    Steps
    7
    Needs
    pool id, schedule and update id
    Install
    okta-roll-out-agent-pool-update
  6. Decommission an external identity provider

    Use it when An external IdP federation is being retired or replaced and must be turned off cleanly.

    A person decidesDeactivate identity provider idp id, which still has number of items linked application users.

    Effect
    destructive
    Steps
    6
    Needs
    idp csr id and idp id
    Install
    okta-decommission-identity-provider
  7. Quarantine a user flagged as high risk

    Use it when Threat detection or an analyst has flagged an account as compromised and it must be contained without deleting it.

    A person decidesSet risk level risk level on user user id and revoke all their sessions and MFA factors.

    Effect
    destructive
    Steps
    6
    Needs
    risk level and user id
    Install
    okta-quarantine-risky-user
  8. Retire a stale push provider and register its replacement origin

    Use it when A mobile push provider is being replaced and its trusted origin configuration needs swapping over at the same time.

    A person decidesDelete push provider push provider id and register new origin as a trusted origin in its place.

    Effect
    destructive
    Steps
    6
    Needs
    new origin, new origin name, push provider id and trusted origin id
    Install
    okta-retire-trusted-origin-and-push-provider
  9. Rotate the signing keys on an authorization server

    Use it when An authorization server's signing keys are due for rotation or are suspected of being compromised.

    A person decidesRotate signing keys on authorization server name, affecting number of items client applications.

    Effect
    destructive
    Steps
    6
    Needs
    auth server id
    Install
    okta-rotate-authz-server-keys
  10. Offboard a user by cutting sessions, grants and factors

    Use it when An employee has left or been suspended and their live Okta access must be cut immediately.

    A person decidesRevoke all sessions, OAuth grants and MFA factors for user user id, who holds number of items admin roles and number of items group memberships.

    Effect
    destructive
    Steps
    8
    Needs
    client id and user id
    Install
    okta-offboard-user-sessions-and-grants
install a plan
account { op: "plans.install", slug: "okta-review-group-app-assignments" }
# then ask for it by name; a schedule can run it on a timetable

Governance for Okta

Destructive actions wait for a yes.

120 Okta actions are destructive. The first 10:

  • Delete a userokta.users.delete
  • Delete a groupokta.groups.delete
  • Delete an identity source userokta.identity_sources.delete_user
  • Delete an applicationokta.apps.delete
  • Delete a custom roleokta.custom_roles.delete
  • Deactivate a userokta.user_lifecycle.deactivate
  • Unassign a user from a groupokta.group_members.unassign
  • Suspend a userokta.user_lifecycle.suspend
  • Unassign a user roleokta.user_roles.unassign
  • Unassign a group roleokta.group_roles.unassign

A destructive action runs only with confirm: true. Under the human policy the agent cannot confirm for itself: the run stops until a named person approves, in the console or from a signed link in an email. The cap on a key is refused before the call is sent, never after.

dookta.users.deleteconfirm_policy: human

Delete a user?

intent: the user asked me to delete a user

run suspended · waiting for a named person · key okta-agent cannot confirm itself
In the console, or from an emailed signed link.
a key for this connector
account {  op: "keys.create", name: "okta-agent",  allowed_actions: ["okta.*"], cap_calls: 2000,  confirm_policy: "human_for_writes",  approval_rules: [    { match: "okta.users.delete", approver: "[email protected]" },    { match: "okta.groups.delete", approver: "[email protected]" },    { match: "okta.identity_sources.delete_user", approver: "[email protected]" }  ]}
Illustrative. Scoped to Okta only, capped at 2,000 upstream calls, every write confirmed, and the destructive ones approved by a named person.

Cost

What Okta costs on actionlake.

Every Okta action is one upstream call, the only thing actionlake bills. Searching, check, cost, account and any call Okta refused with 401, 403, 429 or a 5xx are free. Paid plans start at US$49 a month for 250,000 calls, with overage from US$0.30 down to US$0.18 per 1,000.

  • 1upstream call per actionall 646 Okta actions
  • 27actions pageeach page of a long list is one call
  • 227reads can be cacheda cache hit costs nothing
  • 100,000calls a month, freepaid plans from US$49 a month for 250,000

See pricing

Action index

Every Okta action.

646 actions by area: the id your agent calls, what it does, and its effect.

Directory299
  • okta.groups.addAdd a groupwrite
  • okta.groups.listList all groupsread
  • okta.user_groups.listList all groupsread
  • okta.users.createCreate a userwrite
  • okta.users.listList all usersread
  • okta.agent_pools.activate_updateActivate an agent pool updatewrite
  • and 293 more in this area
Administration79
  • okta.custom_roles.createCreate a custom rolewrite
  • okta.custom_roles.getRetrieve a roleread
  • okta.custom_roles.listList all custom rolesread
  • okta.custom_roles.replaceReplace a custom rolewrite
  • okta.custom_roles.create_permissionCreate a custom role permissionwrite
  • okta.custom_roles.deleteDelete a custom roledestructive
  • and 73 more in this area
Applications71
  • okta.app_sso.preview_sam_lmetadataPreview the application SAML metadataread
  • okta.apps.createCreate an applicationwrite
  • okta.apps.getRetrieve an applicationread
  • okta.apps.listList all applicationsread
  • okta.app_connections.activate_default_provisioning_connectionActivate the default provisioning connectionwrite
  • okta.app_connections.deactivate_default_provisioning_connectionDeactivate the default provisioning connectionwrite
  • and 65 more in this area
Branding49
  • okta.brand_domains.listList all domains associated with a brandread
  • okta.email_templates.create_customizationCreate an email customizationwrite
  • okta.email_templates.listList all email templatesread
  • okta.email_templates.list_customizationsList all email customizationsread
  • okta.brand_well_known.get_all_well_known_ur_isRetrieve all the well-known URIsread
  • okta.brand_well_known.get_root_brand_well_known_uriRetrieve the well-known URI of a specific brandread
  • and 43 more in this area
Oauth48
  • okta.authz_associated.list_servers_by_trusted_typeList all associated authorization serversread
  • okta.authz_clients.listList all client resources for an authorization serverread
  • okta.authz_policies.list_server_policiesList all policiesread
  • okta.authz_scopes.listList all custom token scopesread
  • okta.authz_associated.create_serversCreate an associated authorization serverwrite
  • okta.authz_associated.delete_serverDelete an associated authorization serverdestructive
  • and 42 more in this area
Federation26
  • okta.idp_users.get_identity_provider_application_userRetrieve a user for IdPread
  • okta.idp_users.list_identity_provider_application_usersList all users for IdPread
  • okta.idp_users.list_social_auth_tokensList all tokens from OIDC IdPread
  • okta.idps.listList all IdPsread
  • okta.idp_csrs.generateGenerate a certificate signing requestwrite
  • okta.idp_csrs.getRetrieve a certificate signing requestread
  • and 20 more in this area
Schema23
  • okta.app_schemas.update_application_user_profileUpdate the app user profile schema for an appwrite
  • okta.user_schemas.create_linked_object_definitionCreate a linked object definitionwrite
  • okta.user_schemas.list_linked_object_definitionsList all linked object definitionsread
  • okta.user_types.listList all user typesread
  • okta.app_schemas.get_application_user_schemaRetrieve the default app user schema for an appread
  • okta.group_schemas.getRetrieve the default group schemaread
  • and 17 more in this area
Policy21
  • okta.policies.cloneClone an existing policywrite
  • okta.policies.listList all policiesread
  • okta.policies.list_appsList all apps mapped to a policyread
  • okta.policy_rules.listList all policy rulesread
  • okta.policies.activateActivate a policywrite
  • okta.policies.createCreate a policywrite
  • and 15 more in this area
Authentication18
  • okta.authenticator_aaguids.create_custom_aaguidCreate a custom AAGUIDwrite
  • okta.authenticator_aaguids.list_all_custom_aagui_dsList all custom AAGUIDsread
  • okta.authenticator_methods.listList all methods of an authenticatorread
  • okta.authenticators.listList all authenticatorsread
  • okta.authenticator_aaguids.delete_custom_aaguidDelete a custom AAGUIDdestructive
  • okta.authenticator_aaguids.get_custom_aaguidRetrieve a custom AAGUIDread
  • and 12 more in this area
Devices8
  • okta.devices.activateActivate a devicewrite
  • okta.devices.deleteDelete a devicedestructive
  • okta.devices.getRetrieve a deviceread
  • okta.devices.listList all devicesread
  • okta.devices.deactivateDeactivate a devicedestructive
  • okta.devices.list_usersList all users for a deviceread
  • and 2 more in this area
Sessions3
  • okta.sessions.getRetrieve a sessionread
  • okta.sessions.refreshRefresh a sessionwrite
  • okta.sessions.revokeRevoke a sessiondestructive
Audit1
  • okta.system_log.list_eventsList all System Log eventsread

This index shows a sample of each area. All 646 actions, with their inputs and prices, are in the catalogue, which a free sandbox key can search.

Questions

The Okta MCP server, answered.

Is there an Okta MCP server for Claude?

Yes. actionlake is an MCP gateway: a remote MCP server that gives Claude, or another MCP client, 646 Okta actions across directory, administration, applications and branding, through the same eight tools it uses for every other connector. actionlake is independent; it is not made or endorsed by Okta.

What do I need to connect Okta?

Okta API token. Plus your org host. The free call account { op: "connections.requirements", service: "okta" } lists exactly what to paste.

Can an AI agent delete or change things in Okta?

Only if its key allows it, and only with an explicit confirmation. 120 Okta actions are destructive, including delete a user, delete a group and delete an identity source user. Each runs only with confirm: true. Under the human confirm policy, or an approval rule on the key, the run waits until a named person approves it.

Will an AI agent use up my Okta API limit?

actionlake paces every call to the limits in the Okta service file: 600 calls a minute per connection. Repeated reads are answered from cache (227 Okta actions can be), which never reaches Okta.

What does an Okta action cost?

One upstream call, the only unit actionlake bills. A list that pages bills one call per page (27 Okta actions page). Cache hits, searches, dry runs and calls Okta refused with 401, 403, 429 or a 5xx are free. The Free plan includes 100,000 calls a month with no card. Paid plans start at US$49 a month for 250,000 calls, with overage from US$0.30 down to US$0.18 per 1,000.

Which Okta API does it cover?

The Okta API 1 at your Okta instance's API base URL, which you enter when connecting (path /api/v1). It is built from Okta's documentation as read on 15 September 2026. 646 actions in 12 areas, each one in the signed service file (version 2.0.0).

Does actionlake keep my Okta data, and where?

actionlake processes and stores data in Sydney, Australia; there is no US region yet. Reads may be cached for up to an hour, and a write clears the reads it affects. Each run's request and response is kept, sealed, for your plan's trace window: 1 day on Free, 3 days on Starter, 7 days on Pro, 14 days on Team, 30 days on Business and 30 days on Enterprise. Your Okta credential is sealed under your tenant's key, never logged and never returned. Your traffic is not used to train models.

Which AI clients can use it?

Claude Code, tested by us end to end, and the Claude app as a custom connector, tested by us with an existing key. Other MCP clients that support remote servers over Streamable HTTP (MCP revisions 2025-06-18 and 2025-11-25) and OAuth dynamic client registration, or a bearer header, should connect the same way; we have not tested them. Or plain REST, under the same action names.

Give your agent Okta today.

Start free - 100,000 calls/month, no card. No signup. Hard caps on every key. Cached answers are free.