actionlayer_start_task
Get a real-world goal done — book, order, register, resolve, cancel, dispute, file. Use this when the user wants something DONE (a table held, an order placed, an account registered, a refund chased), not when they want analysis or text.
The concierge works the ticket end-to-end — talking to the person on the other side, signing up or logging in, paying at checkout within max_budget_usd, following up — and adapts to whatever it finds. Tickets that would normally fail on a hard step just keep progressing. You don't need to design around the unhappy path.
Prefer actionlayer_invoke_action with a typed action id when one fits — it's faster and more deterministic. Reach for actionlayer_start_task when no typed action covers the job, or when the goal mixes multiple steps.
Be SPECIFIC. The goal must include: which site/place, when, how many, exact product URL if buying. Vague goals ("book me dinner", "order something") block on the user and waste planning budget — ask the user for the missing pieces FIRST, then call this with everything nailed down.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| goal | Yes | Specific natural-language description. Good: "Book a table for 2 at Bar Crenn (SF) on 2026-12-06, 7-8:30pm via Resy" Bad: "find me a flight" (too vague — will block) | |
| webhook_url | No | Optional. Best-effort POST (single attempt, no retries) when the ticket blocks on user input or reaches a terminal state. Thin payload {kind, ticket_id, state, occurred_at} — treat it as a poke and call actionlayer_get_task for the details. Polling works with or without it. | |
| max_budget_usd | No | Required for anything that spends money. The planner soft-caps spend and escalates instead of overspending. | |
| idempotency_key | No | Optional caller-supplied retry key — same key within 24h returns the same ticket. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||