Ask questions across Shopify, Klaviyo, GA4 and 20+ e-commerce sources in plain English.
Déduit des transports déclarés par cette annonce (streamable-http). Un client absent de cette liste n’est pas écarté pour autant — c’est simplement quelque chose que Forge ne peut pas confirmer.
La vérification confirme l’identité de l’éditeur (la propriété du dépôt), pas la sûreté du code. L’analyse de sécurité couvre les CVE connues et les scripts d’installation suspects.
Lu depuis un véritable échange MCP initialize → tools/list contre l’endpoint déclaré. Aucun outil n’a été invoqué — tools/list est l’appel d’introspection en lecture seule que le protocole prévoit pour cela. Cela reflète ce que le serveur annonçait à cet instant ; un endpoint hébergé n’est figé sur aucune version et peut changer sans préavis.
https://ask-ai-data-connector.com/mcp65 outils · 505 msget_revenue_driversDiagnostic tool for 'why did revenue change?' questions. Bundles headline metric deltas, product mix shifts, and pre-generated ranked hypotheses into one call — so you don't have to stitch signals together yourself and risk asserting causation. Each hypothesis includes: what signal supports it, wha…Diagnostic tool for 'why did revenue change?' questions. Bundles headline metric deltas, product mix shifts, and pre-generated ranked hypotheses into one call — so you don't have to stitch signals together yourself and risk asserting causation. Each hypothesis includes: what signal supports it, wha…
| Paramètre | Type | Description |
|---|---|---|
| store | string | Filter to a specific store domain. |
| startDate | string | Start date (YYYY-MM-DD). Defaults to a 30-day window. |
| endDate | string | End date (YYYY-MM-DD). Defaults to yesterday. |
| comparison | string | Comparison window. Default: previous (equivalent prior period). |
get_anomaliesAnomaly detection across revenue, conversion rate, and refund rate for each of your stores (works for a single store too). Compares the most recent 7-day window against the prior 4 weeks and flags moves outside +/- 1.5 standard deviations or 25% — whichever is stricter. Returns ranked anomalies wit…Anomaly detection across revenue, conversion rate, and refund rate for each of your stores (works for a single store too). Compares the most recent 7-day window against the prior 4 weeks and flags moves outside +/- 1.5 standard deviations or 25% — whichever is stricter. Returns ranked anomalies wit…
| Paramètre | Type | Description |
|---|---|---|
| lookbackWeeks | integer | How many prior weeks to use as baseline (default 4). |
get_sync_healthReport the health of every connected data source for each of your stores (works for a single store too). For each provider/instance: last successful sync timestamp, record count, freshness flag (stale if > 36h), and key-field nullability rates (e.g. % of customers without firstOrderAt populated). U…Report the health of every connected data source for each of your stores (works for a single store too). For each provider/instance: last successful sync timestamp, record count, freshness flag (stale if > 36h), and key-field nullability rates (e.g. % of customers without firstOrderAt populated). U…
Aucun schéma d’entrée n’a été publié pour cet outil.
get_data_sourcesCALL THIS FIRST to see which data sources are connected and have data. Returns connection status and record counts for: Shopify (always connected), Triple Whale, Klaviyo, Gorgias, Recharge, Google Search Console, Google Analytics, Microsoft Clarity, and YouTube. Use this to understand what data is…CALL THIS FIRST to see which data sources are connected and have data. Returns connection status and record counts for: Shopify (always connected), Triple Whale, Klaviyo, Gorgias, Recharge, Google Search Console, Google Analytics, Microsoft Clarity, and YouTube. Use this to understand what data is…
Aucun schéma d’entrée n’a été publié pour cet outil.
get_complete_dashboardGet a unified dashboard with key metrics from ALL connected data sources in one call. Returns a lean snapshot of revenue, traffic, marketing, email, organic search, UX, support, reviews, subscriptions, and loyalty — only for sources that are connected. Use this for 'Give me an overview' or 'How is…Get a unified dashboard with key metrics from ALL connected data sources in one call. Returns a lean snapshot of revenue, traffic, marketing, email, organic search, UX, support, reviews, subscriptions, and loyalty — only for sources that are connected. Use this for 'Give me an overview' or 'How is…
| Paramètre | Type | Description |
|---|---|---|
| startDate | string | Start date (YYYY-MM-DD). Defaults to a 30-day window ending yesterday. |
| endDate | string | End date (YYYY-MM-DD). Defaults to yesterday (last fully-closed day — today is excluded by default to avoid partial-day totals; pass an explicit endDate to inc… |
get_metrics_comparisonBEST FOR COMPARISONS AND THE CANONICAL CONVERSION RATE: Get core e-commerce metrics (Revenue, Sessions, CVR, AOV, Revenue per Session) with period-over-period comparisons. CVR here uses Shopify TrafficStat sessions (Plus/Advanced) — or GA4 sessions as fallback — divided by REAL Shopify orders. This…BEST FOR COMPARISONS AND THE CANONICAL CONVERSION RATE: Get core e-commerce metrics (Revenue, Sessions, CVR, AOV, Revenue per Session) with period-over-period comparisons. CVR here uses Shopify TrafficStat sessions (Plus/Advanced) — or GA4 sessions as fallback — divided by REAL Shopify orders. This…
| Paramètre | Type | Description |
|---|---|---|
| startDate* | string | Start date of current period (YYYY-MM-DD) |
| endDate* | string | End date of current period (YYYY-MM-DD) |
| comparison | string | Comparison type: wow (week-over-week), mom (month-over-month), yoy (year-over-year), previous (equivalent previous period) |
| compareStartDate | string | For custom comparison: start date of comparison period (YYYY-MM-DD) |
| compareEndDate | string | For custom comparison: end date of comparison period (YYYY-MM-DD) |
| compareLabel | string | Label for custom comparison period (e.g., 'Last Year Black Friday Sale') |
get_metrics_multi_compareGet metrics with MULTIPLE comparisons at once. Perfect for questions like 'Show me revenue WoW and YoY' or 'Compare this week to last week and same week last year'. Returns { period, metrics, comparisons, charts, presentation }. `charts` is an array of grouped-bar specs (one per headline metric) wi…Get metrics with MULTIPLE comparisons at once. Perfect for questions like 'Show me revenue WoW and YoY' or 'Compare this week to last week and same week last year'. Returns { period, metrics, comparisons, charts, presentation }. `charts` is an array of grouped-bar specs (one per headline metric) wi…
| Paramètre | Type | Description |
|---|---|---|
| startDate* | string | Start date of current period (YYYY-MM-DD) |
| endDate* | string | End date of current period (YYYY-MM-DD) |
| comparisons | array | List of comparison types to include (default: ['wow', 'yoy']) |
| customComparisons | array | Custom comparison periods (e.g., last year's sale period) |
get_yoy_monthlyMonth-by-month year-over-year comparison for a single metric. SINGLE-CALL ANSWER for 'how is revenue this year vs last year by month?' / 'show me 2026 vs 2025 monthly trends'. Returns { metric, currentYear, compareYear, rows, totals, charts, presentation, seeAlso }. `rows` is one entry per month wi…Month-by-month year-over-year comparison for a single metric. SINGLE-CALL ANSWER for 'how is revenue this year vs last year by month?' / 'show me 2026 vs 2025 monthly trends'. Returns { metric, currentYear, compareYear, rows, totals, charts, presentation, seeAlso }. `rows` is one entry per month wi…
| Paramètre | Type | Description |
|---|---|---|
| metric* | string | Metric key (e.g. 'revenue', 'orders', 'aov', 'cvr', 'sessions', 'tickets_total'). Must be one that has been captured as a calendar-month snapshot. |
| currentYear | integer | Year to use as the current side of the comparison. Defaults to the current calendar year (UTC). |
| compareYear | integer | Year to compare against. Defaults to currentYear - 1. |
| source | string | Filter by source ('shopify', 'tw', 'ga4', 'google-ads', 'search-console', 'gorgias', 'shipstation'). Omit to sum across sources — usually only useful for metri… |
| store | string | Filter by sub-store key (e.g. 'acme-store-us'). Omit to sum across all stores in the workspace. |
get_forecastForecast a metric — answers 'what should I expect?' / 'are we on track this month?' / 'project next month'. Returns a per-store `stores` array (each in its OWN currency — never summed across currencies). Each store has: `currentMonth` (month-to-date actual + projected month-end with low/high band,…Forecast a metric — answers 'what should I expect?' / 'are we on track this month?' / 'project next month'. Returns a per-store `stores` array (each in its OWN currency — never summed across currencies). Each store has: `currentMonth` (month-to-date actual + projected month-end with low/high band,…
| Paramètre | Type | Description |
|---|---|---|
| metric | string | Metric to forecast. Defaults to 'revenue'. |
| store | string | Sub-store key (e.g. 'acme-store-us'). Omit to forecast every store in the workspace (each in its own currency). |
| horizon | integer | Number of future FULL months to project after the current one (1-3). Defaults to 1. |
save_targetStore a merchant's GOAL for a metric over a calendar period ('we need £80k this month'). TRIGGER: whenever the user states a target/goal/budget for a metric. This saves the merchant's own target in our DB (NOT a write-back to any connected tool). Pacing (are we on track?) is computed later on read…Store a merchant's GOAL for a metric over a calendar period ('we need £80k this month'). TRIGGER: whenever the user states a target/goal/budget for a metric. This saves the merchant's own target in our DB (NOT a write-back to any connected tool). Pacing (are we on track?) is computed later on read…
| Paramètre | Type | Description |
|---|---|---|
| metric* | string | Canonical metric key, e.g. 'revenue', 'orders', 'aov', 'cvr', 'refund_rate'. Validated against the metric registry. |
| period | string | Calendar period the target is for. Defaults to 'month'. The target attaches to the CURRENT period of this type. |
| targetValue* | number | The goal value in MAJOR currency units for money metrics (80000 = £80k), or the raw value for counts/percentages (1200 orders, 2.5 for 2.5% cvr). |
| store | string | Sub-store key (e.g. 'acme-store-us'). REQUIRED for money metrics. Omit for a workspace-wide non-money target. |
| note | string | Optional free-text context, e.g. 'stretch goal after the BFCM push'. |
get_targetsList the merchant's active targets with LIVE actual-vs-target pacing, recomputed from ground truth on every call (never stored). Each target returns a `pacing` block: status (ahead / on_track / at_risk / behind / too_early / not_paceable), actualToDate, projected month-end with its interval, progre…List the merchant's active targets with LIVE actual-vs-target pacing, recomputed from ground truth on every call (never stored). Each target returns a `pacing` block: status (ahead / on_track / at_risk / behind / too_early / not_paceable), actualToDate, projected month-end with its interval, progre…
| Paramètre | Type | Description |
|---|---|---|
| metric | string | Only targets for this metric. |
| period | string | Only targets for this period type. |
| store | string | Only targets scoped to this sub-store key. |
get_daily_metricsGet daily/period numbers from one of three domains — pass `domain` to pick which, `report` to pick the report within it. `report:"daily"` exists in ALL THREE domains and means a DIFFERENT payload in each — always pass both `domain` and `report` together, never assume "daily" behaves the same across…Get daily/period numbers from one of three domains — pass `domain` to pick which, `report` to pick the report within it. `report:"daily"` exists in ALL THREE domains and means a DIFFERENT payload in each — always pass both `domain` and `report` together, never assume "daily" behaves the same across…
| Paramètre | Type | Description |
|---|---|---|
| domain* | string | Which daily-metrics domain to query. See the tool description for the report list and defaults per domain. |
| report | string | Report type — valid values depend on `domain` (see tool description). Defaults to "daily" in every domain if omitted, but "daily" means a different payload per… |
| startDate | string | Start date (YYYY-MM-DD). Default window (if omitted) varies by domain — see tool description; domain:"funnel" has no real default, always pass this explicitly. |
| endDate | string | End date (YYYY-MM-DD). Defaults to yesterday (last fully-closed day) when omitted. |
| limit | integer | For domain:"operational", report:"daily": number of days to return (default: 30). |
get_customer_insightsGet customer behavior and retention insights. All reports are per-store in multi-store mode — use the store param to target a specific store. Reports: new_vs_returning (revenue/orders/AOV split by first-time vs repeat buyers), repeat_metrics (repeat purchase rate, avg days between purchases, BOTH a…Get customer behavior and retention insights. All reports are per-store in multi-store mode — use the store param to target a specific store. Reports: new_vs_returning (revenue/orders/AOV split by first-time vs repeat buyers), repeat_metrics (repeat purchase rate, avg days between purchases, BOTH a…
| Paramètre | Type | Description |
|---|---|---|
| report* | string | Report type |
| startDate | string | Start date (YYYY-MM-DD) |
| endDate | string | End date (YYYY-MM-DD) |
| months | integer | For cohorts and retention_curve: number of months to look back for acquisition (default: 6 for cohorts, 12 for retention_curve) |
| sortBy | string | For top_customers: sort by totalSpent or orders (default: totalSpent) |
| minSpent | number | For lapsed_high_value: minimum lifetime spend in major units, e.g. 500 for £500 (default: 500) |
| daysInactive | integer | For lapsed_high_value: days since last order to count as lapsed (default: 90) |
| maxDaysInactive | integer | For lapsed_high_value: upper bound on inactivity — customers whose last order is older than this are treated as churned, not lapsed, and excluded (default: 365… |
| limit | integer | For top_customers and lapsed_high_value: number of results (default: 20) |
get_refundsGet refund/return analytics. Reports: summary (total refunds, refund rate, % of revenue — supports compare for WoW/MoM/YoY trend), top_products (most refunded products by amount or rate), by_reason (classifies refund notes into buckets: size_fit_too_small, size_fit_too_large, quality_defect, wrong_…Get refund/return analytics. Reports: summary (total refunds, refund rate, % of revenue — supports compare for WoW/MoM/YoY trend), top_products (most refunded products by amount or rate), by_reason (classifies refund notes into buckets: size_fit_too_small, size_fit_too_large, quality_defect, wrong_…
| Paramètre | Type | Description |
|---|---|---|
| report* | string | Report type |
| startDate | string | Start date (YYYY-MM-DD). Defaults to a 30-day window ending yesterday. |
| endDate | string | End date (YYYY-MM-DD). Defaults to yesterday (last fully-closed day — today is excluded by default to avoid partial-day totals; pass an explicit endDate to inc… |
| limit | integer | For top_products and by_reason: number of results (default: 10) |
| sortBy | string | For top_products: sort field (default: amount) |
| compare | string | For summary: attach a `comparison` block showing the same metrics for the WoW/MoM/YoY/previous-period window with percentage changes. |
get_discountsGet discount code analytics. Reports: summary (usage rate, AOV impact), top_codes (best performing codes by revenue/usage), code_details (specific code performance — requires 'code' param), by_product (which discount codes were applied to which products — optionally filter by 'code').Get discount code analytics. Reports: summary (usage rate, AOV impact), top_codes (best performing codes by revenue/usage), code_details (specific code performance — requires 'code' param), by_product (which discount codes were applied to which products — optionally filter by 'code').
| Paramètre | Type | Description |
|---|---|---|
| report* | string | Report type |
| startDate | string | Start date (YYYY-MM-DD) |
| endDate | string | End date (YYYY-MM-DD) |
| code | string | For code_details: required. For by_product: optional filter by specific discount code. |
| limit | integer | For top_codes/by_product: number of results (default: 10/20) |
| sortBy | string | For top_codes: sort field |
get_velocityGet sales-velocity analytics from one of two angles — pass `angle` to pick which, `report` to pick the report within it.
• angle:"inventory" — the INVENTORY-management angle: how fast stock is moving and what to reorder. Reports: summary (sell-through rate, turnover, health status), by_product (pr…Get sales-velocity analytics from one of two angles — pass `angle` to pick which, `report` to pick the report within it. • angle:"inventory" — the INVENTORY-management angle: how fast stock is moving and what to reorder. Reports: summary (sell-through rate, turnover, health status), by_product (pr…
| Paramètre | Type | Description |
|---|---|---|
| angle* | string | Which velocity angle to query. See the tool description for the report list and defaults per angle. |
| report* | string | Report type — valid values depend on `angle` (see tool description): inventory has summary/by_product/restock; product has summary/by_product/trend/stagnant. |
| days | integer | Days for velocity calculation (default: 30 in both angles). Ignored by angle:"product", report:"summary" — that report is always a fixed trailing-30-day aggreg… |
| limit | integer | For by_product: number of products (default: 20). |
| sortBy | string | For by_product: sort field. |
| filter | string | For by_product: filter. |
| leadTimeDays | integer | For angle:"inventory", report:"restock": lead time in days (default: 14). |
| safetyStockDays | integer | For angle:"inventory", report:"restock": safety buffer days (default: 7). |
| productId | string | For angle:"product", report:"trend": Shopify product ID (required). |
| variantId | string | For angle:"product", report:"trend": Shopify variant ID (optional). |
| maxOrders | integer | For angle:"product", report:"stagnant": max orders to count as stagnant (default: 0 = zero sales only, use 1-2 for near-zero). |
get_marketing_performanceGet marketing performance dashboard — INCLUDING the canonical checkout funnel. ALSO USE THIS for 'checkout funnel' / 'where do customers drop off' / 'how is my funnel performing' questions; do NOT manually stitch a funnel from get_analytics + get_store_summary. Returns: `funnel` (sessions, addToCar…Get marketing performance dashboard — INCLUDING the canonical checkout funnel. ALSO USE THIS for 'checkout funnel' / 'where do customers drop off' / 'how is my funnel performing' questions; do NOT manually stitch a funnel from get_analytics + get_store_summary. Returns: `funnel` (sessions, addToCar…
| Paramètre | Type | Description |
|---|---|---|
| startDate | string | Start date (YYYY-MM-DD). Defaults to a 30-day window ending yesterday. |
| endDate | string | End date (YYYY-MM-DD). Defaults to yesterday (last fully-closed day — today is excluded by default to avoid partial-day totals; pass an explicit endDate to inc… |
get_spend_reconciliationReconcile ad-spend numbers between Triple Whale's pixel attribution and the ad-platform APIs (Google Ads, Meta, TikTok). Same channel, different numbers — pixel typically captures 10-30% of true spend due to ad blockers, consent banners, and iOS ATT. Returns per-channel platform-API spend, TW pixel…Reconcile ad-spend numbers between Triple Whale's pixel attribution and the ad-platform APIs (Google Ads, Meta, TikTok). Same channel, different numbers — pixel typically captures 10-30% of true spend due to ad blockers, consent banners, and iOS ATT. Returns per-channel platform-API spend, TW pixel…
| Paramètre | Type | Description |
|---|---|---|
| startDate | string | Start date (YYYY-MM-DD). Defaults to a 30-day window ending yesterday. |
| endDate | string | End date (YYYY-MM-DD). Defaults to yesterday (last fully-closed day — today is excluded by default to avoid partial-day totals; pass an explicit endDate to inc… |
get_products_by_channelGet products with marketing channel attribution showing which channels drive sales for each product. Attribution uses Triple Whale last-click data joined to Shopify order line items — requires Triple Whale to be connected. When Triple Whale is not connected, all orders appear under 'unattributed'.…Get products with marketing channel attribution showing which channels drive sales for each product. Attribution uses Triple Whale last-click data joined to Shopify order line items — requires Triple Whale to be connected. When Triple Whale is not connected, all orders appear under 'unattributed'.…
| Paramètre | Type | Description |
|---|---|---|
| startDate | string | Start date (YYYY-MM-DD). Defaults to a 30-day window ending yesterday. |
| endDate | string | End date (YYYY-MM-DD). Defaults to yesterday (last fully-closed day — today is excluded by default to avoid partial-day totals; pass an explicit endDate to inc… |
| limit | integer | Number of products to return (default: 10, max 100). |
| _offset | integer | Pagination offset. If a response's _pagination.hasMore is true, call again with _offset to page through the full set. |
get_cart_affinityCo-purchase / market-basket analysis. Given an anchor product (productTitle), returns other products frequently bought with it, ranked by lift. Reports: basket (same-order co-purchase — best for bundles, 'frequently bought together' widgets, post-checkout upsells), lifetime (same-customer across al…Co-purchase / market-basket analysis. Given an anchor product (productTitle), returns other products frequently bought with it, ranked by lift. Reports: basket (same-order co-purchase — best for bundles, 'frequently bought together' widgets, post-checkout upsells), lifetime (same-customer across al…
| Paramètre | Type | Description |
|---|---|---|
| report* | string | basket = same-order co-purchase; lifetime = same-customer across orders. |
| productTitle* | string | Anchor product title (case-insensitive substring match). Required. |
| startDate | string | Start date (YYYY-MM-DD). Defaults to a 30-day window ending yesterday. For lifetime: bounds anchor acquisition; candidate purchases are looked up across the cu… |
| endDate | string | End date (YYYY-MM-DD). Defaults to yesterday (last fully-closed day — today is excluded by default to avoid partial-day totals; pass an explicit endDate to inc… |
| limit | integer | Number of co-products to return (default: 10, max: 25). |
| minCoOccurrences | integer | Suppress pairs with fewer than this many co-occurrences (default: 3). Raise to 5–10 for high-volume stores; lower to 2 for low-volume stores or specific anchor… |
get_store_summaryGet overall store metrics from Shopify order data ONLY: revenue, orders, average order value, items sold, discounts, unique customers — all for the specified period. Includes percentage changes vs prior period. Also returns all-time totals (orders, products, customers). Use this for high-level stor…Get overall store metrics from Shopify order data ONLY: revenue, orders, average order value, items sold, discounts, unique customers — all for the specified period. Includes percentage changes vs prior period. Also returns all-time totals (orders, products, customers). Use this for high-level stor…
| Paramètre | Type | Description |
|---|---|---|
| startDate | string | Start date in ISO format (YYYY-MM-DD). Defaults to a 30-day window ending yesterday. |
| endDate | string | End date in ISO format (YYYY-MM-DD). Defaults to yesterday (last fully-closed day — today is excluded by default to avoid partial-day totals; pass an explicit… |
query_ordersList individual orders matching filters: date range, financial status, customerId, min/max order total, order tags — sortable by date or total. Returns one row per order with name, status, fulfillment, orderTotal (formatted), items count, country, tags, and date. Use for 'show me recent orders', 'o…List individual orders matching filters: date range, financial status, customerId, min/max order total, order tags — sortable by date or total. Returns one row per order with name, status, fulfillment, orderTotal (formatted), items count, country, tags, and date. Use for 'show me recent orders', 'o…
| Paramètre | Type | Description |
|---|---|---|
| startDate | string | Start date (YYYY-MM-DD). Defaults to a 30-day window ending yesterday. |
| endDate | string | End date (YYYY-MM-DD). Defaults to yesterday. |
| status | string | Filter by financial status |
| customerId | string | Filter to orders for a specific customer (Shopify customer ID) |
| minTotal | number | Minimum order total in dollars |
| maxTotal | number | Maximum order total in dollars |
| tags | array | Filter to orders carrying these Shopify order tags. Matching is case-insensitive. By default an order matches if it has ANY of the tags (see tagMatch). E.g. ['… |
| tagMatch | string | How to match multiple tags: 'any' (default, order has at least one) or 'all' (order has every listed tag). |
| limit | integer | Number of results (default: 20, max: 50) |
| offset | integer | Pagination offset |
| sortBy | string | Sort field (default: processedAt) |
| sortOrder | string | Sort order (default: desc) |
get_orderLook up a specific order with full line item details (product, variant, SKU, quantity, price, vendor). Use orderName for user-facing IDs like '#1001', or orderId for Shopify numeric IDs. Also supports orderIds (array) to look up multiple orders at once — useful for cross-referencing with Triple Wha…Look up a specific order with full line item details (product, variant, SKU, quantity, price, vendor). Use orderName for user-facing IDs like '#1001', or orderId for Shopify numeric IDs. Also supports orderIds (array) to look up multiple orders at once — useful for cross-referencing with Triple Wha…
| Paramètre | Type | Description |
|---|---|---|
| orderName | string | Order name e.g. '#1001' or '1001' |
| orderId | string | Shopify numeric order ID e.g. '5559266041988' |
| orderIds | array | Array of Shopify numeric order IDs for batch lookup (max 50) |
get_ordersGet order analytics by dimension. Reports: by_status (order counts/revenue by financial status), by_country (geographic sales breakdown — supports compare for WoW/MoM/YoY trend, returns top rising/falling countries), by_product (BEST FOR: 'how many customers bought product X?', 'which products have…Get order analytics by dimension. Reports: by_status (order counts/revenue by financial status), by_country (geographic sales breakdown — supports compare for WoW/MoM/YoY trend, returns top rising/falling countries), by_product (BEST FOR: 'how many customers bought product X?', 'which products have…
| Paramètre | Type | Description |
|---|---|---|
| report* | string | Report type |
| sortBy | string | For by_product: sort field (default: revenue) |
| startDate | string | Start date (YYYY-MM-DD) |
| endDate | string | End date (YYYY-MM-DD) |
| limit | integer | For by_country: number of countries (default: 10). For by_tag: max tags returned (default: 20). |
| compare | string | For by_country: attach a `comparison` block with rising/falling countries vs the WoW/MoM/YoY/previous-period window. |
| tag | string | For by_tag: focus a single order tag (case-insensitive). Omit to scan every tag and surface the ones dropping. |
| lookbackWeeks | integer | For by_tag: number of prior weekly windows to use as the baseline (default 4, range 2-12). |
| lagDays | integer | For by_tag: end the windows this many days back so the current week is complete days (default 1). Raise it if a marketplace app applies its order tag with a de… |
get_top_productsGet top selling products ranked by revenue or quantity. Set level to 'variant' to break down by variant (size, colour, etc.) — includes SKU, discount, and profit margin when cost data is available. Set level to 'category' for a revenue / COGS / gross-profit / margin-% rollup by product TYPE (e.g. '…Get top selling products ranked by revenue or quantity. Set level to 'variant' to break down by variant (size, colour, etc.) — includes SKU, discount, and profit margin when cost data is available. Set level to 'category' for a revenue / COGS / gross-profit / margin-% rollup by product TYPE (e.g. '…
| Paramètre | Type | Description |
|---|---|---|
| startDate | string | Start date (YYYY-MM-DD) |
| endDate | string | End date (YYYY-MM-DD) |
| metric | string | Sort by: revenue or quantity (default: revenue) |
| limit | integer | Number of results (default: 10) |
| level | string | Grouping level: product (default), variant (by size/colour/SKU), or category (revenue/COGS/gross-profit/margin by product type) |
| productTitle | string | For variant level: filter to variants of a specific product (partial match) |
| compare | string | Attach a `comparison` block with the top rising/falling/new products vs the WoW/MoM/YoY/previous-period window. |
get_product_catalogGet product catalog with inventory levels, pricing, cost, margins, status, and SEO metadata. Returns: title, vendor, productType, price, cost, margin, marginPercent, totalInventory, seoTitle (Shopify global.title_tag), seoDescription (Shopify global.description_tag), productUrl (full storefront URL…Get product catalog with inventory levels, pricing, cost, margins, status, and SEO metadata. Returns: title, vendor, productType, price, cost, margin, marginPercent, totalInventory, seoTitle (Shopify global.title_tag), seoDescription (Shopify global.description_tag), productUrl (full storefront URL…
| Paramètre | Type | Description |
|---|---|---|
| limit | integer | Number of products (default: 20) |
| store | string | Filter to a specific store domain. Omit to query all connected stores. |
get_campaign_impactDid THAT campaign actually work? Cross-source synthesis tool that measures the real impact of a specific Klaviyo campaign by comparing the post-send window against a DAY-OF-WEEK-ALIGNED baseline (same N days one week earlier). Returns: the campaign metadata, Klaviyo's own attribution claim, the act…Did THAT campaign actually work? Cross-source synthesis tool that measures the real impact of a specific Klaviyo campaign by comparing the post-send window against a DAY-OF-WEEK-ALIGNED baseline (same N days one week earlier). Returns: the campaign metadata, Klaviyo's own attribution claim, the act…
| Paramètre | Type | Description |
|---|---|---|
| campaignId | string | Klaviyo internal campaign ID (exact match). Use this when you already know it; otherwise use campaignName. |
| campaignName | string | Fuzzy match on campaign name (case-insensitive substring). Returns the most recent match; surfaces a disambiguation block if multiple found. |
| windowDays | integer | Post-send measurement window in days (default 7). Klaviyo's attribution uses 5 days for campaigns; 7 captures the bulk of impact for most consumer goods. Incre… |
| store | string | Filter to a specific store domain. Omit to query all connected stores. |
get_product_healthCROSS-SOURCE PRODUCT HEALTH SCAN — one call that returns per-product reviews + refunds + sales velocity + inventory + a composite 'needs attention' score (0-100). Use this for 'which products need fixing?' / 'what should I look at?' / 'are there any product issues?' / 'which products are performing…CROSS-SOURCE PRODUCT HEALTH SCAN — one call that returns per-product reviews + refunds + sales velocity + inventory + a composite 'needs attention' score (0-100). Use this for 'which products need fixing?' / 'what should I look at?' / 'are there any product issues?' / 'which products are performing…
| Paramètre | Type | Description |
|---|---|---|
| startDate | string | Start of sales window (YYYY-MM-DD). Defaults to 30 days ago. |
| endDate | string | End of sales window (YYYY-MM-DD). Defaults to yesterday (last fully-closed day — today is excluded by default to avoid partial-day totals; pass an explicit end… |
| limit | integer | Max products to analyse, ordered by recent revenue (default: 50, max: 100). |
| minAttentionScore | integer | Filter to products with attentionScore >= this value (default: 0 = all). Set to 30 to see only products with a flagged signal. |
| store | string | Filter to a specific store domain. Omit to query all connected stores. |
get_product_analyticsGet Shopify product sales analytics — units sold and revenue per product from ShopifyQL. Requires Shopify Plus or Advanced. NOTE: Views, add-to-cart, and purchase funnel counts are no longer available from ShopifyQL (Shopify removed these fields) — use get_marketing_performance for funnel analysis…Get Shopify product sales analytics — units sold and revenue per product from ShopifyQL. Requires Shopify Plus or Advanced. NOTE: Views, add-to-cart, and purchase funnel counts are no longer available from ShopifyQL (Shopify removed these fields) — use get_marketing_performance for funnel analysis…
| Paramètre | Type | Description |
|---|---|---|
| report* | string | Report type |
| startDate | string | Start date (YYYY-MM-DD). Defaults to a 30-day window ending yesterday. |
| endDate | string | End date (YYYY-MM-DD). Defaults to yesterday (last fully-closed day — today is excluded by default to avoid partial-day totals; pass an explicit endDate to inc… |
| productId | string | For product_detail: Shopify product ID |
| sortBy | string | For top_products: sort field (default: revenue) |
| limit | integer | Number of results (default: 20) |
get_collectionsGet product collections and their contents, including SEO metadata. Reports: list (all collections with product counts plus seoTitle/seoDescription), products (products in a specific collection with pricing, inventory, SEO, and optional sales data). seoTitle/seoDescription correspond to Shopify's g…Get product collections and their contents, including SEO metadata. Reports: list (all collections with product counts plus seoTitle/seoDescription), products (products in a specific collection with pricing, inventory, SEO, and optional sales data). seoTitle/seoDescription correspond to Shopify's g…
| Paramètre | Type | Description |
|---|---|---|
| report* | string | Report type |
| collectionId | string | For products: Shopify collection ID |
| collectionTitle | string | For products: search by collection title (partial match) |
| startDate | string | For products: include sales data from this date (YYYY-MM-DD) |
| endDate | string | For products: include sales data to this date (YYYY-MM-DD) |
| limit | integer | Number of results (default: 50) |
get_customersGet customer analytics by dimension. Reports: segments (one-time/returning/VIP/at-risk), top (by spend or orders — includes customerId for each customer), by_country (geographic distribution — country is derived from order shipping address, not customer records; Shopify does not expose customer cou…Get customer analytics by dimension. Reports: segments (one-time/returning/VIP/at-risk), top (by spend or orders — includes customerId for each customer), by_country (geographic distribution — country is derived from order shipping address, not customer records; Shopify does not expose customer cou…
| Paramètre | Type | Description |
|---|---|---|
| report* | string | Report type |
| sortBy | string | For top: totalSpent or orders (default: totalSpent) |
| customerId | string | For customer_history: Shopify customer ID (from the 'top' report's customerId field) |
| rank | integer | For customer_history: look up customer by rank in top customers list (e.g. 1 = top spender) |
| tag | string | For customer_history: find customer by tag |
| tags | array | For tag_segments: tags to count explicitly and cross-tabulate (matched case-insensitively; always included even below minTagVolume). |
| purchaserFilter | string | For tag_segments: which cohort to segment (default non_purchasers = ordersCount 0). |
| minTagVolume | integer | For tag_segments: also surface any other (non-requested) tag with at least this many customers in scope (default 200). |
| limit | integer | Number of results (default: 10) |
get_inventoryGet inventory analytics. Reports: summary (activeProducts count, totalVariants, outOfStock variant count, lowStock variant count with >0 and ≤10 units, totalUnits, active locations count), low_stock (products needing reorder — threshold defaults to 10 units), out_of_stock (zero-inventory variants),…Get inventory analytics. Reports: summary (activeProducts count, totalVariants, outOfStock variant count, lowStock variant count with >0 and ≤10 units, totalUnits, active locations count), low_stock (products needing reorder — threshold defaults to 10 units), out_of_stock (zero-inventory variants),…
| Paramètre | Type | Description |
|---|---|---|
| report* | string | Report type |
| threshold | integer | For low_stock: stock level threshold (default: 10) |
| limit | integer | Number of products (default: 20) |
get_weekly_trendsGet weekly revenue, orders, and items sold as a time series. Data is aggregated live from the Shopify Order table. Returns { rows, charts, presentation }. `rows` is the table — each row: weekOf, revenue (formatted), orders, itemsSold. `charts` is an array of three ready-to-render chart specs (reven…Get weekly revenue, orders, and items sold as a time series. Data is aggregated live from the Shopify Order table. Returns { rows, charts, presentation }. `rows` is the table — each row: weekOf, revenue (formatted), orders, itemsSold. `charts` is an array of three ready-to-render chart specs (reven…
| Paramètre | Type | Description |
|---|---|---|
| weeks | integer | Number of weeks (default: 12) |
get_connector_dataGet data from one connected third-party connector. Pass `connector` to pick which one and `report` to pick the report within it — valid `report` values differ per connector; this is the quick index, call get_help(<topic>) for the full picker + gotchas per connector.
• connector:"triple-whale" — ma…Get data from one connected third-party connector. Pass `connector` to pick which one and `report` to pick the report within it — valid `report` values differ per connector; this is the quick index, call get_help(<topic>) for the full picker + gotchas per connector. • connector:"triple-whale" — ma…
| Paramètre | Type | Description |
|---|---|---|
| connector* | string | Which third-party connector to query. Only connectors this shop has connected are valid — tools/list narrows this enum per shop; call get_data_sources if unsur… |
| report* | string | Report type — valid values depend on `connector`. See the tool description for the per-connector list, or get_help(connector) for full detail. |
| startDate | string | Start date (YYYY-MM-DD). Meaning/default varies slightly per connector — see get_help(connector). |
| endDate | string | End date (YYYY-MM-DD). Meaning/default varies slightly per connector — see get_help(connector). |
| limit | integer | Number of results. Applies to: klaviyo, sendy, gorgias (tickets), recharge (cancellation_reasons), google-search-console, youtube, ringcentral (calls), reviews… |
| status | string | For klaviyo (campaigns/flows/top_flows — top_flows includes paused and archived flows unless you pass status:'live') / gorgias (tickets) / woocommerce (orders)… |
| metric | string | For klaviyo top_campaigns/top_flows: ranking metric (revenue, openRate, clickRate). |
| interval | string | For klaviyo signup_trends: time interval. |
| channel | string | For gorgias tickets: filter by channel. For triple-whale attributions/by_channel/product_attribution: filter by marketing channel. |
| search | string | For gorgias tickets: case-insensitive keyword search across ticket subject and message body. |
| _offset | integer | For gorgias tickets: pagination offset (default: 0). |
| days | integer | For recharge upcoming_charges: FORWARD forecast window (default 30). For youtube top_videos and swish demand_trends: BACKWARD lookback window (default 7 / 30 r… |
| siteUrl | string | For google-search-console: exact siteUrl from a connectedSites entry, e.g. 'sc-domain:example-store.com'. |
| store | string | For google-search-console: Shopify store key (e.g. 'acme-store-us') to auto-resolve the assigned property. |
| sortBy | string | For google-search-console top_queries/top_pages: 'clicks' or 'impressions'. For smile top_members: 'pointsBalance', 'totalEarned', or 'totalSpent'. |
| direction | string | For google-search-console keyword_movers/page_ranking_changes: filter by ranking direction. |
| brandTerms | string | For google-search-console branded_split: comma-separated brand terms (auto-detected if omitted). |
| minImpressions | integer | For google-search-console cannibalization: minimum impressions (default 10). |
| dimension | string | For clarity by_dimension: dimension to break down by (required). |
| videoId | string | For youtube video_details: YouTube video ID (required). |
| query | string | For youtube search_transcripts: search query (required). |
| orderBy | string | For youtube videos: sort field. |
| customerId | string | For google-ads: customer ID to filter by (multi-account). Call with report='summary' first to see connected accounts. |
| model | string | For triple-whale channel_by_model: which attribution model to read. Defaults to 'Triple Attribution'. |
ask_mobyESCAPE HATCH: ask Triple Whale's own AI assistant (Moby) a free-form question, answered by Triple Whale's servers against their full dataset. Use ONLY when no structured tool covers the question — prefer get_connector_data(connector:'triple-whale') / get_marketing_performance / get_spend_reconcilia…ESCAPE HATCH: ask Triple Whale's own AI assistant (Moby) a free-form question, answered by Triple Whale's servers against their full dataset. Use ONLY when no structured tool covers the question — prefer get_connector_data(connector:'triple-whale') / get_marketing_performance / get_spend_reconcilia…
| Paramètre | Type | Description |
|---|---|---|
| question* | string | The question, in natural language, as you would ask Triple Whale's UI assistant. Include the time window explicitly (e.g. 'in the last 30 days'). |
| store | string | For multi-store accounts: which store's TW instance to ask (matches the instance's store assignment). Omit for single-instance accounts. |
get_marketsGet Shopify Markets data — geographic market definitions and per-market revenue performance. Reports: markets (list of configured markets with their assigned countries and currencies), performance (revenue, orders, AOV, and revenue share broken down by market for a date range). Use this to understa…Get Shopify Markets data — geographic market definitions and per-market revenue performance. Reports: markets (list of configured markets with their assigned countries and currencies), performance (revenue, orders, AOV, and revenue share broken down by market for a date range). Use this to understa…
| Paramètre | Type | Description |
|---|---|---|
| report* | string | Report type: markets (configured markets and countries) or performance (revenue by market) |
| startDate | string | Start date (YYYY-MM-DD). Defaults to a 30-day window ending yesterday. |
| endDate | string | End date (YYYY-MM-DD). Defaults to yesterday (last fully-closed day — today is excluded by default to avoid partial-day totals; pass an explicit endDate to inc… |
get_query_to_urlJoin Google Search Console queries with Shopify product sales — answers questions that pure SEO or pure sales tools can't. Reports: by_url (given a product URL, return its top driving organic queries plus the matching product's sales/orders/refunds and an implied click-to-purchase rate), unconverti…Join Google Search Console queries with Shopify product sales — answers questions that pure SEO or pure sales tools can't. Reports: by_url (given a product URL, return its top driving organic queries plus the matching product's sales/orders/refunds and an implied click-to-purchase rate), unconverti…
| Paramètre | Type | Description |
|---|---|---|
| report* | string | Report type |
| url | string | For by_url: the exact URL as it appears in Search Console (https:// included, with or without trailing slash to match how GSC indexed it). |
| startDate | string | Start date (YYYY-MM-DD). Defaults to a 30-day window ending yesterday. |
| endDate | string | End date (YYYY-MM-DD). Defaults to yesterday (last fully-closed day — today is excluded by default to avoid partial-day totals; pass an explicit endDate to inc… |
| limit | integer | Number of results (by_url: top queries to return; unconverting_pages / top_pages_with_sales: max URLs returned). Default 20. |
| minClicks | integer | For unconverting_pages: minimum organic clicks for a URL to be considered (default 50). Lower for low-traffic stores; raise to focus on bigger problems. |
| maxSales | integer | For unconverting_pages: maximum units sold for the matched product in the same window (default 2). 0 means 'pages with zero sales only'. |
get_reviewsGet product review analytics (Yotpo, Reviews.io, or Judge.me). Reports: summary (average rating, distribution), trends (daily volume/score), top_rated (best reviewed products), lowest_rated (worst reviewed), recent (latest reviews), by_product (all reviews for a specific product — requires productI…Get product review analytics (Yotpo, Reviews.io, or Judge.me). Reports: summary (average rating, distribution), trends (daily volume/score), top_rated (best reviewed products), lowest_rated (worst reviewed), recent (latest reviews), by_product (all reviews for a specific product — requires productI…
| Paramètre | Type | Description |
|---|---|---|
| report* | string | Report type |
| provider | string | Review provider (auto-detected if omitted) |
| startDate | string | Start date (YYYY-MM-DD) |
| endDate | string | End date (YYYY-MM-DD) |
| limit | integer | Number of results |
| minReviews | integer | For top_rated/lowest_rated: minimum review count (default: 3) |
| minScore | integer | For recent/search: minimum star rating (1-5) |
| maxScore | integer | For recent/search: maximum star rating (1-5) |
| keyword | string | For search: keyword to find in review content |
| sku | string | For search: filter to specific product SKU |
| productId | string | For by_product/themes: Shopify product ID (numeric or GID) to scope to one product |
| productTitle | string | For by_product/themes: product title (partial match, case-insensitive) |
get_abandoned_checkoutsGet cart abandonment analytics. Reports: stats (trackedAbandonmentRecords, abandonedCheckouts, recoveredCheckouts, recoveryRate %, abandonedValue, lostRevenue, abandonedAgeDistribution — how long ago the still-unrecovered carts were abandoned: 0-24h, 24-48h, 2-7d, 7-30d, 30d+), top_products (most f…Get cart abandonment analytics. Reports: stats (trackedAbandonmentRecords, abandonedCheckouts, recoveredCheckouts, recoveryRate %, abandonedValue, lostRevenue, abandonedAgeDistribution — how long ago the still-unrecovered carts were abandoned: 0-24h, 24-48h, 2-7d, 7-30d, 30d+), top_products (most f…
| Paramètre | Type | Description |
|---|---|---|
| report* | string | Report type |
| startDate | string | Start date (YYYY-MM-DD). Defaults to a 30-day window ending yesterday. |
| endDate | string | End date (YYYY-MM-DD). Defaults to yesterday (last fully-closed day — today is excluded by default to avoid partial-day totals; pass an explicit endDate to inc… |
| limit | integer | For top_products: number of products (default: 10) |
get_analyticsGet Google Analytics (GA4) website traffic and e-commerce data. **DO NOT USE THIS FOR CHECKOUT FUNNEL OR CVR QUESTIONS** — call `get_marketing_performance` instead, which uses Shopify TrafficStat (the canonical session source) and Shopify orders. GA4 over-counts sessions (~2-3× higher than Shopify…Get Google Analytics (GA4) website traffic and e-commerce data. **DO NOT USE THIS FOR CHECKOUT FUNNEL OR CVR QUESTIONS** — call `get_marketing_performance` instead, which uses Shopify TrafficStat (the canonical session source) and Shopify orders. GA4 over-counts sessions (~2-3× higher than Shopify…
| Paramètre | Type | Description |
|---|---|---|
| report* | string | Report type. Use 'by_source' for AI / ChatGPT / Perplexity / Claude / referrer-level traffic questions and 'what changed in my traffic sources'. Use 'top_pages… |
| compare | boolean | For by_source: attach the prior-window comparison (per-source deltas, newSources, disappearedSources, spam-referrer flag). Defaults to true; pass false to skip. |
| propertyId | string | Filter to a specific GA4 property. Works on ALL reports. Use the exact propertyId from the summary response (e.g. 'properties/375762433'). Omit to get aggregat… |
| periodType | string | Shorthand time window (default: last30days). Expanded to startDate/endDate automatically. Ignored if startDate is provided explicitly. |
| startDate | string | Start date (YYYY-MM-DD). Overrides periodType. Defaults to a 30-day window ending yesterday. |
| endDate | string | End date (YYYY-MM-DD). Defaults to yesterday (last fully-closed day — today is excluded by default to avoid partial-day totals; pass an explicit endDate to inc… |
| limit | integer | For by_country, top_products, and by_campaign: number of results (default: 20; by_campaign default 50) |
| sortBy | string | For top_products: revenue or units. For by_campaign: revenue (default), sessions, or orders. |
| medium | string | For by_campaign: filter to a UTM medium, e.g. 'email' to isolate the email program. Omit to include all tagged campaigns. |
get_ga4_funnelRun a real GA4 funnel report — step-by-step conversion through a sequence of events, with optional breakdown and next-action analysis. This is a LIVE call to the GA4 Data API (not synced data), so it can answer 'where do users drop off between viewing a product and purchasing?' with GA4's own funne…Run a real GA4 funnel report — step-by-step conversion through a sequence of events, with optional breakdown and next-action analysis. This is a LIVE call to the GA4 Data API (not synced data), so it can answer 'where do users drop off between viewing a product and purchasing?' with GA4's own funne…
| Paramètre | Type | Description |
|---|---|---|
| steps* | array | Ordered funnel steps. Each: { name, event } for a simple event filter, or { name, filterExpression } for a full GA4 FunnelFilterExpression. |
| startDate | string | Start date (YYYY-MM-DD). Defaults to a 30-day window ending yesterday. |
| endDate | string | End date (YYYY-MM-DD). Defaults to yesterday (GA4 data is T-1). |
| breakdownDimension | string | Optional dimension to segment the funnel by (e.g. 'deviceCategory', 'country'). |
| nextActionDimension | string | Optional dimension to analyse what users do after each step (e.g. 'eventName', 'pagePath'). |
| propertyId | string | Filter to a specific GA4 property (e.g. 'properties/375762433'). Omit to use the configured property. |
get_ga4_dimensionsDiscovery tool: list the GA4 property's custom dimensions and custom metrics (with apiName, uiName, description), plus the standard dimension/metric API names available on the property. Call this to find valid field names before building a get_ga4_funnel report or interpreting custom events. LIVE G…Discovery tool: list the GA4 property's custom dimensions and custom metrics (with apiName, uiName, description), plus the standard dimension/metric API names available on the property. Call this to find valid field names before building a get_ga4_funnel report or interpreting custom events. LIVE G…
| Paramètre | Type | Description |
|---|---|---|
| propertyId | string | Filter to a specific GA4 property (e.g. 'properties/375762433'). Omit to use the configured property. |
get_insightsGet the business improvement checklist (the FINDINGS to act on). If insights exist, returns the current checklist with status. If no insights exist (or refresh is requested), returns a data bundle with all key metrics from connected sources — use this data to generate actionable business recommenda…Get the business improvement checklist (the FINDINGS to act on). If insights exist, returns the current checklist with status. If no insights exist (or refresh is requested), returns a data bundle with all key metrics from connected sources — use this data to generate actionable business recommenda…
| Paramètre | Type | Description |
|---|---|---|
| refresh | boolean | Set to true to generate fresh insights even if existing ones are present. Default: false — returns existing checklist. |
| report | string | Default: 'checklist'. 'thread' retrieves a linked sequence of related findings as one story — requires threadId or insightId. (For fix outcomes / win-rate, use… |
| category | string | Filter to a single category. |
| tags | array | Filter to insights that contain ANY of these tags (OR semantics). E.g. ['seo'] or ['paid']. |
| includeCompleted | boolean | Default true. Set to false to return only active (open) insights. |
| threadId | string | Filter to a single thread (works on checklist and thread reports). Used to view a story end-to-end without category/tag filtering. |
| insightId | string | For report: 'thread' — resolve the threadId from this insight and return the full thread (alternative to passing threadId directly). |
| status | — | Filter by status. Pass a single value (e.g. 'open') or an array (e.g. ['open','addressed']) for OR semantics. Allowed values: open, addressed, superseded, dism… |
save_insightsTRIGGER: Whenever you surface a problem or opportunity from the data, OFFER to save it as an insight and confirm before writing — don't auto-save. Make the offer concrete and inline: 'Want me to save this as an insight to track?'. Findings vary in significance; the user decides what belongs on the…TRIGGER: Whenever you surface a problem or opportunity from the data, OFFER to save it as an insight and confirm before writing — don't auto-save. Make the offer concrete and inline: 'Want me to save this as an insight to track?'. Findings vary in significance; the user decides what belongs on the…
| Paramètre | Type | Description |
|---|---|---|
| replace | boolean | Set to true to replace all active (non-completed) insights. Default: false (appends). |
| insights* | array | Array of business insights to save (any number) |
update_insightUpdate an insight (a FINDING) — set its status, or edit its content. Allowed status: open / addressed / superseded / dismissed. Note: you normally don't set 'addressed' by hand — that happens automatically when set_intervention links this finding to a shipped fix. An insight carries NO fix verdict;…Update an insight (a FINDING) — set its status, or edit its content. Allowed status: open / addressed / superseded / dismissed. Note: you normally don't set 'addressed' by hand — that happens automatically when set_intervention links this finding to a shipped fix. An insight carries NO fix verdict;…
| Paramètre | Type | Description |
|---|---|---|
| insightId* | string | The insight ID to update |
| status | string | Workflow state. Setting status auto-syncs the legacy completed/dismissed mirror booleans. |
| completed | boolean | (Legacy) Mark as completed. Setting true without a status sets status='addressed'; false sets status='open'. |
| dismissed | boolean | (Legacy) Mark as dismissed. Setting this to true without a status sets status='dismissed'. |
| delete | boolean | Remove this insight entirely — use when the user says it's not relevant or not an issue |
| notes | string | Free-text note about this finding. Stored alongside the insight for future reference. |
| title | string | Updated title |
| description | string | Updated description |
| action | string | Updated action step |
| category | string | Updated category |
| priority | string | Updated priority |
| tags | array | Replace the insight's tags with this list (e.g. ['seo','fix-applied']). Pass [] to clear all tags. |
| addTags | array | Append these tags to the existing set without removing others. Useful for adding workflow tags like 'fix-applied' or '30-day-check' without overwriting. |
| removeTags | array | Remove these tags from the existing set, leaving others intact. |
| parentInsightId | string | Link this insight to a predecessor. The threadId is auto-managed: if the parent has one, it's inherited; otherwise a fresh threadId is generated and applied to… |
| threadId | string | Set or change this insight's threadId directly. Use empty string to clear. |
| linkSnapshotIds | array | Attach existing metric snapshots (record_metric_snapshot rows) to this insight as supporting evidence for the finding. Pass the snapshotIds (returned from quer… |
| unlinkSnapshotIds | array | Detach the given snapshotIds from this insight (sets their insightId to null). Use to correct a wrong link. |
record_metric_snapshotRecord one or more structured metric snapshots for time-series analysis. Use this whenever you cite a metric in an insight, weekly digest, or benchmark — instead of (or in addition to) burying it in prose. Each snapshot is queryable later via query_metric_snapshots, e.g. 'show CVR for UK over the l…Record one or more structured metric snapshots for time-series analysis. Use this whenever you cite a metric in an insight, weekly digest, or benchmark — instead of (or in addition to) burying it in prose. Each snapshot is queryable later via query_metric_snapshots, e.g. 'show CVR for UK over the l…
| Paramètre | Type | Description |
|---|---|---|
| snapshots* | array | Array of metric snapshots to record |
query_metric_snapshotsQuery recorded metric snapshots as a time series. Use to answer 'show me all CVR snapshots for UK over the last 6 months', 'how has ROAS evolved by month?', etc. Returns canonical snapshot data (matches the dashboard and monthly digest exactly) plus a `charts` array of ready-to-render line chart sp…Query recorded metric snapshots as a time series. Use to answer 'show me all CVR snapshots for UK over the last 6 months', 'how has ROAS evolved by month?', etc. Returns canonical snapshot data (matches the dashboard and monthly digest exactly) plus a `charts` array of ready-to-render line chart sp…
| Paramètre | Type | Description |
|---|---|---|
| list | boolean | If true, returns the metric registry (canonical keys, units, descriptions). Use this when you don't know which metrics are available. |
| metric | string | Canonical metric key. Omit to return snapshots across all metrics (filtered by other params). |
| store | string | Filter to a specific store/region key. Accepts short form ('acme-store') or full domain ('acme-store.myshopify.com') — both normalize to the short form used in… |
| segment | string | Filter to a specific segment |
| startDate | string | Only include snapshots whose periodEnd is >= this date (YYYY-MM-DD) |
| endDate | string | Only include snapshots whose periodStart is <= this date (YYYY-MM-DD) |
| source | string | Filter by source ('shopify', 'ga4', 'tw', etc.) |
| confidence | — | Filter by confidence. Pass 'high' / 'medium' / 'low' to match exactly, or 'minHigh' / 'minMedium' to require AT LEAST that level (treats null as 'high'). Usefu… |
| periodKind | string | Filter by period anchoring. 'calendar' = discrete buckets only; 'rolling' = trailing windows only. Mixing the two in a single time series silently distorts tre… |
| periodLength | string | Filter by bucket size — combine with periodKind to e.g. fetch only calendar-month rows. |
| insightId | string | Only snapshots linked to this insight |
| limit | integer | Max snapshots to return (default 100, max 500) |
set_interventionTRIGGER: Call WITHOUT asking whenever the user applies or ships a fix. 'Fix' covers any shipped change — SEO/copy/ads/UX/ops, AND code/schema/connector changes. Distinct from save_insights (which captures observations) — this is for tracking actions: 'I changed X, hypothesised Y, will measure at da…TRIGGER: Call WITHOUT asking whenever the user applies or ships a fix. 'Fix' covers any shipped change — SEO/copy/ads/UX/ops, AND code/schema/connector changes. Distinct from save_insights (which captures observations) — this is for tracking actions: 'I changed X, hypothesised Y, will measure at da…
| Paramètre | Type | Description |
|---|---|---|
| store | string | The store/region this fix applies to. Either short ('acme-store-us') or full ('acme-store-us.myshopify.com') — both normalize. |
| type* | string | Category of intervention. |
| description* | string | What was actually changed (e.g. 'Added hreflang tags to all PDPs to fix country-mismatch issue'). |
| hypothesis | string | Why you think it'll work (e.g. 'US property losing clicks to UK; hreflang should restore correct routing'). |
| trackedMetrics | array | Metrics to track for before/after comparison. Each entry is either a canonical metric key string (e.g. 'organic_clicks') OR an object {metric, segment?, source… |
| expectedMetrics | object | Optional. Per-metric expectation, e.g. {organic_clicks: {deltaPercent: 15, direction: 'up'}}. Used at completion time to flag whether outcomes met expectations. |
| checkDates | array | ISO dates (YYYY-MM-DD) for planned check-ins, e.g. ['2026-06-07','2026-07-07','2026-08-07']. Stored for the dashboard / reminders; not enforced by the system. |
| linkedInsightIds | array | Insights this intervention is acting on (the original finding(s) that prompted it). Captured for traceability — they're not modified. |
| notes | string | Free-text context (excluded scope, caveats, etc.). |
| appliedAt | string | ISO date (YYYY-MM-DD) the fix was ACTUALLY applied, for logging it retroactively (default: now). The baseline auto-lookup only considers snapshots within 60 da… |
complete_interventionTRIGGER: Call WITHOUT asking once an applied intervention's check date has passed. Find candidates with get_interventions(dueForCheckIn: true). Attaches the latest RECORDED post-fix snapshot for each tracked metric (a snapshot whose periodStart is on/after the fix's appliedAt) as the 'post' side, c…TRIGGER: Call WITHOUT asking once an applied intervention's check date has passed. Find candidates with get_interventions(dueForCheckIn: true). Attaches the latest RECORDED post-fix snapshot for each tracked metric (a snapshot whose periodStart is on/after the fix's appliedAt) as the 'post' side, c…
| Paramètre | Type | Description |
|---|---|---|
| interventionId* | string | The intervention to close. |
| verdict* | string | Your verdict. The system also computes per-metric outcomes — your verdict is the overall judgment. |
| notes | string | Optional note about what was observed, e.g. 'US clicks recovered but DE flatlined — partial win'. |
| force | boolean | Close even when no post-fix snapshot exists for any tracked metric (verdict then rests on your external evidence, with no computed delta). Default false — with… |
get_interventionsList interventions (the actions/fixes that were shipped) and report their measured outcomes. This is the SINGLE source of truth for 'did it work' — insights (findings) never carry a verdict. Use report: 'status' for a one-call picture of 'what fix-work is open' (due for check-in / in flight / recen…List interventions (the actions/fixes that were shipped) and report their measured outcomes. This is the SINGLE source of truth for 'did it work' — insights (findings) never carry a verdict. Use report: 'status' for a one-call picture of 'what fix-work is open' (due for check-in / in flight / recen…
| Paramètre | Type | Description |
|---|---|---|
| report | string | Default 'list'. 'status' = consolidated open-work view (dueForCheckIn + inFlight + recentlyClosed + winRate) in one call, ideal for orienting at the start of a… |
| status | string | Filter by lifecycle status. |
| verdict | string | Filter by closing verdict (only for closed interventions). |
| type | string | Filter by category (technical_seo, paid_optimization, etc.). |
| store | string | Filter by store key. |
| insightId | string | Only interventions that link back to this insight (via linkedInsightIds) — i.e. the fixes prompted by a specific finding. |
| since | string | Only interventions appliedAt >= this date (YYYY-MM-DD). |
| dueForCheckIn | boolean | If true, only return interventions whose next checkDate has passed and status is still 'applied'/'under_review'. |
| limit | integer | Max results (default 30). |
get_store_notesReturn all merchant-attached LLM context notes for a store (or all stores if omitted). Notes are authoritative caveats the merchant has added — e.g. 'one B2B customer skews retention', 'Q2 budget freeze, don't suggest more ad spend', 'pre-2026-03 data is partial'. The same notes are auto-injected i…Return all merchant-attached LLM context notes for a store (or all stores if omitted). Notes are authoritative caveats the merchant has added — e.g. 'one B2B customer skews retention', 'Q2 budget freeze, don't suggest more ad spend', 'pre-2026-03 data is partial'. The same notes are auto-injected i…
| Paramètre | Type | Description |
|---|---|---|
| store | string | Optional. Filter to a specific store. Omit to get notes for all stores the caller has access to. |
get_timelineMerged, date-ordered timeline of everything that happened to the business: interventions (changes the merchant applied, and when their verdict landed) plus store-context notes (campaign launches, migrations, budget freezes, data quirks the merchant recorded). Use this to line dated events up agains…Merged, date-ordered timeline of everything that happened to the business: interventions (changes the merchant applied, and when their verdict landed) plus store-context notes (campaign launches, migrations, budget freezes, data quirks the merchant recorded). Use this to line dated events up agains…
| Paramètre | Type | Description |
|---|---|---|
| startDate | string | Window start (YYYY-MM-DD). Defaults to 90 days before endDate. |
| endDate | string | Window end (YYYY-MM-DD). Defaults to today. |
| store | string | Optional. Filter to a specific store (short or full domain). Omit for all stores the caller can see. |
| limit | integer | Max events to return (default 50, max 200). |
save_store_noteSave a new store-context note from something the USER told you that future sessions should know. Only call this when the user reveals business context the data alone wouldn't show (e.g. 'one B2B customer is a reseller', 'Q2 budget is fixed', 'we exclude wholesale orders from retail KPIs', 'migrated…Save a new store-context note from something the USER told you that future sessions should know. Only call this when the user reveals business context the data alone wouldn't show (e.g. 'one B2B customer is a reseller', 'Q2 budget is fixed', 'we exclude wholesale orders from retail KPIs', 'migrated…
| Paramètre | Type | Description |
|---|---|---|
| store* | string | Which store this note applies to (short form 'acme-store-eu' or full 'acme-store-eu.myshopify.com'). |
| category* | string | data_quirk = metrics are misleading; business_context = how to interpret the store's profile; strategic_constraint = don't recommend X; historical_event = pre-… |
| severity | string | info (default) = apply silently; warning = mention when relevant. Use warning when ignoring the note would mislead the merchant. |
| text* | string | Concise framing for future LLM sessions. Include the WHY when relevant. 1–3 sentences. Use the user's verbatim wording where helpful, but you can paraphrase to… |
get_store_profileReturn what the system understands about a store's IDENTITY — primaryCategory, priceTier, audience, positioning, giftLed (is it typically bought as a gift for others?), the revenue-weighted category mix, and price range. System-generated from the catalog + sales (refreshed ~monthly), with any merch…Return what the system understands about a store's IDENTITY — primaryCategory, priceTier, audience, positioning, giftLed (is it typically bought as a gift for others?), the revenue-weighted category mix, and price range. System-generated from the catalog + sales (refreshed ~monthly), with any merch…
| Paramètre | Type | Description |
|---|---|---|
| store | string | Optional. Specific store (short or full domain). Omit for all stores in the workspace. |
update_store_profileCorrect a store's profile when the USER tells you it's wrong (e.g. 'we're actually a premium brand', 'people DO buy our products as gifts at Christmas', 'we're skincare not cosmetics'). Corrections are authoritative: they override the system's guess immediately AND survive the monthly auto-regenera…Correct a store's profile when the USER tells you it's wrong (e.g. 'we're actually a premium brand', 'people DO buy our products as gifts at Christmas', 'we're skincare not cosmetics'). Corrections are authoritative: they override the system's guess immediately AND survive the monthly auto-regenera…
| Paramètre | Type | Description |
|---|---|---|
| store* | string | Which store to correct (short or full domain). Required. |
| primaryCategory | string | Coarse category, e.g. 'Footwear', 'Skincare'. |
| priceTier | string | Relative price positioning. |
| giftLed | boolean | True if products are typically bought as gifts for others; false for considered/self-purchase goods. Controls retail-calendar gift-event relevance. |
| audience | string | Who the customer is. |
| positioning | string | How the store competes (e.g. ethical, budget, specialist). |
| brandTerms | array | Canonical brand terms (e.g. ['wills vegan','willsveganstore']) used to classify branded vs non-branded queries in get_connector_data(connector:'google-search-c… |
| note | string | Free-text authoritative context to remember and feed into future profile regenerations. |
save_wakeupCreate or update a scheduled wakeup. **Create mode** (no `id`): schedule a future analysis with context and a metric snapshot. Call when the merchant asks to check back later, OR proactively before a retail event or trend worth monitoring. At save time pull the relevant metrics and write `context`…Create or update a scheduled wakeup. **Create mode** (no `id`): schedule a future analysis with context and a metric snapshot. Call when the merchant asks to check back later, OR proactively before a retail event or trend worth monitoring. At save time pull the relevant metrics and write `context`…
| Paramètre | Type | Description |
|---|---|---|
| id | string | Wakeup UUID. Omit to create; provide to update an existing wakeup (e.g. to link a routineId after creating the Claude routine). |
| store | string | Store domain (short or full). Required on create; ignored on update. |
| triggerDate | string | YYYY-MM-DD. Required on create. |
| name | string | Short label (≤80 chars). Required on create. |
| context | string | What to analyse when this fires and why it matters — instructions for your future self. Required on create. |
| benchmarks | object | Current metric snapshot for before/after comparison. Be selective — only capture what's relevant to this check. |
| routineId | string | Claude remote routine ID (trig_...) to link to this wakeup. Set this in an update call after creating the routine. |
get_wakeupRetrieve a single wakeup by ID. Use this inside a Claude routine prompt: the routine fires, calls `get_wakeup({ id: 'abc-123' })`, gets the full context and benchmarks, then runs the analysis. Also auto-marks the wakeup as triggered if the trigger date has passed.Retrieve a single wakeup by ID. Use this inside a Claude routine prompt: the routine fires, calls `get_wakeup({ id: 'abc-123' })`, gets the full context and benchmarks, then runs the analysis. Also auto-marks the wakeup as triggered if the trigger date has passed.
| Paramètre | Type | Description |
|---|---|---|
| id* | string | The wakeup UUID returned by save_wakeup. |
get_wakeupsRetrieve scheduled wakeups for a store. Call at the start of sessions where the merchant might have pending wakeups due — especially if today's date is at or past a previously scheduled triggerDate. Returns both pending (not yet fired) and recently triggered (fired in the last 14 days, waiting for…Retrieve scheduled wakeups for a store. Call at the start of sessions where the merchant might have pending wakeups due — especially if today's date is at or past a previously scheduled triggerDate. Returns both pending (not yet fired) and recently triggered (fired in the last 14 days, waiting for…
| Paramètre | Type | Description |
|---|---|---|
| store | string | Store domain (short or full). Omit to return wakeups for all stores in the workspace. |
| status | string | Filter by status. Default: 'all' — returns both pending and recently triggered (last 14 days). |
report_data_issueAUTONOMOUS bug reporting — call WITHOUT asking when you spot a STRUCTURAL or FORMAT issue in another tool's response. ONLY for issues you can identify mechanically (precision, types, schema). DO NOT use this for value correctness ('this revenue looks high') — that's user-triggered territory, use re…AUTONOMOUS bug reporting — call WITHOUT asking when you spot a STRUCTURAL or FORMAT issue in another tool's response. ONLY for issues you can identify mechanically (precision, types, schema). DO NOT use this for value correctness ('this revenue looks high') — that's user-triggered territory, use re…
| Paramètre | Type | Description |
|---|---|---|
| category* | string | precision = too many decimals or wrong rounding. type_mismatch = field type doesn't match the tool's description. inconsistency = internal contradictions in on… |
| severity | string | low = cosmetic (extra decimals), medium = misleading but data still usable, high = data is unusable / breaks downstream logic. |
| description* | string | 1–2 sentences. What's wrong, where, and why it's wrong. Be specific: 'Field cvr returned 4.612345678 (10+ decimals); expected 1–2 decimal precision per the too… |
| toolName* | string | The tool whose response had the issue (e.g. 'get_metrics_comparison'). |
| responseSnippet | string | Optional. The relevant fragment of the response, capped to ~2KB. Include just enough to make the issue reproducible. |
report_concernUSER-TRIGGERED issue reporting — call when the user expresses doubt about a specific data point or value ('this number is wrong', 'doesn't match my Shopify admin', 'why is this zero?', 'something's off here'). Capture their concern as a structured report BEFORE speculating about causes. After savin…USER-TRIGGERED issue reporting — call when the user expresses doubt about a specific data point or value ('this number is wrong', 'doesn't match my Shopify admin', 'why is this zero?', 'something's off here'). Capture their concern as a structured report BEFORE speculating about causes. After savin…
| Paramètre | Type | Description |
|---|---|---|
| category* | string | data_mismatch = user says it doesn't match another source (Shopify admin, GA, etc.). incorrect_calculation = the math looks wrong to them. missing_data = expec… |
| severity | string | Inferred from how strongly the user voiced the concern. 'a bit weird' = low; 'this is definitely wrong' = high. |
| userQuote* | string | Verbatim what the user said, trimmed. Don't paraphrase. |
| description* | string | 1–2 sentences framing the concern technically. Include the data point in question. |
| toolName | string | The tool whose response prompted the concern, if known. |
| expectedValue | string | If the user said what they expected (e.g. 'should be around 500'), include it. |
| responseSnippet | string | Relevant excerpt of the tool response that the user is questioning. |
get_helpFetch the full guidance behind the server instructions, on demand. The eager instructions summarise each area in one or two lines and point here for detail — call this only when you actually need the depth (you usually won't). Topics: routing (the canonical source-of-truth map — which tool owns eac…Fetch the full guidance behind the server instructions, on demand. The eager instructions summarise each area in one or two lines and point here for detail — call this only when you actually need the depth (you usually won't). Topics: routing (the canonical source-of-truth map — which tool owns eac…
| Paramètre | Type | Description |
|---|---|---|
| topic | string | A guide topic (routing, signals, conventions, claims, analysis, multistore, writeback, triple_whale), a metric name (ltv, order_counts, aov, cvr, cac, repeat_r… |
get_briefingSTART HERE at the beginning of a session — call it FIRST and SILENTLY (don't announce the call, narrate your plan, or reference your instructions; just open with what it surfaces). One call that orients you before answering: the stores and their currencies, any data sources broken RIGHT NOW (number…START HERE at the beginning of a session — call it FIRST and SILENTLY (don't announce the call, narrate your plan, or reference your instructions; just open with what it surfaces). One call that orients you before answering: the stores and their currencies, any data sources broken RIGHT NOW (number…
| Paramètre | Type | Description |
|---|---|---|
| sinceDays | integer | Window for the 'what changed' digest (default 7, max 90). A true 'since your last visit' view is coming; for now this is a rolling window. |
get_focusReturn the merchant's current weekly plan — the committed 'what to work on now' list. Use as a session opener. The plan stays current until the merchant re-plans (say 'plan my week' / refresh: true) — it does NOT auto-expire, so re-asks return the same plan with each item's LIVE state (a 'tackle' i…Return the merchant's current weekly plan — the committed 'what to work on now' list. Use as a session opener. The plan stays current until the merchant re-plans (say 'plan my week' / refresh: true) — it does NOT auto-expire, so re-asks return the same plan with each item's LIVE state (a 'tackle' i…
| Paramètre | Type | Description |
|---|---|---|
| refresh | boolean | Re-plan from current data ('plan my week'). Supersedes the current plan and returns a fresh synthesis bundle. Default: false (returns the current plan). |
| top | integer | Target number of focus items (default 5, max 10). Affects the instruction sent to the model when refresh is needed. |
save_focusPersist the week's committed plan generated from the get_focus data bundle. The plan blends THREE streams: 'tackle' (new open findings to act on, link insightId), 'check' (interventions due for their verdict, link interventionId), and 'watch' (a metric/anomaly to keep an eye on, set metric). Each i…Persist the week's committed plan generated from the get_focus data bundle. The plan blends THREE streams: 'tackle' (new open findings to act on, link insightId), 'check' (interventions due for their verdict, link interventionId), and 'watch' (a metric/anomaly to keep an eye on, set metric). Each i…
| Paramètre | Type | Description |
|---|---|---|
| items* | array | Ordered focus items, top priority first |
| replacePrevious | boolean | Default true — supersede the previous plan. Set false to keep history visible. |
| context | object | Optional snapshot of inputs used (e.g. {openInsights: 12, lastOutcomesWinRate: 60}). Stored verbatim for auditability. |
update_focus_itemSet the manual state of a single item in the current focus plan: 'in_progress' (started), 'dropped' (decided not to do it this week), or 'planned' (clear the overlay). NOTE: you can NOT set an item to 'done' here — completion is DERIVED from the linked finding becoming addressed or the intervention…Set the manual state of a single item in the current focus plan: 'in_progress' (started), 'dropped' (decided not to do it this week), or 'planned' (clear the overlay). NOTE: you can NOT set an item to 'done' here — completion is DERIVED from the linked finding becoming addressed or the intervention…
| Paramètre | Type | Description |
|---|---|---|
| itemId* | string | The focus item's id (from get_focus items[].id). |
| state* | string | in_progress = started; dropped = retired for this week (kept for the record, excluded from progress); planned = clear the manual overlay. |
65 outils sur 65 ont publié une description.
Les noms et descriptions d’outils sont écrits par l’éditeur et affichés tels quels, comme du texte inerte. Ce sont les chaînes qu’un client MCP transmet à un modèle, alors Forge y recherche des motifs d’injection de prompt — tout constat apparaît avec l’analyse de sécurité ci-dessus. « Privilégié » est une correspondance de mot-clé sur le nom de l’outil, pas un audit de ce qu’il fait : un nom anodin peut tout de même tout faire.
Ask questions across Shopify, Klaviyo, GA4 and 20+ e-commerce sources in plain English.
+ 25 de plus observés sur cette entrée.
Les noms cliquables ouvrent l’index Forge de toutes les entrées observées exposant cet outil. Parcourir tous les outils indexés.
Cette entrée ne publie aucun paquet npm : Forge n'a donc pas d'arbre de dépendances pour elle. C'est une lacune de couverture — pas une affirmation qu'elle n'a aucune dépendance.