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/mcpdo { 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.
- 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 - 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 tokenorg_hostWhere your Okta lives: your org host
account { op: "connections.requirements", service: "okta" } # free: exactly what to paste, and what is found for you - 03
Make the first call. Check before a write.
Ask in plain words; Claude picks the action. Before anything changes,
checkvalidates 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
Directory
299109 read · 127 write · 63 destructive
List all users · List all groups · Create a user · Add a group
Administration
7934 read · 35 write · 10 destructive
List all custom roles · Create a custom role · Retrieve a role · Replace a custom role
Applications
7129 read · 30 write · 12 destructive
List all applications · Create an application · Preview the application SAML metadata · Retrieve an application
Branding
4926 read · 13 write · 10 destructive
List all domains associated with a brand · List all email templates · List all email customizations · Create an email customization
Oauth
4818 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
Federation
2612 read · 10 write · 4 destructive
List all users for IdP · Retrieve a user for IdP · List all tokens from OIDC IdP · List all IdPs
Schema
2311 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
Policy
217 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.
| Action | What it does | Effect | Same name in |
|---|---|---|---|
okta.users.listList all users | List all users. Paged by Link header; each page is one upstream call. | read | identity.user.list474 connectors |
okta.groups.listList all groups | List all groups. Paged by Link header; each page is one upstream call. | read | identity.group.list262 connectors |
okta.users.createCreate a user | Create a user. | write | identity.user.create262 connectors |
okta.apps.listList all applications | List all applications. Paged by Link header; each page is one upstream call. | read | identity.application.list37 connectors |
okta.groups.addAdd a group | Add a group. | write | identity.group.create205 connectors |
okta.custom_roles.listList all custom roles | List all custom roles. Paged by Link header; each page is one upstream call. | read | identity.role.list184 connectors |
okta.users.deleteDelete a user | Delete a user. Permanent — Okta does not soft-delete. | destructive | identity.user.delete253 connectors |
okta.user_clients.listList all clients | List all clients. Paged by Link header; each page is one upstream call. | read | identity.application.list37 connectors |
okta.custom_roles.createCreate a custom role | Create a custom role. | write | identity.role.create105 connectors |
okta.user_groups.listList all groups | List all groups. Paged by Link header; each page is one upstream call. | read | identity.group_member.list103 connectors |
okta.group_members.listList all member users | List all member users. Paged by Link header; each page is one upstream call. | read | identity.group_member.list103 connectors |
okta.group_roles.list_targets_roleList all group role group targets | List all group role group targets. Paged by Link header; each page is one upstream call. | read | identity.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.
- Readread
Which Okta devices have not checked in for a week?
calls
okta.devices.list - Plandestructive
Offboard a user by cutting sessions, grants and factors in Okta. Ask me before anything is sent or changed.
calls
okta.user_roles.list_assigned_rolesokta.user_groups.listokta.user_clients.list_grantsokta.user_sessions.revokeokta.user_clients.revoke_grants+2 more - Planread
Investigate suspicious sign-in activity for a user in Okta.
calls
okta.system_log.list_eventsokta.user_classification.getokta.user_factors.list_supported_factorsokta.user_groups.listokta.user_app_links.list+1 more - Writewrite
Create a user in Okta. Show me exactly what you will send before you save it.
calls
okta.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.
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.
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.
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.
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 decides
Publish a new themed sign-in page on brand brand id using widget version widget version and primary colour primary color hex.
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 decides
Schedule and resume an agent update on pool pool id, which will briefly interrupt directory sync.
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 decides
Deactivate identity provider idp id, which still has number of items linked application users.
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 decides
Set risk level risk level on user user id and revoke all their sessions and MFA factors.
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 decides
Delete push provider push provider id and register new origin as a trusted origin in its place.
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 decides
Rotate signing keys on authorization server name, affecting number of items client applications.
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 decides
Revoke all sessions, OAuth grants and MFA factors for user user id, who holds number of items admin roles and number of items group memberships.
account { op: "plans.install", slug: "okta-review-group-app-assignments" }
# then ask for it by name; a schedule can run it on a timetableGovernance for Okta
Destructive actions wait for a yes.
120 Okta actions are destructive. The first 10:
- Delete a user
okta.users.delete - Delete a group
okta.groups.delete - Delete an identity source user
okta.identity_sources.delete_user - Delete an application
okta.apps.delete - Delete a custom role
okta.custom_roles.delete - Deactivate a user
okta.user_lifecycle.deactivate - Unassign a user from a group
okta.group_members.unassign - Suspend a user
okta.user_lifecycle.suspend - Unassign a user role
okta.user_roles.unassign - Unassign a group role
okta.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.
Delete a user?
intent: the user asked me to delete a user
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]" } ]}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
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 groupwriteokta.groups.listList all groupsreadokta.user_groups.listList all groupsreadokta.users.createCreate a userwriteokta.users.listList all usersreadokta.agent_pools.activate_updateActivate an agent pool updatewrite- and 293 more in this area
Administration79
okta.custom_roles.createCreate a custom rolewriteokta.custom_roles.getRetrieve a rolereadokta.custom_roles.listList all custom rolesreadokta.custom_roles.replaceReplace a custom rolewriteokta.custom_roles.create_permissionCreate a custom role permissionwriteokta.custom_roles.deleteDelete a custom roledestructive- and 73 more in this area
Applications71
okta.app_sso.preview_sam_lmetadataPreview the application SAML metadatareadokta.apps.createCreate an applicationwriteokta.apps.getRetrieve an applicationreadokta.apps.listList all applicationsreadokta.app_connections.activate_default_provisioning_connectionActivate the default provisioning connectionwriteokta.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 brandreadokta.email_templates.create_customizationCreate an email customizationwriteokta.email_templates.listList all email templatesreadokta.email_templates.list_customizationsList all email customizationsreadokta.brand_well_known.get_all_well_known_ur_isRetrieve all the well-known URIsreadokta.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 serversreadokta.authz_clients.listList all client resources for an authorization serverreadokta.authz_policies.list_server_policiesList all policiesreadokta.authz_scopes.listList all custom token scopesreadokta.authz_associated.create_serversCreate an associated authorization serverwriteokta.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 IdPreadokta.idp_users.list_identity_provider_application_usersList all users for IdPreadokta.idp_users.list_social_auth_tokensList all tokens from OIDC IdPreadokta.idps.listList all IdPsreadokta.idp_csrs.generateGenerate a certificate signing requestwriteokta.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 appwriteokta.user_schemas.create_linked_object_definitionCreate a linked object definitionwriteokta.user_schemas.list_linked_object_definitionsList all linked object definitionsreadokta.user_types.listList all user typesreadokta.app_schemas.get_application_user_schemaRetrieve the default app user schema for an appreadokta.group_schemas.getRetrieve the default group schemaread- and 17 more in this area
Policy21
okta.policies.cloneClone an existing policywriteokta.policies.listList all policiesreadokta.policies.list_appsList all apps mapped to a policyreadokta.policy_rules.listList all policy rulesreadokta.policies.activateActivate a policywriteokta.policies.createCreate a policywrite- and 15 more in this area
Authentication18
okta.authenticator_aaguids.create_custom_aaguidCreate a custom AAGUIDwriteokta.authenticator_aaguids.list_all_custom_aagui_dsList all custom AAGUIDsreadokta.authenticator_methods.listList all methods of an authenticatorreadokta.authenticators.listList all authenticatorsreadokta.authenticator_aaguids.delete_custom_aaguidDelete a custom AAGUIDdestructiveokta.authenticator_aaguids.get_custom_aaguidRetrieve a custom AAGUIDread- and 12 more in this area
Devices8
okta.devices.activateActivate a devicewriteokta.devices.deleteDelete a devicedestructiveokta.devices.getRetrieve a devicereadokta.devices.listList all devicesreadokta.devices.deactivateDeactivate a devicedestructiveokta.devices.list_usersList all users for a deviceread- and 2 more in this area
Sessions3
okta.sessions.getRetrieve a sessionreadokta.sessions.refreshRefresh a sessionwriteokta.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.