Give your agents access to real money.
One endpoint takes a message, routes it to the right agent, checks your policies, and executes: transfers, bills, FX, savings, shopping. A sandbox key from day one, webhooks you can replay, and rails you can run on or bring your own.
API-first by design
Send a message and a set of tools; get back an intent, extracted parameters, and whether confirmation is required. The hard parts, grounding, tool-calling, and guardrails, are handled for you.
Point tools at your existing endpoints so conversational banking runs on your rails, your rates, and your compliance.
One call, a structured financial action.
A message in, a validated intent out, with confirmation controls built in.
const res = await twelve.chat({
message: "Send ₦50,000 to Sarah",
customerId: userId,
}){
"intent": "transfer",
"message": "₦50,000 to SARAH OKAFOR. Confirm to send.",
"pendingConfirmation": {
"tool": "transfer_funds",
"arguments": { "amount": 50000 }
},
"continuation": "enc.a91x"
}Built for engineering teams
Composable tools
Declare tools and bind them to your APIs. Test each endpoint live before it goes near a customer.
Sandbox
Run the model against stubbed tool responses so you can build the whole flow first.
Structured output
Every turn returns a clean, typed action you can act on with confidence.
Guardrails in the loop
Confirmations, limits, and policy are enforced by the platform, not your prompt.
Infrastructure, not a demo.
Everything here runs on the same platform we operate for real customers, grounded answers, gated writes, and a full audit trail.
- Composable tools. Declare tools and bind them to your APIs. Test each endpoint live before it goes near a customer.
- Sandbox. Run the model against stubbed tool responses so you can build the whole flow first.
- Structured output. Every turn returns a clean, typed action you can act on with confidence.
- Guardrails in the loop. Confirmations, limits, and policy are enforced by the platform, not your prompt.