Developers · the AXL platform API

The same API the admin panel calls, with an MCP endpoint in front of it.

Two doors onto the objects that run an AXL account: contacts and deals, courses and lessons, products, orders and payments, sites and pages, email broadcasts, webinars, automations, files. Reach them with an API key carrying exactly the rights you grant it, or a browser sign-in that hands your agent an ordinary admin token. Same operations, same permission checks, same account boundary as your session.

claude mcp add axl --transport http https://app.axl.tech/mcp

Then sign in in your browser. No key to paste, no secret in a file, no developer plan to buy first.

AXL agent setup panel with the endpoint, Copy control, six client tabs, Claude selected and browser sign-in.

Choose Claude, copy the connection details, and finish setup in your client.

The reference card

Everything you need before you write a line.

Read against the running platform and the production configuration.
What Value
MCP endpoint https://app.axl.tech/mcp: Streamable HTTP, JSON-RPC over POST only, stateless. The admin shows it under Settings → MCP
REST base URL https://app.axl.tech/api/v1/: JSON over HTTPS
Agent auth OAuth 2.1 with dynamic client registration and PKCE; S256 and state are required, not optional
Machine auth An API key in an Authorization header; the value you copy already carries Bearer. Created in Settings → API Keys, rights set per key
Surface ~1,100 operations across 60+ modules, using the same calls as the admin panel, not a subset that lags behind it
Conventions String ids, never integers: 22-character short GUIDs, 36 in a few tables. UTC in every date field. Soft delete by default: a deleted record is flagged, not erased.
Response envelope A success flag, a body, and an errors array carrying code, type, message and often the field
Limits Concurrency, not requests per second: 429 with Retry-After: 1 plus X-Concurrency-Limit and X-Concurrency-Remaining, which are authoritative; read them rather than hard-coding. Sequential calls are unlimited, browser sessions are never throttled, and it fails open
File links Downloads are pre-signed and expire after six hours; generate them when needed, do not store them
Response cap on MCP Roughly 200,000 characters, then truncation with a hint to narrow the fields or paginate. REST is not capped
Locked account A negative balance answers everything but billing reads with 403 lockedSchoolAccessDenied, carrying a billing link and a do-not-retry hint
MCP tool reference
The internal calls an MCP client uses to find and complete work.
Tool Purpose
capability_mapMaps the account surface and the rules between modules.
list_recipes · search_docsFinds a proven workflow and the product guidance behind it.
get_operation_schema · get_fields_schemaReturns parameters, request bodies, responses and selectable fields.
get_extended_filter_schema · get_scenario_node_schema · get_quiz_item_schema · check_scenario_node_payloadExplains and validates shapes that a plain operation schema cannot express.
invoke_operationRuns one operation. This is the only call in the set that writes anything.

Looking for outcomes rather than constants? What an agent actually finishes →

Your first hour

Get a credential, read, then write.

  1. 01 Get a credential A key you scope, or a browser sign-in. Settings → API Keys
  2. 02 Read before you write Count the rows a filter matches first. The count operation
  3. 03 Pace on the headers Not on a timer of your own. X-Concurrency-Remaining
  4. 04 Then write Publishing and sending stay separate, deliberate calls.
Where to go next

Four pages, one surface.

  • The MCP endpoint

    Add the server, sign in in the browser, approve the named client. Your agent then gets a small fixed tool set, of which exactly one call writes anything.

    Transport, the OAuth 2.1 flow and every client →
  • Credentials

    OAuth hands an agent an ordinary admin token with the approving admin's rights. A key is narrower: one that triggers an automation cannot read your contacts.

    Creating and scoping API keys →
  • The REST API

    An unsupported filter condition is ignored silently: 200 and the wrong rows, never an error. Cross-check every filter against the count operation.

    Fields, filters, writes and files →
  • Webhooks, both directions

    Not a subscriptions API. Outbound, a scenario node calls your endpoint and branches on the answer; inbound, one POST starts any active automation.

    The scenario-run endpoint, with its body →

Each client has a setup page under /developers/mcp: Claude, ChatGPT and Codex, Cursor, Windsurf, VS Code, Cline. Anything else that speaks MCP goes through mcp-remote.

Guardrails

What an agent can never do, and the one thing that is only a speed bump.

Pointing an agent at a live business is a permissions problem before it is an AI problem, so the limits sit in the server rather than in a prompt. 21 sensitive operations (credentials, rights and roles, billing writes) are dropped from the tool catalog at startup: no listing, no search hit, no schema, and the execute call treats them as operations that do not exist. Eight more are absent for reasons that are not safety. The set is pinned by a test, and a second refuses to let a blocked operation keep a recipe pointing at it. That is the honest version of “we have guardrails”: not a policy document, a failing build.

The blocked table, the refusals and the pipeline →
The part other pages would leave out

confirm=true is a speed bump a caller sets on itself. It is not a human-approval guarantee.

Nothing in the transport verifies that a human was asked, or answered, or exists. We know it can be self-granted because it was: in a live test an agent was warned about the blast radius of a large delete, and set the flag itself in the same reply.

So never read a sentence on this site as “human approval is enforced”. What is enforced is that the dangerous shape does not execute silently on the first attempt. If you need a wall rather than a speed bump, use permissions: a right the token does not carry cannot be talked around.

The limits we have not solved

  • Publish and send separation is a convention plus a default, not a lock.
  • The MCP scope is coarse: one scope, carrying the approving admin's rights. Narrower credentials are keys, not scopes.
  • Agent writes appear in the ordinary history timeline. No agent-only log, and only operations that already write history events appear there.
  • The blocked set is platform-wide, not per-account. Your own policy belongs in rights.

Evaluating for a regulated workflow? The posture questions outside the agent surface are on /security.

AXL refuses an unfiltered bulk delete before the API call and asks the user to narrow or confirm the request.

Risky requests stop before the API call and return a safer next step.

Agent connectors stopped being rare; Kajabi, Thinkific, GoHighLevel, ClickFunnels and Circle each ship one, and we are not going to pretend otherwise. What we could not find is a competitor that publishes which operations it removes from its AI surface. That is a claim about our search, not about their products.

Read from the vendors' own pages: kajabi.com/product/mcp, support.myclickfunnels.com, api.circle.so/mcp, marketplace.gohighlevel.com/docs/other/mcp and support.thinkific.com. Thinkific MCP is Plus only, read-only and still rolling out, checked 21 August 2026. The dated scoreboard across nine platforms →

Questions

What builders ask before they wire anything up.

The API, webhooks and bring-your-own-agent connection are part of AXL. Plans start at $49 per month with included usage; your agent's own model usage is billed by the provider you run it with. Work out your number →

Published and open at app.axl.tech/api/public, with the localized OpenAPI document downloadable from the same page: contacts, courses, products, orders, payments, certificates, libraries, scenarios, homework verification and the partnership endpoints. The rest are documented through the schema tools on the MCP surface and the knowledge base.

Through the ordinary history timeline, which records agent writes exactly as it records yours, and the deep link each successful write returns. The limit, precisely: only operations that already write history events show up there, and there is no agent-only log.

Point it at a trial account and try to break it.

One line to connect, a browser sign-in, and an agent with your rights and no more. Or skip the agent: a key scoped to one job pushes contacts and orders in, starts automations, and reads the analytics back out.

Start free