Skip to content

Connectors · MSP & PSA

Pax8 MCP server for AI agents.

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

Set up

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

    OAuth 2.0, client credentials. Paste the app's client id and secret; actionlake fetches and renews the token, and nobody has to sign in. actionlake stores what you paste write-only, sealed under your tenant's key.

    • client_idPax8 client id
    • client_secretPax8 client secret
    account { op: "connections.requirements", service: "pax8" }
    # 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: "pax8.quotes.list" }# list pax8 quotes · read · 1 upstream callcheck { action: "pax8.quotes.create", input: { … } }# free: inputs, permissions, cost and confirmations, nothing sent

Pax8 at a glance

Sign-in
OAuth 2.0, client credentials. Paste the app's client id and secret; actionlake fetches and renews the token, and nobody has to sign in.
You provide
client_idclient_secret
Limits we pace to
1,000 calls a minute, per connection
API covered
Pax8 API 1api.pax8.com/v1
Built from
Pax8's documentation, read 15 September 2026devx.pax8.comdevx.pax8.comdevx.pax8.com
Service file
Version 2.0.0, signed (Ed25519)
Cached reads
54 of 54 reads, for up to an hour; a write clears what it affects
Ready-made plans
8 in the store
Shared entities
8, so ask can line Pax8 up with your other systems
Data
Processed and stored in Sydney, Australia. No US region yet

Capabilities

What an AI agent can do in Pax8.

99 actions in 1 area. Every one carries its effect, so a key can allow the reads and hold the rest.

  • 54readlook, never change
  • 34writecreate and update
  • 11destructivewait for a confirmation
  1. Distribution

    99

    54 read · 34 write · 11 destructive

    List Pax8 quotes · List Pax8 orders · List Pax8 companies · List Pax8 subscriptions

Top actions

The Pax8 API, shaped for agents.

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

ActionWhat it doesEffectSame name in
pax8.quotes.listList Pax8 quotesList quotes with optional search, status and intent filters.readfinance.quote.list52 connectors
pax8.orders.listList Pax8 ordersList orders placed through Pax8, optionally for one company.readfinance.purchase_order.list45 connectors
pax8.companies.listList Pax8 companiesList the client companies under this Pax8 partner account, filtered by status or location.readcrm.company.list162 connectors
pax8.subscriptions.listList Pax8 subscriptionsList subscriptions across clients, filtered by company, product, status or billing term.readfinance.subscription.list37 connectors
pax8.products.listList Pax8 productsList the products in the Pax8 marketplace, optionally searched by name, vendor or SKU.readcommerce.product.list112 connectors
pax8.company_contacts.listList a company's contactsList the contacts on one Pax8 client company, newest first.readcrm.contact.list177 connectors
pax8.quotes.createCreate a Pax8 quoteStart a new quote for a client company.writefinance.quote.create52 connectors
pax8.orders.createPlace a Pax8 orderPlace an order for one or more products against a client company.writefinance.purchase_order.create43 connectors
pax8.companies.createCreate a Pax8 companyCreate a client company, optionally with its first contacts.writecrm.company.create142 connectors
pax8.company_contacts.createCreate a company contactAdd a contact to a Pax8 client company.writecrm.contact.create161 connectors
pax8.product_dependencies.listGet a product's dependenciesList the products and commitments a product depends on.readcommerce.product.list112 connectors
pax8.quotes.deleteDelete a Pax8 quoteDelete a quote by id.destructivefinance.quote.delete36 connectors

Try it

Prompts to paste into Claude.

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

  1. Readread

    Which Pax8 quotes went out this month and are still waiting for an answer?

    callspax8.quotes.list

  2. Planwrite

    Build a quote, add line items and publish it in Pax8. Ask me before anything is sent or changed.

    callspax8.quote_preferences.getpax8.quotes.createpax8.quote_sections.createpax8.quote_line_items.createpax8.quote_access_list.create+2 more

  3. Planwrite

    Place an order and wait for provisioning to finish in Pax8. Ask me before anything is sent or changed.

    callspax8.companies.getpax8.product_pricing.listpax8.orders.createpax8.orders.getpax8.subscriptions.list

  4. Writewrite

    Create a Pax8 quote in Pax8. Show me exactly what you will send before you save it.

    callspax8.quotes.create

  5. Across systemsread

    Which Pax8 companies have invoices in NetSuite, and how many each?

    callspax8.companies.listnetsuite.views.invoices

Across your systems

Pax8, joined to the rest of your business.

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

  • Which Pax8 companies have invoices in NetSuite, and how many each?

    pax8.companies.list + netsuite.views.invoices, on crm.company · NetSuite

  • Which Pax8 companies have tickets in HubSpot CRM, and how many each?

    pax8.companies.list + hubspot_crm.tickets.list, on crm.company · HubSpot CRM

Also mapped by other connectorscrm.company 227crm.contact 192commerce.product 109crm.location 49finance.quote 45finance.purchase_order 35finance.subscription 24platform.invoice 12
ask
ask {  intent: "which Pax8 companies have invoices in NetSuite, and how many each",  steps: [    { action: "pax8.companies.list", as: "co", input: {}, limit: 100, max_pages: 5 },    { action: "netsuite.views.invoices", as: "inv", input: {}, limit: 100, max_pages: 5 },    { join: {        left: "co",        right: "inv",        on: "crm.company",        group_by: "co.name",        select: ["co.name", "count(inv.id) as invoices"]    } }  ]}
Example. Run it through check first: it validates the steps and prices them, and it is free.

The plan store

Ready-made plans for Pax8.

8 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 this month's invoices and pull the line detail

    Use it when Finance wants the month's Pax8 invoices with their line detail before approving the bill run.

    Effect
    read
    Steps
    3 · loops
    Needs
    invoice date from and invoice date to
    Install
    pax8-monthly-invoice-review
  2. Triage a failing webhook and retry its failed deliveries

    Use it when A Pax8 webhook is reporting delivery errors and the failed events need inspecting and replaying.

    Effect
    write
    Steps
    5 · loops
    Needs
    webhook id
    Install
    pax8-failing-webhook-triage
  3. Onboard a new client company with its primary contact

    Use it when A new managed-services client has signed and needs a Pax8 company record plus a primary billing contact.

    A person decidesAdd first name last name (email) as the primary billing contact on name.

    Effect
    write
    Steps
    5
    Needs
    name, street, city, state or province, postal code, country, phone, website, first name, last name and email
    Install
    pax8-onboard-new-client-company
  4. Sweep unfulfilled provision requests and start a new attempt

    Use it when Provisioning is backed up and stalled Pax8 provision requests need inspecting and re-attempting.

    Effect
    write
    Steps
    5 · loops
    Install
    pax8-unfulfilled-provision-requests-sweep
  5. Place an order and wait for provisioning to finish

    Use it when A client has approved a new product and you need to order it in Pax8 and confirm it provisioned.

    A person decidesPlace a Pax8 order for name covering number of line items line item(s) of product product id.

    Effect
    write
    Steps
    6
    Needs
    company id, product id and line items
    Install
    pax8-place-order-and-track-provisioning
  6. Build a quote, add line items and publish it

    Use it when Sales needs a Pax8 quote assembled from known line items and published to a client after review.

    A person decidesPublish quote id to client client id with number of line items line item(s), expiring expires on.

    Effect
    write
    Steps
    8
    Needs
    client id, line items and expires on
    Install
    pax8-quote-build-and-publish
  7. Cancel a subscription after a human signs off

    Use it when A client has asked to end a Pax8 subscription and the cancellation needs a signed-off, audited path.

    A person decidesCancel subscription subscription id (productName, qty quantity) effective cancel date, 'immediately'.

    Effect
    destructive
    Steps
    5
    Needs
    subscription id
    Install
    pax8-cancel-subscription-with-approval
  8. Remove a departed contact from a client company

    Use it when Someone has left a client and their contact record must be removed from the Pax8 company.

    A person decidesDelete contact firstName lastName (email) from name, leaving contact count contact(s) minus one.

    Effect
    destructive
    Steps
    7
    Needs
    company id and contact id
    Install
    pax8-stale-contact-cleanup
install a plan
account { op: "plans.install", slug: "pax8-monthly-invoice-review" }
# then ask for it by name; a schedule can run it on a timetable

Governance for Pax8

Destructive actions wait for a yes.

11 Pax8 actions are destructive. These are all of them:

  • Delete a Pax8 quotepax8.quotes.delete
  • Delete a company contactpax8.company_contacts.delete
  • Delete a Pax8 webhookpax8.webhooks.delete
  • Cancel a Pax8 subscriptionpax8.subscriptions.cancel
  • Delete a Pax8 quote library attachmentpax8.quote_library_attachments.delete
  • Remove a topic from a Pax8 webhookpax8.webhook_topics.delete
  • Delete a Pax8 quote line itempax8.quote_line_items.delete
  • Bulk delete Pax8 quote line itemspax8.quote_line_items.bulk_delete
  • Revoke access to a Pax8 quotepax8.quote_access_list.delete
  • Delete a Pax8 quote attachmentpax8.quote_attachments.delete
  • Remove a Pax8 quote preference attachmentpax8.quote_preference_attachments.delete

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.

dopax8.quotes.deleteconfirm_policy: human

Delete a Pax8 quote?

intent: the user asked me to delete a Pax8 quote

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

Cost

What Pax8 costs on actionlake.

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

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

Distribution99
  • pax8.companies.createCreate a Pax8 companywrite
  • pax8.companies.getGet a Pax8 companyread
  • pax8.companies.listList Pax8 companiesread
  • pax8.companies.updateUpdate a Pax8 companywrite
  • pax8.company_contacts.createCreate a company contactwrite
  • pax8.company_contacts.deleteDelete a company contactdestructive
  • pax8.company_contacts.getGet a company contactread
  • pax8.company_contacts.listList a company's contactsread
  • pax8.company_contacts.updateUpdate a company contactwrite
  • pax8.finance_report_invoices.queryQuery the Pax8 invoice line-item reportread
  • pax8.invoice_draft_items.listList Pax8 draft invoice itemsread
  • pax8.invoice_items.listList a Pax8 invoice's line itemsread
  • pax8.invoices.getGet a Pax8 invoiceread
  • pax8.invoices.listList Pax8 invoicesread
  • pax8.orders.createPlace a Pax8 orderwrite
  • pax8.orders.getGet a Pax8 orderread
  • pax8.orders.listList Pax8 ordersread
  • pax8.product_dependencies.listGet a product's dependenciesread
  • pax8.product_pricing.listGet a product's pricingread
  • pax8.product_provision_details.listGet a product's provisioning detailsread
  • pax8.products.getGet a Pax8 productread
  • pax8.products.listList Pax8 productsread
  • pax8.provision_attempts.createCreate a Pax8 provision attemptwrite
  • pax8.provision_attempts.getGet a Pax8 provision attemptread
  • pax8.provision_attempts.get_latestGet a Pax8 provision request's latest attemptread
  • pax8.provision_attempts.listList a Pax8 provision request's attemptsread
  • pax8.provision_details.getGet a Pax8 provision detailread
  • pax8.provision_details.get_latestGet a Pax8 provision request's latest detailread
  • pax8.provision_details.listList a Pax8 provision request's detailsread
  • pax8.provision_requests.getGet a Pax8 provision requestread
  • pax8.provision_requests.listList Pax8 provision requestsread
  • pax8.provision_requests.list_unfulfilledList unfulfilled Pax8 provision requestsread
  • pax8.provision_results.createReport a Pax8 provision resultwrite
  • pax8.provision_results.getGet a Pax8 provision resultread
  • pax8.provision_results.get_latestGet a Pax8 provision request's latest resultread
  • pax8.provision_results.listList a Pax8 provision request's resultsread
  • pax8.provision_simulations.create_order_eventSimulate a Pax8 order eventwrite
  • pax8.provisioner_webhooks.createCreate a Pax8 provisioner webhookwrite
  • pax8.provisioner_webhooks.getGet a Pax8 provisioner webhookread
  • pax8.provisioner_webhooks.get_latestGet a Pax8 provisioner's latest webhookread
  • pax8.provisioner_webhooks.listList a Pax8 provisioner's webhooksread
  • pax8.provisioners.getGet a Pax8 provisionerread
  • pax8.provisioners.listList Pax8 provisionersread
  • pax8.quote_access_list.createShare a Pax8 quotewrite
  • pax8.quote_access_list.deleteRevoke access to a Pax8 quotedestructive
  • pax8.quote_access_list.listList a Pax8 quote's access listread
  • pax8.quote_attachments.copy_from_libraryCopy a library attachment onto a Pax8 quotewrite
  • pax8.quote_attachments.deleteDelete a Pax8 quote attachmentdestructive
  • pax8.quote_attachments.download_allDownload all a Pax8 quote's attachmentsread
  • pax8.quote_attachments.getGet a Pax8 quote attachmentread
  • pax8.quote_attachments.updateUpdate a Pax8 quote's attachmentswrite
  • pax8.quote_library_attachments.add_from_quoteAdd a quote attachment to the Pax8 librarywrite
  • pax8.quote_library_attachments.deleteDelete a Pax8 quote library attachmentdestructive
  • pax8.quote_library_attachments.getGet a Pax8 quote library attachmentread
  • pax8.quote_library_attachments.listList Pax8 quote library attachmentsread
  • pax8.quote_library_attachments.updateUpdate Pax8 quote library attachmentswrite
  • pax8.quote_line_items.bulk_deleteBulk delete Pax8 quote line itemsdestructive
  • pax8.quote_line_items.createAdd line items to a Pax8 quotewrite
  • pax8.quote_line_items.deleteDelete a Pax8 quote line itemdestructive
  • pax8.quote_line_items.updateUpdate a Pax8 quote's line itemswrite
  • pax8.quote_preference_attachments.createAttach library documents to Pax8 quote preferenceswrite
  • pax8.quote_preference_attachments.deleteRemove a Pax8 quote preference attachmentdestructive
  • pax8.quote_preferences.getGet Pax8 quote preferencesread
  • pax8.quote_preferences.updateUpdate Pax8 quote preferenceswrite
  • pax8.quote_sections.createCreate a Pax8 quote sectionwrite
  • pax8.quote_sections.listList a Pax8 quote's sectionsread
  • pax8.quote_sections.updateUpdate a Pax8 quote's sectionswrite
  • pax8.quotes.createCreate a Pax8 quotewrite
  • pax8.quotes.deleteDelete a Pax8 quotedestructive
  • pax8.quotes.getGet a Pax8 quoteread
  • pax8.quotes.listList Pax8 quotesread
  • pax8.quotes.take_ownershipTake ownership of a Pax8 quotewrite
  • pax8.quotes.updateUpdate a Pax8 quotewrite
  • pax8.subscription_usage_summaries.listList a subscription's usage summariesread
  • pax8.subscriptions.cancelCancel a Pax8 subscriptiondestructive
  • pax8.subscriptions.getGet a Pax8 subscriptionread
  • pax8.subscriptions.listList Pax8 subscriptionsread
  • pax8.subscriptions.updateUpdate a Pax8 subscriptionwrite
  • pax8.subscriptions_history.listGet a subscription's historyread
  • pax8.usage.aggregate_lines_saveSave Pax8 vendor usage lines with an aggregate quantitywrite
  • pax8.usage_lines.listList Pax8 vendor usage linesread
  • pax8.usage_lines.saveSave Pax8 vendor usage lineswrite
  • pax8.usage_summaries.getGet a Pax8 usage summaryread
  • pax8.usage_summary_lines.listList a usage summary's linesread
  • pax8.webhook_delivery.retryRetry a Pax8 webhook deliverywrite
  • pax8.webhook_logs.getGet a Pax8 webhook delivery logread
  • pax8.webhook_logs.listList a Pax8 webhook's delivery logsread
  • pax8.webhook_topic_definitions.listList Pax8 webhook topic definitionsread
  • pax8.webhook_topics.createAdd a topic to a Pax8 webhookwrite
  • pax8.webhook_topics.deleteRemove a topic from a Pax8 webhookdestructive
  • pax8.webhook_topics.replaceReplace a Pax8 webhook's topicswrite
  • pax8.webhook_topics.testTest a Pax8 webhook topicwrite
  • pax8.webhook_topics.update_configurationUpdate a Pax8 webhook topic's filterswrite
  • pax8.webhooks.createCreate a Pax8 webhookwrite
  • pax8.webhooks.deleteDelete a Pax8 webhookdestructive
  • pax8.webhooks.getGet a Pax8 webhookread
  • pax8.webhooks.listList Pax8 webhooksread
  • pax8.webhooks.update_configurationUpdate a Pax8 webhook's configurationwrite
  • pax8.webhooks.update_statusEnable or disable a Pax8 webhookwrite

Questions

The Pax8 MCP server, answered.

Is there a Pax8 MCP server for Claude?

Yes. actionlake is an MCP gateway: a remote MCP server that gives Claude, or another MCP client, 99 Pax8 actions, through the same eight tools it uses for every other connector. actionlake is independent; it is not made or endorsed by Pax8.

What do I need to connect Pax8?

Pax8 client id and Pax8 client secret. The free call account { op: "connections.requirements", service: "pax8" } lists exactly what to paste.

Can an AI agent delete or change things in Pax8?

Only if its key allows it, and only with an explicit confirmation. 11 Pax8 actions are destructive, including delete a Pax8 quote, delete a company contact and delete a Pax8 webhook. 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 Pax8 API limit?

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

What does a Pax8 action cost?

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

The Pax8 API 1 at api.pax8.com/v1. It is built from Pax8's documentation as read on 15 September 2026. 99 actions in 1 area, each one in the signed service file (version 2.0.0).

Can I combine Pax8 with my other systems?

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

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

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