Tools reference
The complete surface: 14 read tools, available on every connection, plus 12 write tools, available only on a Read and write connection. What each one is for is in the tool guide.
Connected before September 2026? Your connection only has the original 5 read tools:
get_setup_status, get_offers, get_offer_details, get_analytics, get_plan_status. Reconnect
from Settings to pick up the rest.
Read tools
Available on every connection, Read-only or Read and write.
| Tool | Parameters | Answers |
|---|---|---|
get_setup_status | none | Is the widget live on the storefront, and if not, why? |
get_offers | query? type? status? sort? limit? after? | Which offers exist, and which are live? |
get_offer | offer_id | How is this one offer configured, in full, including its admin link? |
get_offer_fields | offer_type | What fields a given offer type allows: kinds, limits, which are plan-locked |
get_offer_timeline | offer_id after? | The change history of one Fixed bundle offer (Fixed bundles only) |
get_analytics | start? end? offer_id? | Revenue, orders, attach rate, top offers |
get_plan_status | none | Which plan, how much used, capped or not |
get_widget_settings | offer_type | The storefront widget design for one offer type: colors, fonts, texts, layout |
search_products | query limit? | Products in the Shopify catalogue, by name |
search_collections | query limit? | Collections in the store, by name |
get_discounts | limit? | Active Shopify discounts, including this app's own |
search_customer_segments | query? after? | Customer segment names, for an offer's segment targeting |
get_markets | none | The store's Shopify markets |
get_product_variants | product_id | One product's variants: price, availability, options |
Write tools
Only on a Read and write connection. Every create tool below shares one rule: it is only for
an offer the store does not have yet. To change one that already exists, use update_offer.
| Tool | Parameters (key ones) | Does |
|---|---|---|
create_fbt_offer | name trigger fields? | Create a Frequently Bought Together offer |
create_volume_discount_offer | name scope tiers or template fields? | Create a Volume Discount offer, from tiers or one of six templates |
create_mix_match_offer | name options fields? | Create a Mix & Match Bundle offer |
create_bundle_builder_offer | name pool, layout fields? | Create a Bundle Builder offer |
create_fixed_bundle_offer | name product_ids fields? | Create a Product Fixed Bundle offer |
create_upsell_offer | name scope, recommendations fields? | Create a Product Recommendation offer |
update_offer | offer_id fields | Change any field of an existing offer, any type |
set_offer_status | offer_ids (1 to 10) status | Turn offers on (active) or off (paused) |
duplicate_offer | offer_id | Copy one offer; the copy starts switched off |
delete_offers | offer_ids (1 to 10) | Permanently delete offers and their Shopify discount or bundle product |
update_widget_settings | offer_type changes? translations? | Change widget colors, fonts, texts, layout |
import_image | url alt? | Copy a public image into the store's Shopify Files, for use in a Volume tier or similar |
The six create tools are detailed in the tool guide; each takes its own type-specific fields beyond the ones summarised here.
Accepted values
| Parameter | Accepts |
|---|---|
type / offer_type | fbt, volume-discount, mix-match-bundle, bundle-builder, product-fixed-bundle, upsell |
status (on get_offers) | active, scheduled, expired, draft, all |
status (on set_offer_status) | active, paused |
start, end | YYYY-MM-DD |
limit on get_offers | A whole number, up to 50. Defaults to 10 |
upsell is the offer type the app calls Product Recommendation. The other five match their
names.
Defaults worth knowing
| Tool | If you pass nothing |
|---|---|
get_offers | The 10 most recent offers, any type, any status, newest first |
get_analytics | The last 30 days |
search_products / search_collections | A server-side default page size (ask for a limit if you need a specific count) |
The get_offers default of 10 is the one that quietly misleads. Nothing in the answer says the
list was cut short unless you also read next_cursor. Ask for a limit (up to 50), or page with
after, whenever the total matters.
The same data over REST
A separate, older read-only surface, the Store API, serves some of
this data as plain GET requests for scripts rather than assistants, using the same token. It does
not mirror every MCP tool one for one, see its own endpoints
for what it covers.
Limits
| Read requests | 60 per minute, per connection |
| Writes | 60 per hour, per connection, Read and write only |
| Tokens per store | 5, created on the Developer Tools tab (sign-in connections don't count) |
| Analytics currency | USD, regardless of the store's own currency |
Rate limits are counted per connection, so one tool cannot exhaust another's budget. Over the
limit, the server answers 429 with a Retry-After header; over the hourly write budget, a tool
answers Write limit reached naming the wait.
What is deliberately absent
- No customer data. No names, emails, addresses, or individual orders. The segment tool returns names only.
- No theme or storefront source.
get_setup_statusreads your theme server-side and returns conclusions; the files themselves never leave, and no tool can change your theme. - No orders or billing. Nothing here reads an individual order or changes your subscription.
- No internal identifiers. The store's record id and Shopify access token never leave the server.
- No pricing.
get_plan_statusreports your store's plan and usage, never a price list.