How does the agent know which customer is asking?
From the identity token your backend signs: declare the customer id as a custom claim in the app's auth context and it is available to the agent for signed-in users only.
Billing questions are mostly lookups: the status of a refund, the last invoice, the next renewal date. Stripe's API answers them over HTTPS with a restricted key, and the signed-in user's customer id from the identity token keeps every lookup scoped to the right person.
A support agent on your app that answers 'where is my refund?' from the live refund object.
A billing assistant that lists recent invoices and explains a line item.
An agent that prepares a refund request for a human to approve, never issuing it on its own.
The shape a tool takes in the AgentRow builder API. Credentials are stored on the tool's auth settings, not in its configuration, so they never reach a prompt. Placeholders in double braces are filled by the model from the input schema.
{
"name": "stripe_list_refunds",
"type": "http_api",
"description": "List recent refunds for the signed-in customer. Use when the user asks about a refund's status.",
"auth_type": "bearer_token",
"safety_level": "safe_read",
"is_readonly": true,
"config": {
"method": "GET",
"url": "https://api.stripe.com/v1/refunds",
"query_params": { "customer": "{{customer_id}}", "limit": "5" },
"allowed_domains": ["api.stripe.com"]
},
"input_schema": {
"type": "object",
"properties": {
"customer_id": { "type": "string", "description": "The Stripe customer id from the user's identity claims" }
},
"required": ["customer_id"]
}
}Every call appears in the run trace with the rendered request, the response status and body, timing, retries and errors, plus what the model was shown of the result. If the model never called the tool, the toolbox step shows whether it was bound for that model call and why.
From the identity token your backend signs: declare the customer id as a custom claim in the app's auth context and it is available to the agent for signed-in users only.
Treat it as destructive: safety level destructive, requires approval on, and a toolbox permission scope that excludes destructive tools where they are not needed. Most teams let the agent prepare the request and a person confirm it.
Only tools that do not need a customer id. Set the app to require verified identity when the assistant must know who it is talking to.
Orchestrate several specialised AI agents behind one app: a router picks the agent, nested runs stay fully traced, and one answer streams to your users.
Tool types, what a tool defines, how results reach the model, tool selection with search_tools, and authenticated tools for signed-in users.
AgentRow vs Relevance AI for AI agents: workflow control, multi-agent apps, tools, knowledge, observability and production readiness, compared.
Slack, HubSpot, Stripe, Shopify, GitHub, calendar, email, wikis, webhooks and any REST API.
Join the waitlist for early access. Tell us which systems you need to connect and we will point you at the right tool definitions.