The Permission column is what you have to approve for the tool to be offered. A dash means it has no permission of its own and is checked per record instead:
search_resources is offered to everyone, but only finds what you approved.The last column says whether the tool reads or writes. A write asks your client to confirm before it runs.Finding and reading
Reporting
Catalog
Stock
Files
Creating, changing and deleting records
Three tools cover everything your store can write — 38 kinds of record, from products and orders to markets, tax rates and delivery methods — rather than one tool each. Creating an order through an assistant does exactly what creating one in the dashboard does.
The dash is the point: each call is gated on the resource being written, so a
connection approved for products can create a product and is refused a market.
Call
describe_resource for what a resource accepts.
Some records exist only inside another: an order’s items, discounts and fees.
describe_resource names that record as the resource’s parent, and each
generic tool that reads or writes a record takes its id as parent_id. That is how an assistant changes a
quantity, sets a negotiated unit price or adds a discount on a draft order.
Actions
Every Admin API action that is not a plain create, update or delete is a tool, named after the record and the action. Its description, its arguments and the permission it needs are the operation’s own, so the Admin API reference is the full description of each one. Every action is a write, and asks your client to confirm before it runs.Catalogs
Categories
Channels
Collections
Companies
Customers
Deliveries
Fulfillments
Orders
Payments
Pricing
Product Types
Products
Purchase Orders
Sellers
Shipping Labels
Stock Transfers
Tools named in Spree 6.0.0 that no longer appear here —
fulfillments_create, refunds_create, variants_create and the like, which are now create_resource calls — still answer through 6.0.x, as do the 6.0.0 argument names. A call that uses one says what to send instead. deliveries_update_tracking no longer answers: in 6.0.0 it marked the delivery delivered and dropped its tracking fields.Resources
Beyond tools, the server offers MCP resources — files a client can fetch rather than operations it can run.
A product’s media, an order’s purchase order and an import’s own file are things an assistant puts there rather than reads back, so they are uploads rather than files it can fetch.
What no tool will do
Some things are out of reach whatever you approve.- Keys and codes. API keys, integrations, webhooks and gift card codes are never shown. A gift card code is the money itself, and an integration’s settings hold the passwords for another service.
- Making another way in. An assistant cannot create API keys, roles, staff accounts or register another assistant — so it can never widen its own reach.
- Erasing a customer. GDPR erasure is irreversible and is not something to put behind a single confirmation prompt. Do it in the dashboard.
- Codes that spend money. A gift card or coupon export carries live codes, so no tool creates or reads one. Download it from the dashboard.
Writing records
Two things worth knowing about the generic writes: Nested records travel with their parent. A product’s variants carry their own options, prices and stock levels in the same write, so creating a product with two sized variants is one call rather than four.describe_resource reports what fits inside each list.
A list replaces rather than appends. Sending one variant leaves a product with one variant. Send every row you want to keep.
Rows selected by a type take a short name, never a class name. A promotion’s rules and actions, a price list’s rules and a payment method’s provider are chosen by type: item_total, create_item_adjustments, check. describe_resource on one resource lists the kinds under types and nested_types, each with the schema its preferences follow and, for an action that prices a discount, the calculators it takes. A kind the store does not offer is refused with the accepted ones named, so nothing is saved with a rule or an action missing.
Rows that live under a parent are reached through it. Promotion rules, promotion actions and an order’s payments have no search of their own: pass the parent’s id as parent_id, or read them with get_resource on the parent, naming the list in expand. Where the parent accepts the rows as a list attribute, as a promotion does its rules and actions, that attribute is also how they are written.
See also
Permissions and consent
What you approve, and what an assistant can never reach.
Custom tools
How your extension’s admin endpoints become tools, and adding one by hand.

