Skip to main content
Glama
48x-ai

@marketbasketanalysis/mcp

by 48x-ai

@marketbasketanalysis/mcp

npm version License MCP

An MCP server that gives any AI agent access to real co-purchase intelligence and merchant ops tooling from an ecommerce merchant's order history. 19 tools across discovery, bundle, insight, replenishment, merchant ops, and advanced mining. Works with Claude Desktop, Claude Code, Cursor, Windsurf, Cline, the OpenAI Agent SDK, and any other host that speaks the MCP stdio protocol. Works for merchants on Shopify, BigCommerce, WooCommerce, Magento, and OroCommerce. See "Platform coverage" below for which tools reach the self-hosted backends.

One npm package serves every marketplace. The server is platform agnostic, it is an HTTP client that calls a store's MBA backend over the public REST API. You re-point the whole server at any store with a single switch (MBA_API_BASE, see below). Most tools work on all five platforms; a handful depend on a backend route that not every platform ships yet. Per-tool marketplace coverage is the Tool catalog "Marketplace" column.

Why this exists

When a customer asks an AI shopping agent "what goes with the gym backpack?" the agent should give a real answer based on the merchant's actual order data, not a generic "you might also like" guess. When a merchant asks Claude "what should I work on this week?" the agent should pull from a ranked weekly plan, not invent tasks. This server makes both of those flows available to any MCP host in one line of config.

Related MCP server: dentro MCP

5-line install (Claude Desktop)

{
  "mcpServers": {
    "marketbasketanalysis": {
      "command": "npx",
      "args": ["-y", "@marketbasketanalysis/mcp"],
      "env": { "MBA_API_KEY": "mba_live_YOUR_KEY_HERE" }
    }
  }
}

Paste into ~/Library/Application Support/Claude/claude_desktop_config.json (macOS), restart Claude Desktop, the marketbasketanalysis server appears in the tools list with all 19 tools.

Zero-install: the hosted endpoint

The same server runs hosted at https://mcp.marketbasketanalysis.com/mcp (MCP streamable HTTP). Nothing to install; send your key as a bearer header instead of an env var:

claude mcp add --transport http marketbasketanalysis \
  https://mcp.marketbasketanalysis.com/mcp \
  --header "Authorization: Bearer mba_live_YOUR_KEY_HERE"

Works with any remote-capable MCP client (Claude Code, Cursor, Smithery, custom agents). Optional headers: X-MBA-Base re-points at another MBA-operated plane (for example https://bigcommerce.marketbasketanalysis.com); X-MBA-Platform mirrors the MBA_PLATFORM env var. Self-hosted WooCommerce and Magento stores are not reachable from the hosted endpoint by design, use the npx install above with MBA_API_BASE pointed at your own site.

Point the server at your store (MBA_API_BASE)

The base URL is per-store configuration. By default the server talks to the shared hosted backend at https://app.marketbasketanalysis.com. If your data lives anywhere else, a BigCommerce store, a self-hosted backend, or a staging instance, set MBA_API_BASE so every tool reaches your own data plane:

{
  "mcpServers": {
    "marketbasketanalysis": {
      "command": "npx",
      "args": ["-y", "@marketbasketanalysis/mcp"],
      "env": {
        "MBA_API_KEY": "mba_live_YOUR_KEY_HERE",
        "MBA_API_BASE": "https://your-store-backend.example.com"
      }
    }
  }
}

MBA_API_BASE is the single switch that re-points the whole server; all 19 tools route through it. The value must be an https:// URL for non-local hosts (loopback, private, link-local, and metadata-service hosts are refused). For local development against a backend on localhost, set ALLOW_LOCAL_API_BASE=1 to allow an http://localhost base. Env-var changes take effect at server startup, so restart your MCP host after editing the value.

MBA_API_BASE per platform

The base URL is per-store configuration. Shopify, BigCommerce, and OroCommerce stores are served by the shared hosted backend, so they use the default. WooCommerce and Magento run the backend locally inside the store install, so point the server at the store's own domain:

Platform

MBA_API_BASE

Shopify

unset (hosted default https://app.marketbasketanalysis.com)

BigCommerce

unset (hosted default)

OroCommerce

unset (thin hosted client, same hosted backend)

WooCommerce

https://your-store.example.com (WordPress site URL). Its routes live under marketbasketanalysis/v1; the server maps paths automatically. See "Platform coverage" for which tools apply.

Magento

https://your-magento.example.com (the /rest base). Its routes live under V1/marketbasketanalysis; the server maps paths automatically. See "Platform coverage" for which tools apply.

Platform coverage

The server writes canonical /api/v1/... paths and rewrites them per platform, because WooCommerce and Magento run the backend inside the store on their own REST conventions (marketbasketanalysis/v1 and V1/marketbasketanalysis respectively).

10 of the 19 tools reach WooCommerce and Magento: the six that derive from /recommendations (get_recommendations, get_bundle_for_cart, score_cross_sell, analyze_basket, propose_subscription_bundle, score_return_risk), plus find_substitutes, get_rationale, forecast_bundle, and predict_reorder.

The other 9 are the merchant-ops surface: get_opportunities, triage_opportunity, get_weekly_plan, execute_weekly_plan_action, get_drift_alerts, get_forecast_alerts, explain_opportunity, explain_drift, and mine_hui_itemsets. Those endpoints do not exist on the self-hosted backends. Calling one there returns a clear "not available on this platform" error naming the endpoint, with no network round trip, rather than an opaque 404.

For step-by-step install (config file location per OS, where to mint an API key, troubleshooting):

Authentication

The server reads MBA_API_KEY from the environment your MCP host passes in and sends it as a Bearer token on every request. To get a key:

  1. Open the MarketBasketAnalysis admin (Shopify app drawer, or BigCommerce / WooCommerce / Magento / OroCommerce admin).

  2. Click "API keys" in the left nav.

  3. Click "Create key", name it, and copy the mba_live_ value (it is shown once).

Keys are per-shop, revocable, and rotated from the same screen. Only the SHA-256 hash is stored, so re-mint if a key leaks.

Auth model differs per marketplace, the MCP server abstracts it, but worth knowing:

  • Shopify, BigCommerce: Bearer mba_live_... straight through. This is the common path.

  • WooCommerce: Bearer against a Woo-minted key, which must carry the customer_data scope for predict_reorder.

  • Magento: tools reach the store over the Magento REST surface (/V1/marketbasketanalysis/* and /V1/mba/*); some routes are admin-token / ACL scoped on the store side.

  • OroCommerce: the store sits behind the platform OAuth2 firewall for /api/ routes; the hosted backend the thin client proxies to is what the MCP server actually calls, so the mba_live_ key still applies.

Tool catalog

19 tools, organized into the four Basket AI agent roles plus two operational groups. The Marketplace column states which backends ship the route the tool calls, which is not the same as which backends this server can currently REACH: see "Platform coverage" above. "All five" means Shopify, BigCommerce, WooCommerce, Magento, OroCommerce.

Discovery

Tool

Description

Required params

Marketplace

get_recommendations

Complementary products for a single product.

product_id

All five

find_substitutes

Replacement options when a product is unavailable.

product_id

All five

get_rationale

One-sentence "why" for a recommendation pair.

product_id, related_product_id

All five

Bundle

These derive everything from /recommendations (the server composes the bundle/scoring logic client-side), so they need no extra backend route and work everywhere.

Tool

Description

Required params

Marketplace

get_bundle_for_cart

Missing kit components for a multi-item cart.

product_ids

All five

propose_subscription_bundle

Recurring subscription kit proposal.

seed_product_ids

All five

Insight

Also /recommendations-derived, so universal.

Tool

Description

Required params

Marketplace

score_cross_sell

Strength verdict for a (a, b) pair.

product_a, product_b

All five

score_return_risk

Bundle return-risk score.

product_ids

All five

analyze_basket

Cohesion score for a proposed bundle.

product_ids

All five

Replenishment + forecasting

Tool

Description

Required params

Marketplace

predict_reorder

B2B reorder cadence per customer / SKU.

customer_id

Shopify, BigCommerce, WooCommerce, Magento. Hidden when MBA_PLATFORM=orocommerce.

forecast_bundle

Weekly Holt-Winters forecast + buy quantity.

bundle_id

Shopify, BigCommerce, Magento (/forecast/bundle-inventory). Not on OroCommerce.

Merchant ops

These call Bearer /api/v1 routes that ship on BigCommerce today. Shopify serves opportunities, drift, and the weekly plan through its embedded admin views rather than an /api/v1 route, so these tools resolve against a BigCommerce backend. The one exception is /explain-opportunity, which now ships on BigCommerce and Shopify; /explain-drift remains BigCommerce only. The tools surface a clean upstream 404 on platforms that lack the route.

Tool

Description

Required params

Marketplace

get_weekly_plan

Ranked weekly action list.

(none)

BigCommerce

execute_weekly_plan_action

Dispatch a specific action (confirm-gated).

action_id, confirm

BigCommerce

get_opportunities

Mined opportunities, ranked.

(none)

BigCommerce

explain_opportunity

Stats (support / confidence / lift / sample count) plus a templated "why this is a good cross-sell" narrative for one opportunity.

opportunity_id

BigCommerce, Shopify

triage_opportunity

Activate / pause / archive (confirm-gated).

opportunity_id, action, confirm

BigCommerce (POST /opportunities/{id}/action); admin grid on other platforms.

get_drift_alerts

Rules whose confidence has drifted.

(none)

BigCommerce

explain_drift

Stats plus a templated "why this pair drifted" narrative for one drift alert (degrades gracefully for a disappeared pair).

alert_id

BigCommerce

get_forecast_alerts

Bundles at risk of stockout / demand drop.

(none)

BigCommerce

Advanced mining

Tool

Description

Required params

Marketplace

mine_hui_itemsets

High-utility itemset mining (Plus / Enterprise).

orders

Shopify, BigCommerce, WooCommerce, OroCommerce. Plus / Enterprise tier.

Example prompts per tool

Paste any of these into a Claude Desktop / Claude Code / Cursor chat after wiring up the server:

  • get_recommendations: "Use marketbasketanalysis to find what customers also buy with the gym backpack (product 8472918765)."

  • find_substitutes: "The DSLR body is out of stock. What is a good substitute?"

  • get_rationale: "Why is the water bottle recommended with the gym backpack?"

  • get_bundle_for_cart: "I have a camera body, 32GB SD card, and a tripod in my cart. What is likely missing to make this a complete kit?"

  • propose_subscription_bundle: "Build a monthly subscription kit for customer 9876."

  • score_cross_sell: "Is a cleaning kit a good cross-sell for the DSLR camera body?"

  • score_return_risk: *"What is the return risk of the camera + lens

    • tripod + bag bundle?"*

  • analyze_basket: "I am thinking of bundling camera + lens + SD card + bag. Based on actual customer data, is that a strong bundle?"

  • predict_reorder: "What is Acme Corp (customer 7654321) due to reorder this week?"

  • forecast_bundle: "Forecast bundle b-camera-kit for the next 12 weeks and recommend a buy quantity."

  • get_weekly_plan: "What is on my weekly plan?"

  • execute_weekly_plan_action: "Run action a-42 from my weekly plan, confirmed."

  • get_opportunities: "Show me my top three proposed opportunities."

  • explain_opportunity: "Why is opportunity opp-17 a good cross-sell?"

  • triage_opportunity: "Activate opportunity opp-17, confirmed."

  • get_drift_alerts: "Are any of my rules drifting?"

  • explain_drift: "Why did the pair in drift alert alert-7 drift?"

  • get_forecast_alerts: "Which bundles are at risk of stockout?"

  • mine_hui_itemsets: "Mine top-20 high-utility itemsets from this 90-day order payload." (Plus / Enterprise tier)

Per-tool narrative docs live in the cookbook.

Env vars

Variable

Required

Default

Notes

MBA_API_KEY

yes

--

The mba_live_... key from your admin

MBA_API_BASE

no

https://app.marketbasketanalysis.com

Per-store base URL. Set this for BigCommerce, self-hosted, or staging backends so the server points at your data plane. Must be https:// for non-local hosts.

MBA_PLATFORM

no

(any)

Set to shopify or bigcommerce to expose platform-gated tools (e.g. predict_reorder)

MBA_SENTRY_DSN

no

--

Opt-in error telemetry (merchant-controlled)

MBA_DEBUG_ERRORS

no

--

Set to 1 to print upstream error bodies to stderr

ALLOW_LOCAL_API_BASE

no

--

Set to 1 to permit localhost in MBA_API_BASE during dev

Development

git clone https://github.com/48x-ai/marketbasketanalysis
cd marketbasketanalysis
pnpm install
pnpm --filter ./packages/mcp typecheck
pnpm --filter ./packages/mcp test
pnpm --filter ./packages/mcp dev    # tsx-based local run
pnpm --filter ./packages/mcp build  # emit ./dist

Adding a new tool

Each tool is a self-contained module under src/tools/. To add one:

  1. Create src/tools/myNewTool.ts exporting definition and handler. Mirror the structure of src/tools/getRecommendations.ts for a simple GET, or src/tools/triageOpportunity.ts for a POST with a confirm gate.

  2. Register it in src/tools/index.ts by importing and adding the module to the allModules array.

  3. Add tests in src/tools/myNewTool.test.ts, covering: missing-key reply, happy path, and at least one upstream-error path. Mirror src/tools/findSubstitutes.test.ts.

  4. Document it in the table above and in dist/mcp/smithery.yaml.

Distribution artifacts

The dist/mcp/ directory at the monorepo root holds the install samples (Claude Desktop, Cursor, Windsurf), the Smithery YAML, and the Anthropic marketplace submission content. See dist/mcp/README.md for the full layout.

Publishing

Tag-based publish via the monorepo-root .github/workflows/publish-mcp.yml workflow. Bump the version in packages/mcp/package.json (keep server.json and src/index.ts in sync), merge to main, then tag mcp-v$VERSION and push the tag. The workflow runs typecheck, test, build, a tag/version match check, then npm publish --access public --provenance using the NPM_TOKEN repo secret. A workflow_dispatch manual trigger is available for rescue runs.

The full operator checklist, including the one-time NPM_TOKEN setup and a no-CI manual publish fallback, lives in docs/RELEASE.md.

Troubleshooting

Symptom

Cause / fix

Server does not appear in tool drawer

JSON typo or npx not on PATH. Check the host's MCP log.

"Error: MBA_API_KEY environment variable not set"

env block missing or value empty.

"MBA API 401"

Key revoked or wrong; mint a fresh one.

"MBA API unreachable"

Network reach failed; check https://status.marketbasketanalysis.com.

Tool times out on first call

First npx -y cold-start downloads the package; install globally for repeat speed.

"MBA API returned malformed response"

Upstream backend drift; set MBA_DEBUG_ERRORS=1 to see the body in stderr.

predict_reorder missing

The tool is platform-gated: it registers when MBA_PLATFORM is unset, shopify, or bigcommerce. The reorder-prediction route also exists on WooCommerce and Magento but the tool gate does not expose it there yet.

For deeper diagnostics see each per-IDE setup doc under dist/mcp/.

License

UNLICENSED, proprietary.

Available Tools

19 tools
analyze_basketAInspect

Run market-basket analysis on a proposed basket / bundle to score its cohesion. Given 2+ products, returns a cohesion score 0..1 representing how strongly they bind together (their affinity) in the merchant's order data. Use this to vet a proposed bundle BEFORE recommending it, so agents can avoid suggesting bundles that look plausible but have no statistical signal. Also useful for 'is this a good bundle?', 'analyze this basket', or 'do these products go together?' questions.

ParametersJSON Schema
NameRequiredDescriptionDefault
product_idsYesThe products in the proposed basket (2-6).

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations carrying the burden, the description clearly discloses the key behavioral trait: it returns a numeric cohesion score between 0 and 1 based on merchant order data. It also communicates the statistical-signal framing and the decision-oriented purpose. It could go further by noting any caveats, edge cases, or failure behavior, but for a read-only scoring tool the core behavior is well explained.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is efficiently structured: first sentence states the core action and output, second sentence gives the primary use case, third sentence adds query paraphrases. Every sentence earns its place and there is no redundant or vague filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple (one parameter, no output schema), and the description covers all an agent needs: what the tool does, what input it expects, what the output represents, when to use it, and example user-phrasing signals. It is sufficiently complete for both selection and invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already fully describes product_ids as 'The products in the proposed basket (2-6)' with min/max constraints at 100% coverage. The description adds slight framing ('Given 2+ products', 'proposed basket/bundle') but does not meaningfully extend the semantics beyond what the schema already states. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb ('Run market-basket analysis'), resource ('proposed basket / bundle'), and outcome ('cohesion score 0..1'). It also distinguishes itself from sibling generation tools by framing itself as a vetting step 'BEFORE recommending' a bundle, making it clear this is an evaluation tool rather than a recommendation or forecasting tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit usage context: use to vet a proposed bundle before recommending it and to avoid plausible-but-unsupported bundles. It also lists natural-language triggers ('is this a good bundle?', 'do these products go together?'). It stops short of naming sibling alternatives or stating when not to use the tool, so it earns a 4 rather than 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

execute_weekly_plan_actionAInspect

Execute a specific action from the merchant's weekly plan (publish bundle, run mining job, archive rule, etc.). Idempotent by action_id, safe to retry. Use this AFTER the merchant has confirmed which action from get_weekly_plan they want to run; do not call preemptively. Merchant-ops surface: BigCommerce today; on other platforms merchants manage this from the admin, and the tool returns a clear not-available message.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmYesMust be true to actually execute. Guard against accidental dispatch.
action_idYesThe id of the action to execute, from get_weekly_plan.

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the behavioral disclosure burden. It discloses idempotency ('Idempotent by action_id, safe to retry') and unsupported-platform behavior ('returns a clear not-available message'). It does not detail permissions or irreversibility of the concrete actions, but the examples and confirmation guard give adequate awareness of mutation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences carry purpose, examples, idempotency, usage timing, and platform availability. The core purpose is front-loaded and every sentence earns its place with no redundant filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter execution tool with 100% schema coverage, the description covers what the tool does, when to call it, retry safety, and failure behavior on unsupported platforms. No output schema exists, but the description gives enough context for an agent to select, invoke, and interpret the likely result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already describes both parameters fully, so the baseline is 3. The description adds semantic value by explaining that action_id is the idempotency key and that it comes from get_weekly_plan, and by tying confirm to the prerequisite that the merchant has confirmed the action. This goes slightly beyond the raw schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Execute a specific action from the merchant's weekly plan', and gives concrete examples such as publish bundle, run mining job, and archive rule. It is clearly distinct from get_weekly_plan because it performs an action rather than listing the plan.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to use it: 'AFTER the merchant has confirmed which action from get_weekly_plan they want to run', and gives a clear when-not-to-use instruction: 'do not call preemptively'. It also explains the platform context and what happens on unsupported platforms, which helps the agent decide whether to call it at all.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

explain_driftAInspect

Explain ONE drift alert: return its prior and current confidence (plus support, lift, and order sample count when the rule is still live) and a short plain-language narrative of how the pair moved versus the prior mining run. Use this when a merchant asks 'why did this pair drift?', 'explain this alert', or 'what changed for these two products?' after seeing it in get_drift_alerts. Different from get_drift_alerts: that lists the feed, this drills into a single alert_id with the change spelled out in a sentence. Handles a disappeared pair gracefully (only the prior confidence is available). BigCommerce only today.

ParametersJSON Schema
NameRequiredDescriptionDefault
alert_idYesThe id of the drift alert to explain, from get_drift_alerts.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of behavioral disclosure. It reveals conditional return content (support, lift, and order sample count only when the rule is still live), graceful handling of disappeared pairs, and the BigCommerce-only platform limitation. It does not explicitly state read-only/idempotent behavior, but the return-oriented wording makes the tool's non-mutating intent clear.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately sized at three sentences and front-loads the core purpose before covering usage context, sibling distinction, and edge-case behavior. Every sentence contributes non-redundant value, including the platform limitation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given a single required parameter and no output schema, the description gives an agent everything needed to call the tool correctly: what to pass, what will be returned, when to use it, which sibling it differs from, and how a missing pair is handled. No critical operational detail appears to be missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the alert_id parameter is already documented as coming from get_drift_alerts. The description reinforces this source and uses alert_id contextually, but it adds no new format, type, or validation details beyond what the input schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Explain ONE drift alert' and enumerates what it returns. It also explicitly differentiates itself from get_drift_alerts by noting that the sibling lists the feed while this tool drills into a single alert_id.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear triggering scenarios with exact merchant phrasings like 'why did this pair drift?' and says to use it after seeing an alert in get_drift_alerts. It also names the alternative get_drift_alerts and explains the difference, which helps an agent select the correct sibling.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

explain_opportunityAInspect

Explain ONE mined opportunity: return its support, confidence, lift, and order sample count plus a short plain-language narrative of why the pair is a good cross-sell. Use this when a merchant asks 'why is this a good cross-sell?', 'explain this opportunity', or 'why should I bundle these?' after seeing it in get_opportunities. Different from get_opportunities: that lists the ranked set, this drills into a single opportunity_id with the stats spelled out in a sentence. Different from get_rationale: rationale is a generic pair 'why', this is the specific mined opportunity's own numbers. BigCommerce only today.

ParametersJSON Schema
NameRequiredDescriptionDefault
opportunity_idYesThe id of the opportunity to explain, from get_opportunities.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the behavioral disclosure burden. It clearly discloses the return content (statistics plus plain-language narrative) and scopes the tool to BigCommerce today. It does not explicitly state read-only behavior, but 'explain' and the return description imply no mutation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose and output, then gives usage triggers and sibling differentiations. Every sentence earns its place; the comparison sentences are compact and high-value rather than redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Although there is no output schema, the description enumerates the return fields and narrative style, so an agent knows what to expect. It covers the single parameter, the intended usage context, platform scope, and relationships to sibling tools, making the description complete for this low-complexity tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents opportunity_id and its source. The description reinforces that the id comes from get_opportunities and refers to a single opportunity, but it adds little meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Explain'), a specific resource ('ONE mined opportunity'), and the concrete outputs (support, confidence, lift, order sample count, narrative). It explicitly differentiates itself from get_opportunities and get_rationale, so an agent can distinguish it from siblings without inspecting schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit trigger phrases ('why is this a good cross-sell?', 'explain this opportunity', 'why should I bundle these?') and the context of use ('after seeing it in get_opportunities'). It also names the alternatives it is not, making the when-to-use decision unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

find_substitutesAInspect

For a given product, recommend the top substitute items that could REPLACE it (not complement it). Substitutes are the inverse of cross-sell: this answers 'what to buy instead', not 'what to buy with'. Use this when the user asks 'what's a substitute for X?', 'X is out of stock, what's a good alternative?', 'recommend a replacement for Y', 'find an equivalent product', or when a procurement agent needs to swap an unavailable SKU. Returns a ranked list with a similarity score and a reason (context_similar / category_match / vendor_match). Works for all five platforms: Shopify, BigCommerce, WooCommerce, Magento, and OroCommerce.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of substitutes to return. Default 3, max 6.
product_idYesProduct id, either the numeric storefront id (e.g. '8472918765') or the platform-specific GID/SKU. The id of the product the user wants to REPLACE.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the behavioral burden. It clearly discloses the return shape: a ranked list with similarity score and a reason category. It also states platform coverage. It does not mention potential side effects, but a recommendation tool is clearly read-oriented.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Every sentence earns its place: core purpose, contrast with cross-sell, example triggers, output format, and platform scope. It is front-loaded with the key definition and contains no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description fully covers the essential return information despite no output schema, and the input schema fully documents both parameters. The platform list and explicit use examples make this complete for an agent deciding whether to call it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the parameters are already well documented in the schema. The description adds only general context ('top substitute items', 'for a given product') without materially enriching the schema's parameter semantics. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: 'recommend the top substitute items that could REPLACE it'. It actively distinguishes itself from complement/cross-sell tools by stating 'not complement it' and 'inverse of cross-sell', making its purpose unambiguous even among many siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides explicit usage triggers such as 'what's a substitute for X?', 'out of stock', 'replacement', and 'equivalent product', plus the procurement-swap scenario. It also excludes the complement use case, giving concrete when-to-use versus when-not-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

forecast_bundleAInspect

For an inventory, purchasing, or merchant-ops agent: forecast weekly sales and recommend a buy quantity for a specific bundle over a configurable horizon. Uses additive Holt-Winters on the bundle's stored historical sales (demand forecasting). Use this when the agent asks 'how many of bundle X should I order?', 'what should I stock for the next N weeks?', 'what's the demand outlook for bundle Y?', or 'forecast the next 8 weeks for the camera bundle'.

ParametersJSON Schema
NameRequiredDescriptionDefault
bundle_idYesBundle identifier (the platform-specific bundle/kit id).
horizon_weeksNoForecast horizon in WEEKS. Default 8, range 1..52. The server converts this to days for the backend, so pass the number of weeks, not days.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the burden, and it does well: it discloses the algorithm (additive Holt-Winters), the data source (stored historical sales), and the advisory nature ('recommend'), implying no order execution. It could be more explicit about side effects or output shape, but the key behavior is clear.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded: purpose first, method second, usage triggers third. The four example queries are somewhat repetitive but still useful for agent routing, so it earns a 4 rather than a 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter tool with no output schema, the description gives enough context to select and call it correctly: it names the inputs, the method, the data source, and the intended output (forecast plus recommended buy quantity). Exact return structure is unspecified, but not critical for invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema coverage is 100%, with strong descriptions for both bundle_id and horizon_weeks, including default, range, and week-vs-day conversion. The description adds only generic 'configurable horizon' context, so it does not need to compensate further.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource: forecast weekly sales and recommend a buy quantity for a specific bundle. It also gives concrete user-query examples, making the tool's scope unmistakable and distinguishing it from alert/opportunity siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly provides 'Use this when...' triggers and targets inventory/purchasing/merchant-ops agents. It does not name alternatives or give explicit when-not-to-use guidance, so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_bundle_for_cartAInspect

Given a list of products already in the cart, recommend products that frequently bundle with the cart to complete a high-confidence bundle. This is multi-item basket analysis for cart completion. Use when the user describes a multi-item cart and asks 'what else do I need?', 'what completes this set?', 'what's missing from this bundle?', 'recommend add-ons for this cart', or similar. Different from get_recommendations: this takes MULTIPLE products and returns items that pair with the cart as a whole, not single-item pairings.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax suggestions to return. Default 3, max 6.
product_idsYesList of product ids currently in the cart (numeric or GID/SKU).

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It does disclose the analytical behavior (multi-item basket analysis for cart completion, whole-cart pairing) and implies a non-mutating read operation, but it does not explicitly state that nothing is modified, how results are scored, or what happens with invalid product IDs. This is acceptable but leaves some behavioral details implicit.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose, then gives concrete usage signals, then differentiates from a sibling tool. No sentence is wasted, and the structure makes it easy for an agent to process quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with only two parameters and no output schema, the description covers the essential invocation context: what input is expected, when to use it, and how it differs from the closest sibling. It does not describe the return structure, but the absence of an output schema makes that a minor gap rather than a critical one.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already documents both parameters with 100% coverage, including defaults, ranges, and accepted formats. The description adds useful context that the cart must contain MULTIPLE products and that pairing is whole-cart, but it does not significantly deepen the parameter semantics beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('recommend') and resource ('products that frequently bundle with the cart'), and clearly frames this as multi-item basket analysis for cart completion. It explicitly distinguishes itself from get_recommendations by emphasizing MULTIPLE products and whole-cart pairing, so an agent can tell them apart.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit trigger phrases ('what else do I need?', 'what completes this set?', etc.) and states when it should be used: when a user describes a multi-item cart. It also provides a when-not/alternative point by explaining the difference from get_recommendations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_drift_alertsAInspect

For a merchant-ops or analytics agent: list active drift alerts, the recommendation rules whose confidence has materially changed (weakened, strengthened, disappeared, emerged) versus the prior mining job. Use this when a merchant asks 'what's changed?', 'is my model still accurate?', 'are any rules drifting?', or wants to investigate a SKU swap / seasonal shift. Merchant-ops surface: BigCommerce today; on other platforms merchants manage this from the admin, and the tool returns a clear not-available message.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax alerts to return. Default 10, max 50.
severityNoFilter alerts by severity. Default 'all'.all

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral burden and does well: it clarifies the comparison baseline (prior mining job), the change types (weakened, strengthened, disappeared, emerged), and the platform-dependent behavior (BigCommerce today; clear not-available message elsewhere). It does not mention ordering or pagination, but those are minor for a read/list tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences with no filler, front-loading the core action and scope before use cases and platform caveat. Every sentence contributes distinct, useful information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter list operation with full schema coverage, the description covers trigger conditions, output concept, and platform limitations. It does not specify the exact shape of an alert beyond rule/confidence-change, but that is sufficient for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, with both limit and severity already documented with defaults, ranges, and enum values. The description adds no additional parameter-specific meaning, so the baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('list active drift alerts') and defines what a drift alert is: recommendation rules whose confidence has materially changed versus the prior mining job. It also differentiates this from related siblings like get_forecast_alerts and explain_drift by focusing on material confidence changes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit trigger phrases and use cases: 'what's changed?', 'is my model still accurate?', 'are any rules drifting?', and SKU swap/seasonal shift investigation. It does not name sibling alternatives or state when not to use this tool, but the when-to-use guidance is otherwise very clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_forecast_alertsAInspect

For an inventory or merchant-ops agent: list forecast-based alerts, the bundles with stockout risk, demand drop, demand spike, or an unreliable forecast curve. Use this when a merchant asks 'what's at risk of stockout?', 'which bundles are losing demand?', 'do I need to reorder anything?', or 'what should I restock?'. Pair with forecast_bundle to drill into a specific bundle. Merchant-ops surface: BigCommerce today; on other platforms merchants manage this from the admin, and the tool returns a clear not-available message.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindNoFilter by alert kind. Default 'all'.all
limitNoMax alerts to return. Default 10, max 50.
severityNoFilter by severity. Default 'all'.all

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It discloses platform-dependent behavior ('BigCommerce today; on other platforms... returns a clear not-available message') and how the tool should be chained with forecast_bundle — both genuinely useful and not derivable from the schema. It does not disclose data freshness or whether alerts are computed on-the-fly versus batch-generated, which would matter for restock decisions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four sentences with purpose front-loaded and the alert kinds packed into the first sentence. The query examples and platform note each earn their place. Minor redundancy: the four alert kinds restate enum values already present in the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and no annotations, the description covers triggers, alert kinds, pairing strategy, and platform behavior — a strong burden for an agent to call it correctly. The notable gap is an explicit contrast with sibling alert tools (get_drift_alerts, get_opportunities) and any hint at the return shape, though the absence of an output schema makes the latter less critical.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%; every parameter (kind, limit, severity) is fully documented with enums, defaults, and min/max bounds. The description's list of alert kinds roughly mirrors the kind enum, adding little semantic value beyond the schema. The baseline 3 applies since the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb-resource pair ('list forecast-based alerts') and enumerates the exact content ('bundles with stockout risk, demand drop, demand spike, or an unreliable forecast curve'). This clearly distinguishes it from alert-adjacent siblings like get_drift_alerts or get_opportunities by anchoring it to forecast-based inventory alerts.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Four concrete merchant queries are provided as trigger phrases ('what's at risk of stockout?', 'which bundles are losing demand?', etc.), which is strong positive usage guidance. It also names the companion tool ('Pair with forecast_bundle to drill into a specific bundle') and notes platform availability. It stops short of a 5 because it never explicitly states when NOT to use it versus siblings like get_drift_alerts or get_opportunities.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_opportunitiesAInspect

List the merchant's ranked bundle / cross-sell opportunities mined from order history, with support / confidence / lift / revenue-weighted score. Use this when a merchant asks 'what are my top opportunities?', 'show me the best bundles I haven't published yet', or 'what should I prioritize?'. Pair with triage_opportunity to act on a specific one. Merchant-ops surface: BigCommerce today; on other platforms merchants manage this from the admin, and the tool returns a clear not-available message.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax opportunities to return. Default 10, max 50.
statusNoFilter by opportunity status. Defaults to 'proposed' (untriaged).proposed

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It discloses platform-dependent behavior (BigCommerce today, clear not-available message elsewhere) and implies a read-only listing operation. It could add response-shape details, but the disclosed behavior goes beyond the bare minimum.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four compact sentences, front-loaded with the primary purpose and followed by usage examples, a pairing note, and platform behavior. Every sentence earns its place with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given only two optional parameters and no output schema, the description is sufficient for correct invocation: it defines what is returned (ranked opportunities with scores), the default status context, and the cross-platform fallback. A mention of the response fields would make it fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, with both parameters already documented clearly, including defaults and enum options. The description does not add parameter-specific meaning beyond the schema, so the baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific verb (list), resource (merchant's ranked bundle/cross-sell opportunities), and scoring fields (support/confidence/lift/revenue-weighted score). It does not explicitly contrast itself with sibling tools like get_recommendations or find_substitutes, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives concrete example user queries ('what are my top opportunities?', 'show me the best bundles I haven't published yet') and appropriately pairs with triage_opportunity for acting on a result. It provides clear context for when to use the tool, though it does not state when not to use it or name alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_rationaleAInspect

Fetch the one-sentence rationale for why product B is recommended alongside product A. Returns a short merchandiser-grade explanation ('these are commonly bought together by customers buying X') suitable for surfacing in a recommendation tile or chat reply. Use this after get_recommendations / get_bundle_for_cart when the agent or user asks 'why are these recommended together?' or 'explain this pairing'.

ParametersJSON Schema
NameRequiredDescriptionDefault
product_idYesThe base product id (the antecedent in the recommendation rule).
related_product_idYesThe recommended product id (the consequent in the rule).

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations present, the description carries the behavioral disclosure burden. It clearly discloses the output type, length, tone, and example content ('short merchandiser-grade explanation'), which goes beyond the schema. It does not discuss failure modes or edge cases, but for a simple fetch-style tool this is largely sufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three tightly written sentences with no filler. It front-loads the core purpose, then gives the return format and the invocation guidance. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity, no output schema, and two fully documented parameters, the description covers the essential context: what the explanation looks like, where it fits in a recommendation flow, and when to call it. Slightly more detail about output formatting or error behavior could push it higher, but nothing critical is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already provides 100% coverage for both parameters, including their roles as antecedent and consequent. The description adds the product A/product B framing, which is helpful but largely restates what the schema already communicates, so it does not significantly raise the value above the schema baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb ('Fetch'), a specific resource ('the one-sentence rationale for why product B is recommended alongside product A'), and clearly distinguishes this from related sibling tools like get_recommendations and get_bundle_for_cart by focusing on the explanation step rather than the recommendation construction step.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly states when to use this tool ('after get_recommendations / get_bundle_for_cart') and gives concrete trigger phrasings ('why are these recommended together?' or 'explain this pairing'), leaving no ambiguity about the intended invocation context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_recommendationsAInspect

For a given product, recommend the top complementary, frequently-bought-together products customers also bought, based on mined order-history association rules. This is the single-product cross-sell tool. Use this when the user asks 'what goes with X?', 'what should I bundle with X?', 'what do customers also buy with X?', 'recommend products to cross-sell with X', or similar single-product co-purchase questions. Works for all five platforms: Shopify, BigCommerce, WooCommerce, Magento, and OroCommerce.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of recommendations to return. Default 3, max 6.
product_idYesProduct id, either the numeric storefront id (e.g. '8472918765') or the platform-specific GID/SKU. Both are accepted.

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description carries the behavioral transparency burden. It transparently explains the recommendation source ('mined order-history association rules') but does not explicitly state whether the call is read-only, what response shape to expect, or any platform-specific behavior beyond broad compatibility.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core purpose is front-loaded, followed by concrete query examples and a platform-support note. The trigger list is slightly long but earns its place by helping agents recognize equivalent user requests.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter tool with no output schema, the description is reasonably complete: it names the algorithm, scope, trigger phrases, and supported platforms. It does not describe the response format, but the simple recommendation semantics make that a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the input schema already documents both product_id and limit with defaults and accepted formats. The description adds little beyond the schema, mostly reinforcing that product_id identifies the product for cross-sell recommendations.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: it recommends complementary, frequently-bought-together products for a given product, based on association rules. It also explicitly positions itself as the single-product cross-sell tool, which distinguishes it from sibling bundle and substitution tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear trigger examples such as 'what goes with X?' and 'recommend products to cross-sell with X', making usage conditions easy to match. It does not explicitly name alternatives to avoid or say when not to use this tool, so it stops short of full exclusion guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_weekly_planAInspect

Fetch the current weekly action plan for the merchant: a ranked list of typed actions (publish opportunity, retire stale bundle, reorder inventory, investigate drift, etc.) the merchant should take this week. Use this when a merchant asks 'what should I work on this week?', 'what's on my plate?', 'show me my weekly plan', or wants a summary of pending tasks before opening the admin. Merchant-ops surface: BigCommerce today; on other platforms merchants manage this from the admin, and the tool returns a clear not-available message.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses the return shape (ranked list of typed actions), gives examples of action types, and clearly states the not-available behavior on non-BigCommerce platforms. For a read-only fetch, this is solid transparency, though it could add details about freshness or ordering criteria.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is comprised of two dense, purposeful sentences: the first covers what the tool does and what the output looks like; the second covers usage triggers and platform behavior. There is no redundancy, and every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no parameters and no output schema, the description sufficiently covers what the agent needs to select and invoke the tool: purpose, sample output shape, trigger phrases, and platform availability. It could mention success behavior in more detail (e.g., empty plan handling), but the provided examples and not-available note already cover the main edge case.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters and the schema coverage is 100%, so the baseline is 4. The description adds no parameter information, but none is required because there are no inputs to document.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific verb ('Fetch') and resource ('current weekly action plan for the merchant') with a helpful elaboration of the returned content (ranked list of typed actions). It does not explicitly differentiate from siblings like get_recommendations or get_opportunities, but the 'weekly plan' concept is distinct enough that an agent should be able to pick it out.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives concrete trigger phrases ('what should I work on this week?', 'what's on my plate?') and notes the platform limitation (BigCommerce today; not-available message elsewhere). It provides clear when-to-use context but does not name alternative tools or explicitly say when not to use it, so it stops just short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mine_hui_itemsetsAInspect

Run high-utility itemset (HUI) mining on a caller-supplied payload of orders + per-line unit_profit. Returns top-K itemsets ranked by aggregate utility (sum of profit across all occurrences). Use this when an agent needs to evaluate which item combinations drive the most profit (not just frequency) for a specific time window or product subset. Plus or Enterprise tier required on the merchant account.

ParametersJSON Schema
NameRequiredDescriptionDefault
top_kNoHow many top-utility itemsets to return. Default 20, max 100.
ordersYesOrder payload: each order has order_id + items[]. Each item has sku, quantity, unit_profit.
min_utilityNoMinimum utility threshold; itemsets below this are dropped.

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the behavioral disclosure burden. It mentions the Plus or Enterprise tier requirement and the ranked-output behavior, but does not explicitly state whether the operation is read-only, how empty or malformed orders are handled, or how top_k and min_utility interact.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tightly written sentences with no filler. The core operation is front-loaded, followed by the output contract, then the appropriate usage context.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an analytics tool with a detailed input schema, the description covers the core contract: input payload, profit metric, ranking, and tier requirement. However, there is no output schema and the description does not specify the result shape or edge-case behavior, leaving some ambiguity for an agent deciding how to handle the response.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already covers 100% of parameters with descriptions, so the baseline is 3. The description adds useful context that utility is the sum of per-line profit and that top-K controls output size, but it does not add meaning for min_utility beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb and resource: 'Run high-utility itemset (HUI) mining' on a caller-supplied payload. It also states the output, top-K itemsets ranked by aggregate utility, and explicitly differentiates from frequency-based analysis with 'not just frequency', which helps distinguish it from sibling analytics tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit use condition: evaluate which item combinations drive the most profit for a specific time window or product subset. It provides a negative cue ('not just frequency'), but it does not name sibling alternatives or state when those would be preferred.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

predict_reorderAInspect

For a sales-rep or inventory / account-management agent: predict when a B2B customer / account is due to reorder. Returns predicted next-order dates for every SKU the customer has ordered >=2 times, with confidence based on the regularity of their cadence (reorder prediction / replenishment forecasting). Bucketed into 'overdue' / 'due_soon' / 'on_track' / 'not_predictable'. Use this when the agent asks 'what's Acme Corp due to reorder?', 'when will customer X need more of Y?', 'show me stockout risks for my B2B accounts', or for proactive replenishment workflows. Works on the Shopify, BigCommerce, WooCommerce, and Magento backends. Not available on OroCommerce.

ParametersJSON Schema
NameRequiredDescriptionDefault
product_idNoOptional: filter to a single product. Useful for 'when will customer X reorder product Y?'.
customer_idYesThe customer id on the store's own platform. Shopify accepts either the numeric storefront id (e.g. '7654321') or the full GID (gid://shopify/Customer/7654321). BigCommerce, WooCommerce, and Magento take their numeric customer id.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations available, the description carries the behavioral disclosure burden and does so well: it reveals that only SKUs ordered >=2 times are considered, that confidence derives from cadence regularity, and that results are bucketed into four categories. It also discloses backend availability. However, it does not explicitly state that the call is read-only or describe behavior for unknown customers or customers with no eligible SKU history.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Though longer than a typical description, every sentence serves a distinct purpose: audience, core action, output behavior, bucket labels, example queries, backend support, and a platform exclusion. It is front-loaded with the essential action and contains no filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the absence of an output schema, the description sufficiently explains the return value shape (predicted next-order dates, confidence, buckets) and provides usage triggers. It also covers optional filtering and backend constraints. Minor gaps remain: no explicit read-only declaration, no error-handling notes for missing customers, and no handling of customers with fewer than two ordered SKUs.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already provides 100% parameter description coverage, including customer_id format variants (numeric vs. GID) and product_id's optional filtering purpose. The tool description reinforces the product_id usage with a query example but does not add new parameter-level semantics beyond what the schema already gives.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'predict when a B2B customer / account is due to reorder.' It goes further to specify output granularity (per-SKU next-order dates), confidence based on cadence regularity, and concrete bucket labels ('overdue' / 'due_soon' / 'on_track' / 'not_predictable'), which clearly distinguishes it from sibling forecasting and recommendation tools like forecast_bundle or score_cross_sell.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description supplies explicit trigger queries ('what's Acme Corp due to reorder?', 'when will customer X need more of Y?') and a broader use case ('show me stockout risks for my B2B accounts'), plus proactive replenishment. It also states supported backends and an explicit exclusion ('Not available on OroCommerce'), giving an agent clear when-to-use and when-not-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

propose_subscription_bundleAInspect

Propose a recurring subscription bundle for a customer based on their first-order items. Given 1-5 seed products the customer has bought, returns a recurring subscription bundle (3-6 items) of the seeds plus complementary products, with a predicted cadence (median days between reorders), a 0..1 confidence score, and a rough monthly_value when prices are known. Use this when a merchant agent asks 'what should they subscribe to?', 'build a monthly subscription bundle from this order', 'propose a subscription bundle', 'recommend a recurring replenishment bundle', or 'what's the right subscription frequency for this customer?'. If a customer_id is supplied the tool blends in the customer's per-SKU reorder cadence; without one it falls back to the seed catalog cohesion alone. Works for all five platforms: Shopify, BigCommerce, WooCommerce, Magento, and OroCommerce (the optional reorder-cadence blend needs a customer_id and is not available on OroCommerce).

ParametersJSON Schema
NameRequiredDescriptionDefault
kit_sizeNoTarget total items in the subscription bundle (seeds + complements). Default 4, clamped to [3, 6].
customer_idNoOptional customer id (numeric storefront id or GID). When supplied, the tool pulls the customer's reorder-prediction history to anchor the cadence and confidence. Without this, the proposal uses seed-only catalog cohesion.
cadence_daysNoOptional target subscription frequency in days (e.g. 30 for monthly, 14 for biweekly). When supplied, the tool snaps the predicted cadence toward this target and weights candidates whose individual cadences are close to it.
seed_product_idsYesProducts the customer bought in their first order (1-5). The proposed subscription bundle will include these plus complementary items.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full behavioral burden and fully delivers: it discloses the returned bundle composition, cadence semantics, confidence range, monthly_value conditionality, customer_id blending behavior, fallback logic, and platform-specific limitations on OroCommerce. This gives the agent a clear picture of what happens under different inputs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is information-dense but every sentence earns its place: core purpose, output summary, explicit trigger phrases, behavioral fallback, and cross-platform caveats. It is front-loaded and avoids filler or repetition of schema details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and no annotations, the description is remarkably complete. It explains what the tool returns, how the inputs affect behavior, when the output is approximate, and where the tool is unsupported. An agent has enough context to select and invoke this tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents all four parameters. The description adds valuable semantics beyond the schema, such as cadence snapping when cadence_days is supplied, the seed catalog cohesion fallback when customer_id is absent, and the monthly_value being reported 'when prices are known.' This is solid but not exhaustive extra meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Propose a recurring subscription bundle for a customer based on their first-order items.' It further clarifies the input (1-5 seed products) and output (3-6 items, cadence, confidence, monthly value), making the tool's purpose unmistakable and distinct from sibling tools like predict_reorder or get_recommendations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit when-to-use signals with concrete example queries ('what should they subscribe to?', 'propose a subscription bundle') and explains fallback behavior when customer_id is absent. It does not explicitly name alternative tools or state when not to use this tool, so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

score_cross_sellAInspect

Score the cross-sell strength (product affinity) between two specific products. Returns the confidence the merchant's real co-purchase data supports for the pair, or a clear 'no signal' result when there's no qualifying rule. Use this to validate a proposed pair before recommending it, or to answer 'is X a good cross-sell for Y?', 'how strong is the affinity between X and Y?', or 'how often are X and Y bought together?'.

ParametersJSON Schema
NameRequiredDescriptionDefault
product_aYesThe 'antecedent' product (the one the customer already has).
product_bYesThe 'consequent' product (the one being evaluated as a cross-sell).

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden and delivers key behavioral detail: it returns confidence backed by real co-purchase data, and it returns a 'clear no signal' result when no qualifying rule exists. It doesn't discuss read-only guarantees or confidence scale, but the described fallback and data source cover the most important behavioral nuances for a scoring tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two front-loaded sentences with no waste: the first states the operation and output, the second gives usage and example questions. Every phrase earns its place, and the most important information appears immediately.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description must explain return behavior—it does, by promising either a confidence value or a no-signal result. It also covers usage scenarios. It doesn't specify the confidence format or scale, but for a simple two-parameter tool this is a minor gap rather than a completeness failure.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, with product_a and product_b clearly described as antecedent and consequent. The tool description adds little beyond that, only framing them as 'two specific products.' Baseline 3 is appropriate since the schema already documents the parameters fully.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb ('score'), resource ('cross-sell strength between two specific products'), and explicitly distinguishes this pairwise scoring from other tasks by giving example questions ('is X a good cross-sell for Y?'). It clearly differentiates from siblings like find_substitutes or get_recommendations without needing to inspect their schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides concrete usage context: 'Use this to validate a proposed pair before recommending it,' plus example queries that map to user intents. It doesn't explicitly mention when not to use it or name alternative tools, but the guidance is clear enough for an agent to select it for pair-level validation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

score_return_riskAInspect

Predict return risk for a candidate bundle of 2-6 products. Returns the composite bundle return rate (max of items, since one returned item typically returns the whole bundle), each item's historical return rate, and a low/medium/high risk recommendation. Use this when the user asks 'will this bundle get returned?', 'predict return risk for these items', 'fashion bundle risk', 'is this set risky to ship together?', or when an agent is composing a bundle and wants to verify it won't tank the merchant's return KPIs. Backed by return-aware mining over the merchant's real order + refund history.

ParametersJSON Schema
NameRequiredDescriptionDefault
thresholdNoOptional override for the 'high risk' cutoff. Defaults to 0.15 (15%). Items above this contribute to a stronger warning in the recommendation text. The low/medium/high classification itself uses fixed bands (<10% / 10-25% / >25%).
product_idsYesProduct ids for the candidate bundle. 2-6 items. Each id is either the numeric storefront id (e.g. '8472918765') or the platform-specific GID/SKU.

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden and does so well: it discloses that the composite rate is the max of item rates, that each item's historical return rate is included, that a low/medium/high recommendation is produced, and that it is backed by the merchant's real order and refund history. This goes well beyond a generic prediction description.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is efficient and front-loaded: purpose, output, trigger phrases, and backing data each earn their place in three compact sentences. No filler or redundancy is present.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, but the description fully covers what the agent should expect: composite bundle return rate, per-item historical rates, and a low/medium/high recommendation. Combined with the complete parameter schema and clear trigger examples, nothing essential is missing for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already fully documents product_ids and threshold, including the fixed low/medium/high bands and threshold override behavior. The description adds only contextual phrasing like 'candidate bundle' and '2-6 products', which does not meaningfully extend parameter understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Predict return risk for a candidate bundle of 2-6 products.' It further distinguishes itself from siblings by focusing on return risk and bundle-level return rate, which is clearly different from forecast_bundle, score_cross_sell, or predict_reorder.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly lists natural-language triggers and an agentic use case: verifying a bundle won't hurt return KPIs. It gives clear positive guidance but does not state when not to use the tool or name alternatives/exclusions, so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

triage_opportunityAInspect

Pause, activate, or archive a specific opportunity from get_opportunities. State-mutating; guarded by confirm=true. Use this after the merchant has explicitly picked an opportunity to act on. Pass action='activate' to publish a proposed rule, 'pause' to temporarily hide an active one, 'archive' to permanently retire it. Merchant-ops surface: BigCommerce today; on other platforms merchants manage this from the admin, and the tool returns a clear not-available message.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYesWhat to do with this opportunity.
confirmYesMust be true to dispatch. Guard against accidental triage.
opportunity_idYesOpportunity id from get_opportunities.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the behavioral disclosure burden. It clearly discloses that the operation is 'State-mutating,' guarded by confirm=true, and that archiving 'permanently retire[s]' an opportunity. It also warns about platform availability. It stops short of describing response format or failure modes, but the core behaviors are well covered.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded with the core action, then expands with action semantics and platform context. Every sentence contributes useful information; there is no redundancy or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a state-changing tool with no annotations and no output schema, this provides essential context: mutation, confirmation guard, action semantics, permanence, and platform limitations. A small gap remains around expected response/return values, but the description is strong enough for an agent to invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds real semantic value by explaining what each action means (activate publishes, pause hides, archive permanently retires) and reinforces the purpose of confirm. This goes beyond the schema's terse field descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb set ('Pause, activate, or archive') and a specific resource ('a specific opportunity from get_opportunities'). It also differentiates the action types clearly, so an agent can distinguish this state-changing tool from read-only sibling tools like get_opportunities or explain_opportunity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to use the tool: 'after the merchant has explicitly picked an opportunity to act on.' It also gives platform-specific guidance, noting that on non-BigCommerce platforms the tool returns a not-available message. It does not explicitly list alternative tools, but the use context is sufficiently clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 19 tool updatesv0.7.0
    • First observedanalyze_basket
    • First observedexecute_weekly_plan_action
    • First observedexplain_drift
    • First observedexplain_opportunity
    • First observedfind_substitutes
    • First observedforecast_bundle
    • First observedget_bundle_for_cart
    • First observedget_drift_alerts
    • First observedget_forecast_alerts
    • First observedget_opportunities
    • First observedget_rationale
    • First observedget_recommendations
    • First observedget_weekly_plan
    • First observedmine_hui_itemsets
    • First observedpredict_reorder
    • First observedpropose_subscription_bundle
    • First observedscore_cross_sell
    • First observedscore_return_risk
    • First observedtriage_opportunity

TDQS

A4/5.0

Scored across 19 tools

Disambiguation4/5

Most tools are clearly differentiated by resource and action (single-product vs cart vs subscription, list vs explain vs act), and several descriptions explicitly call out differences from related tools. However, the cluster of explanation tools (get_rationale, explain_opportunity, explain_drift) and the several scoring/analysis tools (score_cross_sell, analyze_basket, score_return_risk) could still cause minor selection confusion from names alone.

Naming Consistency4/5

All tool names follow snake_case verb_noun conventions and are mostly predictable (get_*, explain_*, score_*). There are minor inconsistencies: related recommendation tools use different verbs (get_recommendations, find_substitutes, propose_subscription_bundle, get_bundle_for_cart), and predict_reorder vs forecast_bundle split an otherwise uniform forecasting concept.

Tool Count3/5

With 19 tools, the server sits in the 16-25 range, which feels heavy and exceeds the ideal well-scoped 3-15 band. The count is defensible given the broad domain coverage, but agents will need to navigate a large surface to find the right tool.

Completeness4/5

The tool surface covers a comprehensive market-basket workflow: recommending, substituting, scoring, explaining, mining, alerting, forecasting, and acting on opportunities. Minor gaps exist—such as no direct tool for managing custom rules beyond triage and no bulk scoring—but the core domain is well covered with no critical dead ends.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Provides structured commerce data for AI agents, enabling real-time product searches and brand discovery across 22,000+ DTC brands without scraping or hallucination.
    5
    19 npm
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI shopping agents to search products, check stock, apply promotions, manage cart sessions, and create cryptographically signed checkout sessions on e-commerce storefronts, while giving merchants analytics into agent intent and catalog demand gaps.
    MIT