CrewAI conversational flows: confirm cost before a Sume render
In a CrewAI chat flow, have the step call Sume with dry_run first and ask the user to confirm the cost.

In a conversational flow, make the first Sume call a preview with dry_run=true, show the estimate to the user, and submit only after they agree. The CrewAI releases page lists 1.15.23 (Sep 28, 2026) with native Gemini 3.8 Flash support.
Why a flow step should preview
A chat flow can reach a paid tool in one turn. Sume's hosted MCP offers dry_run=true, an admission and cost preview that does not submit the job, and max_spend_usd, which is enforced only when provided.
| Flow step | Sume call | Spend? |
|---|---|---|
| 1. Gather the request | None | No |
| 2. Preview | Paid tool with dry_run=true | No |
| 3. Confirm with the user | None | No |
| 4. Submit | Same tool, dry_run omitted, idempotency_key set | Yes |
Step 2: the preview call
The playbook in the Sume docs shows the argument shape. Send it first and show the user the estimate.
{
"idempotency_key": "chat-1234-video-001",
"dry_run": true,
"max_spend_usd": 2,
"payload": {
"prompt": "A slow push-in on a ceramic mug, soft morning light"
}
}Step 4: the submit
Repeat with dry_run omitted or false. Keep the same idempotency_key per confirmed request, so a repeated message does not create a second job. Poll with jobs_status or jobs_wait and read jobs_result.
Guard rails
- Hosted MCP hides mutating and paid tools until the session has
mcp:writeor an API key. allow_writeandallow_paidare legacy and not required, and they cannot bypass a missing scope.- Discover contracts with
tools_listandtools_schema; do not hard-code them. - Store the idempotency key with the chat turn so a crash can be recovered.
Takeaway
The release notes cover CrewAI, not Sume. The pattern comes from Sume's documented gates: preview, confirm, then submit.
Sources
Related posts
More in Developers
- Cursor Security Review bot on a Sume webhook handler: what to find
Cursor added a Security Review bot on Sep 23. A webhook handler for Sume should pass seven checks: raw body, timestamp window, rotation, empty secret and more.
- Cursor self-hosted machines can't take Sume webhooks on a private URL
Sume rejects localhost, private-network and non-HTTPS webhook URLs. An agent on a self-hosted machine should poll status_url or use a public HTTPS receiver.
- Demand Gen copy limits: 40-character headlines, one at 30 or fewer
Demand Gen allows 40-character headlines (one must be 30 or fewer), 90-character descriptions and 10-60 second videos. A checker script plus the Sume lengths.
- Design a render tool for a stateless MCP server: job ids as arguments
MCP 2026-07-28 removes protocol sessions. A render tool stays correct if its state lives in a job id the client passes back, as Sume jobs do.
Written by Sume