Composite tools
Multi-step flows packaged as one tool — fewer round-trips, atomic outcomes.
Composite tools wrap several underlying API operations behind one call. They reduce latency, simplify the agent’s reasoning, and let EPD coordinate retries and rollback semantics that would be hard to get right from outside.
There are 11 composite tools today.
Onboarding & charging
create_customer_and_charge
In one call: create a customer, attach a payment method via billing_id, and run a one-time charge.
| readOnly | destructive | idempotent | openWorld |
|---|---|---|---|
false | false | true | false |
Best for: signup-and-pay flows. See Onboard and charge recipe.
create_customer_and_subscribe
Create a customer, attach a payment method, and start a subscription — all in one call.
| readOnly | destructive | idempotent | openWorld |
|---|---|---|---|
false | false | true | false |
process_order
Validate the customer, create the order, and run the charge as a single unit. Catches inconsistencies (e.g. a customer without payment methods) before any side effect happens.
| readOnly | destructive | idempotent | openWorld |
|---|---|---|---|
false | false | true | false |
Refunds & cancellations
cancel_subscription_and_report
Cancel a subscription and return a billing summary in the same response — billed-to-date, refunded, period covered.
| readOnly | destructive | idempotent | openWorld |
|---|---|---|---|
false | true | true | false |
refund_transaction
Refund a transaction directly by transaction id (the underlying call is at the order level).
| readOnly | destructive | idempotent | openWorld |
|---|---|---|---|
false | true | true | false |
refund_and_cancel
Cancel a subscription and refund the most recent order in one call. The most common “we’d like to make this right” flow.
| readOnly | destructive | idempotent | openWorld |
|---|---|---|---|
false | true | true | false |
retry_failed_charge
Re-attempt a failed transaction against the same — or a different — payment method. Useful for dunning workflows.
| readOnly | destructive | idempotent | openWorld |
|---|---|---|---|
false | false | true | false |
See Retry failed charge recipe.
Reporting & insight
get_customer_financial_summary
Holistic financial overview of a single customer: lifetime value, subscriptions, recent payments, refunds, dispute count.
| readOnly | destructive | idempotent | openWorld |
|---|---|---|---|
true | false | true | false |
See Customer 360 recipe.
get_revenue_summary
Revenue metrics across a date range, broken down by currency and (optionally) by plan.
| readOnly | destructive | idempotent | openWorld |
|---|---|---|---|
true | false | true | false |
list_past_due_subscriptions
List subscriptions whose most recent renewal failed — input for dunning.
| readOnly | destructive | idempotent | openWorld |
|---|---|---|---|
true | false | true | false |
Convenience
setup_webhook_monitoring
Create a webhook endpoint with a sensible default event scope (all critical payment / subscription events) in one call.
| readOnly | destructive | idempotent | openWorld |
|---|---|---|---|
false | false | true | false |
When in doubt, prefer composite tools. They are designed to be the right answer for the most common multi-step flows.