Skip to main content
Glama
alyiox

mcp-walmart-marketplace

Walmart Marketplace MCP 服务器

CI PyPI Python 3.13+ License: MIT

用于 Walmart Marketplace APIs 的 MCP 服务器——涵盖商品、订单、库存、价格、促销、馈送、报告、退货、履约等。

提供基于规范的发现功能(list_endpoints、describe_endpoint)、通用 API 代理(call_endpoint)、馈送上传和文件下载辅助工具,以及运行时规范刷新器(refresh_specs)。AI 代理从内置的 OpenAPI 规范中发现端点,然后调用它们;服务器自动处理 OAuth2 令牌获取、刷新以及 Walmart 要求的请求头。基础地址按环境硬编码,因此配置文件只包含凭证。

功能特性

  • 基于规范的发现 — 28 份内置 OpenAPI 规范,覆盖 234 个操作,可在运行时刷新

  • 任意端点 — 按操作 ID 或原始方法+路径调用;API 演进时无需修改代码

  • 自动 OAuth2 — 按凭证缓存令牌,过期前自动刷新,遇到 401 自动重试一次。客户端密钥绝不会离开令牌获取环节

  • 多广告主 — 每个区域和环境可配置多个卖家凭证,按调用选择

  • 多区域、多环境 — 支持生产环境和沙箱环境

  • 必需的 Walmart 请求头(WM_SEC.ACCESS_TOKEN、WM_SVC.NAME、WM_QOS.CORRELATION_ID、WM_MARKET、WM_GLOBAL_VERSION、WM_SANDBOX、WM_PARTNER_ID)由服务器端注入,对代理隐藏

  • 大型响应会被截断,完整数据可通过 MCP 资源 URI 获取

Related MCP server: MoySklad MCP Server

环境要求

  • Python 3.13+

  • 每个卖家需要 Walmart Marketplace 客户端 ID 和客户端密钥(开发者门户)

快速开始

配置好你的配置文件(参见配置),然后运行服务器:

# Run directly with uvx (no clone needed)
npx -y @modelcontextprotocol/inspector uvx mcp-walmart-marketplace
# Or run from source
git clone https://github.com/alyiox/mcp-walmart-marketplace.git
cd mcp-walmart-marketplace
uv sync
npx -y @modelcontextprotocol/inspector uv run mcp-walmart-marketplace

配置

配置文件位于你的主目录下:~/.config/mcp-walmart-marketplace/config.json。

Windows 用户注意: ~ 映射为 %USERPROFILE%,因此完整路径是 %USERPROFILE%\.config\mcp-walmart-marketplace\config.json。

1. 创建配置目录并复制示例

mkdir -p ~/.config/mcp-walmart-marketplace
cp config.example.json ~/.config/mcp-walmart-marketplace/config.json

2. 编辑 ~/.config/mcp-walmart-marketplace/config.json

{
  "response_cache_ttl": 3600,
  "truncate_threshold": 1024,
  "regions": {
    "primary": {
      "production": {
        "credentials": [
          {
            "client_id": "11111111-2222-3333-4444-555555555555",
            "client_secret": "acme-client-secret-goes-here",
            "advertisers": [
              { "id": 1000001, "partner_id": "10000000001" },
              { "id": 1000002 }
            ]
          }
        ]
      },
      "sandbox": {
        "credentials": [
          {
            "client_id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
            "client_secret": "acme-sandbox-client-secret-goes-here",
            "advertisers": [{ "id": 1000001 }]
          }
        ]
      }
    }
  }
}

配置字段

说明

response_cache_ttl

截断响应在内存中的保留秒数(默认 3600)

truncate_threshold

触发截断的响应字节数阈值(默认 1024)

regions.<R>

区域标签——不区分大小写、自由格式。用于分组;不会改变调用的主机

regions.<R>.<E>

环境——只能是 production 或 sandbox

…<E>.credentials[]

每个 Walmart 客户端凭证一条记录

…credentials[].client_id

Walmart 客户端 ID(UUID)

…credentials[].client_secret

Walmart 客户端密钥,明文

…credentials[].advertisers

该凭证服务的卖家,每个条目为 {"id": …},可附带 "partner_id"

配置文件只能由你本人可读——其中包含明文客户端密钥。

其他一切均由服务器固定:基础地址(生产环境为 marketplace.walmartapis.com,沙箱为 sandbox.walmartapis.com)、WM_SVC.NAME、client_credentials 授权类型,以及每个操作的 WM_MARKET / WM_SANDBOX 请求头值。

区域

区域是命名空间,不是路由。基础地址由服务器按环境固定,因此每个区域访问的是相同的 Walmart 主机。区域的作用是让广告主 ID 只需在单个区域内唯一——同一个 ID 在不同区域下可以对应不同的卖家,使用不同的凭证。

合作伙伴 ID

为具有 Walmart 合作伙伴 ID 的卖家添加 partner_id:

"advertisers": [
  { "id": 1000001, "partner_id": "10000000001" },
  { "id": 1000002 }
]

两个 payments 操作——payments:getTaxForms 和 payments:downloadTaxForm——需要将其作为 WM_PARTNER_ID 请求头。如果为未配置合作伙伴 ID 的卖家调用这些操作,会返回一条提示你添加该字段的错误消息,而不是 Walmart 的 400 错误。其他所有操作都会忽略该字段,因此大多数条目只需 {"id": …}。

广告主

advertiser_id 是所有需要访问网络的工具的必填参数;没有默认值。读取 wmm://config 资源可以查看已配置了哪些广告主 ID。该资源只报告区域、环境和广告主 ID——绝不会暴露客户端 ID 或密钥。

工具

工具

用途

list_endpoints

列出内置规范中的操作,可按查询、域、标签或方法过滤

describe_endpoint

查看单个操作及其模式闭包,已剥离服务器管理的请求头

call_endpoint

按 ID 或原始方法+路径执行任意操作

upload_feed

以 multipart 形式为指定馈送类型上传馈送文件

download_file

将报告、标签或其他二进制文件下载到本地路径

refresh_specs

从 ReadMe api-registry 重新拉取规范到用户缓存

资源

URI

内容

wmm://config

已配置的区域、环境和广告主 ID

wmm://responses/{request_id}

被截断响应的完整内容

wmm://curl/{request_id}

先前请求对应的 cURL 命令

MCP 主机示例

Cursor

添加到 .cursor/mcp.json:

{
  "mcpServers": {
    "walmart-marketplace": {
      "command": "uvx",
      "args": ["mcp-walmart-marketplace"]
    }
  }
}

Claude Code

添加到你的 Claude Code MCP 配置:

{
  "mcpServers": {
    "walmart-marketplace": {
      "command": "uvx",
      "args": ["mcp-walmart-marketplace"]
    }
  }
}

Codex

[mcp_servers.walmart-marketplace]
command = "uvx"
args = ["mcp-walmart-marketplace"]

OpenCode

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "walmart-marketplace": {
      "type": "local",
      "enabled": true,
      "command": ["uvx", "mcp-walmart-marketplace"]
    }
  }
}

GitHub Copilot

{
  "inputs": [],
  "servers": {
    "walmart-marketplace": {
      "type": "stdio",
      "command": "uvx",
      "args": ["mcp-walmart-marketplace"]
    }
  }
}

规范

内置的 28 份规范来自支撑 developer.walmart.com 的 ReadMe api-registry。它们首先从用户缓存目录加载(~/.cache/mcp-walmart-marketplace/specs/),如果不存在则回退到随 wheel 包附带的副本,因此 refresh_specs 无需重新安装即可立即生效。

磁盘上的文件原样存储了注册表提供的原始内容,因此内置副本是事实来源,刷新后的差异可以精确显示 Walmart 的变更内容。缩减处理在加载时进行,这是一种运行时策略,而非写入文件的内容:

  • 过大的示例会被丢弃。 共有 3,514 个内联 example 负载,总计 4.13 MB,但中位数仅为 16 字节,而两个 /v3/items/taxonomy 负载就占了 3.25 MB。所有不超过 MAX_EXAMPLE_BYTES(1 KB)的示例都会保留——占总数 97%,约 133 KB——因此日期、SKU 和标识符的格式提示仍然可用,而那些庞然大物永远不会到达代理。

  • x-readme 会被移除——这是文档平台的渲染元数据,不是 API 细节。

加载全部 28 份规范的开销约为每个进程一次 80 毫秒;结果按规范缓存,并通过文件修改时间失效,因此 refresh_specs 会立即生效。describe_endpoint 的输出中位数为 5.1 KB,最坏情况为 88 KB(六个 order-management 操作内联了非常大的响应模式)。

要重新构建内置副本:

uv run python scripts/fetch_specs.py            # all
uv run python scripts/fetch_specs.py order-management

注意事项

规范与 API 在认证方式上存在分歧。 76 个操作声明了基于客户端 ID 和密钥构建的 Basic Authorization 请求头,而 fulfillment-management 和 insights-management 似乎要求使用它而不是访问令牌。针对生产环境的探测表明这是错误的:仅使用 Basic 会返回 401,仅使用访问令牌会返回 200,在所有测试过的服务上都是如此。因此,此服务器在每个请求上都发送 WM_SEC.ACCESS_TOKEN,并且除了 /v3/token 之外,绝不会在任何地方发送客户端密钥。如果你将其行为与参考文档进行对比,这种差异是刻意为之的。

WM_SVC.NAME 无法从规范中读取。 103 个操作声明了字面占位符字符串 "Walmart Service Name",只有 100 个使用了真实值,因此它被固定为 Walmart Marketplace,实时调用已确认此值。

并非所有文档化的端点都能使用卖家凭证访问。 GET /v3/utilities/apiStatus 返回 HTTP 520 Unable to route request,错误消息中指明预期的请求头为 wm_svc.name: PARTNERMANAGEMENTSERVICES 和 wm_svc.env: prod——但即使发送了完全相同的请求头,仍然返回 520。它似乎属于 3P 凭证无法访问的服务,错误消息具有误导性。在 234 个操作中,预计还会有少量类似情况。

报告端点对内容协商有严格要求。 它们会以 406 拒绝 Accept: */*,并列出可以生成的内容类型,因此 Accept 是根据操作为其成功响应声明的媒体类型推导的(在提供 application/json 时优先选择)。如果你添加的端点在规范中未声明任何响应内容,则会回退到 */*,可能返回 406。

实时覆盖有限。 已有七个跨五个域的操作对生产环境返回了 200——feed-management、advertising、fulfillment-management、insights-management、settings-management——其中包括两个以真实 Excel 工作簿形式到达的报告下载。其余约 227 个操作是根据规范接线的,从未被实际调用过。发现和请求构造有测试覆盖;上游行为则没有。

两个已知的上游故障,均非客户端缺陷:fulfillment-management:getInventoryHealthReport 返回 520 WFS_INTERNAL_SERVER_ERROR,以及 feed-management:getFeedErrorReport 对处理正常的馈送返回 404。

沙箱环境未经验证。 Walmart 单独发放沙箱凭证,与生产环境凭证不同,而且这里没有任何内容在 sandbox.walmartapis.com 上运行过。WM_SANDBOX: v2 的处理——它选择动态沙箱并改变响应语义,而不仅仅是路由——是根据规范实现的,并非实际观察所得。

upload_feed 未经端到端测试。 它仅通过单元测试针对脚本化传输进行了验证——唯一能实时验证它的方式是提交真实馈送,而这会修改真实目录。download_file 已经在生产环境中验证过。

跨主机重定向路径未经实际演练。 当重定向离开 Walmart 的主机时,download_file 会丢弃凭证,如果报告从签名存储提供,这一点很重要。目前观察到的所有下载都是单跳直接返回字节,因此该分支只有单元测试覆盖。

许可证

MIT

Available Tools

6 tools
call_endpointA
Destructive

[WalmartMarketplace] Execute an authenticated API request. Give operation_id, or method and path together. Auth, WM_MARKET, WM_GLOBAL_VERSION, WM_SANDBOX and correlation headers are added by the server.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyNo[WalmartMarketplace] JSON request body for POST/PUT/PATCH.
pathNo[WalmartMarketplace] API path after the base URL, e.g. /v3/orders. Required unless operation_id is given.
methodNo[WalmartMarketplace] HTTP method. Required unless operation_id is given.
paramsNo[WalmartMarketplace] Query string parameters as a JSON object.
regionYes[WalmartMarketplace] Region label, e.g. us. Src: config.
environmentYes[WalmartMarketplace] Target environment — production or sandbox. Src: config.
path_paramsNo[WalmartMarketplace] Values for {placeholders} in the path, e.g. {"purchaseOrderId": "1796277083022"}.
operation_idNo[WalmartMarketplace] Operation id as domain:operationId. Resolves method, path, and required headers from the spec. Src: operations.
advertiser_idYes[WalmartMarketplace] Advertiser (seller profile) id to act as. Required — selects the credential. Src: config.

Output Schema

ParametersJSON Schema
NameRequiredDescription
bodyNo
curlNo
errorNo
cached_atNo
truncatedNo
status_codeNo

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, so the agent knows this can modify or delete data. The description adds that authentication headers are injected by the server, which is useful but does not elaborate on side effects or risk. Since the annotation already covers the main behavioral traits, the description adds modest context but could explicitly warn about potential for mutations or irreversible actions.

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 only two sentences, tightly packed with the essential information: the tool is an authenticated API caller, accepts either operation_id or method+path, and that auth headers are server-managed. Every sentence earns its place, and the primary guidance is front-loaded. No fluff or redundancy.

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?

The tool has nine parameters and an output schema, which covers return values. The description does not address error handling, pagination, or response format, but the output schema likely handles that. However, it lacks guidance on preferred usage (e.g., using operation_id when available vs raw path) and does not mention that it can call any endpoint in the spec, which could be helpful for agent decision-making. Given the schema's richness, this is adequate but not exceptional.

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 all nine parameters are already documented in the input schema. The description repeats the relationship between operation_id and method/path, which is also captured in the schema. It provides no additional parametric detail or syntax beyond what the schema offers, so the baseline of 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 clearly states the tool's purpose: 'Execute an authenticated API request' and specifies the two invocation modes (operation_id or method+path). This distinguishes it from sibling tools like list_endpoints and upload_feed, which are more specialized. The verb 'Execute' and resource 'authenticated API request' are specific and unambiguous.

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

Usage Guidelines2/5

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

The description explains how to invoke the tool (operation_id or method+path) but provides no guidance on when to use this tool versus alternatives such as upload_feed or describe_endpoint. It does not mention any exclusions or scenarios where a sibling would be more appropriate, leaving the agent to infer that this is the low-level fallback without explicit direction.

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

describe_endpointA
Read-only

[WalmartMarketplace] Describe one OpenAPI operation with its schema closure. Returns the operation plus every components.schemas entry reachable from it, so request bodies and responses can be built without the full spec. Server-managed auth and QoS headers are omitted — do not supply them.

ParametersJSON Schema
NameRequiredDescriptionDefault
operation_idYes[WalmartMarketplace] Operation id, qualified as domain:operationId (e.g. order-management:getAllOrders). Src: operations.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

The description adds behavioral context beyond annotations: it states that server-managed auth and QoS headers are omitted and instructs not to supply them, and it explains the output (operation plus reachable schemas). Since annotations already mark readOnlyHint=true, this extra detail is valuable and doesn't contradict.

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 two sentences, front-loaded with the core function, followed by concrete output description and a clear instruction. No unnecessary words.

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 the existence of an output schema and the read-only annotation, the description covers what the tool returns, the intended use case, and an important behavioral note about headers. Nothing critical is missing for an agent to call it correctly.

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 provides a full description of the operation_id parameter with format and example, so the tool description adds no additional parameter semantics. With 100% schema description coverage, the baseline of 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 clearly states the tool's purpose: to describe an OpenAPI operation and its schema closure. It specifies the verb 'describe', the resource (an OpenAPI operation), and the additional detail of returning reachable schemas. This distinguishes it from siblings like list_endpoints (listing) and call_endpoint (calling).

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 implies a usage scenario: when you need to understand the schema of an endpoint to build request bodies and responses without the full spec. However, it does not explicitly compare with alternatives or state when not to use it, so it's clear context but lacks explicit exclusions.

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

download_fileA
Read-only

[WalmartMarketplace] Download a report, label, or other binary payload to a local path. Give a full url, or operation_id (or method and path). Follows redirects and drops credentials when a redirect leaves Walmart's host.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNo[WalmartMarketplace] Absolute URL to fetch, e.g. a report URL returned by a previous call.
pathNo[WalmartMarketplace] API path when not using url.
methodNo[WalmartMarketplace] HTTP method when using path.
paramsNo[WalmartMarketplace] Query string parameters.
regionYes[WalmartMarketplace] Region label, e.g. us. Src: config.
dest_pathYes[WalmartMarketplace] Local path to write the downloaded bytes to.
environmentYes[WalmartMarketplace] Target environment — production or sandbox. Src: config.
path_paramsNo[WalmartMarketplace] Values for {placeholders} in path.
operation_idNo[WalmartMarketplace] Operation id as domain:operationId. Src: operations.
advertiser_idYes[WalmartMarketplace] Advertiser (seller profile) id to act as. Src: config.

Output Schema

ParametersJSON Schema
NameRequiredDescription
pathNo
urlsNo
errorNo
status_codeNo
content_typeNo
bytes_writtenNo

TDQS

A4/5.0
Behavior4/5

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

Annotations already indicate readOnlyHint=true, so the read-only nature is covered. The description adds valuable behavioral context: it follows redirects and drops credentials when redirecting away from Walmart's host. This goes beyond the annotations and informs the agent of security-relevant behavior.

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 two sentences with zero waste. The primary purpose is stated first, followed by essential behavioral detail about redirects. Every sentence earns its place and the structure is front-loaded.

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 download tool with 10 parameters and read-only annotations, the description covers the key usage scenarios and security behavior. It does not mention output schema or file handling details, but the presence of an output schema and the tool's straightforward nature make this acceptable. Overall, it is complete enough 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 parameters have individual descriptions. The tool description adds value by clarifying the relationship between url, operation_id, and method/path (i.e., you can use one of these alternatives), which is not evident from the schema alone. However, it does not add syntax or format details beyond that.

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 clearly states the action (download), the resource type (report, label, or other binary payload), and the destination (local path). It also lists multiple ways to specify the target (full url, operation_id, or method+path), making the tool's purpose distinct from siblings like call_endpoint which are for API calls.

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

Usage Guidelines3/5

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

The description explains how to invoke the tool (via url, operation_id, or method+path) but does not explicitly contrast it with sibling tools or state conditions for when to choose this over call_endpoint or upload_feed. The context of binary payload download is implied but not made explicit against alternatives.

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

list_endpointsB
Read-only

[WalmartMarketplace] List OpenAPI operations with optional filters.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagNo[WalmartMarketplace] Filter to operations whose OpenAPI tags include this value.
queryNo[WalmartMarketplace] Case-insensitive substring match on operation id, path, or summary.
domainNo[WalmartMarketplace] Limit to one API domain, e.g. order-management. Src: specs.
methodNo[WalmartMarketplace] Filter by HTTP verb — GET, POST, PUT, PATCH, DELETE.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, so the tool is known to be read-only with a bounded scope. The description adds the concept of 'optional filters' but does not disclose any additional behavioral traits such as sorting, pagination, or the format of the returned list. Given the annotation coverage, a score of 3 is appropriate – the description provides minimal added behavioral context.

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 a single, concise sentence that is front-loaded with the domain context ('[WalmartMarketplace]') and immediately states the core action and resource. There is zero redundancy or wasted words, making it highly scannable for an agent.

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 (read-only, all parameters optional and documented, output schema present), the description is quite complete. It could arguably mention that it returns a list of operations or that it is a discovery tool, but the output schema covers the return structure, and the tool's purpose is clear. The only minor gap is lack of explicit guidance on when to use it, but that is more about usage guidelines than contextual completeness of the operation itself.

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 provides 100% coverage with detailed descriptions for all four parameters (tag, query, domain, method). The description's mention of 'optional filters' adds no new meaning beyond what the schema already specifies. Baseline 3 is correct because the schema does the heavy lifting; the description does not enhance parameter understanding.

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 states a specific verb ('List') and resource ('OpenAPI operations'), and mentions optional filters, which clearly conveys the tool's purpose. It is distinguishable from siblings like 'describe_endpoint' and 'call_endpoint' by the action and resource, though it does not explicitly name those alternatives.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus the sibling tools (e.g., 'describe_endpoint', 'call_endpoint'). It does not mention that it is a discovery tool for finding operations before calling them, nor does it state any exclusions or alternatives. The agent must infer usage from the name and parameters.

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

refresh_specsA
Idempotent

[WalmartMarketplace] Refresh bundled OpenAPI specs from the public registry into the user cache, which then takes precedence over the bundled copies.

ParametersJSON Schema
NameRequiredDescriptionDefault
spec_idNo[WalmartMarketplace] Refresh only this spec, e.g. order-management. Omit to refresh all. Src: specs.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already indicate a non-read-only, idempotent, non-destructive write. The description adds that the refresh comes from the public registry and that the cache takes precedence over bundled copies, which directly informs the agent of the effect on subsequent tool calls. This goes beyond the annotation baseline and clarifies the behavioral impact.

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?

A single, front-loaded sentence conveys the entire purpose and key constraint. Every word contributes meaning; there is no redundancy or filler. The description efficiently sets expectations without unnecessary elaboration.

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 such a simple tool with one optional parameter and a full schema description, the description covers everything needed: what it refreshes, where it refreshes from, and the precedence effect. The output schema exists, and no other behavioral aspects are missing, making the definition 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?

The sole parameter spec_id is fully described in the schema (including an example and the 'omit to refresh all' behavior), so the schema provides complete coverage. The tool description does not add any additional parameter detail, which is appropriate given the high schema coverage.

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 action (refresh bundled OpenAPI specs) with a clear source (public registry) and destination (user cache). It also notes the behavioral consequence that the cache takes precedence over bundled copies, which clearly distinguishes it from the sibling tools that list, describe, or call endpoints.

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

Usage Guidelines3/5

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

The description implies when to use the tool—when you want to update cached spec definitions—but it does not explicitly state alternatives or when not to use it. No exclusions or routing guidance are provided, so an agent must infer appropriate usage from the tool name and siblings.

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

upload_feedA

[WalmartMarketplace] Upload a feed file for a feed type. Posts the local file as multipart/form-data to /v3/feeds and returns the feed id.

ParametersJSON Schema
NameRequiredDescriptionDefault
regionYes[WalmartMarketplace] Region label, e.g. us. Src: config.
feed_typeYes[WalmartMarketplace] Walmart feedType, e.g. MP_ITEM, MP_INVENTORY, RETIRE_ITEM. Valid values are enumerated on each domain's POST /v3/feeds operation. Src: operations.
file_pathYes[WalmartMarketplace] Local path of the feed file to upload.
environmentYes[WalmartMarketplace] Target environment — production or sandbox. Src: config.
advertiser_idYes[WalmartMarketplace] Advertiser (seller profile) id to act as. Src: config.

Output Schema

ParametersJSON Schema
NameRequiredDescription
bodyNo
curlNo
errorNo
cached_atNo
truncatedNo
status_codeNo

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already set readOnlyHint=false and destructiveHint=false, so the description's mention of 'Upload' is consistent and adds no contradiction. The description does add behavioral context beyond annotations by specifying the HTTP method (multipart/form-data) and the endpoint ('/v3/feeds'), as well as the return value (feed id). It does not disclose potential side effects like asynchronous processing or rate limits, but these may be covered by the openWorldHint annotation. Overall, this is adequate but not rich.

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 a single, focused sentence that front-loads the purpose and includes the essential technical details (multipart/form-data, endpoint, return value). There is no redundant or vague phrasing; 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?

For a mutation tool with 5 required parameters, all fully described in the schema, and an output schema present, the description is nearly complete. It covers the action, method, endpoint, and return value. It does not explicitly mention prerequisites like file accessibility or that the operation may be asynchronous, but these are either implied ('local path') or not critical for invocation. The description fills the essential gaps left by the schema.

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 every parameter has a documented description in the schema. The tool description does not add any extra meaning beyond restating 'feed file' and 'feed type'; it does not elaborate on parameter formats, constraints, or relationships. Since the schema already handles parameter documentation, a baseline of 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 clearly states the action ('Upload a feed file'), the resource ('for a feed type'), and the specific mechanism ('Posts the local file as multipart/form-data to /v3/feeds'). It also tells the caller the key result ('returns the feed id'). This is distinct from siblings which handle endpoint listing, generic calling, or downloads, so there's no ambiguity.

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

Usage Guidelines3/5

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

The description implies usage context (uploading a feed file) but does not explicitly state when to prefer this over other tools or provide exclusions. There is no mention of alternatives or conditions like 'use call_endpoint for non-feed operations'. However, the tool's specificity (multipart feed upload) makes the intent clear enough for most agents.

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. 6 tool updatesv0.1.0
    • First observedcall_endpoint
    • First observeddescribe_endpoint
    • First observeddownload_file
    • First observedlist_endpoints
    • First observedrefresh_specs
    • First observedupload_feed

TDQS

A4.1/5.0

Scored across 6 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: listing/describing endpoints for discovery, calling endpoints for execution, uploading feeds, refreshing specs, and downloading binaries. No overlapping responsibilities that could cause misselection.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern in snake_case (list_endpoints, describe_endpoint, call_endpoint, upload_feed, refresh_specs, download_file). The convention is uniform and predictable.

Tool Count5/5

With 6 tools, the server is well-scoped for its purpose of interfacing with a large external API. Each tool earns its place, covering discovery, generic execution, and targeted conveniences without redundancy or bloat.

Completeness5/5

The call_endpoint tool provides generic access to all Walmart Marketplace operations, ensuring no dead ends. The other tools handle spec discovery, feed uploads, and binary downloads, covering the full lifecycle without significant gaps.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that provides access to WooCommerce REST API functionality, enabling product, order, customer, and coupon management.
    1,420 npm
    1
    MIT
  • A
    license
    C
    quality
    B
    maintenance
    MCP server for MoySklad (МойСклад) warehouse and CRM management API. 21 tools covering the full order lifecycle: products, stock, counterparties, customer orders, shipments, supplies, warehouses, organizations, reports, and webhooks.
    60
    54 npm
    9
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that lets you manage a Walmart Marketplace seller account in plain language, including orders, inventory, pricing, returns, WFS fulfillment, and reports.
    1
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    MCP server for Walmart Connect Ads APIs, enabling AI agents to execute any Sponsored Search or Display API endpoint with automatic RSA-SHA256 signing and download display snapshots.
    5
    1
    MIT