Model Context Protocol server for Walmart Marketplace's REST API. Read-only catalog, inventory, order, pricing, and settlement-report tools for Claude and other MCP clients.
All 7 tools have clear verb-noun naming (walmart_search_*, walmart_get_*) and descriptions (avg 180 chars, within baseline 194). Input schemas are present with type definitions and parameter descriptions. However, output schemas are documented only in prose, not as formal JSON Schema. Error handling returns JSON envelopes but lacks recovery guidance (e.g., 'try search_products first'). No enum constraints on status parameter in walmart_search_orders. Missing tool annotations (readOnlyHint, idempotentHint). Pagination is implemented but could be more explicit in descriptions.
Fetch the current inventory record for a single SKU. Args: sku: Exact seller SKU. Returns: JSON envelope. `data` is the inventory record (with quantity, unit, fulfillment lag time), or null if absent.
Fetch full order detail including line items. Args: purchase_order_id: Walmart purchase order ID (string, e.g. "1234567891234"). Returns: JSON envelope. `data` is the order record, or null if the order does not exist.
Fetch current pricing rules for a single SKU. Args: sku: Exact seller SKU. Returns: JSON envelope. `data` is the pricing record (current price, previous price, currency), or null if no pricing rule is set.
Fetch the full catalog record for a single SKU. Args: sku: Exact seller SKU to look up. Returns: JSON envelope. `data` is the product record, or null when the SKU is not present in the seller's catalog.
Fetch a settlement / reconciliation report by report ID. Args: report_id: Walmart settlement report identifier. Returns: JSON envelope. `data` is the report payload, or null if the report is not found.
Output schemas documented only in prose, not as formal JSON Schema. LLMs cannot parse expected response structure programmatically.
status parameter in walmart_search_orders accepts free-form string; should be enum (Created, Acknowledged, Shipped, Delivered, Cancelled) to prevent hallucinated values.
Error responses return JSON envelopes but lack recovery guidance. E.g., 'sku is required' should suggest 'Call walmart_search_products() to find a valid SKU.'
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 60 | <=2025-11-25 | v2 |
Search orders created in the inclusive [date_from, date_to] window. Args: date_from: ISO date (YYYY-MM-DD), start of window. date_to: ISO date (YYYY-MM-DD), end of window. status: Optional Walmart order status filter (e.g. "Created", "Acknowledged", "Shipped", "Delivered", "Cancelled"). limit: Cap on yielded orders (default 200, max 1000). Returns: JSON envelope. `data.orders` is the list of order records.
Search the Walmart Marketplace catalog by free-text query. Args: query: Free-text search string. Matches against product name and indexed catalog attributes. page: 1-indexed page number. page_size: Page size (max 200, capped server-side). Returns: JSON envelope: {"ok": true, "data": {"items": [...], "total": N}}.
Tool annotations (readOnlyHint, idempotentHint) not present. All 7 tools are read-only and idempotent, declaring this helps agents reason about retry safety.
Pagination limits (page_size max 200, limit max 1000) enforced server-side but not declared as JSON Schema constraints (maxItems, maximum). LLMs may pass invalid values.