robotrunk.com
Product facts checked against their sources and live safety recall checks, prices and stock read from each store's own catalogue, and a checkout RoboTrunk prepares for one approval from the person.
First seen 2026-11-05 · Last seen 2026-11-05 · Source: webmcp.com
Answer 11 · Act 6 · Transact 6 · Score: Not yet scored
Tool inspector
update_checkout
Sends permitted buyer, address, line-item, context, discount or fulfilment changes to a checkout at a store. Use this when a checkout from create_checkout needs correction before handoff, and to send the buyer's email and full delivery address (from the person, in this conversation or saved in your app) if you did not send them on create_checkout, so the store prefills them and the total includes delivery. Not for paying or sending payment details. Outputs: the updated rail envelope and suggested_tools. Error recovery: buyer_identity_contact_method_required means the store needs the buyer's email, so send buyer.email from the person; BUDGET_EXCEEDED means the store's total, shipping and tax included, is over the ceiling the person approved: tell the person, then raise budget_ceiling_minor once they approve or call cancel_checkout; MERCHANT_REJECTED_INPUT means the store refused one field that errors[] names, so fix it and retry with a new key; IDEMPOTENCY_CONFLICT means use a fresh key for a changed request; INVALID_REQUEST names a body or header problem; INVALID_STATE means the checkout cannot change now, so call get_checkout, then create_checkout again if it ended; CHECKOUT_NOT_FOUND means the handle is unavailable, so call create_checkout again; continuation_not_found or RUN_AUTH_REQUIRED means send checkout_id exactly as an earlier answer returned it and, if you did, call create_checkout again; PAYMENT_INSTRUMENT_NOT_ACCEPTED means remove payment data and retry; any other error, including tool_layer_failure: retry once, then call submit_feedback. Next: get_checkout to read the new status, complete_checkout when it is ready_for_complete. Full guide: get_tool_guide or /agent/tools.json#update_checkout
Page: /
Input schema
| Property | Type | Required | Description |
|---|---|---|---|
checkout_id |
string | yes | The UCP checkout id from create_checkout or get_checkout. |
buyer |
object,null | yes | Buyer details for the merchant, or null to leave them unchanged. Example: {"email": "<the person's email>"}: the <...> is the person's own address, never invented. |
shipping_address |
object,null | yes | The merchant shipping address, or null to leave it unchanged. Example: {"first_name": "<from the person>", "last_name": "<from the person>", "street_address": "<street>", "extended_address": "<apartment or suite, or null>", "address_locality": "<city>", "address_region": "<two-letter state code, such as CA>", "postal_code": "<ZIP code>", "address_country": "US"}: every <...> is the person's own value, never invented. |
context |
object,null | yes | Optional merchant context, or null to leave it unchanged. |
discounts |
object,null | yes | Discount codes for the merchant, or null to leave them unchanged. |
line_items |
array,null | yes | Replacement line items: the whole basket, every line the checkout should hold, up to 50 at a quantity of 1 to 100 each, all from this checkout's store; or null to leave the current set unchanged. Example: [{"product_id": "<product_id from search_catalog>", "variant_id": "<variant_id from the same result>", "quantity": 1}], the ids exactly as returned, never a page link. |
fulfillment_option_id |
string,null | yes | The selected fulfillment option id, or null. |
budget_ceiling_minor |
integer,null | yes | The total the person approved, shipping and tax included, in minor units, or null. A store total above it is refused BUDGET_EXCEEDED; ask the person. Example: 24995 for a total of 249.95. |
budget_ceiling_currency |
string,null | yes | The ISO-4217 currency of the ceiling, or null for the merchant's own. Any other is refused, naming the merchant's. |
idempotency_key |
string,null | yes | A printable ASCII key for safe retries, or null to generate one. |
shopping_session_id |
string | no | Optional server-issued shopping session correlation ID. It is not purchase authority. |
Raw JSON schema
{
"type": "object",
"properties": {
"checkout_id": {
"type": "string",
"minLength": 1,
"maxLength": 300,
"description": "The UCP checkout id from create_checkout or get_checkout."
},
"buyer": {
"type": [
"object",
"null"
],
"description": "Buyer details for the merchant, or null to leave them unchanged. Example: {\"email\": \"<the person's email>\"}: the <...> is the person's own address, never invented.",
"properties": {
"email": {
"type": "string",
"format": "email",
"maxLength": 254,
"description": "The buyer email address."
},
"first_name": {
"type": [
"string",
"null"
],
"minLength": 1,
"maxLength": 100,
"description": "The buyer first name."
},
"last_name": {
"type": [
"string",
"null"
],
"minLength": 1,
"maxLength": 100,
"description": "The buyer last name."
},
"phone_number": {
"type": [
"string",
"null"
],
"minLength": 1,
"maxLength": 100,
"description": "The buyer phone number."
}
},
"required": [
"email"
],
"additionalProperties": false
},
"shipping_address": {
"type": [
"object",
"null"
],
"description": "The merchant shipping address, or null to leave it unchanged. Example: {\"first_name\": \"<from the person>\", \"last_name\": \"<from the person>\", \"street_address\": \"<street>\", \"extended_address\": \"<apartment or suite, or null>\", \"address_locality\": \"<city>\", \"address_region\": \"<two-letter state code, such as CA>\", \"postal_code\": \"<ZIP code>\", \"address_country\": \"US\"}: every <...> is the person's own value, never invented.",
"properties": {
"first_name": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "The recipient first name."
},
"last_name": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "The recipient last name."
},
"street_address": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "The street address."
},
"extended_address": {
"type": [
"string",
"null"
],
"minLength": 1,
"maxLength": 200,
"description": "Apartment or suite (optional)."
},
"address_locality": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "City (town or locality outside the US)."
},
"address_region": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "Two-letter state code, such as CA (state, province or region outside the US)."
},
"postal_code": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "ZIP code (postcode outside the US)."
},
"address_country": {
"type": "string",
"pattern": "^[A-Z]{2}$",
"description": "The two-letter uppercase country code. Example: \"US\", not \"United States\"."
},
"phone_number": {
"type": [
"string",
"null"
],
"minLength": 1,
"maxLength": 100,
"description": "The delivery contact phone number."
}
},
"required": [
"first_name",
"last_name",
"street_address",
"address_locality",
"address_region",
"postal_code",
"address_country"
],
"additionalProperties": false
},
"context": {
"type": [
"object",
"null"
],
"description": "Optional merchant context, or null to leave it unchanged.",
"properties": {
"address_country": {
"type": [
"string",
"null"
],
"pattern": "^[A-Z]{2}$",
"description": "The two-letter uppercase destination country code."
},
"address_region": {
"type": [
"string",
"null"
],
"minLength": 1,
"maxLength": 100,
"description": "The destination state, such as CA (province or region outside the US)."
},
"postal_code": {
"type": [
"string",
"null"
],
"minLength": 1,
"maxLength": 100,
"description": "The destination ZIP code (postcode outside the US)."
},
"language": {
"type": [
"string",
"null"
],
"minLength": 1,
"maxLength": 35,
"description": "The buyer's preferred language tag."
}
},
"additionalProperties": false
},
"discounts": {
"type": [
"object",
"null"
],
"description": "Discount codes for the merchant, or null to leave them unchanged.",
"properties": {
"codes": {
"type": "array",
"maxItems": 10,
"description": "Up to ten printable discount codes.",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^[\\x20-\\x7E]+$",
"description": "One printable ASCII discount code."
}
}
},
"required": [
"codes"
],
"additionalProperties": false
},
"line_items": {
"type": [
"array",
"null"
],
"description": "Replacement line items: the whole basket, every line the checkout should hold, up to 50 at a quantity of 1 to 100 each, all from this checkout's store; or null to leave the current set unchanged. Example: [{\"product_id\": \"<product_id from search_catalog>\", \"variant_id\": \"<variant_id from the same result>\", \"quantity\": 1}], the ids exactly as returned, never a page link.",
"minItems": 1,
"maxItems": 50,
"items": {
"type": "object",
"properties": {
"product_id": {
"type": "string",
"minLength": 1,
"maxLength": 300,
"description": "The product id from the merchant catalogue."
},
"variant_id": {
"type": "string",
"minLength": 1,
"maxLength": 300,
"description": "The variant id from the merchant catalogue."
},
"quantity": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"description": "How many of this product, 1 to 100; the store has the final say on stock."
}
},
"required": [
"product_id",
"variant_id",
"quantity"
],
"additionalProperties": false
}
},
"fulfillment_option_id": {
"type": [
"string",
"null"
],
"minLength": 1,
"maxLength": 100,
"description": "The selected fulfillment option id, or null."
},
"budget_ceiling_minor": {
"type": [
"integer",
"null"
],
"minimum": 0,
"maximum": 9007199254740991,
"description": "The total the person approved, shipping and tax included, in minor units, or null. A store total above it is refused BUDGET_EXCEEDED; ask the person. Example: 24995 for a total of 249.95."
},
"budget_ceiling_currency": {
"type": [
"string",
"null"
],
"pattern": "^[A-Z]{3}$",
"description": "The ISO-4217 currency of the ceiling, or null for the merchant's own. Any other is refused, naming the merchant's."
},
"idempotency_key": {
"type": [
"string",
"null"
],
"minLength": 16,
"maxLength": 128,
"description": "A printable ASCII key for safe retries, or null to generate one."
},
"shopping_session_id": {
"type": "string",
"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
"description": "Optional server-issued shopping session correlation ID. It is not purchase authority."
}
},
"required": [
"checkout_id",
"buyer",
"shipping_address",
"context",
"discounts",
"line_items",
"fulfillment_option_id",
"budget_ceiling_minor",
"budget_ceiling_currency",
"idempotency_key"
],
"additionalProperties": false
}
Similar websites
cleardose-webmcp-demo.netlify.app
See the ClearDose WebMCP use case, shared Vue and Pinia architecture, demo workflow, source repository, and submission readiness.
4over4.com
4OVER4.COM prints 1,000+ custom products on 60+ paper stocks in Queens, with same-day shipping on most orders and 150,000+ businesses served since 1999.
camdentools.com
Construction tools and equipment
autolab.run
Super intelligence for car lovers. A WebMCP vehicle configurator, an agentic owner's guide with a live digital twin, and the 3D creation engine that measures th…