Home

stoq-api-v2

v2.0.0-beta

STOQ's MCP server exposes every v2 API action as a tool, so AI agents can run preorder and back-in-stock operations directly — no glue code. Tool descriptions include the natural-language aliases merchants use, so an agent can map an intent to a single call.

Connect

  • Endpoint: https://app.stoqapp.com/api/v2/external/mcp (JSON-RPC over HTTP)
  • Auth: send your STOQ API key in the X-Auth-Token header — find it in the STOQ app under Settings → Integrations → API Key.

Most MCP clients take a remote server URL plus headers. Generic config:

{
  "mcpServers": {
    "stoq": {
      "url": "https://app.stoqapp.com/api/v2/external/mcp",
      "headers": { "X-Auth-Token": "YOUR_STOQ_API_KEY" }
    }
  }
}

Test the connection

List the available tools with a JSON-RPC tools/list call — you should get back the tools documented below:

curl -X POST https://app.stoqapp.com/api/v2/external/mcp \
  -H "X-Auth-Token: $STOQ_API_KEY" -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

Then call one — e.g. list your preorder offers:

curl -X POST https://app.stoqapp.com/api/v2/external/mcp \
  -H "X-Auth-Token: $STOQ_API_KEY" -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/call",
      "params":{"name":"preorders_offers_list","arguments":{}}}'

Full API guide for agents: GET /api/v2/external/preorders/skill.md.

Tools

back_in_stock_notifications_list

TOOLback_in_stock_notifications_list

List back-in-stock notifications (the send log) in this shop, paginated. Aliases: list notifications, back in stock send log, restock notifications sent, who got notified, notification history, show sent restock alerts. Note: status=blocked surfaces sends stopped by plan limits (with blocked_reason).

Parameters

channelanyemailsmspushargument
statusanysentblockedargument
variant_idanyargument
product_idanyargument
fromanyargument
toanyargument
pageanyargument
per_pageanyargument

Returns

Returns MCP content array (text, image, or embedded resource).

back_in_stock_notifications_list
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "back_in_stock_notifications_list",
    "arguments": {
        "channel": "email",
        "status": "sent"
      }
  }
}
const result = await client.callTool("back_in_stock_notifications_list", {
  "channel": "email",
  "status": "sent"
});
result = await session.call_tool("back_in_stock_notifications_list", arguments={
  "channel": "email",
  "status": "sent"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

back_in_stock_notifications_read

TOOLback_in_stock_notifications_read

Read one back-in-stock notification (a single send-log entry). Aliases: show notification, get notification, look up sent restock alert, notification details.

Parameters

idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

back_in_stock_notifications_read
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "back_in_stock_notifications_read",
    "arguments": {
        "id": "string"
      }
  }
}
const result = await client.callTool("back_in_stock_notifications_read", {
  "id": "string"
});
result = await session.call_tool("back_in_stock_notifications_read", arguments={
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

back_in_stock_reports_list

TOOLback_in_stock_reports_list

List every available back-in-stock report (name, description, aliases, url). Aliases: reports, list reports, available reports, what reports are there, report catalog.

Returns

Returns MCP content array (text, image, or embedded resource).

back_in_stock_reports_list
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "back_in_stock_reports_list",
    "arguments": {}
  }
}
const result = await client.callTool("back_in_stock_reports_list", {});
result = await session.call_tool("back_in_stock_reports_list", arguments={})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

back_in_stock_reports_conversions_read

TOOLback_in_stock_reports_conversions_read

Time-series of orders attributed to back-in-stock alerts and the revenue recovered. Aliases: did the alerts convert, recovered revenue, conversion trend, orders from alerts, revenue recovered over time.

Parameters

fromanyargument
toanyargument
variant_idanyargument
product_idanyargument
channelanyargument
granularityanyargument

Returns

Returns MCP content array (text, image, or embedded resource).

back_in_stock_reports_conversions_read
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "back_in_stock_reports_conversions_read",
    "arguments": {}
  }
}
const result = await client.callTool("back_in_stock_reports_conversions_read", {});
result = await session.call_tool("back_in_stock_reports_conversions_read", arguments={})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

back_in_stock_reports_conversions_export

TOOLback_in_stock_reports_conversions_export

Async CSV export of the back-in-stock conversions time series. Aliases: export conversions, download conversions, conversions csv, recovered revenue csv.

Parameters

fromanyargument
toanyargument
variant_idanyargument
product_idanyargument
channelanyargument
granularityanyargument
sort_byanyargument
directionanyargument
pageanyargument
per_pageanyargument

Returns

Returns MCP content array (text, image, or embedded resource).

back_in_stock_reports_conversions_export
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "back_in_stock_reports_conversions_export",
    "arguments": {}
  }
}
const result = await client.callTool("back_in_stock_reports_conversions_export", {});
result = await session.call_tool("back_in_stock_reports_conversions_export", arguments={})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

back_in_stock_reports_exports_read

TOOLback_in_stock_reports_exports_read

Check the status of an async report export and get the download URL when ready. Aliases: check export status, get export, poll export, download url for export, export status.

Parameters

job_idstringrequiredargument

URL path parameter :job_id

Returns

Returns MCP content array (text, image, or embedded resource).

back_in_stock_reports_exports_read
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "back_in_stock_reports_exports_read",
    "arguments": {
        "job_id": "string"
      }
  }
}
const result = await client.callTool("back_in_stock_reports_exports_read", {
  "job_id": "string"
});
result = await session.call_tool("back_in_stock_reports_exports_read", arguments={
  "job_id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

back_in_stock_reports_notifications_read

TOOLback_in_stock_reports_notifications_read

Time-series of back-in-stock notifications sent, split by channel (email/sms/push). Aliases: notification trend, alerts sent, sends by channel, how many alerts went out, blocked notifications.

Parameters

fromanyargument
toanyargument
variant_idanyargument
product_idanyargument
channelanyargument
granularityanyargument

Returns

Returns MCP content array (text, image, or embedded resource).

back_in_stock_reports_notifications_read
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "back_in_stock_reports_notifications_read",
    "arguments": {}
  }
}
const result = await client.callTool("back_in_stock_reports_notifications_read", {});
result = await session.call_tool("back_in_stock_reports_notifications_read", arguments={})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

back_in_stock_reports_notifications_export

TOOLback_in_stock_reports_notifications_export

Async CSV export of the back-in-stock notifications time series. Aliases: export notifications, download notifications, notifications csv, alerts csv.

Parameters

fromanyargument
toanyargument
variant_idanyargument
product_idanyargument
channelanyargument
granularityanyargument
sort_byanyargument
directionanyargument
pageanyargument
per_pageanyargument

Returns

Returns MCP content array (text, image, or embedded resource).

back_in_stock_reports_notifications_export
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "back_in_stock_reports_notifications_export",
    "arguments": {}
  }
}
const result = await client.callTool("back_in_stock_reports_notifications_export", {});
result = await session.call_tool("back_in_stock_reports_notifications_export", arguments={})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

back_in_stock_reports_products_in_demand_read

TOOLback_in_stock_reports_products_in_demand_read

Ranked variants by back-in-stock demand (pending/total signups, last requested). Aliases: demand report, what should I restock, most wanted products, top requested variants, products in demand, restock priorities.

Parameters

fromanyargument
toanyargument
variant_idanyargument
product_idanyargument
channelanyargument
sort_byanyargument
directionanyargument
pageanyargument
per_pageanyargument

Returns

Returns MCP content array (text, image, or embedded resource).

back_in_stock_reports_products_in_demand_read
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "back_in_stock_reports_products_in_demand_read",
    "arguments": {}
  }
}
const result = await client.callTool("back_in_stock_reports_products_in_demand_read", {});
result = await session.call_tool("back_in_stock_reports_products_in_demand_read", arguments={})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

back_in_stock_reports_products_in_demand_export

TOOLback_in_stock_reports_products_in_demand_export

Async CSV export of the back-in-stock products-in-demand report. Aliases: export demand report, download products in demand, demand csv, restock list csv.

Parameters

fromanyargument
toanyargument
variant_idanyargument
product_idanyargument
channelanyargument
granularityanyargument
sort_byanyargument
directionanyargument
pageanyargument
per_pageanyargument

Returns

Returns MCP content array (text, image, or embedded resource).

back_in_stock_reports_products_in_demand_export
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "back_in_stock_reports_products_in_demand_export",
    "arguments": {}
  }
}
const result = await client.callTool("back_in_stock_reports_products_in_demand_export", {});
result = await session.call_tool("back_in_stock_reports_products_in_demand_export", arguments={})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

back_in_stock_reports_signups_read

TOOLback_in_stock_reports_signups_read

Time-series of back-in-stock signups created (day/week/month). Aliases: signup trend, signups over time, waitlist growth, new signups, daily signups.

Parameters

fromanyargument
toanyargument
variant_idanyargument
product_idanyargument
channelanyargument
granularityanyargument

Returns

Returns MCP content array (text, image, or embedded resource).

back_in_stock_reports_signups_read
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "back_in_stock_reports_signups_read",
    "arguments": {}
  }
}
const result = await client.callTool("back_in_stock_reports_signups_read", {});
result = await session.call_tool("back_in_stock_reports_signups_read", arguments={})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

back_in_stock_reports_signups_export

TOOLback_in_stock_reports_signups_export

Async CSV export of the back-in-stock signups time series. Aliases: export signups, download signups, signups csv, waitlist csv.

Parameters

fromanyargument
toanyargument
variant_idanyargument
product_idanyargument
channelanyargument
granularityanyargument
sort_byanyargument
directionanyargument
pageanyargument
per_pageanyargument

Returns

Returns MCP content array (text, image, or embedded resource).

back_in_stock_reports_signups_export
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "back_in_stock_reports_signups_export",
    "arguments": {}
  }
}
const result = await client.callTool("back_in_stock_reports_signups_export", {});
result = await session.call_tool("back_in_stock_reports_signups_export", arguments={})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

back_in_stock_reports_summary_read

TOOLback_in_stock_reports_summary_read

High-level overview of back-in-stock activity over a date window. Aliases: summary, overview, how is back in stock doing, how many people are waiting, waitlist size, dashboard stats.

Parameters

fromanyargument
toanyargument
variant_idanyargument
product_idanyargument
channelanyargument

Returns

Returns MCP content array (text, image, or embedded resource).

back_in_stock_reports_summary_read
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "back_in_stock_reports_summary_read",
    "arguments": {}
  }
}
const result = await client.callTool("back_in_stock_reports_summary_read", {});
result = await session.call_tool("back_in_stock_reports_summary_read", arguments={})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

back_in_stock_reports_summary_export

TOOLback_in_stock_reports_summary_export

Async CSV export of the back-in-stock summary report. Aliases: export summary, download summary, summary csv, export overview.

Parameters

fromanyargument
toanyargument
variant_idanyargument
product_idanyargument
channelanyargument
granularityanyargument
sort_byanyargument
directionanyargument
pageanyargument
per_pageanyargument

Returns

Returns MCP content array (text, image, or embedded resource).

back_in_stock_reports_summary_export
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "back_in_stock_reports_summary_export",
    "arguments": {}
  }
}
const result = await client.callTool("back_in_stock_reports_summary_export", {});
result = await session.call_tool("back_in_stock_reports_summary_export", arguments={})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

back_in_stock_settings_update

TOOLback_in_stock_settings_update

Update back-in-stock settings for the shop. Aliases: edit settings, change settings, modify settings, update back in stock settings, configure notifications. Note: Accepts any combination of capability blobs: channels, delivery, compliance, tagging, alerts — deep partial, delegated to the capability PATCHes, errors accumulated. Boolean toggles are set via this PATCH (or the capability PATCH): channels.email.enabled, channels.sms.enabled, channels.push.enabled, delivery.batching.enabled, delivery.locations.filter_enabled, delivery.any_variant.enabled, compliance.optin_required, tagging.order_tags.enabled, alerts.signups_threshold.notify, alerts.scheduled_reports.daily, alerts.scheduled_reports.weekly, alerts.scheduled_reports.monthly — e.g. { channels: { sms: { enabled: true } } }.

Parameters

channelsanyargument
deliveryanyargument
complianceanyargument
tagginganyargument
alertsanyargument

Returns

Returns MCP content array (text, image, or embedded resource).

back_in_stock_settings_update
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "back_in_stock_settings_update",
    "arguments": {}
  }
}
const result = await client.callTool("back_in_stock_settings_update", {});
result = await session.call_tool("back_in_stock_settings_update", arguments={})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

back_in_stock_settings_read

TOOLback_in_stock_settings_read

Read all back-in-stock settings for the shop. Aliases: get settings, show settings, view settings, back in stock settings, notification settings, settings.

Returns

Returns MCP content array (text, image, or embedded resource).

back_in_stock_settings_read
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "back_in_stock_settings_read",
    "arguments": {}
  }
}
const result = await client.callTool("back_in_stock_settings_read", {});
result = await session.call_tool("back_in_stock_settings_read", arguments={})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

back_in_stock_settings_alerts_read

TOOLback_in_stock_settings_alerts_read

Read back-in-stock merchant alert and scheduled report settings. Aliases: get alert settings, show alerts, view signup threshold, view scheduled reports, alerts.

Returns

Returns MCP content array (text, image, or embedded resource).

back_in_stock_settings_alerts_read
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "back_in_stock_settings_alerts_read",
    "arguments": {}
  }
}
const result = await client.callTool("back_in_stock_settings_alerts_read", {});
result = await session.call_tool("back_in_stock_settings_alerts_read", arguments={})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

back_in_stock_settings_alerts_update

TOOLback_in_stock_settings_alerts_update

Update back-in-stock merchant alert and scheduled report settings. Aliases: edit alert settings, change alert settings, set signup threshold, notify me on high demand, enable signup threshold alerts, disable signup threshold alerts, alert me when a product gets lots of signups, enable daily report, enable weekly report, enable monthly report, disable daily report, disable weekly report, disable monthly report, schedule reports, turn off report emails. Note: Toggles set via this PATCH: signups_threshold.notify, scheduled_reports.daily, scheduled_reports.weekly, scheduled_reports.monthly — e.g. { scheduled_reports: { weekly: true } }. signups_threshold.count is the per-variant signup count that triggers the merchant alert email.

Parameters

signups_thresholdanyargument
scheduled_reportsanyargument

Returns

Returns MCP content array (text, image, or embedded resource).

back_in_stock_settings_alerts_update
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "back_in_stock_settings_alerts_update",
    "arguments": {}
  }
}
const result = await client.callTool("back_in_stock_settings_alerts_update", {});
result = await session.call_tool("back_in_stock_settings_alerts_update", arguments={})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

back_in_stock_settings_channels_update

TOOLback_in_stock_settings_channels_update

Update back-in-stock notification channel toggles. Aliases: edit channels, change channels, modify channels, enable email notifications, turn on email alerts, disable email notifications, turn off email alerts, enable sms, turn on SMS alerts, enable text notifications, disable sms, turn off SMS alerts, stop text notifications, enable push notifications, turn on web push, disable push notifications, turn off web push. Note: Channel toggles are set via this PATCH: email.enabled, sms.enabled, push.enabled — e.g. { sms: { enabled: true } }. Enabling SMS for the first time triggers a restricted-content verification check; sends may be held until the shop is verified.

Parameters

emailanyargument
smsanyargument
pushanyargument

Returns

Returns MCP content array (text, image, or embedded resource).

back_in_stock_settings_channels_update
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "back_in_stock_settings_channels_update",
    "arguments": {}
  }
}
const result = await client.callTool("back_in_stock_settings_channels_update", {});
result = await session.call_tool("back_in_stock_settings_channels_update", arguments={})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

back_in_stock_settings_channels_read

TOOLback_in_stock_settings_channels_read

Read back-in-stock notification channel settings. Aliases: get channels, show channels, view notification channels, which channels are enabled, channels.

Returns

Returns MCP content array (text, image, or embedded resource).

back_in_stock_settings_channels_read
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "back_in_stock_settings_channels_read",
    "arguments": {}
  }
}
const result = await client.callTool("back_in_stock_settings_channels_read", {});
result = await session.call_tool("back_in_stock_settings_channels_read", arguments={})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

back_in_stock_settings_compliance_update

TOOLback_in_stock_settings_compliance_update

Update back-in-stock compliance settings (double opt-in). Aliases: edit compliance settings, change compliance settings, require double opt-in, enable double opt-in, turn on double opt-in, require opt-in confirmation, gdpr opt-in, disable double opt-in, turn off double opt-in, remove opt-in confirmation. Note: The double-opt-in toggle is set via this PATCH: optin_required — e.g. { optin_required: true }. When enabled, signups must confirm via email before they are eligible for notifications (GDPR double opt-in).

Parameters

optin_requiredanyargument

Returns

Returns MCP content array (text, image, or embedded resource).

back_in_stock_settings_compliance_update
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "back_in_stock_settings_compliance_update",
    "arguments": {}
  }
}
const result = await client.callTool("back_in_stock_settings_compliance_update", {});
result = await session.call_tool("back_in_stock_settings_compliance_update", arguments={})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

back_in_stock_settings_compliance_read

TOOLback_in_stock_settings_compliance_read

Read back-in-stock compliance settings (double opt-in). Aliases: get compliance settings, show compliance, view opt-in settings, is double opt-in enabled, compliance.

Returns

Returns MCP content array (text, image, or embedded resource).

back_in_stock_settings_compliance_read
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "back_in_stock_settings_compliance_read",
    "arguments": {}
  }
}
const result = await client.callTool("back_in_stock_settings_compliance_read", {});
result = await session.call_tool("back_in_stock_settings_compliance_read", arguments={})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

back_in_stock_settings_delivery_read

TOOLback_in_stock_settings_delivery_read

Read back-in-stock delivery settings (batching, stock threshold, locations, any-variant). Aliases: get delivery settings, show delivery settings, view batching, view stock threshold, view location filter, delivery.

Returns

Returns MCP content array (text, image, or embedded resource).

back_in_stock_settings_delivery_read
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "back_in_stock_settings_delivery_read",
    "arguments": {}
  }
}
const result = await client.callTool("back_in_stock_settings_delivery_read", {});
result = await session.call_tool("back_in_stock_settings_delivery_read", arguments={})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

back_in_stock_settings_delivery_update

TOOLback_in_stock_settings_delivery_update

Update back-in-stock delivery settings (batching, stock threshold, locations, any-variant). Aliases: edit delivery settings, change delivery settings, batch notifications, enable batching, turn on batching, disable batching, turn off batching, send all at once, set batch size, set batching multiplier, set batching mode, set wait between batches, set stock threshold, set minimum stock to notify, only notify when 5 in stock, require minimum quantity before notifying, filter by location, enable location filter, disable location filter, set notification locations, only count inventory at locations, notify for any variant, enable any variant notifications, disable any variant notifications, notify when any variant restocks. Note: Deep partial. Toggles set via this PATCH: batching.enabled, locations.filter_enabled, any_variant.enabled — e.g. { batching: { enabled: true } }. batching.mode is an enum: 'multiplier' (batch size = restocked quantity x batching.multiplier) or 'fixed' (batch size = batching.batch_size); batching.wait_hours is the wait between batches. stock_threshold is the minimum restocked quantity before notifications send (>= 1). locations.location_ids and any_variant.product_ids are arrays of Shopify numeric ids and are replaced wholesale when present.

Parameters

batchinganyargument
stock_thresholdanyargument
locationsanyargument
any_variantanyargument

Returns

Returns MCP content array (text, image, or embedded resource).

back_in_stock_settings_delivery_update
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "back_in_stock_settings_delivery_update",
    "arguments": {}
  }
}
const result = await client.callTool("back_in_stock_settings_delivery_update", {});
result = await session.call_tool("back_in_stock_settings_delivery_update", arguments={})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

back_in_stock_settings_tagging_read

TOOLback_in_stock_settings_tagging_read

Read back-in-stock order tagging settings. Aliases: get tagging settings, show order tagging, view order tag, what tag is applied to recovered orders, tagging.

Returns

Returns MCP content array (text, image, or embedded resource).

back_in_stock_settings_tagging_read
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "back_in_stock_settings_tagging_read",
    "arguments": {}
  }
}
const result = await client.callTool("back_in_stock_settings_tagging_read", {});
result = await session.call_tool("back_in_stock_settings_tagging_read", arguments={})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

back_in_stock_settings_tagging_update

TOOLback_in_stock_settings_tagging_update

Update back-in-stock order tagging settings. Aliases: edit tagging settings, change tagging settings, tag recovered orders, enable order tagging, turn on order tagging, disable order tagging, turn off order tagging, set back in stock order tag, change order tag, rename order tag. Note: The toggle is set via this PATCH: order_tags.enabled — e.g. { order_tags: { enabled: true } }. order_tags.tag is the single tag applied to Shopify orders attributed to a back-in-stock notification (default 'STOQ-back-in-stock').

Parameters

order_tagsanyargument

Returns

Returns MCP content array (text, image, or embedded resource).

back_in_stock_settings_tagging_update
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "back_in_stock_settings_tagging_update",
    "arguments": {}
  }
}
const result = await client.callTool("back_in_stock_settings_tagging_update", {});
result = await session.call_tool("back_in_stock_settings_tagging_update", arguments={})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

back_in_stock_signups_create

TOOLback_in_stock_signups_create

Create a back-in-stock signup (add a customer to the waitlist for a variant). Aliases: create signup, add to waitlist, add customer to the notify me list, register a restock alert, sign someone up for back in stock. Note: email is required for the email channel, phone for sms. shopify_product_id is resolved from the variant when omitted. Returns 409 when a pending signup already exists for the same contact + variant + channel.

Parameters

channelanyemailsmsrequiredargument
shopify_variant_idanyrequiredargument
quantityintegerargument
shopify_product_idanyargument
emailanyargument
phoneanyargument
nameanyargument

Returns

Returns MCP content array (text, image, or embedded resource).

back_in_stock_signups_create
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "back_in_stock_signups_create",
    "arguments": {
        "channel": "email",
        "quantity": 0
      }
  }
}
const result = await client.callTool("back_in_stock_signups_create", {
  "channel": "email",
  "quantity": 0
});
result = await session.call_tool("back_in_stock_signups_create", arguments={
  "channel": "email",
  "quantity": 0
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

back_in_stock_signups_list

TOOLback_in_stock_signups_list

List back-in-stock signups (the waitlist) in this shop, paginated. Aliases: list signups, waitlist, show the waitlist, notify me list, who's waiting, back in stock signups, list waitlist entries, restock signups, customers waiting for restock. Note: status compiles notified_at / unsubscribed_at / blocked_at into one lifecycle value; email and phone filters match partial values on the signup or its customer.

Parameters

channelanyemailsmspushargument
statusanypendingnotifiedunsubscribedargument
variant_idanyargument
product_idanyargument
emailanyargument
phoneanyargument
fromanyargument
toanyargument
pageanyargument
per_pageanyargument

Returns

Returns MCP content array (text, image, or embedded resource).

back_in_stock_signups_list
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "back_in_stock_signups_list",
    "arguments": {
        "channel": "email",
        "status": "pending"
      }
  }
}
const result = await client.callTool("back_in_stock_signups_list", {
  "channel": "email",
  "status": "pending"
});
result = await session.call_tool("back_in_stock_signups_list", arguments={
  "channel": "email",
  "status": "pending"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

back_in_stock_signups_read

TOOLback_in_stock_signups_read

Read one back-in-stock signup's full representation. Aliases: show signup, get signup, look up waitlist entry, view restock signup, signup details.

Parameters

idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

back_in_stock_signups_read
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "back_in_stock_signups_read",
    "arguments": {
        "id": "string"
      }
  }
}
const result = await client.callTool("back_in_stock_signups_read", {
  "id": "string"
});
result = await session.call_tool("back_in_stock_signups_read", arguments={
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

back_in_stock_signups_delete

TOOLback_in_stock_signups_delete

Delete a pending back-in-stock signup (remove the customer from the waitlist). Aliases: delete signup, remove from waitlist, remove waitlist entry, cancel restock alert, take customer off the notify me list. Note: Pending signups only; deleting an already-notified signup returns 409.

Parameters

idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

back_in_stock_signups_delete
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "back_in_stock_signups_delete",
    "arguments": {
        "id": "string"
      }
  }
}
const result = await client.callTool("back_in_stock_signups_delete", {
  "id": "string"
});
result = await session.call_tool("back_in_stock_signups_delete", arguments={
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

back_in_stock_signups_notify

TOOLback_in_stock_signups_notify

Send the back-in-stock notification for one signup now, regardless of stock state. Aliases: notify signup, send the restock email, notify this customer, send back in stock notification, resend restock notification. Note: 409 when the signup was already notified and allow_resend is not set.

Parameters

allow_resendanyargument
idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

back_in_stock_signups_notify
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "back_in_stock_signups_notify",
    "arguments": {
        "id": "string"
      }
  }
}
const result = await client.callTool("back_in_stock_signups_notify", {
  "id": "string"
});
result = await session.call_tool("back_in_stock_signups_notify", arguments={
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

back_in_stock_signups_bulk_delete

TOOLback_in_stock_signups_bulk_delete

Delete up to 1000 pending back-in-stock signups in one request. Aliases: bulk delete signups, clear the waitlist, delete waitlist entries, remove signups in bulk, purge pending restock signups. Note: Pending-only: 422 listing the offending ids when any signup was already notified.

Parameters

signup_idsArray<string>requiredargument

Returns

Returns MCP content array (text, image, or embedded resource).

back_in_stock_signups_bulk_delete
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "back_in_stock_signups_bulk_delete",
    "arguments": {
        "signup_ids": [
          "string"
        ]
      }
  }
}
const result = await client.callTool("back_in_stock_signups_bulk_delete", {
  "signup_ids": [
    "string"
  ]
});
result = await session.call_tool("back_in_stock_signups_bulk_delete", arguments={
  "signup_ids": [
    "string"
  ]
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

back_in_stock_signups_bulk_notify

TOOLback_in_stock_signups_bulk_notify

Send back-in-stock notifications for up to 1000 signups in one request. Aliases: bulk notify signups, notify the waitlist, notify everyone waiting, send restock emails to the whole waitlist, bulk send back in stock notifications. Note: Responds 200 when all succeed, 207 with { success, failed } on partial failure. Already-notified signups fail unless allow_resend is set.

Parameters

signup_idsArray<string>requiredargument
allow_resendanyargument

Returns

Returns MCP content array (text, image, or embedded resource).

back_in_stock_signups_bulk_notify
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "back_in_stock_signups_bulk_notify",
    "arguments": {
        "signup_ids": [
          "string"
        ]
      }
  }
}
const result = await client.callTool("back_in_stock_signups_bulk_notify", {
  "signup_ids": [
    "string"
  ]
});
result = await session.call_tool("back_in_stock_signups_bulk_notify", arguments={
  "signup_ids": [
    "string"
  ]
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

back_in_stock_signups_transfer

TOOLback_in_stock_signups_transfer

Move back-in-stock signups from one variant to another (variant merges or replacements). Aliases: transfer signups, move the waitlist, move signups to another variant, merge waitlists, shift restock signups to a new variant. Note: scope picks which signups move: pending (default), notified, or all. Signups that would duplicate a pending signup on the target variant are dropped. from_shopify_product_id is resolved from the source variant when omitted.

Parameters

from_shopify_variant_idanyrequiredargument
to_shopify_variant_idanyrequiredargument
to_shopify_product_idanyrequiredargument
scopeanypendingnotifiedallargument
from_shopify_product_idanyargument

Returns

Returns MCP content array (text, image, or embedded resource).

back_in_stock_signups_transfer
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "back_in_stock_signups_transfer",
    "arguments": {
        "scope": "pending"
      }
  }
}
const result = await client.callTool("back_in_stock_signups_transfer", {
  "scope": "pending"
});
result = await session.call_tool("back_in_stock_signups_transfer", arguments={
  "scope": "pending"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_offers_list

TOOLpreorders_offers_list

List preorder offers in this shop, paginated. Aliases: list offers, show all offers, preorder offers, all preorders.

Parameters

pageanyargument
per_pageanyargument

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_offers_list
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_offers_list",
    "arguments": {}
  }
}
const result = await client.callTool("preorders_offers_list", {});
result = await session.call_tool("preorders_offers_list", arguments={})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_offers_create

TOOLpreorders_offers_create

Create a new preorder offer. Aliases: new offer, make a preorder, create preorder offer.

Parameters

nameanyargument
internal_nameanyargument

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_offers_create
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_offers_create",
    "arguments": {}
  }
}
const result = await client.callTool("preorders_offers_create", {});
result = await session.call_tool("preorders_offers_create", arguments={})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_offers_update

TOOLpreorders_offers_update

Update top-level fields of a preorder offer. Aliases: edit offer, modify offer, change offer settings.

Parameters

nameanyargument
internal_nameanyargument
idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_offers_update
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_offers_update",
    "arguments": {
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_offers_update", {
  "id": "string"
});
result = await session.call_tool("preorders_offers_update", arguments={
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_offers_read

TOOLpreorders_offers_read

Read a preorder offer's full representation. Aliases: show offer, get preorder offer, look up offer, view offer.

Parameters

idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_offers_read
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_offers_read",
    "arguments": {
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_offers_read", {
  "id": "string"
});
result = await session.call_tool("preorders_offers_read", arguments={
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_offers_advanced_update

TOOLpreorders_offers_advanced_update

Update advanced (power-user) settings on a preorder offer. Aliases: edit advanced, change advanced settings, modify advanced, enable line item property, include in line item properties, add cart property, show on cart line, disable line item property, exclude from line item properties, remove cart property, hide from cart line, clear button text override, remove button text override, reset button text for state, use default button text. Note: Deep partial. Toggles and clears are done via this PATCH: the line-item-property toggles are line_item_properties.include_shipping_text, .include_payment_breakdown, and .include_acknowledgement (true/false each). button_text_overrides is deep-partial per state — send null to clear an override for one state, e.g. { "button_text_overrides": { "out_of_stock": null } } removes that override (the read shape still emits all three states, with null for unset). custom_css is cleared by sending an empty string or null.

Parameters

line_item_propertiesanyargument
button_text_overridesanyargument
use_shopify_selling_plananyargument
custom_cssanyargument
idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_offers_advanced_update
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_offers_advanced_update",
    "arguments": {
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_offers_advanced_update", {
  "id": "string"
});
result = await session.call_tool("preorders_offers_advanced_update", arguments={
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_offers_advanced_read

TOOLpreorders_offers_advanced_read

Read power-user settings for a preorder offer (line item properties, button text overrides, Shopify selling plan attachment). Aliases: get advanced, show advanced settings, view advanced settings, view line item properties, view advanced.

Parameters

idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_offers_advanced_read
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_offers_advanced_read",
    "arguments": {
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_offers_advanced_read", {
  "id": "string"
});
result = await session.call_tool("preorders_offers_advanced_read", arguments={
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_offers_advanced_attach_to_shopify_selling_plan

TOOLpreorders_offers_advanced_attach_to_shopify_selling_plan

Re-attach the offer to a Shopify selling plan group (resume syncing). Aliases: attach to shopify selling plan, use shopify selling plans, resume shopify sync, reattach to shopify.

Parameters

idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_offers_advanced_attach_to_shopify_selling_plan
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_offers_advanced_attach_to_shopify_selling_plan",
    "arguments": {
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_offers_advanced_attach_to_shopify_selling_plan", {
  "id": "string"
});
result = await session.call_tool("preorders_offers_advanced_attach_to_shopify_selling_plan", arguments={
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_offers_advanced_detach_from_shopify_selling_plan

TOOLpreorders_offers_advanced_detach_from_shopify_selling_plan

Detach the offer from Shopify selling plan groups; Stoq continues to manage it via the storefront integration. Aliases: detach from shopify selling plan, stop using shopify selling plans, manage selling plan internally, bypass shopify selling plan. Note: Strongly discouraged for most merchants. Breaks Shopify-native integrations like checkout selling plan display and third-party subscription apps. Does not delete the existing Shopify selling plan group — it just stops syncing.

Parameters

idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_offers_advanced_detach_from_shopify_selling_plan
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_offers_advanced_detach_from_shopify_selling_plan",
    "arguments": {
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_offers_advanced_detach_from_shopify_selling_plan", {
  "id": "string"
});
result = await session.call_tool("preorders_offers_advanced_detach_from_shopify_selling_plan", arguments={
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_offers_advanced_set_button_text_override

TOOLpreorders_offers_advanced_set_button_text_override

Override the widget button text for one state (before_launch, after_launch, or out_of_stock). Aliases: set button text override, override button text, change button text for state, set state button text.

Parameters

stateanybefore_launchafter_launchout_of_stockrequiredargument
textanyrequiredargument
idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_offers_advanced_set_button_text_override
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_offers_advanced_set_button_text_override",
    "arguments": {
        "state": "before_launch",
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_offers_advanced_set_button_text_override", {
  "state": "before_launch",
  "id": "string"
});
result = await session.call_tool("preorders_offers_advanced_set_button_text_override", arguments={
  "state": "before_launch",
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_offers_advanced_set_custom_css

TOOLpreorders_offers_advanced_set_custom_css

Set custom CSS overrides for this offer's storefront widget. Send an empty string to clear. Aliases: set custom css, add custom css, override widget css, customize widget styles, clear custom css.

Parameters

cssanyargument
idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_offers_advanced_set_custom_css
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_offers_advanced_set_custom_css",
    "arguments": {
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_offers_advanced_set_custom_css", {
  "id": "string"
});
result = await session.call_tool("preorders_offers_advanced_set_custom_css", arguments={
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_offers_advanced_set_custom_line_item_property

TOOLpreorders_offers_advanced_set_custom_line_item_property

Set a free-text custom line item property added to every preorder cart line. Aliases: set custom line item property, set custom cart property, set custom cart text, add custom cart text.

Parameters

textanyargument
idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_offers_advanced_set_custom_line_item_property
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_offers_advanced_set_custom_line_item_property",
    "arguments": {
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_offers_advanced_set_custom_line_item_property", {
  "id": "string"
});
result = await session.call_tool("preorders_offers_advanced_set_custom_line_item_property", arguments={
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_offers_checkout_read

TOOLpreorders_offers_checkout_read

Read checkout settings for a preorder offer. Aliases: get checkout settings, show checkout, view terms, view mixed cart, view order tags, checkout.

Parameters

idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_offers_checkout_read
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_offers_checkout_read",
    "arguments": {
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_offers_checkout_read", {
  "id": "string"
});
result = await session.call_tool("preorders_offers_checkout_read", arguments={
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_offers_checkout_update

TOOLpreorders_offers_checkout_update

Update checkout settings on a preorder offer. Aliases: edit checkout, change checkout settings, modify checkout, enable terms, require terms, require acknowledgement, show terms checkbox, turn on terms, disable terms, hide terms checkbox, remove terms requirement, turn off terms, enable disable until acknowledged, require acknowledgement before buying, lock button until terms accepted, grey out button until terms checked, disable disable until acknowledged, don't lock button on terms, allow buying without acknowledging first, keep button enabled before terms, include terms in line item properties, record terms acceptance on order, add acknowledgement to line items, show terms accepted on order, allow mixed cart, permit mixed cart, enable mixed cart, let preorders mix with regular items, block mixed cart, disable mixed cart, prevent mixed cart, force separate checkout. Note: Boolean toggles are set via this PATCH: terms.enabled, terms.disable_button_until_acknowledged, terms.include_in_line_item_properties, mixed_cart.allowed — this PATCH is how you turn these on/off, e.g. { terms: { enabled: true } } or { mixed_cart: { allowed: false } }.

Parameters

termsanyargument
mixed_cartanyargument
order_tagsanyargument
idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_offers_checkout_update
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_offers_checkout_update",
    "arguments": {
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_offers_checkout_update", {
  "id": "string"
});
result = await session.call_tool("preorders_offers_checkout_update", arguments={
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_offers_checkout_add_order_tag

TOOLpreorders_offers_checkout_add_order_tag

Add a tag to the set applied to orders containing this offer. Aliases: add order tag, add tag to preorder orders, append order tag.

Parameters

taganyrequiredargument
idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_offers_checkout_add_order_tag
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_offers_checkout_add_order_tag",
    "arguments": {
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_offers_checkout_add_order_tag", {
  "id": "string"
});
result = await session.call_tool("preorders_offers_checkout_add_order_tag", arguments={
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_offers_checkout_remove_order_tag

TOOLpreorders_offers_checkout_remove_order_tag

Remove a tag from the set applied to orders containing this offer. Aliases: remove order tag, delete order tag, drop order tag.

Parameters

taganyrequiredargument
idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_offers_checkout_remove_order_tag
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_offers_checkout_remove_order_tag",
    "arguments": {
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_offers_checkout_remove_order_tag", {
  "id": "string"
});
result = await session.call_tool("preorders_offers_checkout_remove_order_tag", arguments={
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_offers_checkout_set_mixed_cart_error_message

TOOLpreorders_offers_checkout_set_mixed_cart_error_message

Set the error message shown when a blocked mixed cart reaches checkout. Aliases: set mixed cart error message, change mixed cart message, set mixed cart warning, customize mixed cart error.

Parameters

messageanyrequiredargument
idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_offers_checkout_set_mixed_cart_error_message
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_offers_checkout_set_mixed_cart_error_message",
    "arguments": {
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_offers_checkout_set_mixed_cart_error_message", {
  "id": "string"
});
result = await session.call_tool("preorders_offers_checkout_set_mixed_cart_error_message", arguments={
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_offers_checkout_set_order_tags

TOOLpreorders_offers_checkout_set_order_tags

Replace the set of tags applied to orders containing this offer. Aliases: set order tags, replace order tags, change order tags, set tags on preorder orders.

Parameters

tagsanyargument
idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_offers_checkout_set_order_tags
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_offers_checkout_set_order_tags",
    "arguments": {
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_offers_checkout_set_order_tags", {
  "id": "string"
});
result = await session.call_tool("preorders_offers_checkout_set_order_tags", arguments={
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_offers_checkout_set_terms_text

TOOLpreorders_offers_checkout_set_terms_text

Set the terms-acceptance text shown next to the checkbox. Aliases: set terms text, change terms text, update terms, change acknowledgement text, set fine print.

Parameters

textanyrequiredargument
idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_offers_checkout_set_terms_text
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_offers_checkout_set_terms_text",
    "arguments": {
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_offers_checkout_set_terms_text", {
  "id": "string"
});
result = await session.call_tool("preorders_offers_checkout_set_terms_text", arguments={
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_offers_countdown_update

TOOLpreorders_offers_countdown_update

Update countdown timer settings on a preorder offer. Aliases: edit countdown, change timer, modify countdown settings, enable countdown, show timer, turn on countdown, enable countdown timer, disable countdown, hide timer, turn off countdown, disable countdown timer, set countdown text, set timer text, change countdown label, set timer label. Note: Deep partial. countdown.enabled is toggled via this PATCH (enabled true/false); text is an alias for ends_text — both write the same column, and an explicit ends_text wins when both are sent.

Parameters

enabledanyargument
modeanyargument
custom_end_dateanyargument
custom_start_dateanyargument
formatanyargument
textanyargument
starts_textanyargument
ends_textanyargument
unit_labelsanyargument
styleanyargument
idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_offers_countdown_update
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_offers_countdown_update",
    "arguments": {
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_offers_countdown_update", {
  "id": "string"
});
result = await session.call_tool("preorders_offers_countdown_update", arguments={
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_offers_countdown_read

TOOLpreorders_offers_countdown_read

Read the countdown timer configuration for a preorder offer. Aliases: get countdown, show timer, view countdown timer, view timer settings, countdown settings.

Parameters

idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_offers_countdown_read
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_offers_countdown_read",
    "arguments": {
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_offers_countdown_read", {
  "id": "string"
});
result = await session.call_tool("preorders_offers_countdown_read", arguments={
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_offers_countdown_set_custom_end_date

TOOLpreorders_offers_countdown_set_custom_end_date

Set the custom end date for the countdown timer. Aliases: set custom end date, set timer end date, change timer deadline. Note: Has no visible effect unless mode is to_custom_date.

Parameters

dateanyrequiredargument
idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_offers_countdown_set_custom_end_date
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_offers_countdown_set_custom_end_date",
    "arguments": {
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_offers_countdown_set_custom_end_date", {
  "id": "string"
});
result = await session.call_tool("preorders_offers_countdown_set_custom_end_date", arguments={
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_offers_countdown_set_ends_text

TOOLpreorders_offers_countdown_set_ends_text

Set the text shown next to the countdown timer when the offer is closing. Aliases: set ends text, set timer end text, set 'ends in' text.

Parameters

textanyrequiredargument
idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_offers_countdown_set_ends_text
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_offers_countdown_set_ends_text",
    "arguments": {
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_offers_countdown_set_ends_text", {
  "id": "string"
});
result = await session.call_tool("preorders_offers_countdown_set_ends_text", arguments={
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_offers_countdown_set_mode

TOOLpreorders_offers_countdown_set_mode

Set whether the countdown timer follows the offer's schedule or a custom date. Aliases: set countdown mode, change timer mode, use schedule for timer, use custom date for timer.

Parameters

modeanyto_schedule_endto_custom_daterequiredargument
idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_offers_countdown_set_mode
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_offers_countdown_set_mode",
    "arguments": {
        "mode": "to_schedule_end",
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_offers_countdown_set_mode", {
  "mode": "to_schedule_end",
  "id": "string"
});
result = await session.call_tool("preorders_offers_countdown_set_mode", arguments={
  "mode": "to_schedule_end",
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_offers_countdown_set_starts_text

TOOLpreorders_offers_countdown_set_starts_text

Set the text shown before the countdown timer when the offer hasn't started yet. Aliases: set starts text, set timer pre-launch text, set 'starts in' text.

Parameters

textanyrequiredargument
idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_offers_countdown_set_starts_text
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_offers_countdown_set_starts_text",
    "arguments": {
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_offers_countdown_set_starts_text", {
  "id": "string"
});
result = await session.call_tool("preorders_offers_countdown_set_starts_text", arguments={
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_offers_countdown_set_style

TOOLpreorders_offers_countdown_set_style

Set the countdown timer's visual style (type, colors, border radius). Aliases: set timer style, change timer style, set countdown style, change timer colors.

Parameters

typeanyargument
text_coloranyargument
background_coloranyargument
border_radiusanyargument
idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_offers_countdown_set_style
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_offers_countdown_set_style",
    "arguments": {
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_offers_countdown_set_style", {
  "id": "string"
});
result = await session.call_tool("preorders_offers_countdown_set_style", arguments={
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_offers_countdown_set_unit_labels

TOOLpreorders_offers_countdown_set_unit_labels

Set the unit labels for the countdown timer (Days/Hours/Mins/Secs). Aliases: set unit labels, change timer labels, set countdown unit text, change timer unit text.

Parameters

daysanyargument
hoursanyargument
minutesanyargument
secondsanyargument
idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_offers_countdown_set_unit_labels
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_offers_countdown_set_unit_labels",
    "arguments": {
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_offers_countdown_set_unit_labels", {
  "id": "string"
});
result = await session.call_tool("preorders_offers_countdown_set_unit_labels", arguments={
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_offers_disable

TOOLpreorders_offers_disable

Disable (pause) a preorder offer. Optionally flip attached variants' inventory policy back to DENY. Aliases: pause, turn off, deactivate, stop offer, end preorder, disable and stop overselling, close out preorder. Note: Variants are left at their existing inventory policy unless update_inventory_policy: true is passed.

Parameters

update_inventory_policyanyargument
variant_idsanyargument
idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_offers_disable
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_offers_disable",
    "arguments": {
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_offers_disable", {
  "id": "string"
});
result = await session.call_tool("preorders_offers_disable", arguments={
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_offers_discard

TOOLpreorders_offers_discard

Discard (soft-delete) a preorder offer. Aliases: delete, remove, archive, trash, soft delete. Note: Recoverable via restore indefinitely. Discarded offers are never hard-deleted.

Parameters

idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_offers_discard
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_offers_discard",
    "arguments": {
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_offers_discard", {
  "id": "string"
});
result = await session.call_tool("preorders_offers_discard", arguments={
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_offers_enable

TOOLpreorders_offers_enable

Enable a preorder offer. Optionally flip attached variants' inventory policy to CONTINUE. Aliases: turn on, activate, launch, go live, start offer. Note: Variants are left at their existing inventory policy unless update_inventory_policy: true is passed.

Parameters

update_inventory_policyanyargument
variant_idsanyargument
idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_offers_enable
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_offers_enable",
    "arguments": {
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_offers_enable", {
  "id": "string"
});
result = await session.call_tool("preorders_offers_enable", arguments={
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_offers_integrations_read

TOOLpreorders_offers_integrations_read

Read integration settings for a preorder offer (POS, B2B). Aliases: get integrations, show integrations, view pos settings, view b2b settings, integration settings.

Parameters

idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_offers_integrations_read
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_offers_integrations_read",
    "arguments": {
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_offers_integrations_read", {
  "id": "string"
});
result = await session.call_tool("preorders_offers_integrations_read", arguments={
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_offers_integrations_update

TOOLpreorders_offers_integrations_update

Update integration settings on a preorder offer. Aliases: edit integrations, change integration settings, modify integrations, enable pos, turn on pos, allow in pos, enable point of sale, disable pos, turn off pos, block from pos, disable point of sale, enable pos skip inventory check, skip inventory check on pos, bypass inventory at pos, allow pos sale without inventory, disable pos skip inventory check, enforce inventory check at pos, stop bypassing inventory at pos, enable b2b, turn on b2b, allow b2b, enable wholesale, disable b2b, turn off b2b, block b2b, disable wholesale. Note: Boolean toggles are set via this PATCH: pos.enabled, pos.skip_inventory_check, b2b.enabled — e.g. { pos: { enabled: false } } or { b2b: { enabled: true } }.

Parameters

posanyargument
b2banyargument
idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_offers_integrations_update
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_offers_integrations_update",
    "arguments": {
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_offers_integrations_update", {
  "id": "string"
});
result = await session.call_tool("preorders_offers_integrations_update", arguments={
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_offers_inventory_update

TOOLpreorders_offers_inventory_update

Update inventory settings on a preorder offer. Aliases: edit inventory, change inventory settings, modify inventory, enable continue selling, allow overselling, enable oversell, auto continue selling, auto-apply continue selling on attach, disable continue selling, stop auto continue selling, disable oversell, prevent overselling on attach, enable auto apply continue selling, auto continue selling on attach, auto-flip new variants to continue, apply oversell to new variants, disable auto apply continue selling, stop auto continue selling on attach, don't auto-flip new variants, no oversell on new variants. Note: Deep partial. Setting provider to 'shopify' will force product_variants_source to 'custom' via the model callback. Continue-selling is toggled via this PATCH: continue_selling.enabled and continue_selling.auto_apply_to_new_variants BOTH map to the single underlying inventory_policy_auto_enable flag — the auto-flip-on-attach intent (newly-attached variants get their Shopify inventory_policy flipped to CONTINUE). When both fields are present, auto_apply_to_new_variants wins. Neither field flips EXISTING variants — to flip variants that are already attached, use POST .../products/bulk_toggle_inventory_policy, or pass the update_inventory_policy flag to the offer lifecycle enable/disable actions.

Parameters

provideranyargument
reservationanyargument
continue_sellinganyargument
idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_offers_inventory_update
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_offers_inventory_update",
    "arguments": {
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_offers_inventory_update", {
  "id": "string"
});
result = await session.call_tool("preorders_offers_inventory_update", arguments={
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_offers_inventory_read

TOOLpreorders_offers_inventory_read

Read the inventory configuration for a preorder offer. Aliases: get inventory settings, show inventory, view inventory policy, view reservation timing, view stock handling.

Parameters

idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_offers_inventory_read
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_offers_inventory_read",
    "arguments": {
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_offers_inventory_read", {
  "id": "string"
});
result = await session.call_tool("preorders_offers_inventory_read", arguments={
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_offers_inventory_set_provider

TOOLpreorders_offers_inventory_set_provider

Set the inventory provider for a preorder offer (stoq or shopify). Aliases: set inventory provider, switch inventory provider, use shopify inventory, use stoq inventory.

Parameters

provideranystoqshopifyrequiredargument
idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_offers_inventory_set_provider
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_offers_inventory_set_provider",
    "arguments": {
        "provider": "stoq",
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_offers_inventory_set_provider", {
  "provider": "stoq",
  "id": "string"
});
result = await session.call_tool("preorders_offers_inventory_set_provider", arguments={
  "provider": "stoq",
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_offers_inventory_set_reservation_timing

TOOLpreorders_offers_inventory_set_reservation_timing

Set when inventory is reserved (at sale or at fulfillment). Aliases: set reservation timing, reserve on sale, reserve on fulfillment, change inventory reservation, set when inventory is held.

Parameters

timinganyon_saleon_fulfillmentrequiredargument
idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_offers_inventory_set_reservation_timing
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_offers_inventory_set_reservation_timing",
    "arguments": {
        "timing": "on_sale",
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_offers_inventory_set_reservation_timing", {
  "timing": "on_sale",
  "id": "string"
});
result = await session.call_tool("preorders_offers_inventory_set_reservation_timing", arguments={
  "timing": "on_sale",
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_offers_limits_read

TOOLpreorders_offers_limits_read

Read order quantity limits for a preorder offer. Aliases: get limits, show limits, view quantity limits, view order min max, limits.

Parameters

idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_offers_limits_read
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_offers_limits_read",
    "arguments": {
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_offers_limits_read", {
  "id": "string"
});
result = await session.call_tool("preorders_offers_limits_read", arguments={
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_offers_limits_update

TOOLpreorders_offers_limits_update

Update quantity limits on a preorder offer. Aliases: edit limits, change limits, modify quantity limits, clear max per customer, remove customer limit, no customer limit, unlimited per customer, clear total max, remove total cap, no total limit, uncap total preorders, enable show remaining, show remaining units, show stock left, display quantity remaining, disable show remaining, hide remaining units, hide stock left, stop showing quantity. Note: Deep partial. Toggles and clears are done via this PATCH: clear a limit by sending null — per_customer.max: null removes the per-customer limit, total.max: null removes the total cap; display.show_remaining (true/false) toggles the remaining-units display on the storefront. Note: per_customer.max and total.max are stored config — storefront enforcement of these limits is follow-up work and not live yet.

Parameters

per_orderanyargument
per_customeranyargument
totalanyargument
displayanyargument
idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_offers_limits_update
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_offers_limits_update",
    "arguments": {
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_offers_limits_update", {
  "id": "string"
});
result = await session.call_tool("preorders_offers_limits_update", arguments={
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_offers_limits_set_max_per_customer

TOOLpreorders_offers_limits_set_max_per_customer

Set the maximum quantity a single customer can preorder across all their orders. Aliases: set max per customer, set customer limit, limit per customer, maximum per customer, one per customer. Note: Stored config only today — storefront enforcement of the per-customer limit is follow-up work and not live yet. Clear the limit via PATCH .../limits with per_customer.max: null.

Parameters

maxanyargument
idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_offers_limits_set_max_per_customer
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_offers_limits_set_max_per_customer",
    "arguments": {
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_offers_limits_set_max_per_customer", {
  "id": "string"
});
result = await session.call_tool("preorders_offers_limits_set_max_per_customer", arguments={
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_offers_limits_set_max_per_order

TOOLpreorders_offers_limits_set_max_per_order

Set the maximum quantity a customer can preorder per order. Aliases: set maximum per order, set max quantity, maximum order quantity, set order limit.

Parameters

maxanyargument
idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_offers_limits_set_max_per_order
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_offers_limits_set_max_per_order",
    "arguments": {
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_offers_limits_set_max_per_order", {
  "id": "string"
});
result = await session.call_tool("preorders_offers_limits_set_max_per_order", arguments={
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_offers_limits_set_min_per_order

TOOLpreorders_offers_limits_set_min_per_order

Set the minimum quantity a customer must preorder per order. Aliases: set minimum per order, set min quantity, minimum order quantity, set order minimum.

Parameters

minanyargument
idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_offers_limits_set_min_per_order
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_offers_limits_set_min_per_order",
    "arguments": {
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_offers_limits_set_min_per_order", {
  "id": "string"
});
result = await session.call_tool("preorders_offers_limits_set_min_per_order", arguments={
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_offers_limits_set_total_max

TOOLpreorders_offers_limits_set_total_max

Set the total quantity that can be preordered across all customers. Aliases: set total max, set total cap, cap total preorders, limit total units, set overall limit. Note: Stored config only today — storefront enforcement of the total cap is follow-up work and not live yet. Clear the cap via PATCH .../limits with total.max: null.

Parameters

maxanyargument
idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_offers_limits_set_total_max
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_offers_limits_set_total_max",
    "arguments": {
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_offers_limits_set_total_max", {
  "id": "string"
});
result = await session.call_tool("preorders_offers_limits_set_total_max", arguments={
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_offers_markets_update

TOOLpreorders_offers_markets_update

Update market scoping on a preorder offer. Aliases: edit markets, change market scoping, modify markets, enable market scoping, turn on market scoping, scope to markets, enable markets, disable market scoping, turn off market scoping, remove market restrictions, global preorder, enable all markets, apply to all markets, all countries, available everywhere. Note: Deep partial. Scoping is toggled via this PATCH: enabled (true/false). The offer applies to ALL markets when scoping is off ({ "enabled": false }) or when scoping is on with an empty market list — the serializer compiles applies_to_all_markets from exactly that state. PATCH bodies: all markets → { "enabled": true, "market_ids": [] } (or { "enabled": true, "applies_to_all_markets": true }, which also clears the list); specific markets → { "enabled": true, "market_ids": ["gid://shopify/Market/1", ...] } (GIDs or numeric IDs). For incremental edits keep using add_market / remove_market / set_markets.

Parameters

enabledanyargument
applies_to_all_marketsanyargument
market_idsanyargument
idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_offers_markets_update
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_offers_markets_update",
    "arguments": {
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_offers_markets_update", {
  "id": "string"
});
result = await session.call_tool("preorders_offers_markets_update", arguments={
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_offers_markets_read

TOOLpreorders_offers_markets_read

Read market scoping for a preorder offer. Aliases: get markets, show market scoping, view markets, what markets, which countries, market settings.

Parameters

idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_offers_markets_read
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_offers_markets_read",
    "arguments": {
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_offers_markets_read", {
  "id": "string"
});
result = await session.call_tool("preorders_offers_markets_read", arguments={
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_offers_markets_add_market

TOOLpreorders_offers_markets_add_market

Add a market to the preorder offer's scope. Aliases: add market, include market, add country, extend to market.

Parameters

market_idanyrequiredargument
idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_offers_markets_add_market
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_offers_markets_add_market",
    "arguments": {
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_offers_markets_add_market", {
  "id": "string"
});
result = await session.call_tool("preorders_offers_markets_add_market", arguments={
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_offers_markets_remove_market

TOOLpreorders_offers_markets_remove_market

Remove a market from the preorder offer's scope. Aliases: remove market, exclude market, drop market, remove country.

Parameters

market_idanyrequiredargument
idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_offers_markets_remove_market
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_offers_markets_remove_market",
    "arguments": {
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_offers_markets_remove_market", {
  "id": "string"
});
result = await session.call_tool("preorders_offers_markets_remove_market", arguments={
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_offers_markets_set_markets

TOOLpreorders_offers_markets_set_markets

Replace the set of markets a preorder offer applies to. Aliases: set markets, change markets, restrict to markets, set countries, set regions.

Parameters

market_idsanyargument
idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_offers_markets_set_markets
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_offers_markets_set_markets",
    "arguments": {
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_offers_markets_set_markets", {
  "id": "string"
});
result = await session.call_tool("preorders_offers_markets_set_markets", arguments={
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_offers_payments_read

TOOLpreorders_offers_payments_read

Read the payment configuration for a preorder offer. Aliases: get payment settings, show payments, view billing, view deposit, view discount, payment options.

Parameters

idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_offers_payments_read
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_offers_payments_read",
    "arguments": {
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_offers_payments_read", {
  "id": "string"
});
result = await session.call_tool("preorders_offers_payments_read", arguments={
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_offers_payments_update

TOOLpreorders_offers_payments_update

Update payment settings on a preorder offer. Aliases: edit payments, change payment settings, modify billing, change discount, update remaining balance settings, clear discount, remove discount, no discount, stop discount, remove preorder discount, enable auto collect, enable auto charge, auto-charge balance, automatically charge balance, turn on auto collect, disable auto collect, disable auto charge, stop auto charge, turn off auto collect, manual balance collection, enable auto collect on fulfillment, charge on fulfillment, auto charge at ship time, collect balance on ship, disable auto collect on fulfillment, don't charge on fulfillment, turn off charge at ship time, stop collecting on ship. Note: Use SetOptionCopy / EnableOption / DisableOption to edit individual payment options. Boolean toggles are set via this PATCH: remaining_balance.auto_collect, remaining_balance.auto_collect_on_fulfillment — e.g. { remaining_balance: { auto_collect: false } }. Clear the discount via { discount: { type: "no_discount" } } (the stored value is nulled automatically).

Parameters

discountanyargument
remaining_balanceanyargument
idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_offers_payments_update
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_offers_payments_update",
    "arguments": {
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_offers_payments_update", {
  "id": "string"
});
result = await session.call_tool("preorders_offers_payments_update", arguments={
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_offers_payments_disable_option

TOOLpreorders_offers_payments_disable_option

Remove a payment option (full or partial) from the offer. Aliases: disable payment option, remove full payment option, remove partial payment option, stop offering deposit, stop offering full payment. Note: Only valid on full_and_partial offers — an offer must keep at least one payment option. Use set_mode to switch a single-mode offer.

Parameters

option_typeanyfullpartialrequiredargument
idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_offers_payments_disable_option
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_offers_payments_disable_option",
    "arguments": {
        "option_type": "full",
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_offers_payments_disable_option", {
  "option_type": "full",
  "id": "string"
});
result = await session.call_tool("preorders_offers_payments_disable_option", arguments={
  "option_type": "full",
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_offers_payments_enable_option

TOOLpreorders_offers_payments_enable_option

Add a payment option (full or partial) to the offer. Aliases: enable payment option, add full payment option, add partial payment option, offer both payment options, let customers choose how to pay. Note: Idempotent. Newly added options start from the dashboard defaults — use set_deposit_percent / set_option_copy to fine-tune. Disable with disable_option.

Parameters

option_typeanyfullpartialrequiredargument
idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_offers_payments_enable_option
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_offers_payments_enable_option",
    "arguments": {
        "option_type": "full",
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_offers_payments_enable_option", {
  "option_type": "full",
  "id": "string"
});
result = await session.call_tool("preorders_offers_payments_enable_option", arguments={
  "option_type": "full",
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_offers_payments_set_deposit_percent

TOOLpreorders_offers_payments_set_deposit_percent

Set the deposit percentage charged at checkout on the partial payment option. Aliases: set deposit percent, set deposit percentage, change deposit amount, set upfront payment percent, change down payment. Note: Requires a partial payment option (mode partial or full_and_partial) — use set_mode first. Percent must be between 1 and 99; 100% upfront is the full payment mode.

Parameters

percentinteger[1, 99]requiredargument
idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_offers_payments_set_deposit_percent
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_offers_payments_set_deposit_percent",
    "arguments": {
        "percent": 1,
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_offers_payments_set_deposit_percent", {
  "percent": 1,
  "id": "string"
});
result = await session.call_tool("preorders_offers_payments_set_deposit_percent", arguments={
  "percent": 1,
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_offers_payments_set_discount

TOOLpreorders_offers_payments_set_discount

Set the preorder discount. Aliases: set discount, apply discount, change discount, set percentage off, set amount off.

Parameters

typeanypercentagepricefixed_amountno_discountrequiredargument
valueanyargument
idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_offers_payments_set_discount
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_offers_payments_set_discount",
    "arguments": {
        "type": "percentage",
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_offers_payments_set_discount", {
  "type": "percentage",
  "id": "string"
});
result = await session.call_tool("preorders_offers_payments_set_discount", arguments={
  "type": "percentage",
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_offers_payments_set_discount_text

TOOLpreorders_offers_payments_set_discount_text

Set the discount blurb shown on the offer's payment options. Aliases: set discount text, change discount blurb, set discount message, change discount copy, set savings text. Note: Pass option_type (full | partial) to target one payment option; omit it to apply the text to every option. Supports the {{ discount }} placeholder.

Parameters

textanyrequiredargument
option_typeanyfullpartialargument
idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_offers_payments_set_discount_text
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_offers_payments_set_discount_text",
    "arguments": {
        "option_type": "full",
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_offers_payments_set_discount_text", {
  "option_type": "full",
  "id": "string"
});
result = await session.call_tool("preorders_offers_payments_set_discount_text", arguments={
  "option_type": "full",
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_offers_payments_set_mode

TOOLpreorders_offers_payments_set_mode

Switch the offer between full, partial, and full-and-partial payment modes. Aliases: set payment mode, full payment only, partial payment only, deposit only, offer both full and partial payment, change payment options. Note: Idempotent. Collapsing from full_and_partial keeps the surviving option's copy; newly enabled modes start from the dashboard defaults. Use set_deposit_percent and set_option_copy afterwards to fine-tune.

Parameters

modeanyfullpartialfull_and_partialrequiredargument
idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_offers_payments_set_mode
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_offers_payments_set_mode",
    "arguments": {
        "mode": "full",
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_offers_payments_set_mode", {
  "mode": "full",
  "id": "string"
});
result = await session.call_tool("preorders_offers_payments_set_mode", arguments={
  "mode": "full",
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_offers_payments_set_option_copy

TOOLpreorders_offers_payments_set_option_copy

Set the merchant-facing copy on a payment option (title, description, discount text). Aliases: set option copy, set partial option copy, set full option copy, change billing title, set payment option text, set deposit option text.

Parameters

option_typeanyfullpartialrequiredargument
billing_titleanyargument
billing_descriptionanyargument
discount_textanyargument
idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_offers_payments_set_option_copy
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_offers_payments_set_option_copy",
    "arguments": {
        "option_type": "full",
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_offers_payments_set_option_copy", {
  "option_type": "full",
  "id": "string"
});
result = await session.call_tool("preorders_offers_payments_set_option_copy", arguments={
  "option_type": "full",
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_offers_products_read

TOOLpreorders_offers_products_read

Read the products configuration for a preorder offer (source rule + variant summary). Aliases: get products, show linked products, view variants on offer, view product source, what's on this offer.

Parameters

idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_offers_products_read
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_offers_products_read",
    "arguments": {
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_offers_products_read", {
  "id": "string"
});
result = await session.call_tool("preorders_offers_products_read", arguments={
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_offers_products_update

TOOLpreorders_offers_products_update

Update the product selection on a preorder offer — set the source rule plus its matching sub-block. Aliases: edit products, change product selection, change variant source, set products, modify products on offer. Note: Delegates to the set_source_to_* actions; switching source resets the variant set. source 'all' requires confirm: true. Only the sub-block matching source may be provided.

Parameters

sourceanyallcollectioncustomrequiredargument
customnull | objectargument
collectionnull | objectargument
allnull | objectargument
confirmanyargument
idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_offers_products_update
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_offers_products_update",
    "arguments": {
        "source": "all",
        "custom": null,
        "collection": null,
        "all": null,
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_offers_products_update", {
  "source": "all",
  "custom": null,
  "collection": null,
  "all": null,
  "id": "string"
});
result = await session.call_tool("preorders_offers_products_update", arguments={
  "source": "all",
  "custom": null,
  "collection": null,
  "all": null,
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_offers_products_add_variants

TOOLpreorders_offers_products_add_variants

Attach variants to a custom-source preorder offer. Aliases: add variants, attach variants, add products to offer, link variants, include variants. Note: Custom source only. Runs through BulkVariantAdditionService (async).

Parameters

variant_idsanyargument
idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_offers_products_add_variants
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_offers_products_add_variants",
    "arguments": {
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_offers_products_add_variants", {
  "id": "string"
});
result = await session.call_tool("preorders_offers_products_add_variants", arguments={
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_offers_products_bulk_toggle_inventory_policy

TOOLpreorders_offers_products_bulk_toggle_inventory_policy

Flip the Shopify inventory policy on variants attached to a preorder offer (CONTINUE or DENY). Aliases: flip inventory policy, toggle continue selling on variants, set inventory policy for variants, enable oversell on these variants, disable oversell on these variants. Note: Async via SellingPlans::BulkInventoryPolicyUpdateJob. Omit variant_ids to apply to all attached variants.

Parameters

policyanyCONTINUEDENYrequiredargument
variant_idsanyargument
idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_offers_products_bulk_toggle_inventory_policy
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_offers_products_bulk_toggle_inventory_policy",
    "arguments": {
        "policy": "CONTINUE",
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_offers_products_bulk_toggle_inventory_policy", {
  "policy": "CONTINUE",
  "id": "string"
});
result = await session.call_tool("preorders_offers_products_bulk_toggle_inventory_policy", arguments={
  "policy": "CONTINUE",
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_offers_products_remove_variants

TOOLpreorders_offers_products_remove_variants

Remove variants from a custom-source preorder offer. Aliases: remove variants, detach variants, remove products from offer, unlink variants, exclude variants. Note: Custom source only. Resets per-variant metafields on Shopify.

Parameters

variant_idsanyargument
idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_offers_products_remove_variants
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_offers_products_remove_variants",
    "arguments": {
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_offers_products_remove_variants", {
  "id": "string"
});
result = await session.call_tool("preorders_offers_products_remove_variants", arguments={
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_offers_products_set_collection

TOOLpreorders_offers_products_set_collection

Change the collection driving a collection-sourced preorder offer. Aliases: change collection, swap collection, use a different collection, update the collection on the offer. Note: Collection-sourced offers only — returns 409 Conflict otherwise. Use set_source_to_collection to switch a non-collection offer to collection source.

Parameters

collection_idanyrequiredargument
idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_offers_products_set_collection
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_offers_products_set_collection",
    "arguments": {
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_offers_products_set_collection", {
  "id": "string"
});
result = await session.call_tool("preorders_offers_products_set_collection", arguments={
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_offers_products_set_excluded_variants

TOOLpreorders_offers_products_set_excluded_variants

Replace the explicit excluded-variant list for an all-source preorder offer. Aliases: set excluded variants, exclude variants list, block variants from offer. Note: All-source offers only.

Parameters

variant_idsanyargument
idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_offers_products_set_excluded_variants
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_offers_products_set_excluded_variants",
    "arguments": {
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_offers_products_set_excluded_variants", {
  "id": "string"
});
result = await session.call_tool("preorders_offers_products_set_excluded_variants", arguments={
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_offers_products_set_exclusion_tag

TOOLpreorders_offers_products_set_exclusion_tag

Set the exclusion tag for an all-source preorder offer (variants with this tag are excluded). Aliases: set exclusion tag, exclude by tag, set exclude tag. Note: All-source offers only.

Parameters

taganyargument
idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_offers_products_set_exclusion_tag
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_offers_products_set_exclusion_tag",
    "arguments": {
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_offers_products_set_exclusion_tag", {
  "id": "string"
});
result = await session.call_tool("preorders_offers_products_set_exclusion_tag", arguments={
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_offers_products_set_source_to_all

TOOLpreorders_offers_products_set_source_to_all

Switch the offer to apply to every variant in the shop, minus exclusions. Requires confirm: true. Aliases: set source to all, apply to all products, auto-source, every variant, shop-wide preorder. Note: Requires confirm: true in the body. Resolution runs async over the entire catalog.

Parameters

confirmanyargument
exclusion_taganyargument
excluded_variant_idsanyargument
idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_offers_products_set_source_to_all
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_offers_products_set_source_to_all",
    "arguments": {
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_offers_products_set_source_to_all", {
  "id": "string"
});
result = await session.call_tool("preorders_offers_products_set_source_to_all", arguments={
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_offers_products_set_source_to_collection

TOOLpreorders_offers_products_set_source_to_collection

Switch the offer to a collection-driven variant source. Aliases: set source to collection, use a collection, link to collection, set products from collection, drive variants from collection. Note: Resolution runs asynchronously. New variants added to the collection in Shopify are NOT auto-picked-up — call this action again to refresh.

Parameters

collection_idanyrequiredargument
idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_offers_products_set_source_to_collection
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_offers_products_set_source_to_collection",
    "arguments": {
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_offers_products_set_source_to_collection", {
  "id": "string"
});
result = await session.call_tool("preorders_offers_products_set_source_to_collection", arguments={
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_offers_products_set_source_to_custom

TOOLpreorders_offers_products_set_source_to_custom

Switch the offer to a custom variant list. Optionally seed it with variant IDs. Aliases: set source to custom, use custom variants, custom product list, switch to custom. Note: Variant attachment runs through BulkVariantAdditionService and is async (202 + job_id).

Parameters

variant_idsanyargument
idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_offers_products_set_source_to_custom
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_offers_products_set_source_to_custom",
    "arguments": {
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_offers_products_set_source_to_custom", {
  "id": "string"
});
result = await session.call_tool("preorders_offers_products_set_source_to_custom", arguments={
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_offers_products_variants_list

TOOLpreorders_offers_products_variants_list

List the variants attached to a preorder offer with their per-variant settings, paginated. Aliases: list variants on offer, variants attached to offer, show offer variants, attached variants, offer variant list.

Parameters

pageanyargument
per_pageanyargument
idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_offers_products_variants_list
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_offers_products_variants_list",
    "arguments": {
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_offers_products_variants_list", {
  "id": "string"
});
result = await session.call_tool("preorders_offers_products_variants_list", arguments={
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_offers_products_variants_read

TOOLpreorders_offers_products_variants_read

Read the per-offer settings of a single variant attached to a preorder offer. Aliases: show variant settings on offer, view per-variant overrides, get variant on offer, variant settings.

Parameters

idstringrequiredargument

URL path parameter :id

variant_idstringrequiredargument

URL path parameter :variant_id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_offers_products_variants_read
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_offers_products_variants_read",
    "arguments": {
        "id": "string",
        "variant_id": "string"
      }
  }
}
const result = await client.callTool("preorders_offers_products_variants_read", {
  "id": "string",
  "variant_id": "string"
});
result = await session.call_tool("preorders_offers_products_variants_read", arguments={
  "id": "string",
  "variant_id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_offers_products_variants_update_settings

TOOLpreorders_offers_products_variants_update_settings

Set per-offer overrides on an attached variant — shipping text, max preorder count, market-scoped overrides. Aliases: override variant settings, set shipping text for variant, set max count for variant, per-variant overrides. Note: null clears an override; the variant falls back to the offer-level value. market_overrides writes the per-market metafields (market_shipping_text, market_preorder_max_count) keyed by Shopify market GID.

Parameters

shipping_textnull | stringargument
max_countnull | integerargument
market_overridesnull | objectargument
idstringrequiredargument

URL path parameter :id

variant_idstringrequiredargument

URL path parameter :variant_id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_offers_products_variants_update_settings
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_offers_products_variants_update_settings",
    "arguments": {
        "shipping_text": null,
        "max_count": null,
        "market_overrides": null,
        "id": "string",
        "variant_id": "string"
      }
  }
}
const result = await client.callTool("preorders_offers_products_variants_update_settings", {
  "shipping_text": null,
  "max_count": null,
  "market_overrides": null,
  "id": "string",
  "variant_id": "string"
});
result = await session.call_tool("preorders_offers_products_variants_update_settings", arguments={
  "shipping_text": null,
  "max_count": null,
  "market_overrides": null,
  "id": "string",
  "variant_id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_offers_restore

TOOLpreorders_offers_restore

Restore a discarded preorder offer. Aliases: undelete, undiscard, undo delete, bring back. Note: Variant attachments and metafields are not auto-restored. Re-attach via the products capability.

Parameters

idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_offers_restore
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_offers_restore",
    "arguments": {
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_offers_restore", {
  "id": "string"
});
result = await session.call_tool("preorders_offers_restore", arguments={
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_offers_schedule

TOOLpreorders_offers_schedule

Set the schedule window for a preorder offer. Aliases: set schedule, schedule launch, set start date, set end date, schedule offer. Note: Does not auto-enable. Storefront reads the schedule live.

Parameters

startanyargument
endanyargument
idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_offers_schedule
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_offers_schedule",
    "arguments": {
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_offers_schedule", {
  "id": "string"
});
result = await session.call_tool("preorders_offers_schedule", arguments={
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_offers_shipping_update

TOOLpreorders_offers_shipping_update

Update shipping settings on a preorder offer. Aliases: edit shipping, change shipping settings, change delivery, change fulfillment, modify shipping, enable fulfillment hold, hold fulfillments, hold preorder fulfillments, turn on fulfillment hold, prevent shipping until released, disable fulfillment hold, release fulfillments, stop holding fulfillments, turn off fulfillment hold, let preorder ship immediately, enable shipping timeline, show shipping timeline, show detailed shipping, turn on timeline, disable shipping timeline, hide shipping timeline, show simplified shipping, turn off timeline, enable split, enable split orders, enable split fulfillments, turn on order splitting, separate preorder from regular, disable split, disable split orders, disable split fulfillments, turn off order splitting, stop separating preorders, enable split hold fulfillments, hold split order fulfillments, hold fulfillments on split order, don't ship split order immediately, disable split hold fulfillments, release split order fulfillments, ship split order immediately, stop holding split order, enable split sequential number, sequential split order numbers, number split orders sequentially, sequential order name for split, disable split sequential number, no sequential split order numbers, stop numbering split orders sequentially. Note: Deep partial. Prefer the intent-bearing actions (set_delivery_*, set_shipping_text, set_split_order_tag, set_split_transaction_gateway) for narrow edits. Toggles are done via this PATCH: fulfillment.hold (true/false) holds/releases fulfillment orders containing preorder items; display.show_shipping_timeline (true shows the detailed PDP timeline, false the simplified text); fulfillment.split.enabled (true/false) turns order splitting on/off (flips both split flags); fulfillment.split.hold_fulfillments (true/false) holds the split order's fulfillments; fulfillment.split.sequential_number (true/false) gives split orders a sequential order name.

Parameters

deliveryanyargument
displayanyargument
fulfillmentanyargument
idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_offers_shipping_update
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_offers_shipping_update",
    "arguments": {
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_offers_shipping_update", {
  "id": "string"
});
result = await session.call_tool("preorders_offers_shipping_update", arguments={
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_offers_shipping_read

TOOLpreorders_offers_shipping_read

Read shipping settings for a preorder offer. Aliases: get shipping, show shipping, view delivery, view fulfillment, view shipping text, shipping settings.

Parameters

idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_offers_shipping_read
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_offers_shipping_read",
    "arguments": {
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_offers_shipping_read", {
  "id": "string"
});
result = await session.call_tool("preorders_offers_shipping_read", arguments={
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_offers_shipping_set_delivery_asap

TOOLpreorders_offers_shipping_set_delivery_asap

Set delivery to 'as soon as possible' (no specific date or window). Aliases: set delivery asap, ship asap, set delivery to asap, ship as soon as possible.

Parameters

idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_offers_shipping_set_delivery_asap
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_offers_shipping_set_delivery_asap",
    "arguments": {
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_offers_shipping_set_delivery_asap", {
  "id": "string"
});
result = await session.call_tool("preorders_offers_shipping_set_delivery_asap", arguments={
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_offers_shipping_set_delivery_date

TOOLpreorders_offers_shipping_set_delivery_date

Set an exact delivery date for the preorder. Aliases: set delivery date, ship on date, set ship date, set exact delivery date.

Parameters

dateanyrequiredargument
idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_offers_shipping_set_delivery_date
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_offers_shipping_set_delivery_date",
    "arguments": {
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_offers_shipping_set_delivery_date", {
  "id": "string"
});
result = await session.call_tool("preorders_offers_shipping_set_delivery_date", arguments={
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_offers_shipping_set_delivery_window

TOOLpreorders_offers_shipping_set_delivery_window

Set a delivery window in days from checkout (e.g. 'ships within 14 days'). Aliases: set delivery window, ship within days, set delivery in days, set ship window.

Parameters

daysanyargument
idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_offers_shipping_set_delivery_window
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_offers_shipping_set_delivery_window",
    "arguments": {
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_offers_shipping_set_delivery_window", {
  "id": "string"
});
result = await session.call_tool("preorders_offers_shipping_set_delivery_window", arguments={
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_offers_shipping_set_shipping_text

TOOLpreorders_offers_shipping_set_shipping_text

Set the customer-facing shipping text shown on the PDP. Aliases: set shipping text, change shipping text, update shipping message, set delivery text, change PDP shipping line.

Parameters

textanyrequiredargument
idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_offers_shipping_set_shipping_text
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_offers_shipping_set_shipping_text",
    "arguments": {
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_offers_shipping_set_shipping_text", {
  "id": "string"
});
result = await session.call_tool("preorders_offers_shipping_set_shipping_text", arguments={
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_offers_shipping_set_split_order_tag

TOOLpreorders_offers_shipping_set_split_order_tag

Set the tag applied to split orders on Shopify. Aliases: set split order tag, change split tag, set split order label.

Parameters

taganyrequiredargument
idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_offers_shipping_set_split_order_tag
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_offers_shipping_set_split_order_tag",
    "arguments": {
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_offers_shipping_set_split_order_tag", {
  "id": "string"
});
result = await session.call_tool("preorders_offers_shipping_set_split_order_tag", arguments={
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_offers_shipping_set_split_transaction_gateway

TOOLpreorders_offers_shipping_set_split_transaction_gateway

Set the payment gateway used for the split order transaction (e.g. 'Store Credit'). Aliases: set split transaction gateway, set split payment gateway, change split order gateway.

Parameters

gatewayanyrequiredargument
idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_offers_shipping_set_split_transaction_gateway
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_offers_shipping_set_split_transaction_gateway",
    "arguments": {
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_offers_shipping_set_split_transaction_gateway", {
  "id": "string"
});
result = await session.call_tool("preorders_offers_shipping_set_split_transaction_gateway", arguments={
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_offers_translations_read

TOOLpreorders_offers_translations_read

Read every translation override on a preorder offer, plus the full enumeration of translatable field paths. Aliases: get translations, show translations, view translations, list translations, view localized text, i18n, localization.

Parameters

idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_offers_translations_read
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_offers_translations_read",
    "arguments": {
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_offers_translations_read", {
  "id": "string"
});
result = await session.call_tool("preorders_offers_translations_read", arguments={
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_offers_translations_clear_locale

TOOLpreorders_offers_translations_clear_locale

Remove all translation overrides for one locale on a preorder offer. Aliases: clear locale, remove locale, wipe locale, drop translations for locale, remove all translations for a language.

Parameters

localeanyrequiredargument
idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_offers_translations_clear_locale
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_offers_translations_clear_locale",
    "arguments": {
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_offers_translations_clear_locale", {
  "id": "string"
});
result = await session.call_tool("preorders_offers_translations_clear_locale", arguments={
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_offers_translations_set

TOOLpreorders_offers_translations_set

Set a single translation override (one locale, one field) on a preorder offer. Aliases: set translation, add translation, translate field, localize a field, set localized text.

Parameters

localeanyrequiredargument
fieldanyrequiredargument
valueanyargument
idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_offers_translations_set
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_offers_translations_set",
    "arguments": {
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_offers_translations_set", {
  "id": "string"
});
result = await session.call_tool("preorders_offers_translations_set", arguments={
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_offers_translations_set_many

TOOLpreorders_offers_translations_set_many

Set many translation overrides for one locale on a preorder offer, atomically. Aliases: set many translations, translate offer, bulk translate, localize offer, translate to french, add translations. Note: All-or-nothing. Pre-validates every field path before writing.

Parameters

localeanyrequiredargument
translationsanyrequiredargument
idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_offers_translations_set_many
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_offers_translations_set_many",
    "arguments": {
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_offers_translations_set_many", {
  "id": "string"
});
result = await session.call_tool("preorders_offers_translations_set_many", arguments={
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_offers_translations_unset

TOOLpreorders_offers_translations_unset

Remove a translation override (one locale, one field) from a preorder offer. Aliases: unset translation, remove translation, clear translation, delete localized text, remove localized override.

Parameters

localeanyrequiredargument
fieldanyrequiredargument
idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_offers_translations_unset
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_offers_translations_unset",
    "arguments": {
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_offers_translations_unset", {
  "id": "string"
});
result = await session.call_tool("preorders_offers_translations_unset", arguments={
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_offers_unschedule

TOOLpreorders_offers_unschedule

Clear the schedule window on a preorder offer. Aliases: clear schedule, remove schedule, no schedule, unschedule offer.

Parameters

idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_offers_unschedule
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_offers_unschedule",
    "arguments": {
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_offers_unschedule", {
  "id": "string"
});
result = await session.call_tool("preorders_offers_unschedule", arguments={
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_offers_widget_read

TOOLpreorders_offers_widget_read

Read the widget configuration for a preorder offer. Aliases: get widget, show widget, view button settings, view badge settings, view disclaimer settings, preorder ui.

Parameters

idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_offers_widget_read
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_offers_widget_read",
    "arguments": {
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_offers_widget_read", {
  "id": "string"
});
result = await session.call_tool("preorders_offers_widget_read", arguments={
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_offers_widget_update

TOOLpreorders_offers_widget_update

Update any subset of the widget configuration on a preorder offer. Aliases: edit widget, change widget settings, modify widget, update preorder ui, enable badge, show badge, turn on badge, make badge visible, disable badge, hide badge, turn off badge, remove badge, enable disclaimer, show disclaimer, turn on disclaimer, show fine print, show shipping notice, disable disclaimer, hide disclaimer, turn off disclaimer, hide fine print, remove shipping notice, enable custom button colors, use custom button colors, turn on button colors, apply custom colors, disable custom button colors, use theme button colors, turn off button colors, revert to theme colors, enable billing widget, show payment breakdown, show payment widget, turn on billing widget, disable billing widget, hide payment breakdown, hide payment widget, turn off billing widget. Note: Deep partial. Use the intent-bearing widget actions for narrow edits. Boolean toggles are set via this PATCH: badge.enabled, disclaimer.enabled, button.colors.enabled, billing_widget.enabled — e.g. { badge: { enabled: false } }. Clearing a value: send null.

Parameters

buttonanyargument
disclaimeranyargument
badgeanyargument
billing_widgetanyargument
idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_offers_widget_update
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_offers_widget_update",
    "arguments": {
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_offers_widget_update", {
  "id": "string"
});
result = await session.call_tool("preorders_offers_widget_update", arguments={
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_offers_widget_set_badge_colors

TOOLpreorders_offers_widget_set_badge_colors

Set the preorder badge's text and background colors. Aliases: change badge colors, set badge color, customize badge colors, change badge background.

Parameters

text_coloranyargument
background_coloranyargument
idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_offers_widget_set_badge_colors
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_offers_widget_set_badge_colors",
    "arguments": {
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_offers_widget_set_badge_colors", {
  "id": "string"
});
result = await session.call_tool("preorders_offers_widget_set_badge_colors", arguments={
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_offers_widget_set_badge_text

TOOLpreorders_offers_widget_set_badge_text

Set the preorder badge text. Aliases: change badge text, set badge label, rename badge, change preorder badge text, update badge text. Note: Use enable_badge / disable_badge to control visibility.

Parameters

textanyrequiredargument
idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_offers_widget_set_badge_text
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_offers_widget_set_badge_text",
    "arguments": {
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_offers_widget_set_badge_text", {
  "id": "string"
});
result = await session.call_tool("preorders_offers_widget_set_badge_text", arguments={
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_offers_widget_set_billing_widget_text

TOOLpreorders_offers_widget_set_billing_widget_text

Set the billing widget's title and description (the PDP payment-breakdown block). Aliases: set billing widget title, set billing widget description, change payment breakdown text, edit billing widget copy. Note: These fields are shared with the first payment option's copy (see payments/set_option_copy). Use enable_billing_widget / disable_billing_widget to control visibility.

Parameters

titleanyargument
descriptionanyargument
idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_offers_widget_set_billing_widget_text
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_offers_widget_set_billing_widget_text",
    "arguments": {
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_offers_widget_set_billing_widget_text", {
  "id": "string"
});
result = await session.call_tool("preorders_offers_widget_set_billing_widget_text", arguments={
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_offers_widget_set_button_colors

TOOLpreorders_offers_widget_set_button_colors

Set the preorder button's text and background colors (implicitly enables custom colors). Aliases: change button colors, set button color, customize button colors. Note: Setting either color implicitly enables custom colors. Use disable_button_colors to revert to the theme's defaults.

Parameters

text_coloranyargument
background_coloranyargument
idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_offers_widget_set_button_colors
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_offers_widget_set_button_colors",
    "arguments": {
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_offers_widget_set_button_colors", {
  "id": "string"
});
result = await session.call_tool("preorders_offers_widget_set_button_colors", arguments={
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_offers_widget_set_button_text

TOOLpreorders_offers_widget_set_button_text

Set the preorder button's call-to-action label. Aliases: change button text, rename button, set button label, change preorder button label, update button text.

Parameters

textanyrequiredargument
idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_offers_widget_set_button_text
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_offers_widget_set_button_text",
    "arguments": {
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_offers_widget_set_button_text", {
  "id": "string"
});
result = await session.call_tool("preorders_offers_widget_set_button_text", arguments={
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_offers_widget_set_disclaimer_style

TOOLpreorders_offers_widget_set_disclaimer_style

Set the disclaimer banner's colors and border radius. Aliases: change disclaimer colors, set disclaimer style, style the disclaimer, set disclaimer border radius, change disclaimer background.

Parameters

text_coloranyargument
background_coloranyargument
border_radiusinteger>= 0argument
idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_offers_widget_set_disclaimer_style
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_offers_widget_set_disclaimer_style",
    "arguments": {
        "border_radius": 0,
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_offers_widget_set_disclaimer_style", {
  "border_radius": 0,
  "id": "string"
});
result = await session.call_tool("preorders_offers_widget_set_disclaimer_style", arguments={
  "border_radius": 0,
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_offers_widget_set_disclaimer_text

TOOLpreorders_offers_widget_set_disclaimer_text

Set the disclaimer banner text shown under the preorder button. Aliases: change disclaimer text, set disclaimer text, edit disclaimer, change disclaimer message, set shipping disclaimer. Note: Use enable_disclaimer / disable_disclaimer to control visibility.

Parameters

textanyrequiredargument
idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_offers_widget_set_disclaimer_text
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_offers_widget_set_disclaimer_text",
    "arguments": {
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_offers_widget_set_disclaimer_text", {
  "id": "string"
});
result = await session.call_tool("preorders_offers_widget_set_disclaimer_text", arguments={
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_orders_list

TOOLpreorders_orders_list

List preorder orders in this shop, paginated. Aliases: list preorder orders, show all preorder orders, preorder orders, list orders.

Parameters

pageanyargument
per_pageanyargument
stateanyargument
offer_idanyargument
variant_idanyargument
customer_idanyargument
fromanyargument
toanyargument

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_orders_list
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_orders_list",
    "arguments": {}
  }
}
const result = await client.callTool("preorders_orders_list", {});
result = await session.call_tool("preorders_orders_list", arguments={})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_orders_read

TOOLpreorders_orders_read

Read a preorder order's full representation. Aliases: show preorder order, get order, look up order, view preorder order.

Parameters

idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_orders_read
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_orders_read",
    "arguments": {
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_orders_read", {
  "id": "string"
});
result = await session.call_tool("preorders_orders_read", arguments={
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_orders_cancel

TOOLpreorders_orders_cancel

Cancel a preorder. Optionally refund deposit / balance and notify the customer. Aliases: cancel order, cancel preorder, void preorder, stop this preorder. Note: Does not cancel the Shopify order; sets cancelled_at on the preorder attribution. Use the refund flags for refunds.

Parameters

refund_depositanyargument
refund_balanceanyargument
notify_customeranyargument
reasonanyargument
idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_orders_cancel
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_orders_cancel",
    "arguments": {
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_orders_cancel", {
  "id": "string"
});
result = await session.call_tool("preorders_orders_cancel", arguments={
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_orders_fulfillment_update

TOOLpreorders_orders_fulfillment_update

Update fulfillment attributes on a preorder order. Only hold_reason_note is writable. Aliases: update fulfillment, edit fulfillment, change hold reason, update hold note. Note: Hold state changes go through release_holds / apply_holds. all_held, any_held, and fulfillment_orders are read-only. Delegates to SetHoldReason; existing holds on Shopify aren't re-written.

Parameters

hold_reason_notenull | stringargument
idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_orders_fulfillment_update
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_orders_fulfillment_update",
    "arguments": {
        "hold_reason_note": null,
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_orders_fulfillment_update", {
  "hold_reason_note": null,
  "id": "string"
});
result = await session.call_tool("preorders_orders_fulfillment_update", arguments={
  "hold_reason_note": null,
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_orders_fulfillment_read

TOOLpreorders_orders_fulfillment_read

Read the fulfillment hold state and fulfillment-order summary of a preorder order. Aliases: order fulfillment, shipping, hold state, fulfillment hold.

Parameters

idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_orders_fulfillment_read
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_orders_fulfillment_read",
    "arguments": {
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_orders_fulfillment_read", {
  "id": "string"
});
result = await session.call_tool("preorders_orders_fulfillment_read", arguments={
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_orders_fulfillment_apply_holds

TOOLpreorders_orders_fulfillment_apply_holds

Apply fulfillment holds on the order's fulfillment orders. Idempotent. Aliases: apply holds, add holds to fulfillments, place fulfillments on hold.

Parameters

idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_orders_fulfillment_apply_holds
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_orders_fulfillment_apply_holds",
    "arguments": {
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_orders_fulfillment_apply_holds", {
  "id": "string"
});
result = await session.call_tool("preorders_orders_fulfillment_apply_holds", arguments={
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_orders_fulfillment_release_holds

TOOLpreorders_orders_fulfillment_release_holds

Release fulfillment holds on the order without applying offer-configured tags. Aliases: release holds, release fulfillments without tags, remove fulfillment hold only. Note: Use the top-level release action when you want tags applied too.

Parameters

idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_orders_fulfillment_release_holds
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_orders_fulfillment_release_holds",
    "arguments": {
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_orders_fulfillment_release_holds", {
  "id": "string"
});
result = await session.call_tool("preorders_orders_fulfillment_release_holds", arguments={
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_orders_fulfillment_set_hold_reason

TOOLpreorders_orders_fulfillment_set_hold_reason

Set the hold-reason note that will be used the next time the order is held. Aliases: set hold reason, change hold note, update fulfillment hold note. Note: Updates the note on the first attributed preorder offer. Existing holds on Shopify aren't re-written.

Parameters

reason_noteanyrequiredargument
idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_orders_fulfillment_set_hold_reason
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_orders_fulfillment_set_hold_reason",
    "arguments": {
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_orders_fulfillment_set_hold_reason", {
  "id": "string"
});
result = await session.call_tool("preorders_orders_fulfillment_set_hold_reason", arguments={
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_orders_hold_fulfillments

TOOLpreorders_orders_hold_fulfillments

Apply fulfillment holds on the preorder order's fulfillment orders. Aliases: hold order, hold fulfillments, re-hold fulfillments, pause fulfillment, stop the order from shipping.

Parameters

idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_orders_hold_fulfillments
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_orders_hold_fulfillments",
    "arguments": {
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_orders_hold_fulfillments", {
  "id": "string"
});
result = await session.call_tool("preorders_orders_hold_fulfillments", arguments={
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_orders_payments_read

TOOLpreorders_orders_payments_read

Read the deposit, remaining balance, and refund state of a preorder order. Aliases: order payments, deposit, balance, remaining balance, refund.

Parameters

idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_orders_payments_read
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_orders_payments_read",
    "arguments": {
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_orders_payments_read", {
  "id": "string"
});
result = await session.call_tool("preorders_orders_payments_read", arguments={
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_orders_payments_charge_balance

TOOLpreorders_orders_payments_charge_balance

Charge the remaining balance. auto uses the customer's saved payment method; manual just marks balance collected. Aliases: charge remaining balance, collect balance, auto-charge balance, take the balance now. Note: auto may fail if no saved payment method or declined; check the response or poll status.

Parameters

modeanyargument
idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_orders_payments_charge_balance
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_orders_payments_charge_balance",
    "arguments": {
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_orders_payments_charge_balance", {
  "id": "string"
});
result = await session.call_tool("preorders_orders_payments_charge_balance", arguments={
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_orders_payments_refund

TOOLpreorders_orders_payments_refund

Refund the entire preorder (deposit + balance). Aliases: refund order, refund preorder, full refund, give the customer their money back.

Parameters

notify_customeranyargument
noteanyargument
idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_orders_payments_refund
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_orders_payments_refund",
    "arguments": {
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_orders_payments_refund", {
  "id": "string"
});
result = await session.call_tool("preorders_orders_payments_refund", arguments={
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_orders_payments_refund_balance

TOOLpreorders_orders_payments_refund_balance

Refund the remaining-balance portion of a preorder (only valid after the balance was collected). Aliases: refund balance, refund remaining balance, refund the rest.

Parameters

notify_customeranyargument
noteanyargument
idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_orders_payments_refund_balance
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_orders_payments_refund_balance",
    "arguments": {
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_orders_payments_refund_balance", {
  "id": "string"
});
result = await session.call_tool("preorders_orders_payments_refund_balance", arguments={
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_orders_payments_refund_deposit

TOOLpreorders_orders_payments_refund_deposit

Refund the deposit portion of a preorder. Aliases: refund deposit, give the deposit back, refund up-front payment.

Parameters

notify_customeranyargument
noteanyargument
idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_orders_payments_refund_deposit
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_orders_payments_refund_deposit",
    "arguments": {
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_orders_payments_refund_deposit", {
  "id": "string"
});
result = await session.call_tool("preorders_orders_payments_refund_deposit", arguments={
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_orders_payments_send_collection_url

TOOLpreorders_orders_payments_send_collection_url

Send the remaining-balance payment-collection URL to the customer. Aliases: send payment link, request balance payment, send payment collection url, ask customer for balance, send collection email. Note: Idempotent — calling twice resends the email with a fresh URL.

Parameters

idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_orders_payments_send_collection_url
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_orders_payments_send_collection_url",
    "arguments": {
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_orders_payments_send_collection_url", {
  "id": "string"
});
result = await session.call_tool("preorders_orders_payments_send_collection_url", arguments={
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_orders_release

TOOLpreorders_orders_release

Release the order's fulfillment holds and apply offer-configured order tags. Aliases: release order, release fulfillments, let it ship, unhold order, open fulfillments. Note: Returns 409 if balance hasn't been collected; pass force: true to override.

Parameters

forceanyargument
tag_withanyargument
idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_orders_release
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_orders_release",
    "arguments": {
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_orders_release", {
  "id": "string"
});
result = await session.call_tool("preorders_orders_release", arguments={
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_orders_split_fulfillment_orders

TOOLpreorders_orders_split_fulfillment_orders

Split the order's fulfillment orders so preorder items ship separately from regular items. Aliases: split order, separate preorder lines, split fulfillments, separate preorder from regular.

Parameters

idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_orders_split_fulfillment_orders
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_orders_split_fulfillment_orders",
    "arguments": {
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_orders_split_fulfillment_orders", {
  "id": "string"
});
result = await session.call_tool("preorders_orders_split_fulfillment_orders", arguments={
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_orders_tags_read

TOOLpreorders_orders_tags_read

Read the order tags applied by Stoq. Aliases: order tags, order labels, tag the order.

Parameters

idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_orders_tags_read
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_orders_tags_read",
    "arguments": {
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_orders_tags_read", {
  "id": "string"
});
result = await session.call_tool("preorders_orders_tags_read", arguments={
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_orders_tags_update

TOOLpreorders_orders_tags_update

Replace the order's tag set. PATCH form of tags/set. Aliases: update order tags, edit order tags, replace order tags. Note: tags is replaced wholesale (delegates to tags/set). applied_by_stoq and applied_by_merchant are read-only.

Parameters

tagsnull | arrayargument
idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_orders_tags_update
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_orders_tags_update",
    "arguments": {
        "tags": null,
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_orders_tags_update", {
  "tags": null,
  "id": "string"
});
result = await session.call_tool("preorders_orders_tags_update", arguments={
  "tags": null,
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_orders_tags_add

TOOLpreorders_orders_tags_add

Add one or more tags to the Shopify order. Aliases: add order tag, add tag, tag the order, append order tag.

Parameters

tagsanyargument
idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_orders_tags_add
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_orders_tags_add",
    "arguments": {
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_orders_tags_add", {
  "id": "string"
});
result = await session.call_tool("preorders_orders_tags_add", arguments={
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_orders_tags_remove

TOOLpreorders_orders_tags_remove

Remove one or more tags from the Shopify order. Aliases: remove order tag, remove tag, untag the order, drop order tag.

Parameters

tagsanyargument
idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_orders_tags_remove
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_orders_tags_remove",
    "arguments": {
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_orders_tags_remove", {
  "id": "string"
});
result = await session.call_tool("preorders_orders_tags_remove", arguments={
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_orders_tags_set

TOOLpreorders_orders_tags_set

Replace every tag on the Shopify order with the supplied list. Aliases: set order tags, replace order tags, overwrite order tags, reset tags on order. Note: Pass an empty list to clear all tags. Implemented as fetch-current + remove stale + add new on the Shopify side.

Parameters

tagsanyargument
idstringrequiredargument

URL path parameter :id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_orders_tags_set
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_orders_tags_set",
    "arguments": {
        "id": "string"
      }
  }
}
const result = await client.callTool("preorders_orders_tags_set", {
  "id": "string"
});
result = await session.call_tool("preorders_orders_tags_set", arguments={
  "id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_orders_bulk_cancel

TOOLpreorders_orders_bulk_cancel

Cancel many preorder orders (max 1000), with optional refund flags. Aliases: bulk cancel, cancel many orders, batch cancel preorders.

Parameters

order_idsanyargument
refund_depositanyargument
refund_balanceanyargument
notify_customeranyargument
reasonanyargument

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_orders_bulk_cancel
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_orders_bulk_cancel",
    "arguments": {}
  }
}
const result = await client.callTool("preorders_orders_bulk_cancel", {});
result = await session.call_tool("preorders_orders_bulk_cancel", arguments={})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_orders_bulk_release

TOOLpreorders_orders_bulk_release

Release fulfillments on many preorder orders (max 1000). Aliases: bulk release, release many orders, batch release, release these orders.

Parameters

order_idsanyargument
forceanyargument
tag_withanyargument

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_orders_bulk_release
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_orders_bulk_release",
    "arguments": {}
  }
}
const result = await client.callTool("preorders_orders_bulk_release", {});
result = await session.call_tool("preorders_orders_bulk_release", arguments={})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_orders_bulk_send_payment_collection_url

TOOLpreorders_orders_bulk_send_payment_collection_url

Send payment-collection URLs to many preorder customers (max 1000). Aliases: bulk send payment collection url, request balance from many customers, send payment links in bulk, ask many customers for balance.

Parameters

order_idsanyargument

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_orders_bulk_send_payment_collection_url
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_orders_bulk_send_payment_collection_url",
    "arguments": {}
  }
}
const result = await client.callTool("preorders_orders_bulk_send_payment_collection_url", {});
result = await session.call_tool("preorders_orders_bulk_send_payment_collection_url", arguments={})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_orders_bulk_set_tags

TOOLpreorders_orders_bulk_set_tags

Apply tags to many preorder orders in one job (max 1000). Aliases: bulk set tags, tag many orders, batch tag orders, add tags to many orders, remove tags from many orders, replace tags on many orders. Note: mode is one of add | remove | replace (default add). replace overwrites each order's full tag set.

Parameters

order_idsanyargument
tagsanyargument
modenull | stringargument

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_orders_bulk_set_tags
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_orders_bulk_set_tags",
    "arguments": {
        "mode": null
      }
  }
}
const result = await client.callTool("preorders_orders_bulk_set_tags", {
  "mode": null
});
result = await session.call_tool("preorders_orders_bulk_set_tags", arguments={
  "mode": null
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_orders_jobs_read

TOOLpreorders_orders_jobs_read

Check the status of a bulk-order job. Aliases: check bulk order job, poll bulk order job, get order job status.

Parameters

job_idstringrequiredargument

URL path parameter :job_id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_orders_jobs_read
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_orders_jobs_read",
    "arguments": {
        "job_id": "string"
      }
  }
}
const result = await client.callTool("preorders_orders_jobs_read", {
  "job_id": "string"
});
result = await session.call_tool("preorders_orders_jobs_read", arguments={
  "job_id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_product_variants_list

TOOLpreorders_product_variants_list

List Shopify variants attached to any preorder offer in this shop. Aliases: list preorder variants, variants in preorder, find variants in preorder offers, preorder variants, all preorder variants.

Parameters

pageanyargument
per_pageanyargument
offer_idanyargument
product_idanyargument
variant_idsanyargument

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_product_variants_list
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_product_variants_list",
    "arguments": {}
  }
}
const result = await client.callTool("preorders_product_variants_list", {});
result = await session.call_tool("preorders_product_variants_list", arguments={})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_product_variants_read

TOOLpreorders_product_variants_read

Read a Shopify variant's preorder context: every offer it's in, aggregate counts, and current metafield state. Aliases: show preorder context for variant, look up variant preorders, variant preorder state, get preorder variant, show variant in preorders.

Parameters

variant_idstringrequiredargument

URL path parameter :variant_id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_product_variants_read
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_product_variants_read",
    "arguments": {
        "variant_id": "string"
      }
  }
}
const result = await client.callTool("preorders_product_variants_read", {
  "variant_id": "string"
});
result = await session.call_tool("preorders_product_variants_read", arguments={
  "variant_id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_product_variants_detach_from_all_offers

TOOLpreorders_product_variants_detach_from_all_offers

Remove a variant from every preorder offer it's attached to. Customer orders are unaffected. Aliases: remove variant from all preorders, detach from preorder, kick variant out of offers, remove from all offers. Note: Destructive. Same effect as calling Offer::Products::RemoveVariants against every offer the variant is in.

Parameters

variant_idstringrequiredargument

URL path parameter :variant_id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_product_variants_detach_from_all_offers
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_product_variants_detach_from_all_offers",
    "arguments": {
        "variant_id": "string"
      }
  }
}
const result = await client.callTool("preorders_product_variants_detach_from_all_offers", {
  "variant_id": "string"
});
result = await session.call_tool("preorders_product_variants_detach_from_all_offers", arguments={
  "variant_id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_product_variants_offers_list_offers

TOOLpreorders_product_variants_offers_list_offers

List the preorder offers a Shopify variant is attached to. Aliases: which offers is this variant in, find offers for variant, variant's preorder offers, what offers contain this variant.

Parameters

stateanyargument
variant_idstringrequiredargument

URL path parameter :variant_id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_product_variants_offers_list_offers
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_product_variants_offers_list_offers",
    "arguments": {
        "variant_id": "string"
      }
  }
}
const result = await client.callTool("preorders_product_variants_offers_list_offers", {
  "variant_id": "string"
});
result = await session.call_tool("preorders_product_variants_offers_list_offers", arguments={
  "variant_id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_product_variants_recalculate_preorder_count

TOOLpreorders_product_variants_recalculate_preorder_count

Recompute preorder_count for a variant from active order line items, then push to Shopify. Aliases: recalculate preorder count from orders, fix preorder count, rebuild count, recompute preorder count, fix variant count drift.

Parameters

variant_idstringrequiredargument

URL path parameter :variant_id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_product_variants_recalculate_preorder_count
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_product_variants_recalculate_preorder_count",
    "arguments": {
        "variant_id": "string"
      }
  }
}
const result = await client.callTool("preorders_product_variants_recalculate_preorder_count", {
  "variant_id": "string"
});
result = await session.call_tool("preorders_product_variants_recalculate_preorder_count", arguments={
  "variant_id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_product_variants_reset_metafields

TOOLpreorders_product_variants_reset_metafields

Clear all preorder-related Shopify metafields on a variant. Keeps the variant attached to its offers. Aliases: clear preorder metafields, wipe variant preorder data, reset variant metafields, clear variant metafields. Note: Doesn't detach. Next offer settings change will re-write the metafields from current state.

Parameters

variant_idstringrequiredargument

URL path parameter :variant_id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_product_variants_reset_metafields
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_product_variants_reset_metafields",
    "arguments": {
        "variant_id": "string"
      }
  }
}
const result = await client.callTool("preorders_product_variants_reset_metafields", {
  "variant_id": "string"
});
result = await session.call_tool("preorders_product_variants_reset_metafields", arguments={
  "variant_id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_product_variants_reset_preorder_count

TOOLpreorders_product_variants_reset_preorder_count

Hard-reset the preorder_count metafield + DB columns on a variant to zero. Aliases: zero out preorder count, clear preorder count, reset count to zero. Note: Use recalculate_preorder_count for a recompute from real orders; this is a destructive zero.

Parameters

variant_idstringrequiredargument

URL path parameter :variant_id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_product_variants_reset_preorder_count
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_product_variants_reset_preorder_count",
    "arguments": {
        "variant_id": "string"
      }
  }
}
const result = await client.callTool("preorders_product_variants_reset_preorder_count", {
  "variant_id": "string"
});
result = await session.call_tool("preorders_product_variants_reset_preorder_count", arguments={
  "variant_id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_product_variants_sync_metafields

TOOLpreorders_product_variants_sync_metafields

Force-resync every preorder metafield for a variant from local DB state to Shopify. Aliases: force resync to shopify, push metafields to shopify, refresh shopify metafields, fix shopify metafield drift. Note: Idempotent. Useful when a previous metafield write failed.

Parameters

variant_idstringrequiredargument

URL path parameter :variant_id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_product_variants_sync_metafields
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_product_variants_sync_metafields",
    "arguments": {
        "variant_id": "string"
      }
  }
}
const result = await client.callTool("preorders_product_variants_sync_metafields", {
  "variant_id": "string"
});
result = await session.call_tool("preorders_product_variants_sync_metafields", arguments={
  "variant_id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_product_variants_bulk_recalculate_preorder_counts

TOOLpreorders_product_variants_bulk_recalculate_preorder_counts

Recompute preorder_count for many variants in one job (max 5000). Aliases: recalculate counts for variants, bulk fix preorder counts, recalculate many variants, batch recompute counts.

Parameters

variant_idsanyargument

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_product_variants_bulk_recalculate_preorder_counts
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_product_variants_bulk_recalculate_preorder_counts",
    "arguments": {}
  }
}
const result = await client.callTool("preorders_product_variants_bulk_recalculate_preorder_counts", {});
result = await session.call_tool("preorders_product_variants_bulk_recalculate_preorder_counts", arguments={})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_product_variants_bulk_reset_metafields

TOOLpreorders_product_variants_bulk_reset_metafields

Reset preorder metafields for many variants in one job (max 5000). Aliases: clear metafields for variants, bulk reset variant metafields, wipe metafields for many variants.

Parameters

variant_idsanyargument

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_product_variants_bulk_reset_metafields
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_product_variants_bulk_reset_metafields",
    "arguments": {}
  }
}
const result = await client.callTool("preorders_product_variants_bulk_reset_metafields", {});
result = await session.call_tool("preorders_product_variants_bulk_reset_metafields", arguments={})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_product_variants_bulk_sync_metafields

TOOLpreorders_product_variants_bulk_sync_metafields

Force-resync preorder metafields for many variants in one job (max 5000). Aliases: force resync many variants, bulk refresh metafields, push many variants to shopify.

Parameters

variant_idsanyargument

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_product_variants_bulk_sync_metafields
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_product_variants_bulk_sync_metafields",
    "arguments": {}
  }
}
const result = await client.callTool("preorders_product_variants_bulk_sync_metafields", {});
result = await session.call_tool("preorders_product_variants_bulk_sync_metafields", arguments={})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_product_variants_jobs_read

TOOLpreorders_product_variants_jobs_read

Check the status of a bulk variant-admin job. Aliases: check bulk variant job status, poll bulk variant job, get variant job status.

Parameters

job_idstringrequiredargument

URL path parameter :job_id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_product_variants_jobs_read
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_product_variants_jobs_read",
    "arguments": {
        "job_id": "string"
      }
  }
}
const result = await client.callTool("preorders_product_variants_jobs_read", {
  "job_id": "string"
});
result = await session.call_tool("preorders_product_variants_jobs_read", arguments={
  "job_id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_reports_list

TOOLpreorders_reports_list

List every available preorder report (name, description, aliases, url). Aliases: reports, list reports, available reports, what reports are there, report catalog.

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_reports_list
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_reports_list",
    "arguments": {}
  }
}
const result = await client.callTool("preorders_reports_list", {});
result = await session.call_tool("preorders_reports_list", arguments={})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_reports_balance_collection_read

TOOLpreorders_reports_balance_collection_read

Outstanding preorder balances and balance-collection performance metrics. Aliases: outstanding balances, balance collection, who hasn't paid, balance status, payment collection, outstanding payments.

Parameters

fromanyargument
toanyargument
offer_idanyargument
offer_idsanyargument
currencyanyargument

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_reports_balance_collection_read
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_reports_balance_collection_read",
    "arguments": {}
  }
}
const result = await client.callTool("preorders_reports_balance_collection_read", {});
result = await session.call_tool("preorders_reports_balance_collection_read", arguments={})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_reports_balance_collection_export

TOOLpreorders_reports_balance_collection_export

Async CSV export of the balance-collection report. Aliases: export balance_collection, download outstanding balances, balance collection csv, export who hasn't paid.

Parameters

fromanyargument
toanyargument
offer_idanyargument
offer_idsanyargument
product_idanyargument
variant_idanyargument
market_idanyargument
currencyanyargument
granularityanyargument
metricsanyargument
include_depositsanyargument
include_balancesanyargument
pageanyargument
per_pageanyargument

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_reports_balance_collection_export
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_reports_balance_collection_export",
    "arguments": {}
  }
}
const result = await client.callTool("preorders_reports_balance_collection_export", {});
result = await session.call_tool("preorders_reports_balance_collection_export", arguments={})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_reports_by_date_read

TOOLpreorders_reports_by_date_read

Time-series of all preorder metrics at the chosen granularity (day/week/month). Aliases: time series, daily breakdown, trend, over time, preorder trend, show trend.

Parameters

fromanyargument
toanyargument
offer_idanyargument
offer_idsanyargument
product_idanyargument
variant_idanyargument
currencyanyargument
granularityanyargument
metricsanyargument

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_reports_by_date_read
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_reports_by_date_read",
    "arguments": {}
  }
}
const result = await client.callTool("preorders_reports_by_date_read", {});
result = await session.call_tool("preorders_reports_by_date_read", arguments={})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_reports_by_date_export

TOOLpreorders_reports_by_date_export

Async CSV export of the time-series preorder report. Aliases: export by_date, download time series, trend csv.

Parameters

fromanyargument
toanyargument
offer_idanyargument
offer_idsanyargument
product_idanyargument
variant_idanyargument
market_idanyargument
currencyanyargument
granularityanyargument
metricsanyargument
include_depositsanyargument
include_balancesanyargument
pageanyargument
per_pageanyargument

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_reports_by_date_export
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_reports_by_date_export",
    "arguments": {}
  }
}
const result = await client.callTool("preorders_reports_by_date_export", {});
result = await session.call_tool("preorders_reports_by_date_export", arguments={})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_reports_by_offer_read

TOOLpreorders_reports_by_offer_read

Per-offer breakdown of preorder activity (orders, units, revenue, customers). Aliases: per-offer report, offer performance, which offers are working, compare offers, report by offer.

Parameters

fromanyargument
toanyargument
offer_idsanyargument
market_idanyargument
currencyanyargument

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_reports_by_offer_read
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_reports_by_offer_read",
    "arguments": {}
  }
}
const result = await client.callTool("preorders_reports_by_offer_read", {});
result = await session.call_tool("preorders_reports_by_offer_read", arguments={})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_reports_by_offer_export

TOOLpreorders_reports_by_offer_export

Async CSV export of the per-offer preorder report. Aliases: export by_offer, download by_offer, by offer csv.

Parameters

fromanyargument
toanyargument
offer_idanyargument
offer_idsanyargument
product_idanyargument
variant_idanyargument
market_idanyargument
currencyanyargument
granularityanyargument
metricsanyargument
include_depositsanyargument
include_balancesanyargument
pageanyargument
per_pageanyargument

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_reports_by_offer_export
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_reports_by_offer_export",
    "arguments": {}
  }
}
const result = await client.callTool("preorders_reports_by_offer_export", {});
result = await session.call_tool("preorders_reports_by_offer_export", arguments={})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_reports_by_product_read

TOOLpreorders_reports_by_product_read

Per-product preorder performance, rolled up across variants. Aliases: per-product report, product performance, which products are preordering, report by product.

Parameters

fromanyargument
toanyargument
offer_idanyargument
offer_idsanyargument
product_idanyargument
currencyanyargument

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_reports_by_product_read
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_reports_by_product_read",
    "arguments": {}
  }
}
const result = await client.callTool("preorders_reports_by_product_read", {});
result = await session.call_tool("preorders_reports_by_product_read", arguments={})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_reports_by_product_export

TOOLpreorders_reports_by_product_export

Async CSV export of the per-product preorder report. Aliases: export by_product, download by_product, by product csv.

Parameters

fromanyargument
toanyargument
offer_idanyargument
offer_idsanyargument
product_idanyargument
variant_idanyargument
market_idanyargument
currencyanyargument
granularityanyargument
metricsanyargument
include_depositsanyargument
include_balancesanyargument
pageanyargument
per_pageanyargument

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_reports_by_product_export
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_reports_by_product_export",
    "arguments": {}
  }
}
const result = await client.callTool("preorders_reports_by_product_export", {});
result = await session.call_tool("preorders_reports_by_product_export", arguments={})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_reports_by_variant_read

TOOLpreorders_reports_by_variant_read

Per-variant preorder performance for a specific offer. Aliases: per-variant report, variant performance, which variants are selling, variant report. Note: Requires offer_id (or offer_ids[]). Variant-level data without an offer scope isn't supported.

Parameters

fromanyargument
toanyargument
offer_idanyargument
offer_idsanyargument
product_idanyargument
variant_idanyargument
currencyanyargument

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_reports_by_variant_read
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_reports_by_variant_read",
    "arguments": {}
  }
}
const result = await client.callTool("preorders_reports_by_variant_read", {});
result = await session.call_tool("preorders_reports_by_variant_read", arguments={})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_reports_by_variant_export

TOOLpreorders_reports_by_variant_export

Async CSV export of the per-variant preorder report. Aliases: export by_variant, download by_variant, by variant csv.

Parameters

fromanyargument
toanyargument
offer_idanyargument
offer_idsanyargument
product_idanyargument
variant_idanyargument
market_idanyargument
currencyanyargument
granularityanyargument
metricsanyargument
include_depositsanyargument
include_balancesanyargument
pageanyargument
per_pageanyargument

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_reports_by_variant_export
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_reports_by_variant_export",
    "arguments": {}
  }
}
const result = await client.callTool("preorders_reports_by_variant_export", {});
result = await session.call_tool("preorders_reports_by_variant_export", arguments={})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_reports_cancellations_read

TOOLpreorders_reports_cancellations_read

Preorder cancellation metrics with reason and per-offer breakdowns. Aliases: cancellations, refunds, how often do customers cancel, cancellation rate, cancellation report. Note: Reason breakdown requires the cancel_reason field on OrderAttribution. Reasons not yet captured will appear as 'unknown'.

Parameters

fromanyargument
toanyargument
offer_idanyargument
offer_idsanyargument
currencyanyargument

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_reports_cancellations_read
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_reports_cancellations_read",
    "arguments": {}
  }
}
const result = await client.callTool("preorders_reports_cancellations_read", {});
result = await session.call_tool("preorders_reports_cancellations_read", arguments={})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_reports_cancellations_export

TOOLpreorders_reports_cancellations_export

Async CSV export of the cancellations report. Aliases: export cancellations, download cancellations, cancellations csv.

Parameters

fromanyargument
toanyargument
offer_idanyargument
offer_idsanyargument
product_idanyargument
variant_idanyargument
market_idanyargument
currencyanyargument
granularityanyargument
metricsanyargument
include_depositsanyargument
include_balancesanyargument
pageanyargument
per_pageanyargument

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_reports_cancellations_export
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_reports_cancellations_export",
    "arguments": {}
  }
}
const result = await client.callTool("preorders_reports_cancellations_export", {});
result = await session.call_tool("preorders_reports_cancellations_export", arguments={})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_reports_customers_read

TOOLpreorders_reports_customers_read

Paginated list of customers with preorder activity in the window. Aliases: customer list, who preordered, preorder customers, customers report, list customers.

Parameters

fromanyargument
toanyargument
offer_idanyargument
offer_idsanyargument
currencyanyargument
pageanyargument
per_pageanyargument

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_reports_customers_read
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_reports_customers_read",
    "arguments": {}
  }
}
const result = await client.callTool("preorders_reports_customers_read", {});
result = await session.call_tool("preorders_reports_customers_read", arguments={})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_reports_customers_export

TOOLpreorders_reports_customers_export

Async CSV export of the customers report. Aliases: export customers, download customers, customers csv.

Parameters

fromanyargument
toanyargument
offer_idanyargument
offer_idsanyargument
product_idanyargument
variant_idanyargument
market_idanyargument
currencyanyargument
granularityanyargument
metricsanyargument
include_depositsanyargument
include_balancesanyargument
pageanyargument
per_pageanyargument

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_reports_customers_export
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_reports_customers_export",
    "arguments": {}
  }
}
const result = await client.callTool("preorders_reports_customers_export", {});
result = await session.call_tool("preorders_reports_customers_export", arguments={})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_reports_exports_read

TOOLpreorders_reports_exports_read

Check the status of an async report export and get the download URL when ready. Aliases: check export status, get export, poll export, download url for export, export status.

Parameters

job_idstringrequiredargument

URL path parameter :job_id

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_reports_exports_read
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_reports_exports_read",
    "arguments": {
        "job_id": "string"
      }
  }
}
const result = await client.callTool("preorders_reports_exports_read", {
  "job_id": "string"
});
result = await session.call_tool("preorders_reports_exports_read", arguments={
  "job_id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_reports_revenue_read

TOOLpreorders_reports_revenue_read

Preorder revenue over a date window, bucketed by day/week/month. Aliases: revenue, how much money, sales, preorder revenue, how much did we make, what did we earn.

Parameters

fromanyargument
toanyargument
offer_idanyargument
offer_idsanyargument
product_idanyargument
variant_idanyargument
market_idanyargument
currencyanyargument
granularityanyargument
include_depositsanyargument
include_balancesanyargument

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_reports_revenue_read
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_reports_revenue_read",
    "arguments": {}
  }
}
const result = await client.callTool("preorders_reports_revenue_read", {});
result = await session.call_tool("preorders_reports_revenue_read", arguments={})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_reports_revenue_export

TOOLpreorders_reports_revenue_export

Async CSV export of the preorder revenue report. Aliases: export revenue, download revenue, revenue csv.

Parameters

fromanyargument
toanyargument
offer_idanyargument
offer_idsanyargument
product_idanyargument
variant_idanyargument
market_idanyargument
currencyanyargument
granularityanyargument
metricsanyargument
include_depositsanyargument
include_balancesanyargument
pageanyargument
per_pageanyargument

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_reports_revenue_export
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_reports_revenue_export",
    "arguments": {}
  }
}
const result = await client.callTool("preorders_reports_revenue_export", {});
result = await session.call_tool("preorders_reports_revenue_export", arguments={})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_reports_summary_read

TOOLpreorders_reports_summary_read

High-level overview of preorder activity over a date window. Aliases: summary, overview, how is preorder doing, preorder summary, dashboard stats, what's happening with preorders.

Parameters

fromanyargument
toanyargument
offer_idanyargument
offer_idsanyargument
product_idanyargument
variant_idanyargument
market_idanyargument
currencyanyargument

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_reports_summary_read
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_reports_summary_read",
    "arguments": {}
  }
}
const result = await client.callTool("preorders_reports_summary_read", {});
result = await session.call_tool("preorders_reports_summary_read", arguments={})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

preorders_reports_summary_export

TOOLpreorders_reports_summary_export

Async CSV export of the preorder summary report. Aliases: export summary, download summary, summary csv, export overview.

Parameters

fromanyargument
toanyargument
offer_idanyargument
offer_idsanyargument
product_idanyargument
variant_idanyargument
market_idanyargument
currencyanyargument
granularityanyargument
metricsanyargument
include_depositsanyargument
include_balancesanyargument
pageanyargument
per_pageanyargument

Returns

Returns MCP content array (text, image, or embedded resource).

preorders_reports_summary_export
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "preorders_reports_summary_export",
    "arguments": {}
  }
}
const result = await client.callTool("preorders_reports_summary_export", {});
result = await session.call_tool("preorders_reports_summary_export", arguments={})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

generate_storefront_widget

TOOLgenerate_storefront_widget

Generate a ready-to-paste STOQ storefront widget snippet for a variant — a preorder widget/button, a notify-me (back-in-stock) form, or event-tracking listeners. Returns code, not an API call. surface=sdk for headless/Hydrogen (@artossoftware/stoq-sdk); surface=theme for a Shopify theme running the STOQ app embed (window._RestockRocket + Liquid).

Parameters

surfacestringsdkthemeargument

sdk = headless/Hydrogen SDK. theme = Shopify theme app embed. Default sdk.

widgetstringpreordernotify_meproduct_pageeventsrequiredargument

Which snippet to generate. events = analytics listeners for the stoq:* events.

formatstringcustom-elementscript-tagreactargument

For surface=sdk only. Default custom-element; ignored for surface=theme.

variant_idstringargument

Shopify variant id to embed (optional).

product_idstringargument

Shopify product id — required for notify-me.

Returns

Returns MCP content array (text, image, or embedded resource).

generate_storefront_widget
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "generate_storefront_widget",
    "arguments": {
        "surface": "sdk",
        "widget": "preorder",
        "format": "custom-element",
        "variant_id": "string",
        "product_id": "string"
      }
  }
}
const result = await client.callTool("generate_storefront_widget", {
  "surface": "sdk",
  "widget": "preorder",
  "format": "custom-element",
  "variant_id": "string",
  "product_id": "string"
});
result = await session.call_tool("generate_storefront_widget", arguments={
  "surface": "sdk",
  "widget": "preorder",
  "format": "custom-element",
  "variant_id": "string",
  "product_id": "string"
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}