Skip to content

Connectors · Identity & security

Opal Security MCP server for AI agents.

actionlake is an MCP gateway: one remote MCP server that connects Claude and other MCP clients to Opal Security and the rest of your systems. It gives your agent 201 Opal Security actions (92 reads, 77 writes and 32 that wait for a confirmation) and holds the Opal Security credential itself, so the agent never does. It paces Opal Security'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: "opal.users.list_users",  intent: "check which Opal Security account is connected"}# List users · read · 1 upstream call
  • 201actionsin one signed file
  • 92readlook, never change
  • 77writecreate and update
  • 32wait for a yesdestructive, confirmed first

Set up

Connect Opal Security 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 Opal Security.

    Bearer token. 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_tokenOpal API token
    account { op: "connections.requirements", service: "opal" }
    # 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: "opal.users.list_users" }# list users · read · 1 upstream callcheck { action: "opal.users.invite_user", input: { … } }# free: inputs, permissions, cost and confirmations, nothing sent

Opal Security at a glance

Sign-in
Bearer token. 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
Limits we pace to
10 calls a second, per connection
API covered
Opal API v1 (OpenAPI 3.1, api.opal.dev/v1)api.opal.dev/v1
Built from
Opal Security's documentation, read 23 October 2026app.opal.devdocs.opal.dev
Service file
Version 1.0.0, signed (Ed25519)
Cached reads
89 of 92 reads, for up to 5 minutes; a write clears what it affects
Shared entities
2, so ask can line Opal Security up with your other systems
Data
Processed and stored in Sydney, Australia. No US region yet

Capabilities

What an AI agent can do in Opal Security.

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

  • 92readlook, never change
  • 77writecreate and update
  • 32destructivewait for a confirmation
  1. Resources

    34

    17 read · 12 write · 5 destructive

    Gives a non-human identity access to this resource · Adds a user to this resource · Creates a resource. See [here](https://docs.opal.dev/reference/end-system-objects) for details about importing resources · Create resource custom access level

  2. Groups

    29

    14 read · 12 write · 3 destructive

    Get groups · Creates an Opal group or [imports a remote group](https://docs.opal.dev/reference/end-system-objects) · Get group by ID · Deletes a group

  3. Bundles

    13

    5 read · 5 write · 3 destructive

    Adds a group to a bundle · Adds a resource to a bundle · Creates a bundle · Returns a list of `Group` objects in a given bundle

  4. Requests

    12

    4 read · 7 write · 1 destructive

    Create an access request · Get requests · Get request by ID · Approve an access request

  5. Campaigns

    11

    4 read · 6 write · 1 destructive

    Returns a list of `Campaign` objects · Create campaign · Get campaign by ID · Update campaign

  6. Tags

    11

    3 read · 4 write · 4 destructive

    Applies a tag to a group · Applies a tag to a resource · Applies a tag to a user · Creates a tag with the given key and value

  7. Users

    10

    6 read · 2 write · 2 destructive

    List users · Invites a user to your organization · Get user by ID · Deletes a user from your organization

  8. Owners

    8

    4 read · 3 write · 1 destructive

    Creates an owner · Gets the list of users for this owner, in escalation priority order if applicable · Get owners · Get owner by ID

21 more areas · 73 actions
  • Paladin 8
  • Scripts 6
  • Apps 5
  • Group bindings 5
  • Idp group mappings 5
  • Request templates 5
  • Access rules 4
  • Configuration templates 4
  • Delegations 4
  • Event streams 4
  • Agents 3
  • Message channels 3
  • On call schedules 3
  • Tokens 3
  • Uars 3
  • Events 2
  • Role assignments 2
  • Non human identities 1
  • Queries 1
  • Sessions 1
  • Sync errors 1

Top actions

The Opal Security API, shaped for agents.

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

ActionWhat it doesEffectSame name in
opal.users.list_usersList usersList users.readidentity.user.list474 connectors
opal.groups.list_groupsGet groupsGet groups.readidentity.group.list262 connectors
opal.users.invite_userInvites a user to your organizationInvites a user to your organization.writeidentity.user.create262 connectors
opal.groups.create_groupCreates an Opal group or [imports a remote group](https://docs.opal.dev/reference/end-system-objects)Creates an Opal group or [imports a remote group](https://docs.opal.dev/reference/end-system-objects).writeidentity.group.create205 connectors
opal.users.delete_userDeletes a user from your organizationDeletes a user from your organization.destructiveidentity.user.delete253 connectors
opal.users.whoamiReturns the user that the provided API token authenticates asReturns the user that the provided API token authenticates as.readidentity.current_user.get307 connectors
opal.groups.list_group_usersGets the list of users for this groupGets the list of users for this group.readidentity.group_member.list103 connectors
opal.tokens.create_tokenCreate tokenCreate token.writeidentity.api_key.create100 connectors
opal.tokens.list_tokensGet tokensGet tokens.readidentity.api_key.list96 connectors
opal.events.list_eventsReturns a list of `Event` objectsReturns a list of `Event` objects.readidentity.audit_event.list51 connectors
opal.groups.update_group_userUpdates a user's access level or duration in this groupUpdates a user's access level or duration in this group.writeidentity.group_member.update34 connectors
opal.requests.create_requestCreate an access requestCreate an access request.writeidentity.access_request.create12 connectors

Try it

Prompts to paste into Claude.

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

  1. Readread

    Who has access in Opal Security? List every user and their role.

    callsopal.users.list_users

  2. Writewrite

    Invites a user to your organization in Opal Security. Show me exactly what you will send before you save it.

    callsopal.users.invite_user

Governance for Opal Security

Destructive actions wait for a yes.

32 Opal Security actions are destructive. The first 10:

  • Deletes a user from your organizationopal.users.delete_user
  • Deletes a groupopal.groups.delete_group
  • Delete tokenopal.tokens.delete_token
  • Removes a user's access from this groupopal.groups.delete_group_user
  • Deletes a delegation by its IDopal.delegations.delete_delegation
  • Cancel requestopal.requests.cancel_request
  • Delete appopal.apps.delete_app
  • UNSTABLE. May be removed at any time. Deletes a tag with the given idopal.tags.delete_tag
  • Deletes an owneropal.owners.delete_owner
  • Removes a tag from a useropal.tags.remove_user_tag

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.

doopal.users.delete_userconfirm_policy: human

Deletes a user from your organization?

intent: the user asked me to deletes a user from your organization

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

Cost

What Opal Security costs on actionlake.

Every Opal Security action is one upstream call, the only thing actionlake bills. Searching, check, cost, account and any call Opal Security 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 201 Opal Security actions
  • 201actions pageeach page of a long list is one call
  • 89reads 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 Opal Security action.

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

Resources34
  • opal.resources.add_resource_nhiGives a non-human identity access to this resourcewrite
  • opal.resources.add_resource_userAdds a user to this resourcewrite
  • opal.resources.create_resourceCreates a resource. See [here](https://docs.opal.dev/reference/end-system-objects) for details about importing resourceswrite
  • opal.resources.create_resource_custom_access_levelCreate resource custom access levelwrite
  • opal.resources.delete_resourceDeletes a resourcedestructive
  • opal.resources.delete_resource_custom_access_levelDelete resource custom access leveldestructive
  • opal.resources.delete_resource_nhiRemoves a non-human identity's direct access from this resourcedestructive
  • opal.resources.delete_resource_userRemoves a user's direct access from this resourcedestructive
  • opal.resources.get_resourceGet resource by IDread
  • opal.resources.get_resource_configuration_templateGet the ID of the configuration template linked to a resourceread
  • opal.resources.get_resource_userGet resource userread
  • opal.resources.get_resource_user_access_statusGet user's access status to a resourceread
  • opal.resources.get_resource_visibilityGets the visibility of this resourceread
  • opal.resources.list_resource_access_levelsGet resource access levelsread
  • opal.resources.list_resource_custom_access_levelsList resource custom access levelsread
  • opal.resources.list_resource_groupsReturns a list of groups that grant access to the resourceread
  • opal.resources.list_resource_message_channelsGets the list of audit message channels attached to a resourceread
  • opal.resources.list_resource_nhisGets the list of non-human identities with access to this resourceread
  • opal.resources.list_resource_reviewer_stagesGets the list reviewer stages for a resourceread
  • opal.resources.list_resource_reviewersGets the list of owner IDs of the reviewers for a resourceread
  • opal.resources.list_resource_scoped_role_permissionsList resource scoped role permissionsread
  • opal.resources.list_resource_tagsReturns all tags applied to the resourceread
  • opal.resources.list_resource_usersGet resource usersread
  • opal.resources.list_resourcesGet resourcesread
  • opal.resources.list_user_resourcesGets the list of resources for this userread
  • opal.resources.set_resource_message_channelsSets the list of audit message channels attached to a resourcewrite
  • opal.resources.set_resource_reviewer_stagesSets the list of reviewer stages for a resourcewrite
  • opal.resources.set_resource_reviewersSets the list of reviewers for a resourcewrite
  • opal.resources.set_resource_scoped_role_permissionsSets all the scoped role permissions on an OPAL_SCOPED_ROLE resourcedestructive
  • opal.resources.set_resource_visibilitySets the visibility of this resourcewrite
  • opal.resources.update_resource_configuration_templateSet the ID of the configuration template linked to a resourcewrite
  • opal.resources.update_resource_custom_access_levelUpdate resource custom access levelwrite
  • opal.resources.update_resource_userUpdates a user's access level or duration on this resourcewrite
  • opal.resources.update_resourcesBulk updates a list of resourceswrite
Groups29
  • opal.groups.add_group_containing_groupCreates a new containing groupwrite
  • opal.groups.add_group_resourceAdds a resource to a groupwrite
  • opal.groups.add_group_userAdds a user to this groupwrite
  • opal.groups.create_groupCreates an Opal group or [imports a remote group](https://docs.opal.dev/reference/end-system-objects)write
  • opal.groups.delete_groupDeletes a groupdestructive
  • opal.groups.delete_group_userRemoves a user's access from this groupdestructive
  • opal.groups.get_groupGet group by IDread
  • opal.groups.get_group_containing_groupGet nested group by IDread
  • opal.groups.get_group_visibilityGets the visibility of this groupread
  • opal.groups.list_group_access_levelsGet group access levelsread
  • opal.groups.list_group_containing_groupsGet nested groupsread
  • opal.groups.list_group_message_channelsGets the list of audit and reviewer message channels attached to a groupread
  • opal.groups.list_group_on_call_schedulesGets the list of on call schedules attached to a groupread
  • opal.groups.list_group_resourcesGets the list of resources that the group gives access toread
  • opal.groups.list_group_reviewer_stagesGets the list of reviewer stages for a groupread
  • opal.groups.list_group_reviewersGets the list of owner IDs of the reviewers for a groupread
  • opal.groups.list_group_tagsReturns all tags applied to the groupread
  • opal.groups.list_group_usersGets the list of users for this groupread
  • opal.groups.list_groupsGet groupsread
  • opal.groups.list_user_groupsReturns all groups that the user is a member ofread
  • opal.groups.remove_group_containing_groupRemoves a containing group from a groupdestructive
  • opal.groups.set_group_message_channelsSets the list of audit message channels attached to a groupwrite
  • opal.groups.set_group_on_call_schedulesSets the list of on call schedules attached to a groupwrite
  • opal.groups.set_group_resourcesSets the list of resources that the group gives access towrite
  • opal.groups.set_group_reviewer_stagesSets the list of reviewer stages for a groupwrite
  • opal.groups.set_group_reviewersSets the list of reviewers for a groupwrite
  • opal.groups.set_group_visibilitySets the visibility of this groupwrite
  • opal.groups.update_group_userUpdates a user's access level or duration in this groupwrite
  • opal.groups.update_groupsBulk updates a list of groupswrite
Bundles13
  • opal.bundles.add_bundle_groupAdds a group to a bundlewrite
  • opal.bundles.add_bundle_resourceAdds a resource to a bundlewrite
  • opal.bundles.create_bundleCreates a bundlewrite
  • opal.bundles.delete_bundleDeletes a bundledestructive
  • opal.bundles.get_bundleGet bundle by IDread
  • opal.bundles.get_bundle_visibilityGets the visibility of the bundleread
  • opal.bundles.list_bundle_groupsReturns a list of `Group` objects in a given bundleread
  • opal.bundles.list_bundle_resourcesReturns a list of `Resource` objects in a given bundleread
  • opal.bundles.list_bundlesGet bundlesread
  • opal.bundles.remove_bundle_groupRemoves a group from a bundledestructive
  • opal.bundles.remove_bundle_resourceRemoves a resource from a bundledestructive
  • opal.bundles.set_bundle_visibilitySets the visibility of the bundlewrite
  • opal.bundles.update_bundleUpdates a bundlewrite
Requests12
  • opal.requests.approve_requestApprove an access requestwrite
  • opal.requests.cancel_requestCancel requestdestructive
  • opal.requests.create_requestCreate an access requestwrite
  • opal.requests.create_request_commentComment on an access requestwrite
  • opal.requests.deny_requestDeny an access requestwrite
  • opal.requests.escalate_requestEscalate request to skip-managerwrite
  • opal.requests.get_requestGet request by IDread
  • opal.requests.list_request_commentsReturns a list of comments for a specific requestread
  • opal.requests.list_requestsGet requestsread
  • opal.requests.list_requests_relayGet requests via Relayread
  • opal.requests.remind_requestSend request reminderwrite
  • opal.requests.remind_request_reviewerSend reminder to a reviewerwrite
Campaigns11
  • opal.campaigns.create_campaignCreate campaignwrite
  • opal.campaigns.end_campaignEnd campaignwrite
  • opal.campaigns.get_campaignGet campaign by IDread
  • opal.campaigns.list_campaign_itemsList campaign itemsread
  • opal.campaigns.list_campaign_viewer_itemsList viewer campaign itemsread
  • opal.campaigns.list_campaignsReturns a list of `Campaign` objectsread
  • opal.campaigns.review_campaign_itemsSubmit campaign item review decisionswrite
  • opal.campaigns.start_campaignStart campaignwrite
  • opal.campaigns.stop_campaignStop campaigndestructive
  • opal.campaigns.update_campaignUpdate campaignwrite
  • opal.campaigns.update_campaign_item_reviewersUpdate campaign item reviewerswrite
Tags11
  • opal.tags.add_group_tagApplies a tag to a groupwrite
  • opal.tags.add_resource_tagApplies a tag to a resourcewrite
  • opal.tags.add_user_tagApplies a tag to a userwrite
  • opal.tags.create_tagCreates a tag with the given key and valuewrite
  • opal.tags.delete_tagUNSTABLE. May be removed at any time. Deletes a tag with the given iddestructive
  • opal.tags.get_tagGet tag by IDread
  • opal.tags.get_tag_by_keyGets a tag with the given key and valueread
  • opal.tags.list_tagsGet tagsread
  • opal.tags.remove_group_tagRemoves a tag from a groupdestructive
  • opal.tags.remove_resource_tagRemoves a tag from a resourcedestructive
  • opal.tags.remove_user_tagRemoves a tag from a userdestructive
Users10
  • opal.users.delete_userDeletes a user from your organizationdestructive
  • opal.users.get_userGet user by IDread
  • opal.users.invite_userInvites a user to your organizationwrite
  • opal.users.list_remote_usersReturns a list of remote users for your organizationread
  • opal.users.list_user_tagsReturns all tags applied to the userread
  • opal.users.list_usersList usersread
  • opal.users.lookup_userReturns a `User` objectread
  • opal.users.reset_user_mfaReset a user's Opal MFAdestructive
  • opal.users.update_userUpdates a user's position or managerwrite
  • opal.users.whoamiReturns the user that the provided API token authenticates asread
Owners8
  • opal.owners.create_ownerCreates an ownerwrite
  • opal.owners.delete_ownerDeletes an ownerdestructive
  • opal.owners.get_ownerGet owner by IDread
  • opal.owners.get_owner_by_nameReturns an `Owner` object. Does not support owners with `/` in their name, use /owners?name=... insteadread
  • opal.owners.list_owner_usersGets the list of users for this owner, in escalation priority order if applicableread
  • opal.owners.list_ownersGet ownersread
  • opal.owners.set_owner_usersSet owner userswrite
  • opal.owners.update_ownersBulk updates a list of ownerswrite
Paladin8
  • opal.paladin.create_paladinCreate Paladinwrite
  • opal.paladin.create_paladin_context_sourceAdd a Paladin context sourcewrite
  • opal.paladin.delete_paladinDelete Paladindestructive
  • opal.paladin.delete_paladin_context_sourceRemove a Paladin context sourcedestructive
  • opal.paladin.get_paladinGet Paladin by IDread
  • opal.paladin.get_paladin_by_nameGet Paladins by nameread
  • opal.paladin.list_paladin_context_sourcesList Paladin context sourcesread
  • opal.paladin.update_paladinUpdate Paladinwrite
Scripts6
  • opal.scripts.create_opal_scriptCreate OpalScriptwrite
  • opal.scripts.delete_opal_scriptDelete OpalScriptdestructive
  • opal.scripts.get_opal_scriptGet OpalScript by IDread
  • opal.scripts.get_opal_script_by_nameGet OpalScript by nameread
  • opal.scripts.list_opal_scriptsList OpalScriptsread
  • opal.scripts.update_opal_scriptUpdate OpalScriptwrite
Apps5
  • opal.apps.create_appCreate appwrite
  • opal.apps.delete_appDelete appdestructive
  • opal.apps.get_appGet app by IDread
  • opal.apps.list_appsGet appsread
  • opal.apps.update_appUpdate appwrite
Group bindings5
  • opal.group_bindings.create_group_bindingCreates a group bindingwrite
  • opal.group_bindings.delete_group_bindingDeletes a group bindingdestructive
  • opal.group_bindings.get_group_bindingGet group binding by IDread
  • opal.group_bindings.list_group_bindingsGet group bindingsread
  • opal.group_bindings.update_group_bindingsBulk updates a list of group bindingswrite
Idp group mappings5
  • opal.idp_group_mappings.create_idp_group_mappingCreate idp group mappingwrite
  • opal.idp_group_mappings.delete_idp_group_mappingsDeletes an `IdpGroupMapping` objectdestructive
  • opal.idp_group_mappings.get_idp_group_mappingGets an `IdpGroupMapping` object for an Okta app and groupread
  • opal.idp_group_mappings.list_idp_group_mappingsReturns the configured set of available `IdpGroupMapping` objects for an Okta appread
  • opal.idp_group_mappings.update_idp_group_mappingsUpdates the list of available `IdpGroupMapping` objects for an Okta appwrite
Request templates5
  • opal.request_templates.create_request_templateCreates a request templatewrite
  • opal.request_templates.delete_request_templateDeletes a request templatedestructive
  • opal.request_templates.get_request_templateReturns a `RequestTemplate` objectread
  • opal.request_templates.list_request_templatesReturns a list of `RequestTemplate` objectsread
  • opal.request_templates.update_request_templateUpdates a request templatewrite
Access rules4
  • opal.access_rules.create_access_ruleCreates a new access rule config for the given group_idwrite
  • opal.access_rules.get_access_ruleReturns a list of access rule config given the group_id of the access ruleread
  • opal.access_rules.list_access_rulesReturns a list of access rules for your organizationread
  • opal.access_rules.update_access_ruleUpdates the access rule config for the given group_idwrite
Configuration templates4
  • opal.configuration_templates.create_configuration_templateCreates a configuration templatewrite
  • opal.configuration_templates.delete_configuration_templateDeletes a configuration templatedestructive
  • opal.configuration_templates.list_configuration_templatesReturns a list of `ConfigurationTemplate` objectsread
  • opal.configuration_templates.update_configuration_templateUpdate a configuration templatewrite
Delegations4
  • opal.delegations.create_delegationCreates a new request reviewer delegation to delegate access review requests from one user to anotherwrite
  • opal.delegations.delete_delegationDeletes a delegation by its IDdestructive
  • opal.delegations.get_delegationGet delegation by IDread
  • opal.delegations.list_delegationsGet delegationsread
Event streams4
  • opal.event_streams.create_event_streamCreate event streamwrite
  • opal.event_streams.delete_event_streamDelete event streamdestructive
  • opal.event_streams.list_event_streamsGet event streamsread
  • opal.event_streams.update_event_streamUpdate event streamwrite
Agents3
  • opal.agents.get_agent_kill_switchGet the agent kill switchread
  • opal.agents.report_agent_activityReport agent activitywrite
  • opal.agents.set_agent_kill_switchSet the agent kill switchwrite
Message channels3
  • opal.message_channels.create_message_channelCreates a `MessageChannel` objectswrite
  • opal.message_channels.get_message_channelGet message channel by IDread
  • opal.message_channels.list_message_channelsGet message channelsread
On call schedules3
  • opal.on_call_schedules.create_on_call_scheduleCreates a `OnCallSchedule` objectswrite
  • opal.on_call_schedules.get_on_call_scheduleGet on call schedule by IDread
  • opal.on_call_schedules.list_on_call_schedulesGet on call schedulesread
Tokens3
  • opal.tokens.create_tokenCreate tokenwrite
  • opal.tokens.delete_tokenDelete tokendestructive
  • opal.tokens.list_tokensGet tokensread
Uars3
  • opal.uars.create_uarStarts a User Access Review. Deprecated in favor of `POST /campaigns`write
  • opal.uars.get_uarRetrieves a specific UAR. Deprecated in favor of `GET /campaigns/{campaign_id}`read
  • opal.uars.list_uarsReturns a list of `UAR` objects. Deprecated in favor of `GET /campaigns`read
Events2
  • opal.events.get_eventGet event by IDread
  • opal.events.list_eventsReturns a list of `Event` objectsread
Role assignments2
  • opal.role_assignments.add_role_assignmentsAdd role assignmentsdestructive
  • opal.role_assignments.list_role_assignmentsList role assignmentsread
Non human identities1
  • opal.non_human_identities.list_nhisReturns a list of non-human identities for your organizationread
Queries1
  • opal.queries.run_queryRun an ad-hoc OpalQueryread
Sessions1
  • opal.sessions.list_sessionsReturns a list of `Session` objectsread
Sync errors1
  • opal.sync_errors.list_sync_errorsReturns a list of recent sync errors that have occurred since the last successful syncread

Questions

The Opal Security MCP server, answered.

Is there an Opal Security MCP server for Claude?

Yes. actionlake is an MCP gateway: a remote MCP server that gives Claude, or another MCP client, 201 Opal Security actions across resources, groups, bundles and requests, through the same eight tools it uses for every other connector. actionlake is independent; it is not made or endorsed by Opal Security.

What do I need to connect Opal Security?

Opal API token. The free call account { op: "connections.requirements", service: "opal" } lists exactly what to paste.

Can an AI agent delete or change things in Opal Security?

Only if its key allows it, and only with an explicit confirmation. 32 Opal Security actions are destructive, including deletes a user from your organization, deletes a group and delete token. 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 Opal Security API limit?

actionlake paces every call to the limits in the Opal Security service file: 10 calls a second per connection. Repeated reads are answered from cache (89 Opal Security actions can be), which never reaches Opal Security.

What does an Opal Security action cost?

One upstream call, the only unit actionlake bills. A list that pages bills one call per page (201 Opal Security actions page). Cache hits, searches, dry runs and calls Opal Security 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 Opal Security API does it cover?

The Opal API v1 (OpenAPI 3.1, api.opal.dev/v1) at api.opal.dev/v1. It is built from Opal Security's documentation as read on 23 October 2026. 201 actions in 29 areas, each one in the signed service file (version 1.0.0).

Does actionlake keep my Opal Security data, and where?

actionlake processes and stores data in Sydney, Australia; there is no US region yet. Reads may be cached for up to 5 minutes, 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 Opal Security 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 Opal Security today.

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