PO Pilot MCP
Connects to the Shopify Admin GraphQL API using read-only credentials to read products, inventory, and orders, enabling replenishment planning, supplier purchase order generation, and Accounts Payable 3-way invoice matching; also generates Shopify Draft Purchase Order CSV blocks for import into Shopify Admin.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@PO Pilot MCPbuild this week's vendor POs and export Shopify draft PO CSVs"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
PO Pilot MCP (po-pilot-mcp)
Post-Stocky replenishment math, Open-to-Buy & US tariff landed-cost Purchase Orders, Shopify POS barcode Transfer CSVs, Stocky CSV supplier recovery, and Accounts Payable 3-way invoice matching (with QuickBooks Online & Xero Bill CSV exports) for Shopify merchants and US wholesalers.
Shopify retired Stocky on August 31, 2026. Native Shopify Admin stores inventory counts and draft PO records, yet drops the purchasing logic merchants relied on: reorder point calculation, carton/case-pack rounding, vendor minimum order thresholds, supplier export, and invoice discrepancy checks. Meanwhile, Shopify's official Storefront and UCP MCP endpoints (catalog, cart, checkout, policies) serve front-office shoppers only.
po-pilot-mcp connects Claude Desktop, Claude Code, Cursor, or n8n to four deterministic back-office purchasing tools. Every tool runs locally or over Streamable HTTP with zero required credentials in demo_mode or CSV mode, and optionally connects to live Shopify Admin GraphQL (2026-04) when read-only store credentials are supplied.
Setup in Under 60 Seconds
Option A: Zero-Key Quickstart (Claude Desktop / Cursor)
Add this block to claude_desktop_config.json or .cursor/mcp.json (exact version pin recommended for reproducible deployments):
{
"mcpServers": {
"po-pilot": {
"command": "npx",
"args": ["-y", "po-pilot-mcp@1.0.0"]
}
}
}Option B: Claude Code CLI (One Command)
claude mcp add po-pilot -- npx -y po-pilot-mcp@1.0.0Option C: Live Shopify Store Mode (Optional Read-Only Admin Token)
Create a custom app in Shopify Admin -> Settings -> Apps and sales channels -> Develop apps with three read-only scopes: read_products, read_inventory, and read_orders.
{
"mcpServers": {
"po-pilot": {
"command": "npx",
"args": ["-y", "po-pilot-mcp@1.0.0"],
"env": {
"PO_PILOT_LICENSE_KEY": "your_polar_or_pop1_license_key",
"SHOPIFY_STORE_DOMAIN": "your-store.myshopify.com",
"SHOPIFY_ACCESS_TOKEN": "shpat_your_read_only_token"
}
}
}
}Option D: Remote Streamable HTTP (n8n / Cloud Gateways / MCPize)
npx -y po-pilot-mcp@1.0.0 --http
# Listening on http://0.0.0.0:8080/mcp (Health check: GET /health)Related MCP server: Shopify MCP Server
3 Copy-Paste Prompts (Test Immediately)
Prompt 1: Monday Morning Vendor PO Run + Landed Cost + POS Barcode CSV (Zero API Keys Needed)
Use po-pilot to run `build_supplier_purchase_orders` with `demo_mode: true`, `service_level: "95%"`, and `max_cash_budget_usd: 3800`. Show me:
1. Which SKUs are at CRITICAL stockout risk after adjusting for past stockout days,
2. True landed unit costs after US import tariffs + freight (and any margin-erosion warnings) plus how Open-to-Buy rationed cartons under my $3,800 cash cap,
3. Both the Shopify Admin Draft PO CSV (`SKU,Supplier SKU,Quantity,Cost,Tax %`) and the Shopify POS Inventory Transfer CSV (`SKU,Barcode,Quantity`), and
4. The ready-to-send PO emails for each vendor.Prompt 2: Rescue Un-Exportable Supplier Data from Stocky CSV
Shopify Stocky never exported our supplier directory before shutting down. Run `migrate_stocky_csv_snapshot` with `demo_mode: true` (or use the Stocky Purchase Orders CSV I paste below) to reconstruct each vendor's real observed lead time in days, inferred carton pack sizes, latest unit costs, and a ready `supplier_rules` JSON configuration.Prompt 3: Finance Ops 3-Way Match Audit + QuickBooks/Xero Verified Bill CSV
Run `reconcile_po_three_way_match` with `demo_mode: true`. Cross-check our original Purchase Order against warehouse dock receiving counts and the supplier's billed invoice. List every unit-price overcharge, short-shipment billed in full, unapproved surcharge, and freight cap overage, then give me the verified USD amount to pay ($2,386.20), the ready-to-import QuickBooks Online & Xero Bill CSVs (excluding unapproved fees), and the Debit Memo email to send their AR team.Tool Reference (4 Workflow Tools)
Tool Name | Purpose | Inputs | Key Outputs | Annotations |
| Margin-weighted ABC classification, stockout-adjusted daily velocity, Z-score safety stock, and reorder points |
| Per-SKU |
|
| Groups SKUs per vendor, rounds cartons, enforces vendor MOQs, computes US tariff + freight landed cost, enforces Open-to-Buy ( | Same as above + | Per-vendor |
|
| Accounts Payable 3-way match comparing PO vs warehouse receiving vs supplier invoice + accounting CSV export |
|
|
|
| Rebuilds supplier profiles, real lead-time averages/std-dev, and carton multiples from Stocky PO CSV exports |
|
|
|
Deterministic Math Under the Hood
Inventory Position (prevents double-ordering while stock is in transit): $$\text{IP} = \text{OnHand} + \text{OnOrder} - \text{Committed} - \text{Backorders}$$
Stockout-Adjusted Daily Velocity (prevents artificially depressed velocity when a bestseller was out of stock for part of the month): $$d = \frac{\text{UnitsSold}}{\max(1,; \text{WindowDays} - \text{StockoutDays})}$$
Demand + Lead-Time Variability Safety Stock: $$\text{SS} = \left\lceil Z \cdot \sqrt{\text{LT} \cdot \sigma_d^2 + d^2 \cdot \sigma_{\text{LT}}^2} \right\rceil$$ where $Z \in {1.04, 1.28, 1.65, 1.96, 2.33}$ for $85%, 90%, 95%, 97.5%, 99%$ cycle service levels.
Periodic Review Order Quantity & Carton Rounding: $$\text{ROP} = \lceil d \cdot \text{LT} + \text{SS} \rceil, \quad S = \lceil d \cdot (\text{LT} + R) + \text{SS} \rceil$$ When $\text{IP} \le \text{ROP}$, raw order need $Q_0 = \max(\text{SKU_MOQ}, S - \text{IP})$ is rounded to carton multiples $\lceil Q_0 / \text{CasePack} \rceil \times \text{CasePack}$. If a vendor PO falls short of
min_order_value_usd(such as a $2,200 wholesale minimum or free-freight tier), the engine adds carton increments to the highest-velocity A-class SKU rather than padding slow C-items.
Security, Privacy & Reliability Guarantees
Zero Credential Persistence: Tokens passed via
SHOPIFY_ACCESS_TOKENremain in memory for the request lifetime only and are never logged, written to disk, or echoed in error payloads.Read-Only Store Access: Live Shopify GraphQL integration issues
POSTqueries solely for read operations (productVariantsandorders) and enforces a strict 15-secondAbortSignaltimeout.Crash-Proof Error Envelopes: Invalid CSV headers, missing parameters, or network timeouts return structured MCP
isError: trueresponses with remediation steps instead of terminating the stdio process.Zero Known Dependency Advisories: Verified clean under
npm audit.
Pricing & Entitlements
Local Free Sandbox (
npx -y po-pilot-mcp@1.0.0):$0— unlimited Stocky CSV supplier recovery (migrate_stocky_csv_snapshot), fulldemo_mode, and up to 25 SKUs / 15 unique invoice SKUs per call via CSV or JSON.Self-Hosted Lifetime Licenses + 3 n8n Automation Workflows (Buy on Polar.sh →):
Early-Bird Launch —
$49one-time (First 25 Buyers):Solo Store Unlimited— 1 Shopify store, Unlimited SKUs & invoice lines, Live Shopify Admin GraphQL, Open-to-Buy cashflow optimizer, and all 3 ready-to-import n8n workflows (#01,#02,#03) viaPO_PILOT_LICENSE_KEY.Regular Solo Store:
$99one-time (after first 25 launch licenses).3PL / Fractional CFO / Agency License:
$249one-time (up to 10 client Shopify stores + multi-warehouse & QuickBooks/Xero AP workflow deployment rights).
MCPize Managed Cloud (Subscribe on MCPize →):
Free Sandbox (
$0/month) — 15 requests/month (instant zero-setup evaluation).Cloud Pro (
$29/month) — 500 requests/month (unlimited SKUs + Live Shopify sync + Landed Cost/OTB + QBO/Xero Bill CSVs).Cloud Agency / 3PL (
$79/month) — 3,000 requests/month (for multi-brand operators, 3PLs, and automated n8n AP monitors).
Maintainer Publish & Deploy Commands
# 1. Verify build, automated test suite, and zero security advisories
npm test && npm audit
# 2. Publish to npm
npm login
npm publish --access public
# 3. Deploy & activate Free/Pro tiers on MCPize
npx mcpize login
npx mcpize deploySee docs/LOOM-SCRIPT.md for the 3-minute product walkthrough script and docs/RESEARCH-REPORT.md for the market audit behind this build.
License
MIT License — see LICENSE.
Available Tools
4 toolsbuild_supplier_purchase_ordersBuild MOQ-Compliant Supplier POs, Landed Costs, OTB & Shopify PO/Transfer CSVsARead-onlyIdempotent
Turns SKU demand signals into ready-to-send Purchase Orders grouped by vendor. Enforces carton/case-pack multiples, per-SKU MOQs, supplier-level minimum units/USD thresholds (topping up A-class SKUs first), US import tariff + freight landed unit costs with margin-erosion alerts, and optional Open-to-Buy (max_cash_budget_usd) cashflow rationing. Outputs ready-to-import Shopify Native Draft PO CSV (SKU,Supplier SKU,Quantity,Cost,Tax %), Shopify POS Inventory Transfers CSV (SKU,Barcode,Quantity), and formatted vendor PO emails.
| Name | Required | Description | Default |
|---|---|---|---|
| skus | No | Structured SKU inventory + velocity rows. | |
| demo_mode | No | Generate full multi-vendor POs using the built-in Austin, TX merchant demo dataset. | |
| po_prefix | No | Prefix for generated Purchase Order numbers. | PO-2026 |
| inventory_csv | No | Raw Shopify Products/Inventory CSV text. | |
| service_level | No | Target cycle service level used for Z-score safety stock calculation (85%=1.04, 90%=1.28, 95%=1.65, 97.5%=1.96, 99%=2.33). | 95% |
| supplier_rules | No | Per-vendor MOQ, minimum USD spend, import tariff %, freight USD, lead time override, payment terms, email, and ship-to location rules. | |
| use_live_shopify | No | Pull live store SKUs and barcodes from Shopify Admin GraphQL (Pro / License). | |
| review_period_days | No | Days of forward cover to buy beyond lead time. | |
| max_cash_budget_usd | No | Optional Open-to-Buy (OTB) maximum landed cash spend ceiling in USD across all generated POs. Trims lowest-priority C/B cartons first while protecting CRITICAL A-class SKUs. | |
| min_gross_margin_pct | No | Minimum acceptable landed gross margin % before triggering `margin_erosion_warning: true` on a PO line. | |
| default_import_duty_pct | No | Fallback US import tariff / customs duty % when not specified on a vendor's supplier_rules entry. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds substantial behavioral detail beyond the annotations: carton rounding, MOQ enforcement, vendor minimums, landed-cost calculation, margin-erosion alerts, and OTB rationing. Safety annotations already establish it as a read-only, idempotent operation; the description complements this by explaining what rules the generated output enforces, though it could more explicitly state whether emails are actually sent or only formatted.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense and front-loads the core transformation before listing enforcement rules and output formats. It is appropriately sized for a complex planning tool, though the single long sentence structure makes it slightly harder to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity, 11 parameters, rich nested schema, and no output schema, the description does a good job explaining outputs, constraint handling, and optional live/demo modes. The main remaining gap is workflow positioning relative to the sibling replenishment-planning tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is already 100%, so the schema carries the parameter-documentation burden. The description highlights key semantics for max_cash_budget_usd and supplier-level rules, but most parameter meaning comes from the schema rather than the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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 turns SKU demand signals into vendor-grouped purchase orders and names the exact CSV/email outputs. It is clear what the tool produces, but it does not explicitly differentiate itself from the sibling calculate_replenishment_plan, which likely handles the upstream planning step.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the detailed feature list and output formats, making it evident this is for PO generation rather than reconciliation or migration. However, there is no explicit 'use this when' guidance, no exclusions, and no direct comparison to calculate_replenishment_plan or reconcile_po_three_way_match.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calculate_replenishment_planCalculate Stockout-Adjusted Replenishment & Reorder PointsARead-onlyIdempotent
Replaces Shopify Stocky's retired forecasting brain. Computes margin-weighted ABC classes, stockout-adjusted daily sales velocity, demand + lead-time variability safety stock (SS = Z * sqrt(LTsigma_d^2 + d^2sigma_LT^2)), reorder points, inventory position (On-Hand + On-Order - Committed - Backorders), days of cover, and carton-rounded order recommendations. Free Local Sandbox processes up to 25 SKUs per call; Pro/License unlocks unlimited SKUs and Live Shopify sync.
| Name | Required | Description | Default |
|---|---|---|---|
| skus | No | Structured SKU inventory + velocity rows. | |
| demo_mode | No | Run immediately against the built-in US Shopify merchant dataset (no API keys required). | |
| window_days | No | Lookback window in days when parsing CSV or querying live Shopify orders. | |
| inventory_csv | No | Raw CSV exported from Shopify Admin Products or merchant reorder spreadsheet. | |
| service_level | No | Target cycle service level used for Z-score safety stock calculation (85%=1.04, 90%=1.28, 95%=1.65, 97.5%=1.96, 99%=2.33). | 95% |
| supplier_rules | No | Optional supplier rules (e.g. from migrate_stocky_csv_snapshot) to apply vendor lead_time_days overrides. | |
| use_live_shopify | No | Pull live variants and paid order velocity from configured Shopify Admin GraphQL API (Pro / License). | |
| review_period_days | No | Days between purchasing review cycles (e.g., 7 for weekly, 14 for bi-weekly). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive behavior, so safety needs no restating. The description still adds real value beyond them: it enumerates the computed outputs, discloses the 25-SKU sandbox cap versus unlimited on Pro/License, and flags that live sync requires a configured Shopify Admin connection. It does not mention whether results are persisted or purely computed, but the readOnlyHint covers the risk profile.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The opening sentence front-loads purpose and the remainder packs the output list, the formula, and quota constraints with little wasted prose. It is dense but every clause earns its place; the only soft spot is the jump from formulas to pricing tiers mid-paragraph.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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's output enumeration is essential and it delivers that well, along with tier limits. What is missing is the input-mode story: an agent is not told that data can arrive via the skus array, a raw CSV, or live Shopify, or how those interact. For a tool with 8 optional top-level parameters and three mutually alternative data sources, that gap is material.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already carries the parameter burden (service_level Z-scores, stockout_days, case_pack, supplier_rules overrides). The description adds no parameter-level guidance of its own beyond the safety-stock formula and the tier limit. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource (computes replenishment plan / reorder points) and enumerates the concrete outputs: ABC classes, stockout-adjusted velocity, safety stock, reorder points, inventory position, days of cover, carton-rounded recommendations. It is unmistakably distinct in substance from build_supplier_purchase_orders or reconcile_po_three_way_match, though it never names a sibling to draw the boundary explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implied usage is clear (forecasting/replenishment planning), and the free-tier ceiling of 25 SKUs per call plus the Pro/License requirement for live Shopify sync is useful call-time context. However, nothing says when to use this tool versus build_supplier_purchase_orders (the downstream PO builder) or migrate_stocky_csv_snapshot, nor how to choose among the three input modes (skus, inventory_csv, use_live_shopify).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
migrate_stocky_csv_snapshotRecover Supplier Directory, Real Lead Times & MOQs from Stocky PO CSVARead-onlyIdempotent
Shopify Stocky shut down on August 31, 2026 and never provided a Supplier Directory export. Paste a historical Stocky Purchase Orders CSV export (or pass demo_mode: true) and this tool reconstructs every supplier profile: actual observed lead-time average and standard deviation from Created-to-Received timestamps, latest SKU unit cost, GCD-inferred carton pack sizes, historical minimum PO spend, and ready-to-use supplier_rules JSON for build_supplier_purchase_orders.
| Name | Required | Description | Default |
|---|---|---|---|
| demo_mode | No | Test supplier reconstruction using the built-in Stocky PO CSV fixture. | |
| stocky_po_csv | No | Raw CSV content from Stocky Purchase Orders export. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnly, idempotent, non-destructive, closed-world), so the description focuses on adding value: it discloses that outputs are inferred/derived (lead times computed from Created-to-Received timestamps, pack sizes 'GCD-inferred', min spend 'historical') rather than authoritative, which is important caveat context. It stops short of stating how missing or malformed data is handled.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence that front-loads the motivating problem (Stocky shutdown, no Supplier Directory export) before the payload. Every clause carries distinct information about an output artifact; slightly long, but nothing is filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Two optional parameters, full schema coverage, and rich annotations mean little else is needed. With no output schema, the description does the heavy lifting by enumerating the reconstructed fields and the ready-to-use supplier_rules JSON, which is exactly what an agent needs to decide whether to call it and how to chain it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 the non-obvious semantic that the two parameters are alternatives ('or pass demo_mode: true'), i.e. either a real CSV or the fixture, which the schema alone doesn't convey. It does not clarify the 5MB limit or what a partial/truncated CSV yields, keeping it off a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb+resource: 'reconstructs every supplier profile' from a Stocky PO CSV, and it enumerates exactly which derived values (lead-time mean/stdev, latest unit cost, GCD carton packs, min PO spend, supplier_rules). It differentiates from the closest sibling by naming build_supplier_purchase_orders as the downstream consumer, though calculate_replenishment_plan and reconcile_po_three_way_match are never positioned relative to it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clear context for invocation: paste a historical Stocky PO CSV, or use demo_mode to test against the built-in fixture. The Stocky shutdown framing makes the 'when' obvious. No explicit exclusions or error-condition guidance (e.g. malformed CSV, oversized file), but the trigger condition is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reconcile_po_three_way_matchAudit PO vs Receiving vs Supplier Invoice (3-Way Match + QuickBooks/Xero CSVs)ARead-onlyIdempotent
Deterministic Finance Ops 3-way match engine for wholesalers and Shopify merchants. Cross-examines approved Purchase Order lines, warehouse dock receiving counts (good vs damaged units), and billed supplier invoice lines to catch silent unit-price creep, short-shipments billed in full, unapproved surcharges, and freight cap overages. Emits ready-to-import QuickBooks Online (quickbooks_bill_csv) and Xero (xero_bill_csv) Purchase Bill CSVs containing ONLY verified payable quantities and unit costs, plus a vendor Debit Memo email. Free Local Sandbox audits up to 15 invoice lines per call; Pro/License unlocks unlimited invoice audits.
| Name | Required | Description | Default |
|---|---|---|---|
| vendor | No | Vendor or distributor name. | Supplier |
| currency | No | 3-letter ISO currency code for QuickBooks/Xero export. | USD |
| due_date | No | Bill due date in YYYY-MM-DD format (defaults to Net 30 from invoice_date). | |
| po_lines | No | Approved Purchase Order line items. | |
| demo_mode | No | Run a realistic 3-way match audit catching silent price creep, damaged units, and unapproved pallet fees. | |
| po_number | No | Purchase Order reference number. | PO-2026-1042 |
| invoice_date | No | Invoice date in YYYY-MM-DD format (defaults to today UTC). | |
| invoice_lines | No | Billed lines extracted from the supplier PDF/CSV invoice. | |
| invoice_number | No | Supplier invoice number for QuickBooks/Xero Bill CSV export (defaults to INV-<po_number>). | |
| receiving_lines | No | Warehouse receiving counts per SKU. | |
| xero_account_code | No | Xero chart-of-accounts code for inventory/COGS lines (defaults to '310'). | |
| qbo_expense_account | No | QuickBooks Online expense/COGS account name (defaults to 'Cost of Goods Sold'). | |
| agreed_freight_cap_usd | No | Maximum freight/shipping charge agreed on the PO, if applicable. | |
| invoice_extra_fees_usd | No | Freight, pallet, or handling charges billed on the invoice. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the bar is lower, yet the description still adds real behavior: determinism, the four specific mismatch classes detected, the two CSV export targets, the debit-memo artifact, and the 15-line free-tier cap. One ambiguity: 'Emits ... a vendor Debit Memo email' could read as an outbound send under readOnlyHint=true, though 'Emits' most plausibly means generated as output — worth clarifying but not a hard contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, front-loaded with the engine's purpose and backed by concrete audit targets and outputs; the paywall/quota sentence sits last where it belongs. Slight marketing padding ('Deterministic Finance Ops', 'silent unit-price creep') costs a point but nothing is buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 14 parameters but 100% schema description coverage and no output schema, the description carries its weight by describing exactly what is returned (QuickBooks and Xero bill CSVs with verified quantities/costs, plus a debit memo) and the quota limit. It leaves demo_mode, date defaults, and failure behavior to the schema, which is acceptable but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, and the description goes beyond it by tying business concepts to specific parameters — damaged vs good receiving units, freight cap overages (agreed_freight_cap_usd), unapproved surcharges (invoice_extra_fees_usd), and dual accounting exports. It still doesn't explain defaults like demo_mode or the date/currency conventions, so it improves on the schema without fully replacing it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb chain and the exact three data sources it reconciles (approved PO lines, dock receiving counts split good/damaged, billed invoice lines), plus the artifacts produced. This is clearly distinguishable from the sibling tools (replenishment planning, PO building, CSV migration), so an agent can route here for audit work without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage context is implied by 'for wholesalers and Shopify merchants' and by naming the audit scenarios (price creep, short-shipments, surcharges, freight caps), but there is no explicit 'use this when / not when' statement and no reference to the sibling tools as alternatives. The only explicit condition is a licensing/quota note, which is not selection guidance.
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.
4 tool updates
v1.0.0- First observed
build_supplier_purchase_orders - First observed
calculate_replenishment_plan - First observed
migrate_stocky_csv_snapshot - First observed
reconcile_po_three_way_match
TDQS
Scored across 4 tools
The four tools target mostly distinct stages of the purchasing workflow: forecasting, PO construction, reconciliation, and Stocky migration. The main possible confusion is between calculate_replenishment_plan and build_supplier_purchase_orders, since one produces order recommendations and the other turns demand into vendor POs, but the descriptions clarify the handoff.
All tool names use consistent snake_case with a clear verb-first pattern: calculate_, build_, reconcile_, and migrate_. The names are predictable and readable despite being fairly long.
Four tools is well-scoped for a focused PO/inventory planning server. Each tool represents a meaningful workflow stage rather than a marginal convenience operation.
The surface covers the core forecast-to-PO-to-reconciliation lifecycle and includes a migration path from Stocky. Minor gaps remain around explicit supplier directory maintenance, receiving/invoice ingestion, and PO status lifecycle operations, but agents can work around these by supplying data as tool inputs.
Maintenance
Related MCP Connectors
Warehouse ops from Claude: orders, stock, forecasts, parcel rates, labels you buy in the console
Connect Claude or Cursor to books, invoices, bills, payroll, and sealed closes.
Hosted Shopify MCP server for Claude, ChatGPT and Cursor, with each action switched per account.
Connect Amazon Seller Central to Claude or ChatGPT via MCP. Orders, inventory, pricing, fees, FBA.
Related MCP Servers
- AlicenseBqualityCmaintenanceMulti-channel inventory intelligence for Shopify and Amazon sellers. 28 tools for stockout risk, demand forecasts, purchase order management, and sales analytics — with human-in-the-loop safeguards.5035 npm2MIT
- AlicenseCqualityDmaintenanceConnects your Shopify store data to Claude Desktop, enabling access to products, orders, customers, inventory, and more through natural language.151,439 npm4MIT
- AlicenseCqualityDmaintenanceEnables AI assistants like Cursor or Claude Desktop to fully manage a Shopify store using the Model Context Protocol, with tools for products, orders, customers, inventory, discounts, and analytics.32MIT
- AlicenseNot gradedqualityBmaintenanceEnables managing workspace products, inventory, orders, manufacturing, and traceability through natural language in AI assistants like ChatGPT, Codex, and Claude.5 npmMIT