Skip to Content
MCP serverTool reference

Tool reference

9 tools, generated from the array the server actually answers tools/list with — so a tool added to the server is a tool on this page on the same deploy, and one removed cannot linger here.

Every tool the MCP server exposes
ToolWhat it does
get_shop any keyGet shop
list_orders any keyList orders
get_order any keyGet order
list_products any keyList products
get_product any keyGet product
list_contacts any keyList contacts
get_contact any keyGet contact
create_contact needs a write keyCreate or update a contact
tag_contact needs a write keyTag a contact

Argument spelling

Arguments use the snake_case spelling, which differs from the REST request body in a couple of places: payment_status, send_opt_in. That is the naming convention — a query parameter and a JSON body spell things differently, and a tool argument follows the query-string side.

Field names in the result are the REST spelling, camelCase, because the result is the REST object.

Paging

The list tools take limit and cursor, exactly as the REST API does, and their results carry has_more and next_cursor beside the data.

limit defaults to 25 and is capped at 100; asking for more is clamped rather than refused.

What a result looks like

Every tool answers with both structuredContent and a text block carrying the same JSON serialised. That looks redundant and is what the specification recommends, for the reason it looks redundant: a client that does not read structured content still shows the model something useful rather than an empty result.

A refusal comes back as isError: true with a sentence — not as a JSON-RPC error. See protocol for why those are different things to a model.

The tools

Descriptions below are exactly what the server sends to a model. Not paraphrased for a human reader, on purpose: when an assistant does something surprising, this text is the reason — and a prettier version here would send somebody looking for a cause that is not in the code.

get_shop

The shop this key belongs to: its handle, display name, currency and time zone. Call this first when you need to know which currency amounts are in, or which time zone dates should be read in.

Arguments

Takes none.

list_orders

Orders, newest first. Use email to find everything one customer has bought, status for where an order is in fulfilment (new, confirmed, shipped, completed, cancelled, refunded), and payment_status for whether the money arrived (unpaid, paid, refunded). An order can be paid but not yet shipped, so the two are separate questions and answering one does not answer the other.

Arguments

Arguments for list_orders
ArgumentWhat it does
status string · optionalFulfilment stage, e.g. shipped.
payment_status string · optionalMoney state, e.g. paid.
email string · optionalExact customer email, case-insensitive.
limit integer · optionalHow many to return. Defaults to 25, at most 100.
cursor string · optionalPass next_cursor from a previous call to get the following page. Omit for the first page.

get_order

One order in full, including every line item, the delivery address and any tracking details. Use it after list_orders when you need the items rather than the summary.

Arguments

Arguments for get_order
ArgumentWhat it does
id string · requiredThe order id.

list_products

The shop's catalogue, newest first. published filters to what buyers can currently see; omit it to include drafts. stock is null on products that do not track inventory — that means 'not counted', which is not the same as sold out.

Arguments

Arguments for list_products
ArgumentWhat it does
kind string · optionalOne of physical, digital, service, event.
published boolean · optionalOnly published, or only drafts.
limit integer · optionalHow many to return. Defaults to 25, at most 100.
cursor string · optionalPass next_cursor from a previous call to get the following page. Omit for the first page.

get_product

One product in full, including its variants and their individual stock.

Arguments

Arguments for get_product
ArgumentWhat it does
id string · requiredThe product id.

list_contacts

People on the shop's list. Set consented to true for only those who opted in to marketing email — everyone else is a customer who never agreed to be emailed, and must not be added to a mailing list or newsletter tool. marketingConsentAt on each record is when they agreed, or null if they never did.

Arguments

Arguments for list_contacts
ArgumentWhat it does
tag string · optionalOnly contacts carrying this tag.
email string · optionalExact email, case-insensitive.
consented boolean · optionalTrue for only those who opted in to marketing email.
limit integer · optionalHow many to return. Defaults to 25, at most 100.
cursor string · optionalPass next_cursor from a previous call to get the following page. Omit for the first page.

get_contact

One person on the shop's list, with their tags and consent state.

Arguments

Arguments for get_contact
ArgumentWhat it does
id string · requiredThe contact id.

create_contact write

Adds somebody to the shop's list, or updates and merges tags onto them if they are already on it. This CANNOT grant marketing consent — a new contact is always created without it, whatever you pass. To get consent, set send_opt_in to true: that emails the person a confirmation link, and consent is recorded only when they click it. Never tell the seller a contact is subscribed on the strength of this call alone.

Arguments

Arguments for create_contact
ArgumentWhat it does
name string · optionalNo description in the schema.
email string · optionalNo description in the schema.
phone string · optionalNo description in the schema.
tags string[] · optionalMerged with any tags they already have; never replaces them.
send_opt_in boolean · optionalEmail this person a double opt-in confirmation link. Requires an email address.

tag_contact write

Adds and removes tags on one contact. Tags are how a seller segments their list, so this is what changes who a future broadcast reaches. Omitted tags are left alone — there is no way to replace the whole set, on purpose.

Arguments

Arguments for tag_contact
ArgumentWhat it does
id string · requiredThe contact id.
add string[] · optionalNo description in the schema.
remove string[] · optionalNo description in the schema.
Last updated on