Driverless delivery.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Book a $2.99 robot delivery from a registered store in one call. Send store_id, dropoff_address and dropoff_phone; order_ref is the store's own order number (required at an open store); ready_at starts the 2-hour promise and defaults to now. The answer is yes or no now: a decline carries retry_after_seconds and a capacity.available webhook follows when capacity frees. A live key holds the posted price from the organization's Wallet; a test key creates a simulated robot delivery.
The server marks this tool as destructive. Running it may delete or overwrite data on the server or in any account you connected with your headers.
Book a $2.99 robot delivery from a registered store in one call. Send store_id, dropoff_address and dropoff_phone; order_ref is the store's own order number (required at an open store); ready_at starts the 2-hour promise and defaults to now. The answer is yes or no now: a decline carries retry_after_seconds and a capacity.available webhook follows when capacity frees. A live key holds the posted price from the organization's Wallet; a test key creates a simulated robot delivery.
| Argument | Type | Description |
|---|---|---|
| parcel | object | |
| metadata | object | |
| ready_at | string | |
| store_id | string | |
| order_ref | string | |
| pickup_name | string | |
| pickup_phone | string | |
| dropoff_phone* | string | |
| pickup_address | string | |
| dropoff_address* | string | |
| idempotency_key* | string | |
| robomart_version | string | |
| declared_value_cents | integer | |
| merchant_order_reference | string |
{
"type": "object",
"anyOf": [
{
"required": [
"store_id"
]
},
{
"required": [
"pickup_address"
]
}
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"dropoff_address",
"dropoff_phone",
"idempotency_key"
],
"properties": {
"parcel": {
"type": "object",
"properties": {
"width_in": {
"type": "number",
"maximum": 200,
"exclusiveMinimum": 0
},
"height_in": {
"type": "number",
"maximum": 200,
"exclusiveMinimum": 0
},
"length_in": {
"type": "number",
"maximum": 200,
"exclusiveMinimum": 0
},
"weight_lb": {
"type": "number",
"maximum": 1000,
"exclusiveMinimum": 0
}
},
"additionalProperties": false
},
"metadata": {
"type": "object",
"maxProperties": 20,
"propertyNames": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"additionalProperties": {
"type": "string",
"maxLength": 500
}
},
"ready_at": {
"type": "string",
"format": "date-time"
},
"store_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"order_ref": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"pickup_name": {
"type": "string",
"maxLength": 120,
"minLength": 1
},
"pickup_phone": {
"type": "string",
"pattern": "^(?=(?:\\D*\\d){7,15}\\D*$)\\+?[0-9()\\-.\\s]+$",
"maxLength": 25,
"minLength": 7
},
"dropoff_phone": {
"type": "string",
"pattern": "^(?=(?:\\D*\\d){7,15}\\D*$)\\+?[0-9()\\-.\\s]+$",
"maxLength": 25,
"minLength": 7
},
"pickup_address": {
"type": "string",
"pattern": "\\S",
"maxLength": 400,
"minLength": 1
},
"dropoff_address": {
"type": "string",
"pattern": "\\S",
"maxLength": 400,
"minLength": 1
},
"idempotency_key": {
"type": "string",
"maxLength": 255,
"minLength": 1
},
"robomart_version": {
"enum": [
"2026-09-04",
"2026-09-06",
"2026-10-06"
],
"type": "string"
},
"declared_value_cents": {
"type": "integer",
"maximum": 10000000,
"minimum": 0
},
"merchant_order_reference": {
"type": "string",
"maxLength": 200,
"minLength": 1
}
},
"additionalProperties": false
}Cancel before pickup; a successful cancellation releases the full fee hold. The owner of an open store may use this on another account's booking inside the decline window: that records store.declined and cancels with cancel_reason store_declined. After pickup the call returns not_cancellable. Safe to retry.
| Argument | Type | Description |
|---|---|---|
| delivery_id* | string | |
| robomart_version | string |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"delivery_id"
],
"properties": {
"delivery_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"robomart_version": {
"enum": [
"2026-09-04",
"2026-09-06",
"2026-10-06"
],
"type": "string"
}
},
"additionalProperties": false
}Can this store deliver to this address at this ready time? Send store_id (a registered store) and dropoff_address; ready_at defaults to now. Checks the store's status, hours and coverage radius, the 5-mile network maximum and the zone, and returns the $2.99 fee and the arrival window. Capacity is answered at booking.
| Argument | Type | Description |
|---|---|---|
| parcel | object | |
| ready_at | string | |
| store_id | string | |
| pickup_address | string | |
| dropoff_address* | string | |
| robomart_version | string |
{
"type": "object",
"anyOf": [
{
"required": [
"store_id"
]
},
{
"required": [
"pickup_address"
]
}
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"dropoff_address"
],
"properties": {
"parcel": {
"type": "object",
"properties": {
"width_in": {
"type": "number",
"maximum": 200,
"exclusiveMinimum": 0
},
"height_in": {
"type": "number",
"maximum": 200,
"exclusiveMinimum": 0
},
"length_in": {
"type": "number",
"maximum": 200,
"exclusiveMinimum": 0
},
"weight_lb": {
"type": "number",
"maximum": 1000,
"exclusiveMinimum": 0
}
},
"additionalProperties": false
},
"ready_at": {
"type": "string",
"format": "date-time"
},
"store_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"pickup_address": {
"type": "string",
"pattern": "\\S",
"maxLength": 400,
"minLength": 1
},
"dropoff_address": {
"type": "string",
"pattern": "\\S",
"maxLength": 400,
"minLength": 1
},
"robomart_version": {
"enum": [
"2026-09-04",
"2026-09-06",
"2026-10-06"
],
"type": "string"
}
},
"additionalProperties": false
}Live open stores near a drop-off address, nearest first, with whether each one's coverage radius reaches the address. Any account may book from an open store with an order_ref the store recognizes.
| Argument | Type | Description |
|---|---|---|
| limit | integer | |
| address* | string | |
| radius_miles | number | |
| robomart_version | string |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"address"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1
},
"address": {
"type": "string",
"maxLength": 400,
"minLength": 1
},
"radius_miles": {
"type": "number",
"maximum": 5,
"exclusiveMinimum": 0
},
"robomart_version": {
"enum": [
"2026-09-04",
"2026-09-06",
"2026-10-06"
],
"type": "string"
}
},
"additionalProperties": false
}Proof of a delivered Delivery, with its store_id and order_ref. Sandbox proof is explicitly marked simulated.
| Argument | Type | Description |
|---|---|---|
| delivery_id* | string | |
| robomart_version | string |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"delivery_id"
],
"properties": {
"delivery_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"robomart_version": {
"enum": [
"2026-09-04",
"2026-09-06",
"2026-10-06"
],
"type": "string"
}
},
"additionalProperties": false
}Stores this organization owns, with status, visibility, radius and activation. Use the store id to check coverage and book. Filter by status or visibility; page with starting_after.
| Argument | Type | Description |
|---|---|---|
| limit | integer | |
| status | string | |
| visibility | string | |
| starting_after | string | |
| robomart_version | string |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [],
"properties": {
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1
},
"status": {
"enum": [
"pending",
"live",
"paused"
],
"type": "string"
},
"visibility": {
"enum": [
"private",
"open"
],
"type": "string"
},
"starting_after": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"robomart_version": {
"enum": [
"2026-09-04",
"2026-09-06",
"2026-10-06"
],
"type": "string"
}
},
"additionalProperties": false
}Register a store: a real place whose owner promises to load the robot. Send the name, the address, at least one alert channel the store owns (relay, webhook, sms or voice), and optionally where the robot parks (robot_spot), hours inside 10:00 to 22:00, the coverage radius (default 2 miles, maximum 5), private or open visibility, loading notes and your own external_ref. The store starts pending; the activation check makes it live.
| Argument | Type | Description |
|---|---|---|
| name* | string | |
| hours | array | |
| address* | string | |
| robot_spot | object | |
| visibility | string | |
| external_ref | string | |
| radius_miles | number | |
| loading_notes | string | |
| alert_channels* | array | |
| robomart_version |
Ask for a Wallet top-up of amount_credited cents (2000 to 1000000). The reply carries a signed confirmation link that a person completes in Console; no money moves until they do, and the link expires after 24 hours. Track it with GET /v1/topups/request/{id}.
| Argument | Type | Description |
|---|---|---|
| note | string | |
| amount_credited* | integer | |
| robomart_version | string |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"amount_credited"
],
"properties": {
"note": {
"type": "string",
"maxLength": 200
},
"amount_credited": {
"type": "integer",
"maximum": 1000000,
"minimum": 2000
},
"robomart_version": {
"enum": [
"2026-09-04",
"2026-09-06",
"2026-10-06"
],
"type": "string"
}
},
"additionalProperties": false
}The current Delivery, including store_id, store_name, order_ref, ready_at, promised_by and the pickup and return timestamps. Test deliveries are simulated.
| Argument | Type | Description |
|---|---|---|
| delivery_id* | string | |
| robomart_version | string |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"delivery_id"
],
"properties": {
"delivery_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"robomart_version": {
"enum": [
"2026-09-04",
"2026-09-06",
"2026-10-06"
],
"type": "string"
}
},
"additionalProperties": false
}Change a store you own: name, address, robot spot, hours, radius, visibility, alert channels, loading notes, perishables setting or external_ref; status pauses (paused) and resumes (live) a store. A pending store becomes live only through the activation check. Changing a live store's address or robot spot returns it to pending.
| Argument | Type | Description |
|---|---|---|
| name | string | |
| hours | array | |
| status | string | |
| address | string | |
| store_id* | string | |
| robot_spot | object | |
| visibility | string | |
| external_ref | string | null | |
| radius_miles | number | |
| loading_notes | string | null | |
| alert_channels |
The Wallet balance for this organization and environment: available, held, this month's spend and the auto top-up setting. Reading only.
| Argument | Type | Description |
|---|---|---|
| robomart_version | string |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [],
"properties": {
"robomart_version": {
"enum": [
"2026-09-04",
"2026-09-06",
"2026-10-06"
],
"type": "string"
}
},
"additionalProperties": false
}| string |
| perishables_after_hours | string |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"name",
"address",
"alert_channels"
],
"properties": {
"name": {
"type": "string",
"maxLength": 120,
"minLength": 1
},
"hours": {
"type": "array",
"items": {
"type": "object",
"required": [
"day",
"open",
"close"
],
"properties": {
"day": {
"enum": [
"mon",
"tue",
"wed",
"thu",
"fri",
"sat",
"sun"
],
"type": "string"
},
"open": {
"type": "string",
"pattern": "^([01][0-9]|2[0-3]):[0-5][0-9]$"
},
"close": {
"type": "string",
"pattern": "^([01][0-9]|2[0-3]):[0-5][0-9]$"
}
},
"additionalProperties": false
},
"maxItems": 14
},
"address": {
"type": "string",
"pattern": "\\S",
"maxLength": 400,
"minLength": 1
},
"robot_spot": {
"type": "object",
"required": [
"lat",
"lng"
],
"properties": {
"lat": {
"type": "number",
"maximum": 90,
"minimum": -90
},
"lng": {
"type": "number",
"maximum": 180,
"minimum": -180
},
"note": {
"type": "string",
"maxLength": 200
}
},
"additionalProperties": false
},
"visibility": {
"enum": [
"private",
"open"
],
"type": "string"
},
"external_ref": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"radius_miles": {
"type": "number",
"maximum": 5,
"exclusiveMinimum": 0
},
"loading_notes": {
"type": "string",
"maxLength": 2000
},
"alert_channels": {
"type": "array",
"items": {
"type": "object",
"required": [
"kind",
"target"
],
"properties": {
"kind": {
"enum": [
"relay",
"webhook",
"sms",
"voice"
],
"type": "string"
},
"target": {
"type": "string",
"maxLength": 400,
"minLength": 1
}
},
"additionalProperties": false
},
"maxItems": 8,
"minItems": 1
},
"robomart_version": {
"enum": [
"2026-09-04",
"2026-09-06",
"2026-10-06"
],
"type": "string"
},
"perishables_after_hours": {
"enum": [
"return_at_opening",
"dispose"
],
"type": "string"
}
},
"additionalProperties": false
}| array |
| robomart_version | string |
| perishables_after_hours | string |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"store_id"
],
"properties": {
"name": {
"type": "string",
"maxLength": 120,
"minLength": 1
},
"hours": {
"type": "array",
"items": {
"type": "object",
"required": [
"day",
"open",
"close"
],
"properties": {
"day": {
"enum": [
"mon",
"tue",
"wed",
"thu",
"fri",
"sat",
"sun"
],
"type": "string"
},
"open": {
"type": "string",
"pattern": "^([01][0-9]|2[0-3]):[0-5][0-9]$"
},
"close": {
"type": "string",
"pattern": "^([01][0-9]|2[0-3]):[0-5][0-9]$"
}
},
"additionalProperties": false
},
"maxItems": 14
},
"status": {
"enum": [
"live",
"paused"
],
"type": "string"
},
"address": {
"type": "string",
"pattern": "\\S",
"maxLength": 400,
"minLength": 1
},
"store_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"robot_spot": {
"type": "object",
"required": [
"lat",
"lng"
],
"properties": {
"lat": {
"type": "number",
"maximum": 90,
"minimum": -90
},
"lng": {
"type": "number",
"maximum": 180,
"minimum": -180
},
"note": {
"type": "string",
"maxLength": 200
}
},
"additionalProperties": false
},
"visibility": {
"enum": [
"private",
"open"
],
"type": "string"
},
"external_ref": {
"type": [
"string",
"null"
],
"maxLength": 200,
"minLength": 1
},
"radius_miles": {
"type": "number",
"maximum": 5,
"exclusiveMinimum": 0
},
"loading_notes": {
"type": [
"string",
"null"
],
"maxLength": 2000
},
"alert_channels": {
"type": "array",
"items": {
"type": "object",
"required": [
"kind",
"target"
],
"properties": {
"kind": {
"enum": [
"relay",
"webhook",
"sms",
"voice"
],
"type": "string"
},
"target": {
"type": "string",
"maxLength": 400,
"minLength": 1
}
},
"additionalProperties": false
},
"maxItems": 8,
"minItems": 1
},
"robomart_version": {
"enum": [
"2026-09-04",
"2026-09-06",
"2026-10-06"
],
"type": "string"
},
"perishables_after_hours": {
"enum": [
"return_at_opening",
"dispose"
],
"type": "string"
}
},
"minProperties": 2,
"additionalProperties": false
}