APIXX MCP Server
Expose your APIXX workspace to AI assistants over the Model Context Protocol. Once connected, Claude / Cursor / ChatGPT can list flows, debug runs, inspect field mappings, and trigger on-demand syncs — all scoped to your tenant.
https://app.apixx.io/mcpPOST · Auth: Authorization: Bearer mcp_…Quickstart
- Go to Settings → MCP Server and click New token. Copy the
mcp_…secret — it's shown once. - Drop the snippet for your assistant below into its config file (or paste the URL+token into its UI).
- Restart the assistant and ask “list my apixx flows”. You should see live data.
Tip: issue one token per assistant / device so revocation stays surgical, and set an expiry for short-lived experiments.
Authentication
Generate dedicated MCP tokens from Settings → MCP Server. Tokens are prefixed mcp_, shown once at creation, and scoped to the customer of the user that issued them. They are independent from your REST API keys — revoke them separately.
POST https://app.apixx.io/mcp
Authorization: Bearer mcp_••••••••
Accept: application/json, text/event-stream
Content-Type: application/json- Use one token per assistant / device so revocation is surgical.
- Set an expiry for short-lived experiments (30 / 90 / 365 days).
- If a token leaks, revoke it in Settings → MCP Server — calls fail immediately.
Client configuration
Claude Desktop
Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"apixx": {
"url": "https://app.apixx.io/mcp",
"headers": { "Authorization": "Bearer mcp_••••••••" }
}
}
}Cursor
Open Settings → MCP → Add new MCP server, or edit ~/.cursor/mcp.json:
{
"mcpServers": {
"apixx": {
"url": "https://app.apixx.io/mcp",
"headers": { "Authorization": "Bearer mcp_••••••••" }
}
}
}ChatGPT (Custom Connector)
In ChatGPT, open Settings → Connectors → Add custom connector and provide:
- Server URL:
https://app.apixx.io/mcp - Auth: Bearer token → paste your
mcp_…secret
Custom connectors require a paid ChatGPT plan. Once enabled, the model can call any APIXX tool via natural language.
OpenAI Agents SDK
from agents import Agent
from agents.mcp import MCPServerStreamableHttp
server = MCPServerStreamableHttp(
name="apixx",
params={
"url": "https://app.apixx.io/mcp",
"headers": {"Authorization": "Bearer mcp_••••••••"},
},
)
agent = Agent(name="apixx-ops", mcp_servers=[server])Probing manually
curl -X POST https://app.apixx.io/mcp \
-H "Authorization: Bearer mcp_••••••••" \
-H "Accept: application/json, text/event-stream" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'Available tools
All tools are read-only except trigger_sync, and all calls are tenant-scoped.
| list_flows | List every integration flow with status, source/destination, and last run. |
| get_flow | Fetch a single flow by name (schedule, connectors, owner). |
| get_flow_mappings | Inspect the source → destination field mappings for a flow. |
| list_flow_runs | Recent runs for one flow with timing, records processed and error counts. |
| get_flow_error_summary | Top error classes for a flow in a given window. |
| list_runs | Cross-flow run history — useful for ops dashboards. |
| get_run | Details for a specific run id. |
| get_run_errors | Per-record errors for a run, with payload excerpts. |
| list_connectors | Connected systems and current health (auth, quota, last poll). |
| get_system_health | Aggregate health: failing flows, degraded connectors, queue depth. |
| trigger_sync | Kick off an on-demand run of a flow. Returns the new run id. |
Typical queries
These are the kinds of prompts that work well once APIXX is wired into your assistant. Each one maps to one or more tools above — the model picks the right combination.
Daily operations
- “Which flows ran in the last 24 hours and how many records did each process?” →
list_runs - “Show me every flow that's currently failing or degraded.” →
list_flows+get_system_health - “Give me a one-line status summary for each flow.” →
list_flows - “What was the last successful run of the Salesforce → Snowflake accounts flow?” →
list_flow_runs - “Summarize today's system health and call out anything that needs attention.” →
get_system_health
Debugging a failed run
- “The HubSpot contacts flow failed this morning — what went wrong?” →
list_flow_runs+get_run_errors - “Group the errors on run
run_abc123by error type and show a sample payload for each.” →get_run_errors - “What are the top 5 error classes on the Shopify orders flow over the last week?” →
get_flow_error_summary - “Find every run in the last hour with status FAILED and tell me which connector they share.” →
list_runs+list_connectors - “Pull the full detail for run
run_abc123, including timing and record counts.” →get_run
Understanding a flow
- “What source and destination does the NetSuite invoices flow use?” →
get_flow - “Show me the field mappings for the HubSpot → Salesforce contacts flow.” →
get_flow_mappings - “Which fields in the orders flow have filters or validations applied?” →
get_flow_mappings - “Does any flow write to the
customerstable in Snowflake?” →list_flows+get_flow_mappings
Connectors & health
- “List every connector I have configured and its current auth status.” →
list_connectors - “Are any of my connectors close to their rate limit or quota?” →
list_connectors+get_system_health - “What's my overall error rate across all flows this week?” →
get_system_health+list_runs
Taking action
- “Trigger a sync for the Salesforce accounts flow and give me the run id.” →
trigger_sync - “Re-run every flow that failed in the last hour.” →
list_runs+trigger_sync - “Kick off the nightly NetSuite invoice sync now and watch it until it finishes.” →
trigger_sync+get_run
Reporting & standups
- “Write a Slack-ready summary of integration health for this morning's standup.”
- “Draft a postmortem for yesterday's failed Shopify sync using the run + error data.”
- “How many records did we move across all flows yesterday, broken down by destination?”
Scopes & safety
- Every tool resolves the caller's
customer_idfrom the bearer token. There is no cross-tenant access. trigger_syncis the only write operation; everything else is read-only.- The server respects the same rate limits and quota caps as your REST API key.
- Token usage is tracked — see
last_used_atin Settings → MCP Server.
Errors
MCP errors follow JSON-RPC. Common cases:
| 401 | Missing, malformed, expired, or revoked token. Generate a new one in Settings. |
| 405 | Wrong HTTP method. Only POST is supported; GET / DELETE return 405. |
| 406 | Missing Accept header. Always send `Accept: application/json, text/event-stream`. |
| -32602 | Invalid tool params — see the per-tool zod schema returned by tools/list. |
| 429 | Rate limited. Back off and retry after the indicated delay. |
See also
- REST API reference — same data, programmatic access.
- Webhooks — push events instead of polling.
- Settings → MCP Server — create & manage tokens.
