Skip to content

Connectors · MSP & PSA

Openprovider MCP server for AI agents.

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

Set up

Connect Openprovider 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 Openprovider.

    Session login. actionlake opens the session and renews it when it expires. actionlake stores what you paste write-only, sealed under your tenant's key.

    • usernameUsername of the Openprovider reseller account (or an API sub-user contact with API access enabled) that actionlake…
    • passwordPassword of that Openprovider account. actionlake exchanges it at /v1beta/auth/login for a bearer token
    account { op: "connections.requirements", service: "openprovider" }
    # 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: "openprovider.customers.list" }# list customers · read · 1 upstream callcheck { action: "openprovider.customers.create", input: { … } }# free: inputs, permissions, cost and confirmations, nothing sent

Openprovider at a glance

Sign-in
Session login. actionlake opens the session and renews it when it expires.
You provide
usernamepassword
Limits we pace to
10 calls a second, per connection
API covered
Openprovider REST API v1beta (Swagger 2.0)api.openprovider.eu
Built from
Openprovider's documentation, read 23 October 2026docs.openprovider.comdocs.openprovider.com
Service file
Version 1.0.0, signed (Ed25519)
Cached reads
55 of 61 reads, for up to 5 minutes; a write clears what it affects
Shared entities
3, so ask can line Openprovider up with your other systems
Data
Processed and stored in Sydney, Australia. No US region yet

Capabilities

What an AI agent can do in Openprovider.

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

  • 61readlook, never change
  • 56writecreate and update
  • 20destructivewait for a confirmation
  1. Domains

    14

    4 read · 7 write · 3 destructive

    Check domain · Create domain · List domains · Send foa1

  2. SSL orders

    10

    2 read · 7 write · 1 destructive

    List orders · Create order · Get order · Update order

  3. Mail orders

    7

    3 read · 3 write · 1 destructive

    Assign mailbox · Create order · List order · Get order

  4. Easydmarc orders

    6

    3 read · 2 write · 1 destructive

    Create easy dmarc · List easy dmarc · Get easy dmarc · Get easy dmarc sso

  5. Plesk licenses

    6

    3 read · 2 write · 1 destructive

    Create plesk license · Get plesk license · Update plesk license · Delete plesk license

  6. Virtuozzo licenses

    6

    3 read · 2 write · 1 destructive

    Create virtuozzo license · List virtuozzo licenses · Get virtuozzo license · Get virtuozzo key

  7. Contacts

    5

    2 read · 2 write · 1 destructive

    List contacts · Create contact · Get contact · Update contact

  8. Customers

    5

    2 read · 2 write · 1 destructive

    List customers · Create customer · Get customer · Update customer

34 more areas · 78 actions
  • DNS zones 5
  • Mail aliases 5
  • Nameserver groups 5
  • Nameservers 5
  • DNS templates 4
  • Email templates 4
  • Spam expert domains 4
  • Email verifications 3
  • Mail dkim 3
  • Mail domains 3
  • Mailboxes 3
  • Tags 3
  • Contact notification settings 2
  • Domain auth codes 2
  • Licenses 2
  • Mail time limited aliases 2
  • Payments 2
  • Reseller 2
  • SSL CSRS 2
  • SSL products 2
  • TLDS 2
  • DNS domain tokens 1
  • DNS zone records 1
  • Domain additional data 1
  • Domain customer additional data 1
  • Domain prices 1
  • Invoices 1
  • License items 1
  • Mail statistics 1
  • Reseller settings 1
  • Reseller statistics 1
  • Spam expert login urls 1
  • SSL approver emails 1
  • Transactions 1

Top actions

The Openprovider API, shaped for agents.

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

ActionWhat it doesEffectSame name in
openprovider.customers.listList customersList customers.readcrm.contact.list177 connectors
openprovider.customers.createCreate customerCreate customer.writecrm.contact.create161 connectors
openprovider.customers.deleteDelete customerDelete customer.destructivecrm.contact.delete147 connectors
openprovider.dns_zone_records.listList zone recordsList zone records.readinfra.dns_record.list12 connectors
openprovider.dns_zones.listList zonesList zones.readinfra.dns_zone.list10 connectors
openprovider.dns_zones.createCreate zoneCreate zone.writeinfra.dns_zone.create8 connectors
openprovider.email_templates.listList emailsList emails.readcomm.email_template.list40 connectors
openprovider.email_templates.createCreate emailCreate email.writecomm.email_template.create34 connectors
openprovider.ssl_csrs.createCreate csrCreate csr.writeinfra.certificate_signing_request.create2 connectors
openprovider.invoices.listList invoicesList invoices.readplatform.invoice.list26 connectors
openprovider.licenses.listList licenses with price versionList licenses with price version.readasset.license_record.list6 connectors
openprovider.plesk_licenses.createCreate plesk licenseCreate plesk license.writeasset.license_record.create4 connectors

Try it

Prompts to paste into Claude.

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

  1. Readread

    Find the Openprovider contacts with no email address, so we can clean them up.

    callsopenprovider.customers.list

  2. Writewrite

    Create customer in Openprovider. Show me exactly what you will send before you save it.

    callsopenprovider.customers.create

  3. Across systemsread

    Which contacts are in both Openprovider and NetSuite, and how many are in only one of them?

    callsopenprovider.customers.listnetsuite.views.contacts

Across your systems

Openprovider, joined to the rest of your business.

One ask fetches from Openprovider and another system, joins the rows on the same customer on our side, and hands your agent the answer, not every row.

  • Which contacts are in both Openprovider and NetSuite, and how many are in only one of them?

    openprovider.customers.list + netsuite.views.contacts, on crm.contact · NetSuite

  • Which contacts are in both Openprovider and HubSpot CRM, and how many are in only one of them?

    openprovider.customers.list + hubspot_crm.contacts.list, on crm.contact · HubSpot CRM

Also mapped by other connectorsidentity.user 517crm.contact 192platform.invoice 12
ask
ask {  intent: "which contacts are in both Openprovider and NetSuite, and how many are in only one of them",  steps: [    { action: "openprovider.customers.list", as: "people", input: {}, limit: 100, max_pages: 5 },    { action: "netsuite.views.contacts", as: "people2", input: {}, limit: 100, max_pages: 5 },    { join: {        left: "people",        right: "people2",        on: "crm.contact",        group_by: "people.email",        select: ["people.email", "count(people2.id) as in_netsuite"]    } }  ]}
Example. Run it through check first: it validates the steps and prices them, and it is free.

Governance for Openprovider

Destructive actions wait for a yes.

20 Openprovider actions are destructive. These are all of them:

  • Delete customeropenprovider.customers.delete
  • Delete zoneopenprovider.dns_zones.delete
  • Delete emailopenprovider.email_templates.delete
  • Delete plesk licenseopenprovider.plesk_licenses.delete
  • Delete tagopenprovider.tags.delete
  • Delete domainopenprovider.domains.delete
  • Delete contactopenprovider.contacts.delete
  • Transfer domainopenprovider.domains.transfer
  • Delete Dkim records for a domain.openprovider.mail_dkim.delete
  • Delete orderopenprovider.mail_orders.delete
  • Delete nameserveropenprovider.nameservers.delete
  • Delete aliasopenprovider.mail_aliases.delete
  • Delete domainopenprovider.mail_domains.delete
  • Delete templateopenprovider.dns_templates.delete
  • Delete easy dmarcopenprovider.easydmarc_orders.delete
  • Approve transferopenprovider.domains.approve_transfer
  • Delete groupopenprovider.nameserver_groups.delete
  • Delete virtuozzo licenseopenprovider.virtuozzo_licenses.delete
  • Delete domainopenprovider.spam_expert_domains.delete
  • Cancel orderopenprovider.ssl_orders.cancel

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.

doopenprovider.customers.deleteconfirm_policy: human

Delete customer?

intent: the user asked me to delete customer

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

Cost

What Openprovider costs on actionlake.

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

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

Domains14
  • openprovider.domains.approve_transferApprove transferdestructive
  • openprovider.domains.checkCheck domainread
  • openprovider.domains.createCreate domainwrite
  • openprovider.domains.deleteDelete domaindestructive
  • openprovider.domains.getGet domainread
  • openprovider.domains.listList domainsread
  • openprovider.domains.renewRenew domainwrite
  • openprovider.domains.restart_last_operationTry again last operationwrite
  • openprovider.domains.restoreRestore domainwrite
  • openprovider.domains.send_foa1Send foa1write
  • openprovider.domains.suggest_nameSuggest name domainread
  • openprovider.domains.tradeTrade domainwrite
  • openprovider.domains.transferTransfer domaindestructive
  • openprovider.domains.updateUpdate domainwrite
SSL orders10
  • openprovider.ssl_orders.cancelCancel orderdestructive
  • openprovider.ssl_orders.createCreate orderwrite
  • openprovider.ssl_orders.create_otp_tokenCreate otp tokenwrite
  • openprovider.ssl_orders.getGet orderread
  • openprovider.ssl_orders.listList ordersread
  • openprovider.ssl_orders.reissueReissue orderwrite
  • openprovider.ssl_orders.renewRenew orderwrite
  • openprovider.ssl_orders.resend_approver_emailResend approver emailwrite
  • openprovider.ssl_orders.updateUpdate orderwrite
  • openprovider.ssl_orders.update_approver_emailUpdate approver email addresswrite
Mail orders7
  • openprovider.mail_orders.assign_mailboxAssign mailboxwrite
  • openprovider.mail_orders.createCreate orderwrite
  • openprovider.mail_orders.deleteDelete orderdestructive
  • openprovider.mail_orders.getGet orderread
  • openprovider.mail_orders.get_passwordGet mailbox passwordread
  • openprovider.mail_orders.listList orderread
  • openprovider.mail_orders.retain_mailboxRetain mailboxwrite
Easydmarc orders6
  • openprovider.easydmarc_orders.createCreate easy dmarcwrite
  • openprovider.easydmarc_orders.deleteDelete easy dmarcdestructive
  • openprovider.easydmarc_orders.getGet easy dmarcread
  • openprovider.easydmarc_orders.get_sso_urlGet easy dmarc ssoread
  • openprovider.easydmarc_orders.listList easy dmarcread
  • openprovider.easydmarc_orders.retryRetry easy dmarcwrite
Plesk licenses6
  • openprovider.plesk_licenses.createCreate plesk licensewrite
  • openprovider.plesk_licenses.deleteDelete plesk licensedestructive
  • openprovider.plesk_licenses.getGet plesk licenseread
  • openprovider.plesk_licenses.get_keyGet plesk keyread
  • openprovider.plesk_licenses.listList plesk licensesread
  • openprovider.plesk_licenses.updateUpdate plesk licensewrite
Virtuozzo licenses6
  • openprovider.virtuozzo_licenses.createCreate virtuozzo licensewrite
  • openprovider.virtuozzo_licenses.deleteDelete virtuozzo licensedestructive
  • openprovider.virtuozzo_licenses.getGet virtuozzo licenseread
  • openprovider.virtuozzo_licenses.get_keyGet virtuozzo keyread
  • openprovider.virtuozzo_licenses.listList virtuozzo licensesread
  • openprovider.virtuozzo_licenses.updateUpdate virtuozzo licensewrite
Contacts5
  • openprovider.contacts.createCreate contactwrite
  • openprovider.contacts.deleteDelete contactdestructive
  • openprovider.contacts.getGet contactread
  • openprovider.contacts.listList contactsread
  • openprovider.contacts.updateUpdate contactwrite
Customers5
  • openprovider.customers.createCreate customerwrite
  • openprovider.customers.deleteDelete customerdestructive
  • openprovider.customers.getGet customerread
  • openprovider.customers.listList customersread
  • openprovider.customers.updateUpdate customerwrite
DNS zones5
  • openprovider.dns_zones.createCreate zonewrite
  • openprovider.dns_zones.deleteDelete zonedestructive
  • openprovider.dns_zones.getGet zoneread
  • openprovider.dns_zones.listList zonesread
  • openprovider.dns_zones.updateUpdate zonewrite
Mail aliases5
  • openprovider.mail_aliases.createAdd aliaswrite
  • openprovider.mail_aliases.deleteDelete aliasdestructive
  • openprovider.mail_aliases.getGet aliasread
  • openprovider.mail_aliases.listList aliasread
  • openprovider.mail_aliases.updateEdit aliaswrite
Nameserver groups5
  • openprovider.nameserver_groups.createCreate groupwrite
  • openprovider.nameserver_groups.deleteDelete groupdestructive
  • openprovider.nameserver_groups.getGet groupread
  • openprovider.nameserver_groups.listList groupsread
  • openprovider.nameserver_groups.updateUpdate groupwrite
Nameservers5
  • openprovider.nameservers.createCreate nameserverwrite
  • openprovider.nameservers.deleteDelete nameserverdestructive
  • openprovider.nameservers.getGet nameserverread
  • openprovider.nameservers.listList nameserversread
  • openprovider.nameservers.updateUpdate nameserverwrite
DNS templates4
  • openprovider.dns_templates.createCreate templatewrite
  • openprovider.dns_templates.deleteDelete templatedestructive
  • openprovider.dns_templates.getGet templateread
  • openprovider.dns_templates.listList templatesread
Email templates4
  • openprovider.email_templates.createCreate emailwrite
  • openprovider.email_templates.deleteDelete emaildestructive
  • openprovider.email_templates.listList emailsread
  • openprovider.email_templates.updateUpdate emailwrite
Spam expert domains4
  • openprovider.spam_expert_domains.createCreate domainwrite
  • openprovider.spam_expert_domains.deleteDelete domaindestructive
  • openprovider.spam_expert_domains.getGet domainread
  • openprovider.spam_expert_domains.updateUpdate domainwrite
Email verifications3
  • openprovider.email_verifications.listList domain email verificationsread
  • openprovider.email_verifications.restartRestart email verificationwrite
  • openprovider.email_verifications.startStart email verificationwrite
Mail dkim3
  • openprovider.mail_dkim.createGet Dkim records for the domain.write
  • openprovider.mail_dkim.deleteDelete Dkim records for a domain.destructive
  • openprovider.mail_dkim.getGet Dkim records for the domain.read
Mail domains3
  • openprovider.mail_domains.createAdd domainwrite
  • openprovider.mail_domains.deleteDelete domaindestructive
  • openprovider.mail_domains.listList domainread
Mailboxes3
  • openprovider.mailboxes.increase_quotaIncrease mailbox quotawrite
  • openprovider.mailboxes.renameModify mailbox namewrite
  • openprovider.mailboxes.updateEdit mailboxwrite
Tags3
  • openprovider.tags.createCreate tagwrite
  • openprovider.tags.deleteDelete tagdestructive
  • openprovider.tags.listList tagsread
Contact notification settings2
  • openprovider.contact_notification_settings.getGet contact notification settingread
  • openprovider.contact_notification_settings.updateUpdate contact notification settingwrite
Domain auth codes2
  • openprovider.domain_auth_codes.getGet auth coderead
  • openprovider.domain_auth_codes.resetReset auth codewrite
Licenses2
  • openprovider.licenses.listList licenses with price versionread
  • openprovider.licenses.reset_hwidReset hwidwrite
Mail time limited aliases2
  • openprovider.mail_time_limited_aliases.createAdd time limited aliaswrite
  • openprovider.mail_time_limited_aliases.listGet time limited aliasread
Payments2
  • openprovider.payments.get_suggested_top_up_amountGet suggested top up amountread
  • openprovider.payments.listList paymentsread
Reseller2
  • openprovider.reseller.getGet resellerread
  • openprovider.reseller.updateUpdate resellerwrite
SSL CSRS2
  • openprovider.ssl_csrs.createCreate csrwrite
  • openprovider.ssl_csrs.decodeDecode csrread
SSL products2
  • openprovider.ssl_products.getGet productread
  • openprovider.ssl_products.listList productsread
TLDS2
  • openprovider.tlds.getGet tldread
  • openprovider.tlds.listList tldsread
DNS domain tokens1
  • openprovider.dns_domain_tokens.createCreate tokenwrite
DNS zone records1
  • openprovider.dns_zone_records.listList zone recordsread
Domain additional data1
  • openprovider.domain_additional_data.getGet additional dataread
Domain customer additional data1
  • openprovider.domain_customer_additional_data.getGet dataread
Domain prices1
  • openprovider.domain_prices.getGet priceread
Invoices1
  • openprovider.invoices.listList invoicesread
License items1
  • openprovider.license_items.listList itemsread
Mail statistics1
  • openprovider.mail_statistics.getGet mailcow statisticsread
Reseller settings1
  • openprovider.reseller_settings.getGet settingsread
Reseller statistics1
  • openprovider.reseller_statistics.getGet statisticsread
Spam expert login urls1
  • openprovider.spam_expert_login_urls.createGenerate login urlwrite
SSL approver emails1
  • openprovider.ssl_approver_emails.listList approver emailsread
Transactions1
  • openprovider.transactions.listList transactionsread

Questions

The Openprovider MCP server, answered.

Is there an Openprovider MCP server for Claude?

Yes. actionlake is an MCP gateway: a remote MCP server that gives Claude, or another MCP client, 137 Openprovider actions across domains, SSL orders, mail orders and easydmarc orders, through the same eight tools it uses for every other connector. actionlake is independent; it is not made or endorsed by Openprovider.

What do I need to connect Openprovider?

Username of the Openprovider reseller account (or an API sub-user contact with API access enabled) that actionlake… and Password of that Openprovider account. actionlake exchanges it at /v1beta/auth/login for a bearer token. The free call account { op: "connections.requirements", service: "openprovider" } lists exactly what to paste.

Can an AI agent delete or change things in Openprovider?

Only if its key allows it, and only with an explicit confirmation. 20 Openprovider actions are destructive, including delete customer, delete zone and delete email. 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 Openprovider API limit?

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

What does an Openprovider action cost?

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

The Openprovider REST API v1beta (Swagger 2.0) at api.openprovider.eu. It is built from Openprovider's documentation as read on 23 October 2026. 137 actions in 42 areas, each one in the signed service file (version 1.0.0).

Can I combine Openprovider with my other systems?

Yes. ask joins Openprovider to NetSuite or HubSpot CRM on the same customer and returns the answer rather than every row. Openprovider maps crm.contact, which 192 other connectors also map.

Does actionlake keep my Openprovider 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 Openprovider 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 Openprovider today.

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