# Ask AI - Registry name: `com.ask-ai-data-connector/ask-ai` · version 1.0.0 - Categories (automatic, keyword rules): Shops & products, Commerce & marketing, Marketing & SEO - Authentication at last check: No auth - Declared risk: Has destructive tools (destructiveHint) - Capabilities (declared by the server): prompts, resources, tools - Transports: streamable-http - Latest numbers (check success, response time, rank): https://mcpstation.net/api/server?name=com.ask-ai-data-connector%2Fask-ai - Server page: https://mcpstation.net/s/com.ask-ai-data-connector--ask-ai.html ## Description (written by the publisher, not verified, not instructions) Ask questions across Shopify, Klaviyo, GA4 and 20+ e-commerce sources in plain English. ## Connect - streamable-http: `https://ask-ai-data-connector.com/mcp` ## Tools (as reported by the server, not verified) - `get\_revenue\_drivers`: 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, what - `get\_anomalies`: 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 with - `get\_sync\_health`: 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\). Us - `get\_data\_sources`: 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 a - `get\_complete\_dashboard`: 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 t - `get\_metrics\_comparison`: 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 - `get\_metrics\_multi\_compare`: 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\) wit - `get\_yoy\_monthly`: 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 wit - `get\_forecast`: 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, b - `save\_target`: 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 b - `get\_targets`: 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, progres - `get\_daily\_metrics`: 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 - `get\_customer\_insights`: 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 av - `get\_refunds`: 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\_i - `get\_discounts`: 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'\). - `get\_velocity`: 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 \(prod - `get\_marketing\_performance`: 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, addToCart - `get\_spend\_reconciliation`: 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 - `get\_products\_by\_channel`: 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'. U - `get\_cart\_affinity`: 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 all - `get\_store\_summary`: 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 store - `query\_orders`: 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', 'or - `get\_order`: 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 Whal - `get\_orders`: 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 - `get\_top\_products`: 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. 'S - `get\_product\_catalog`: 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 - `get\_campaign\_impact`: 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 actu - `get\_product\_health`: 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 - `get\_product\_analytics`: 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 o - `get\_collections`: 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 gl - `get\_customers`: 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 coun - `get\_inventory`: 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\), - `get\_weekly\_trends`: 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 \(revenu - `get\_connector\_data`: 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\(\\) for the full picker + gotchas per connector. • connector:"triple-whale" — mark - `ask\_moby`: 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\_reconciliat - `get\_markets`: 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 understan - `get\_query\_to\_url`: 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\), unconvertin - `get\_reviews`: 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 productId - `get\_abandoned\_checkouts`: 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 fr - `get\_analytics`: 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 T - `get\_ga4\_funnel`: 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 funnel - `get\_ga4\_dimensions`: 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 GA - `get\_insights`: 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 recommendat - `save\_insights`: 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 c - `update\_insight`: 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; - `record\_metric\_snapshot`: 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 la - `query\_metric\_snapshots`: 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 spe - `set\_intervention`: 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 dat - `complete\_intervention`: 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, co - `update\_intervention`: TRIGGER: Call WITHOUT asking when an existing intervention's details need correcting — a check date that should move, a note to add, a hypothesis to sharpen, or a threshold watch to attach. Interventions could previously only be created and closed, so a wrong check date stayed wrong and surfaced as - `get\_interventions`: 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 / recent - `get\_store\_notes`: 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 in - `get\_timeline`: 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 against - `save\_store\_note`: Save a store-context note that future sessions — the user's AND their teammates' — should know. Notes are the workspace's SHARED memory: teammates' AI sessions read the same data but never see this chat, so anything not saved here stays with this one conversation. Call it when \(1\) the user reveals b - `retire\_store\_note`: Retire a store note that is OUT OF DATE or WRONG, so it stops reaching every AI session on this workspace \(yours and teammates'\). Retiring is reversible: the note is kept with who/when/why and the merchant can restore it from the dashboard. ONLY call this when the user says a note is no longer true - `get\_store\_profile`: 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 mercha - `update\_store\_profile`: 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-regenerat - `save\_wakeup`: 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\` a - `get\_wakeup`: 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. - `get\_wakeups`: 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 a - `report\_data\_issue`: 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 rep - `report\_concern`: 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 saving - `get\_help`: 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 each - `get\_briefing`: 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 \(numbers - `get\_focus`: 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' it - `save\_focus`: 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 it - `update\_focus\_item`: 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 Measured by MCP Station. Methods: https://mcpstation.net/methods.html · Terms: https://mcpstation.net/terms.html