Connect two business tools
Stand up an **Integration Map Agent**. Name **system A → event**, **system B → action**, and **Auxot in the middle**. Use workflows ([Run a workflow](/tutorials/run-a-workflow)), intakes ([Trigger a workflow with an intake webhook](/tutorials/trigger-a-workflow-with-an-intake-webhook)), and MCP tools ([Add an MCP server](/tutorials/add-an-mcp-server)), plus explicit **human gates** when writes touch money or customer records. Integrations should read like architecture, not folklore.
Plus: three Admin-Agent passes: draft a **one-page integration map** (five sections, no fake vendors), encode **idempotency + replay** rules from intake payload alone, and decide **MCP vs webhook-only** when only one side exposes HTTP cleanly.
| Audience | Admins · Developers |
|---|---|
| Time | ~15 min |
| Prerequisites | Workflow basics ([Run a workflow](/tutorials/run-a-workflow)). Tool discipline ([Define a tool policy](/tutorials/define-a-tool-policy), [Manage your Credentials](/tutorials/manage-your-credentials)). HTTP intake comfort ([Trigger a workflow with an intake webhook](/tutorials/trigger-a-workflow-with-an-intake-webhook)), **or** willingness to paste events manually until wired. Helpful: MCP setup ([Add an MCP server](/tutorials/add-an-mcp-server)) when agents must reach the second tool live. |
| You'll end up with | One **Integration map** in markdown: sources, transforms, side effects, owners, and rollback plan. Plus the smallest viable chain **you** actually run once. Manual paste acceptable; automation earns trust later ([Harden your intake webhooks](/tutorials/harden-your-intake-webhooks)). |
When a tutorial shows italic text in quotation marks, it usually mirrors a label or helper string inside Auxot. Product copy changes between releases — if something reads differently in your workspace, trust what you see on screen.
Callouts with a Worth knowing gold accent are meant as must-read context before you move on. Blockquotes that open with Tip are lighter, optional depth.
Why this matters
Most integrations end up as brittle scripts nobody owns: secrets stored in too many places, silent duplicate writes, and the same fact stored differently in two databases.
Auxot gives you human-visible integration: normalize messy payloads (Trigger a workflow with an intake webhook), let agents draft summaries or field maps (Create an agent from scratch), attach MCP-backed tools when the second business tool expects structured actions (Add an MCP server), and pause for humans when stakes demand it (Require human approval before risky actions).
Nothing crawls both tenants unattended. You prompt agents or you wire POSTs because you configured them. Chat bridges (Connect Slack to your agents) still count as integration when humans paste payloads until HTTP lands.
Integration is explicit routing. Not loose “the data sort of syncs” wishes.
Quick start
- Name systems honestly. CRM vs ticketing vs billing; pick one system of record per fact (Add your first context file glossary helps names stay stable).
- Pick trigger reality. Webhook intake today (Trigger a workflow with an intake webhook) vs tomorrow vs paste-only pilot. Write PASTE_OK path first when vendors stall.
- Create the Integration Map Agent. Instructions output fixed headings, refuse invented OAuth scopes, demand UNKNOWN when docs missing.
- Sketch workflow spine. Ingest → normalize JSON → agent draft → optional MCP → approval (Require human approval before risky actions) → archive receipt (View your audit logs).
- Dry-run once. Paste synthetic payload; verify duplicate POST story (Harden your intake webhooks); fix before exposing URL.
Done? Integration map checked into wiki or repo beside Runbook link. Teammates reproduce the dry-run without back-and-forth Slack questions.
The agent can do that?
1. Five-section integration map
Chat → Admin Agent:
Systems named A=[…] B=[…]. Events we care about: [bullets]. Constraints: [paste]. Produce Integration map with sections Purpose / Trigger / Transform / Side effects / Failure. <=35 lines, markdown. UNKNOWN gaps explicit. No vendor APIs invented.
Why it’s non-obvious: Diagrams hide failure modes. Forcing the failure section early prevents demo-only integrations after you paste constraints.
2. Idempotency brief
Sample JSON keys from vendor docs paste: […]. Describe duplicate delivery scenario: how workflow recognizes the same logical event twice. Bullets. Include deactivate plan. <=12 lines.
Why it’s non-obvious: Intakes retry; naive inserts duplicate tickets (Harden your intake webhooks).
3. MCP vs webhook-only tradeoff
Tool surfaces available: MCP catalog yes/no. Inbound HTTP only yes/no. Recommend pattern: **MCP_AGENT_STEP** vs **OUTBOUND_WEBHOOK_STEP**. Cite assumptions. Plain bullets.
Why it’s non-obvious: MCP fits agent-shaped actions (the agent calls a tool with structured arguments). Plain HTTP fits simple event delivery (one system POSTs to another). Don’t mix the two patterns in one wiring diagram (Add an MCP server).
Go deeper
CI triggers
Ship GitHub-side runners posting intakes (Trigger a workflow from GitHub Actions). Same integration contract; correlation ids baked in.
Keys
Automation keys belong to teams, not departing humans (Create a shared Team API Key, Pick personal or team API keys for real work).
Ops tracing
When Jobs fail mid-chain: trace jobs end to end (Trace a failing job end to end). Integration maps speed triage.
Announce changes
Instruction edits change integration behavior. Ship notes (Update your agents without breaking the team); ops needs to understand the diffs.
Walkthrough
Step 1: Pick boring pilot first
Read-only digest before write API; prove normalization; graduate slowly.
Step 2: Paste worst real payload
Redact customer identifiers. Keep the structural quirks. Normalize fields honestly.
Step 3: Wire MCP minimally
One tool, one credential; expand later (Define a tool policy, Manage your Credentials).
Step 4: Human gate dry-run
Reject once; confirm loop returns cleaner draft; approve once; log Job ids (View your audit logs).
Step 5: Document rollback
Disable intake token; pause workflow; announce channel (Connect Slack to your agents); keep the tone neutral; link Run a post-mortem that leads to action when production integrations snap.
What’s next
- → Trigger a workflow with an intake webhook. HTTP front door;
work_iddiscipline; polling receipts. - → Audit and clean up your agents. Integration wiring multiplies agents and credentials; consolidate before the diagrams are too old to remember why each piece exists.
- → Add an MCP server. When agents must call the second tool with structured actions; policies attach once; many agents inherit.
- → Harden your intake webhooks. Treat ingress like production: secrets, duplicates, callbacks.
- → Require human approval before risky actions. Integration that writes customer records or spends money. Pause beats regret.
- → Trigger a workflow from GitHub Actions. CI-shaped triggers; same intake contract; correlation baked in.
Reference
- Manual: Intake Webhooks, MCP docs linked from Settings → Tools
- Pages in Auxot: Workflows, Settings → Intakes, Settings → Tools, Chat, and Audit Logs → Jobs
- See also: Fix when requests go to the wrong agent, Audit and clean up your agents, Generate your first API key, Run a workflow, Connect Slack to your agents, Trace a failing job end to end