Machine-history prints, merch and £4 print files at notrobo.shop, run by an AI. Cards for downloads.
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.
Add a product variant to a basket. Get variant IDs from get-product. Returns the updated basket.
The product variant ID to add.
The basket token from create-basket.
Quantity to add (default 1).
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Add a product variant to a basket. Get variant IDs from get-product. Returns the updated basket.
| Argument | Type | Description |
|---|---|---|
| quantity | integer | Quantity to add (default 1). |
| variant_id* | integer | The product variant ID to add. |
| basket_token* | string | The basket token from create-basket. |
{
"type": "object",
"required": [
"basket_token",
"variant_id"
],
"properties": {
"quantity": {
"type": "integer",
"description": "Quantity to add (default 1)."
},
"variant_id": {
"type": "integer",
"description": "The product variant ID to add."
},
"basket_token": {
"type": "string",
"description": "The basket token from create-basket."
}
}
}Apply a discount code to a basket. Returns the updated basket with the discount reflected in the totals.
| Argument | Type | Description |
|---|---|---|
| code* | string | The discount code to apply. |
| basket_token* | string | The basket token from create-basket. |
{
"type": "object",
"required": [
"basket_token",
"code"
],
"properties": {
"code": {
"type": "string",
"description": "The discount code to apply."
},
"basket_token": {
"type": "string",
"description": "The basket token from create-basket."
}
}
}Create a new basket. Returns a basket_token — keep it and pass it to every basket and checkout tool. Treat it as a secret.
No arguments.
{
"type": "object",
"properties": {}
}Check an order's status. Requires the order number AND the email it was placed with.
| Argument | Type | Description |
|---|---|---|
| email* | string | The email address the order was placed with. |
| order_number* | string | The order number, e.g. ORD-260612-AB3D. |
{
"type": "object",
"required": [
"order_number",
"email"
],
"properties": {
"email": {
"type": "string",
"description": "The email address the order was placed with."
},
"order_number": {
"type": "string",
"description": "The order number, e.g. ORD-260612-AB3D."
}
}
}Get a product's full details by slug: description, options, and every variant with its SKU, price and stock. Variant IDs are what you add to a basket.
| Argument | Type | Description |
|---|---|---|
| slug* | string | The product slug, e.g. "enamel-mug". |
{
"type": "object",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string",
"description": "The product slug, e.g. \"enamel-mug\"."
}
}
}List available delivery methods, optionally filtered by destination country (ISO 2-letter code). Use the method ID in start-checkout.
| Argument | Type | Description |
|---|---|---|
| country | string | Optional ISO 3166-1 alpha-2 destination country, e.g. "GB". |
{
"type": "object",
"properties": {
"country": {
"type": "string",
"description": "Optional ISO 3166-1 alpha-2 destination country, e.g. \"GB\"."
}
}
}Remove a line from a basket. Returns the updated basket.
| Argument | Type | Description |
|---|---|---|
| item_id* | integer | The basket line ID (from view-basket). |
| basket_token* | string | The basket token from create-basket. |
{
"type": "object",
"required": [
"basket_token",
"item_id"
],
"properties": {
"item_id": {
"type": "integer",
"description": "The basket line ID (from view-basket)."
},
"basket_token": {
"type": "string",
"description": "The basket token from create-basket."
}
}
}Search the shop catalogue. Returns matching products with their slugs, price and stock availability. Use get-product for full details and variants.
| Argument | Type | Description |
|---|---|---|
| query | string | Search terms. Omit or leave empty to list the latest products. |
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Search terms. Omit or leave empty to list the latest products."
}
}
}Turn a basket into an order and get payment links. Two ways to pay: a human pay_url (pay-by-bank, the customer authorises in their banking app) and, when offered, an x402_payment_url for autonomous USDC settlement with no human needed. Never claim to have paid — confirm with get-order-status. For digital-only baskets, only name and country are required in shipping_address.
| Argument | Type | Description |
|---|---|---|
| email* | string | Customer email for order confirmation. |
| basket_token* | string | The basket token from create-basket. |
| shipping_address* | object | Customer address. For digital-only baskets only name and country are needed; physical orders also need line1, city and postcode. |
| shipping_method_id | integer | Delivery method ID from list-shipping-methods. Omit for baskets containing only digital products. |
{
"type": "object",
"required": [
"basket_token",
"email",
"shipping_address"
],
"properties": {
"email": {
"type": "string",
"description": "Customer email for order confirmation."
},
"basket_token": {
"type": "string",
"description": "The basket token from create-basket."
},
"shipping_address": {
"type": "object",
"required": [
"name",
"country"
],
"properties": {
"city": {
"type": "string",
"description": "Required for physical delivery; omit for digital-only baskets."
},
"name": {
"type": "string"
},
"line1": {
"type": "string",
"description": "Street address. Required for physical delivery; omit for digital-only baskets."
},
"line2": {
"type": "string"
},
"phone": {
"type": "string"
},
"county": {
"type": "string"
},
"country": {
"type": "string",
"description": "ISO 2-letter country code, e.g. GB."
},
"postcode": {
"type": "string",
"description": "Required for physical delivery; omit for digital-only baskets."
}
},
"description": "Customer address. For digital-only baskets only name and country are needed; physical orders also need line1, city and postcode."
},
"shipping_method_id": {
"type": "integer",
"description": "Delivery method ID from list-shipping-methods. Omit for baskets containing only digital products."
}
}
}Change the quantity of a basket line. A quantity of 0 removes it. Returns the updated basket.
| Argument | Type | Description |
|---|---|---|
| item_id* | integer | The basket line ID (from view-basket). |
| quantity* | integer | New quantity; 0 removes the line. |
| basket_token* | string | The basket token from create-basket. |
{
"type": "object",
"required": [
"basket_token",
"item_id",
"quantity"
],
"properties": {
"item_id": {
"type": "integer",
"description": "The basket line ID (from view-basket)."
},
"quantity": {
"type": "integer",
"description": "New quantity; 0 removes the line."
},
"basket_token": {
"type": "string",
"description": "The basket token from create-basket."
}
}
}View a basket: its lines, quantities and subtotal.
| Argument | Type | Description |
|---|---|---|
| basket_token* | string | The basket token from create-basket. |
{
"type": "object",
"required": [
"basket_token"
],
"properties": {
"basket_token": {
"type": "string",
"description": "The basket token from create-basket."
}
}
}