mcp-walmart-marketplace
Walmart Marketplace APIs
Servidor MCP para Walmart Marketplace APIs: artículos, pedidos, inventario, precios, promociones, feeds, informes, devoluciones, fulfillment y más.
Expone descubrimiento guiado por especificaciones (list_endpoints, describe_endpoint), un proxy de API genérico (call_endpoint), utilidades para subir feeds y descargar archivos, y un actualizador de especificaciones en tiempo de ejecución (refresh_specs). El agente de IA descubre los endpoints a partir de las especificaciones OpenAPI incluidas y luego los invoca; el servidor se encarga automáticamente de la obtención y renovación del token OAuth2 y de las cabeceras que Walmart exige. Las direcciones de base están fijadas por entorno, de modo que el archivo de configuración no contiene nada más que credenciales.
Características
Descubrimiento guiado por especificaciones: 28 especificaciones OpenAPI integradas que cubren 234 operaciones, actualizables en tiempo de ejecución
Cualquier endpoint: llama por id de operación o método y ruta en bruto; sin cambios de código cuando las API evolucionan
OAuth2 automático: tokens capturados, almacenados en caché por credencial, renovados antes de la caducidad y reintentados una vez en caso de 401. El secreto del cliente nunca abandona la adquisición del token
Multi-anunciante: varias credenciales de vendedor por región y entorno, seleccionadas en cada llamada
Multi-región y multi-entorno: producción y sandbox
Cabeceras obligatorias de Walmart (
WM_SEC.ACCESS_TOKEN,WM_SVC.NAME,WM_QOS.CORRELATION_ID,WM_MARKET,WM_GLOBAL_VERSION,WM_SANDBOX,WM_PARTNER_ID) inyectadas en el servidor y ocultas del agenteLas respuestas grandes se truncan, y los datos completos están disponibles mediante el recurso URI de MCP
Related MCP server: MoySklad MCP Server
Requisitos
Python 3.13+
Client ID y Client Secret de Walmart Marketplace por vendedor (Developer Portal)
Inicio rápido
Configura (consulta Configuración) y luego ejecuta el servidor:
# 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-marketplaceConfiguración
El archivo de configuración se encuentra en tu directorio personal: ~/.config/mcp-walmart-marketplace/config.json.
Nota para Windows:
~se corresponde con%USERPROFILE%, por lo que la ruta completa es%USERPROFILE%\.config\mcp-walmart-marketplace\config.json.
1. Crea el directorio de configuración y copia el ejemplo
mkdir -p ~/.config/mcp-walmart-marketplace
cp config.example.json ~/.config/mcp-walmart-marketplace/config.json2. Edita ~/.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 }]
}
]
}
}
}
}Campo de configuración | Descripción |
| Segundos que se conservan en memoria las respuestas truncadas (por defecto |
| Límite de bytes de la respuesta antes del truncamiento (por defecto |
| Etiqueta de región – no distingue mayúsculas, y es libre. Los anuncios no cambian el host. host que se llama, no |
| Entorno: exactamente |
| Una entrada por credencial de cliente Walmart |
| ID de cliente de Walmart (UUID) |
| Secreto de cliente de Walmart, en texto plano |
| Vendedores a los que sirve esta credencial, cada |
Mantén el archivo de configuración legible sólo para ti: contiene secretos de cliente en texto seco.
Todo lo demás lo fija el servidor: URLs base (marketplace.walmartapis.com para producción, sandbox.walmartapis.com para sandbox), WM_SVC.NAME, el órgran de concesión client_credentials y los valores de cabecera WM_MARKET / WM_SANDBOX por operación.
Regiones
Una región es un espacio de nombres, no una ruta. Las direcciones base son fijadas por el servidor por entorno, así que toda región llega a los mismos hosts de Walmart. La existencia de ese nivel sirve para que los identificadores de anunciante sólo tengan que ser únicos dentro de una única región: el mismo id en dos regiones puede corresponder a vendedores distintos, con credenciales distintas.
Partner IDs
Añade partner_id a un vendedor que tenga un Walmart Partner ID:
"advertisers": [
{ "id": 1000001, "partner_id": "10000000001" },
{ "id": 1000002 }
]Dos operaciones payments – payments:getTaxForms y payments:downloadTaxForm – lo exigen como cabecera WM_PARTNER_ID. Si se llama a una de estas operaciones para un vendedor configurado sin partner ID, fallará con un mensaje que te pide que la añadas, en lugar de recibir un 400 de Walmart. El resto de operaciones lo ignoran, por lo que la mayoría de las entradas son simplemente {"id": …}.
Anunciantes
advertiser_id es obligatorio en todas las herramientas que acceden a la red; no existe un valor por defecto. Lee el recurso wmm://config para descubrir qué id de anunciantes están configurados. Ese recurso solo informa de región, entorno e ids de anunciante, nunca de client_id ni claves secretas.
Herramientas
Herramienta | Propósito |
| Lista las operaciones de las especificaciones integradas, filtradas por consulta, dominio, etiqueta o método |
| Muestra una operación con su cierre de esquema, con las cabeceras gestionadas por el servidor ocultas |
| Llama cualquier operación por ID o por método+ruta en bruto |
| Sube un fichero de feed (multipăr) para un tipo de feed |
| Descarga un informe, una etiqueta u otro binario a una ruta local |
| Vuelve a tirar de las especificaciones desde el registro ReadMe a la caché del usuario |
Recursos
URI | Contenido |
| Regiones, entornos e ids de anunciante configurados |
| Cuerpo completo de una respuesta truncada |
| Comando cURL equivalente para una petición anterior |
Ejemplos de host MCP
Cursor
Añade a .cursor/mcp.json:
{
"mcpServers": {
"walmart-marketplace": {
"command": "uvx",
"args": ["mcp-walmart-marketplace"]
}
}
}Claude Code
Añade a tu configuración MCP de Claude Code:
{
"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"]
}
}
}Especificaciones
Las 28 especificaciones incluidas proceden del ReadMe api-registry que soporta developer.walmart.com. Se cargan primero desde el directorio de caché del usuario (~/.cache/mcp-walmart-marketplace/specs/) y, si están ausentes, desde la copia que viajar con la distribución (wheel). Así, refresh_specs surte efecto al instante sin necesidad de reinstalar.
Los archivos del disco se guardan verbatim, tal como los sirvió el registro, así que el paquete es la fuente de verdad real y el diff de refresco presenta exactamente lo que Walmart cambió. La reducción se produce en la carga, de modo que es una política en tiempo de ejecución, no algo incrustado en los archivos:
Se descartan ejemplos demasiado grandes. Hay 3.514 carpas
exampleen línea que suman 4,13 MB, pero la mediana es de 16 bytes y dos cargas/v3/items/taxonomysuman por sí solas 3,25 MB. Todo lo que está en o por debajo deMAX_EXAMPLE_BYTES(1 kB) sobrevive: el 97 % de ellos, es decir, ~133 KB, por lo que las pistas de formato de fechas, SKUs e ids siguen disponibles mientras que estos colosos no llegan nunca al agente.El x-readme se elimina: son metadatos de renderizado de la plataforma de documentación, no detalles de API.
Cargar las 28 especificaciones requiere ~80 ms una vez por proceso; los resultados se almacenan en caché por especificación y se invalidan según la hora de modificación del archivo, de modo que un refresh_specs se vuelve efectivo de inmediato. La salida de describe_endpoint es de 5,1 KB de media y de 88 KB en el peor caso (seis operaciones de order-management queincrustan esquemas de respuesta realmente grandes).
Para reconstruir las copias empaquetadas:
uv run python scripts/fetch_specs.py # all
uv run python scripts/fetch_specs.py order-managementAdvertencias
Las especificaciones y la API discrepan sobre autenticación. 76 operaciones declaran una cabecera de Basic Authorization elaborada a partir del id de cliente y de su secreto; fulfillment-management e insights-management parecen exigirla en lugar de un token de acceso. Probado ante producción, la afirmación es falsa: Basic solo da 401 y el token de acceso solo da 200, en todos los servicios probados. Por esta razón este servidor envía WM_SEC.ACCESS_TOKEN en cada petición y nunca envía el secreto de cliente en ningún sitio salvo a /v3/token. Si comparas el comportamiento con los documentos de referencia, verás que ese hueco está puesto adrede.
WM_SVC.NAME no puede extraerse de las especificaciones. 103 operaciones declaran la cadena literal que hace de marcador "Walmart Service Name" y solo 100 el valor real, así que se fija como Walmart Marketplace; las llamadas en vivo lo confirman.
No todos los endpoints documentados son alcanzables con credenciales de vendedor. GET /v3/utilities/apiStatus devuelve HTTP 520 Unable to route request y solicita las cabeceras wm_svc.name: PARTNERMANAGEMENTSERVICES y wm_svc.env: prod, pero aun enviando exactamente esas, sigue devolviendo 520. Parece pertenecer a un servicio al que las credenciales 3P no tienen acceso, y el mensaje de error es un señuelo. Cabe esperar un puñado de casos similares en las 234 operaciones.
Los informes negocian el contenido de forma estricta. Rechazan Accept: */* con un 406 en el que enumeran lo que pueden producir; por tanto Accept se deduce de los media types que la operación declara para sus respuestas de éxito (prefiriendo application/json cuando se ofrece). Si añades un endpoint cuya especificación no declare contenido de respuesta, quedará sin cubrir por su */* y puede devolver 406.
La cobertura en vivo es escasa. Siete operaciones de cinco dominios han devuelto 200 contra producción: feed-management, advertising, fulfillment-management, insights-management, settings-management, incluidos dos informes descargados como libros de Excel reales. El resto, unas ~227, están cableadas desde las especificaciones y nunca se han llamado. El descubrimiento y la construcción de peticiones están cubiertos por pruebas; el comportamiento en el subsistema ascendente no.
Dos fallos conocidos en el lado ascendente, ninguno por nuestro algoritmo: fulfillment-management:getInventoryHealthReport responde 520 WFS_INTERNAL_SERVER_ERROR, y feed-management:getFeedErrorReport responde 404 para un feed que se procesó limpiamente.
El sandbox no está verificado. Walmart emite credenciales de sandbox por separado de las de producción; nada de esto se ha ejecutado contra sandbox.walmartapis.com. El tratamiento de WM_SANDBOX: v2 (que opta por el sandbox dinámico y cambia la semántica de las respuestas, no solo el enrutamiento) se ha implementado a partir de los specs, no de la observación.
upload_feed no está probado de extremo a extremo. Solo se ejecutan pruebas unitarias sobre un transporte simulado: el único método para verificarlo en vivo es enviar un feed real, lo que altera un catálogo activo. download_file en cambio sí se ha verificado contra producción.
La ruta de redirección entre hosts no se ha ejercido. download_file elimina credenciales cuando una redirección sale del host de Walmart, lo cual tiene importancia si un día un informe se sirve desde almacenamiento firmado. Hasta ahora todas las descargas observadas devuelven sus bytes directamente y de un solo salto, así que esa rama solo tiene esa prueba unitaria.
Licencia
MIT
Available Tools
6 toolscall_endpointADestructive
[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.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | [WalmartMarketplace] JSON request body for POST/PUT/PATCH. | |
| path | No | [WalmartMarketplace] API path after the base URL, e.g. /v3/orders. Required unless operation_id is given. | |
| method | No | [WalmartMarketplace] HTTP method. Required unless operation_id is given. | |
| params | No | [WalmartMarketplace] Query string parameters as a JSON object. | |
| region | Yes | [WalmartMarketplace] Region label, e.g. us. Src: config. | |
| environment | Yes | [WalmartMarketplace] Target environment — production or sandbox. Src: config. | |
| path_params | No | [WalmartMarketplace] Values for {placeholders} in the path, e.g. {"purchaseOrderId": "1796277083022"}. | |
| operation_id | No | [WalmartMarketplace] Operation id as domain:operationId. Resolves method, path, and required headers from the spec. Src: operations. | |
| advertiser_id | Yes | [WalmartMarketplace] Advertiser (seller profile) id to act as. Required — selects the credential. Src: config. |
Output Schema
| Name | Required | Description |
|---|---|---|
| body | No | |
| curl | No | |
| error | No | |
| cached_at | No | |
| truncated | No | |
| status_code | No |
TDQS
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.
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.
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.
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.
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.
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_endpointARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| operation_id | Yes | [WalmartMarketplace] Operation id, qualified as domain:operationId (e.g. order-management:getAllOrders). Src: operations. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_fileARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | [WalmartMarketplace] Absolute URL to fetch, e.g. a report URL returned by a previous call. | |
| path | No | [WalmartMarketplace] API path when not using url. | |
| method | No | [WalmartMarketplace] HTTP method when using path. | |
| params | No | [WalmartMarketplace] Query string parameters. | |
| region | Yes | [WalmartMarketplace] Region label, e.g. us. Src: config. | |
| dest_path | Yes | [WalmartMarketplace] Local path to write the downloaded bytes to. | |
| environment | Yes | [WalmartMarketplace] Target environment — production or sandbox. Src: config. | |
| path_params | No | [WalmartMarketplace] Values for {placeholders} in path. | |
| operation_id | No | [WalmartMarketplace] Operation id as domain:operationId. Src: operations. | |
| advertiser_id | Yes | [WalmartMarketplace] Advertiser (seller profile) id to act as. Src: config. |
Output Schema
| Name | Required | Description |
|---|---|---|
| path | No | |
| urls | No | |
| error | No | |
| status_code | No | |
| content_type | No | |
| bytes_written | No |
TDQS
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.
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.
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.
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.
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.
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_endpointsBRead-only
[WalmartMarketplace] List OpenAPI operations with optional filters.
| Name | Required | Description | Default |
|---|---|---|---|
| tag | No | [WalmartMarketplace] Filter to operations whose OpenAPI tags include this value. | |
| query | No | [WalmartMarketplace] Case-insensitive substring match on operation id, path, or summary. | |
| domain | No | [WalmartMarketplace] Limit to one API domain, e.g. order-management. Src: specs. | |
| method | No | [WalmartMarketplace] Filter by HTTP verb — GET, POST, PUT, PATCH, DELETE. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_specsAIdempotent
[WalmartMarketplace] Refresh bundled OpenAPI specs from the public registry into the user cache, which then takes precedence over the bundled copies.
| Name | Required | Description | Default |
|---|---|---|---|
| spec_id | No | [WalmartMarketplace] Refresh only this spec, e.g. order-management. Omit to refresh all. Src: specs. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| region | Yes | [WalmartMarketplace] Region label, e.g. us. Src: config. | |
| feed_type | Yes | [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_path | Yes | [WalmartMarketplace] Local path of the feed file to upload. | |
| environment | Yes | [WalmartMarketplace] Target environment — production or sandbox. Src: config. | |
| advertiser_id | Yes | [WalmartMarketplace] Advertiser (seller profile) id to act as. Src: config. |
Output Schema
| Name | Required | Description |
|---|---|---|
| body | No | |
| curl | No | |
| error | No | |
| cached_at | No | |
| truncated | No | |
| status_code | No |
TDQS
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.
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.
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.
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.
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.
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.
6 tool updates
v0.1.0- First observed
call_endpoint - First observed
describe_endpoint - First observed
download_file - First observed
list_endpoints - First observed
refresh_specs - First observed
upload_feed
TDQS
Scored across 6 tools
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.
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.
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.
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
Related MCP Connectors
Unified MCP server for 70+ eCommerce platforms: products, orders, customers, and more.
The Mercado Pago MCP Server implements the Model Context Protocol to provide AI agents and LLMs with access to Mercado Pago's APIs and tools within compatible development environments. It acts as an intermediary that translates Mercado Pago resources into executable functions (tools) that AI applications can invoke to perform actions and automate flows. The server simplifies integration, enables using documentation to implement or improve code, and optimizes operations through natural language interactions without manual implementations.
Hosted Amazon Seller and Vendor MCP server for Claude, ChatGPT, Cursor, Codex, Gemini, Copilot.
MCP server for Product Management
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceAn MCP server that provides access to WooCommerce REST API functionality, enabling product, order, customer, and coupon management.1,420 npm1MIT
- AlicenseCqualityBmaintenanceMCP 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.6054 npm9MIT
- AlicenseNot gradedqualityDmaintenanceAn MCP server that lets you manage a Walmart Marketplace seller account in plain language, including orders, inventory, pricing, returns, WFS fulfillment, and reports.1MIT
- AlicenseAqualityBmaintenanceMCP 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.51MIT