ucp.create_checkout
Create a checkout cart from storefront line items and return payment requirements. When the order is confirmed, the response includes a full order summary (items, totals, addresses, carrier) and a portal_url the customer can use to view their order in the Odoo customer portal.
No store we check lists this tool.
Input schema
As a store we check lists it in tools/list.
Not a tool the spec's MCP binding defines at release 2026-08-25.
inputSchema
{
"type": "object",
"required": [
"line_items"
],
"properties": {
"line_items": {
"type": "array",
"items": {
"type": "object",
"required": [
"offer_id",
"quantity"
],
"properties": {
"offer_id": {
"type": "string",
"description": "Always pass the product variant_id returned by ucp.search_products. Other identifiers are fallback only."
},
"quantity": {
"type": "number",
"description": "Quantity to purchase.",
"exclusiveMinimum": 0
}
}
},
"minItems": 1,
"description": "Products to add to the checkout. Each item must use offer_id set to the variant_id returned by ucp.search_products."
},
"billing_address": {
"type": "object",
"required": [
"name",
"email",
"street",
"city",
"country_code"
],
"properties": {
"zip": {
"type": "string",
"description": "Postal or ZIP code."
},
"city": {
"type": "string",
"description": "City or locality."
},
"name": {
"type": "string",
"description": "Full recipient or billing contact name."
},
"email": {
"type": "string",
"description": "Contact email address."
},
"phone": {
"type": "string",
"description": "Contact phone number."
},
"street": {
"type": "string",
"description": "Primary street address line."
},
"street2": {
"type": "string",
"description": "Apartment, suite, landmark, or secondary address line."
},
"state_code": {
"type": "string",
"description": "State, province, or region code when available."
},
"country_code": {
"type": "string",
"maxLength": 2,
"minLength": 2,
"description": "ISO 3166-1 alpha-2 country code."
}
},
"description": "Optional billing address. Required to confirm the order and create payment."
},
"shipping_address": {
"type": "object",
"required": [
"name",
"email",
"street",
"city",
"country_code"
],
"properties": {
"zip": {
"type": "string",
"description": "Postal or ZIP code."
},
"city": {
"type": "string",
"description": "City or locality."
},
"name": {
"type": "string",
"description": "Full recipient or billing contact name."
},
"email": {
"type": "string",
"description": "Contact email address."
},
"phone": {
"type": "string",
"description": "Contact phone number."
},
"street": {
"type": "string",
"description": "Primary street address line."
},
"street2": {
"type": "string",
"description": "Apartment, suite, landmark, or secondary address line."
},
"state_code": {
"type": "string",
"description": "State, province, or region code when available."
},
"country_code": {
"type": "string",
"maxLength": 2,
"minLength": 2,
"description": "ISO 3166-1 alpha-2 country code."
}
},
"description": "Optional shipping address. Defaults to billing_address when omitted."
},
"payment_provider_id": {
"type": "integer",
"description": "Optional Odoo payment provider ID. When omitted, the response lists available providers for the next step."
}
}
}
