confirm_order
Complete an order after payment succeeds. For UPI flows, the place-order tool first returns PENDING_PAYMENT; call this only after check_payment_status reports a successful terminal payment and only when the order has not already been auto-confirmed.
See confirm_order in actionComing soon
Usage notes
- Use this after
check_payment_statusreports a successful terminal payment and does not reportconfirmed=true. - Clients that render the payment UI normally confirm automatically after a successful payment. Do not call this again if the status response says the order was confirmed already.
- Do not call this for failed, cancelled, or refund-initiated payment statuses.
- Scenes confirmation requires
orderIdand thepaasIdreturned byplace_event_order.
Example
const result = await client.callTool({
name: "confirm_order",
arguments: {
orderId: "ord_42",
paasId: "paas_42",
},
});Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
orderId | string | yes | Order ID returned by the place-order tool. |
transactionId | string | no | Transaction ID returned by the place-order tool (Instamart, Dineout, and Scenes). |
paasId | string | yes for Scenes | Payment transaction ID returned by the place-order tool (Instamart, Dineout, and Scenes). |
addressId | string | no | Food only; not used by Scenes confirmation. |
cartId | string | no | Food only; not used by Scenes confirmation. |
lat | number | no | Food only; not used by Scenes confirmation. |
lng | number | no | Food only; not used by Scenes confirmation. |
Session credentials (user identity, access token) are supplied automatically by the authenticated MCP session - you do not pass them in the tool call. See Authenticate.
Response
All Swiggy MCP tools return:
{
"success": true,
"data": { /* tool-specific payload */ },
"message": "optional human-readable message"
}
On failure:
{
"success": false,
"error": { "message": "description of what went wrong" }
}
See Error codes for the full catalogue.
Output schema
data: {
orderId: string;
paasId?: string;
orderStatus?: string;
result:
| "success"
| "failed"
| "cancelled"
| "cart_changed"
| "refund_initiated"
| "retry";
}
This schema documents the structured payload returned by confirm_order. Optional fields can vary by user state, cart state, and live Swiggy availability.
Schema notes
- Call only after a successful terminal payment status, and only when the order was not already auto-confirmed.
result:successmeans the ticket is booked.failed,cancelled, andrefund_initiatedare final - do not retry the same payment.cart_changedmeans the cart was repriced and the booking must be started again.retrymeans the outcome is not yet known; check the status again before telling the user anything.- This call is idempotent for the same payment/order identifiers; retry only when the previous call failed due to a transient client or network issue.
orderStatus: service state field. Prefer accompanying messages/terminal flags and refresh status before taking irreversible actions.orderId: order identifier for tracking, support, payment confirmation, and cancellation flows. Preserve formatting exactly as returned.paasId: required payment transaction identifier for Scenes confirmation. Echo it exactly from theplace_event_orderUPI response.- Fields marked optional may be omitted depending on user state, cart/order state, and live Swiggy availability.
- Use returned identifiers and enum values exactly as provided; do not invent fallback IDs, status values, payment methods, or timestamps.
Details
| Field | Value |
|---|---|
| Name | confirm_order |
| MCP Server | Scenes |
| Endpoint | POST mcp.swiggy.com/scenes |
| Stage | Payment |
| Behaviour | mutating |
Next in this journey →
Continue with get_event_booking_status.