Back to docs
Integrations

The agent calls your tools.

Every integration is wired per-account, never via the model. The agent picks which tool to call based on your system prompt and the conversation; we resolve credentials at call time from your account's integration config.

How credentials work

You connect an integration once in the dashboard (OAuth or API key, depending on the provider). Credentials are stored encrypted and tied to your account, not exposed to the model and not visible to anyone calling the agent.

When the agent invokes a tool — say, send_sms — the tool runs server-side, looks up your account's SMS sender via integration_resolver.get_integration_for_agent(agent_id), and uses those credentials. The model only ever sees “tool succeeded” or “tool returned X”.

The LLM cannot fabricate credentials. Even if a malicious caller got the model to say “send SMS from +1 555 1234”, the tool ignores the LLM-supplied sender and uses what's on file.

Payments

Stripe

Live

Charge cards, issue refunds, create + send invoices, manage subscriptions — all called by the agent mid-conversation when your prompt asks it to.

process_paymentrefund_paymentcreate_invoicesend_invoicecreate_subscriptioncancel_subscription

CRM

Odoo

Live

Look up contacts, search and create leads, update opportunities. Each tool resolves to your Odoo URL and credentials at call time — the agent only sees the tool name, never the API key.

search_contactscreate_contactsearch_leadscreate_leadupdate_lead_stagelog_activity

HubSpot

Beta

Same surface as Odoo — search contacts, create leads, update properties — wired against the HubSpot REST API. Currently behind a flag while we tune the field-mapping UI.

search_contactscreate_contactcreate_deal

Scheduling

Google Calendar

Live

Check availability, book appointments, reschedule, cancel. Connect via OAuth from the dashboard; the agent reads the connected calendar without seeing the token.

check_availabilitybook_appointmentreschedule_appointmentcancel_appointment

Telephony / SMS

Twilio

Live

Bring your existing Twilio account for phone numbers and SMS. Agent uses your provisioned numbers as the SMS sender; we never proxy through our own number unless you ask.

inbound_callsoutbound_callssend_smsget_sms_status

Telnyx

Live

Default carrier for managed numbers. Cheaper per-minute and supports L16 16kHz media streaming end-to-end, which is why latency on managed numbers is lower than BYOP Twilio.

inbound_callsoutbound_callssend_smsmanaged_provisioning

Notifications

Slack

Live

Post to a channel or DM a person from the agent. Useful for a "tell sales when a hot lead calls" style of automation, or pinging on-call when the agent transfers a difficult call.

send_slack_messagesend_slack_dm

Microsoft Teams

Live

Post messages via incoming-webhook URLs. Same pattern as Slack — agent fires the notification, your team sees it instantly.

send_teams_message

Push notifications

Live

Send FCM / APNS pushes to a device token. Common pattern: agent texts a confirmation and pushes the same content to your staff app.

send_push_notification

Messaging

WhatsApp

Live

Send WhatsApp messages from your registered Business channel (Meta Cloud API or Twilio WhatsApp). Templates supported for outbound sessions.

send_whatsappsend_whatsapp_template

Communication

Email

Live

Send transactional email from your verified sender domain. Custom fields on the agent map directly to email templates so the LLM never composes the body from scratch when it doesn’t need to.

send_emailsend_template_email

Webhooks

Custom REST

Live

Define an HTTP tool with URL, method, headers, body template, and parameter schema. The agent calls it like any other tool. Use this when you have an internal API the agent needs to hit — booking system, inventory check, ERP — and we don’t have a first-party integration yet.

custom_webhook

Don’t see what you need?

If your stack isn't in the list, you have two options:

  • Custom REST tool. Define one in the dashboard with a URL, headers, and a parameter schema. The agent calls it like a first-party integration.
  • Ask the founder. If we're hearing about a missing integration repeatedly we usually build it. Get in touch.