Skip to main content
Glama
ailumia

Amazon SP-API MCP

by ailumia

Amazon SP-API MCP

CI CodeQL License Node.js

A production-grade, version-aware Model Context Protocol server for the Amazon Selling Partner API (SP-API), maintained by Ailumia.

The server exposes a small six-tool MCP surface backed by a generated registry of 353 operations across 49 API domains and every model version currently published by Amazon. Agents discover the right operation at runtime instead of loading hundreds of endpoint schemas into their context.

IMPORTANT

This is an independent open-source project. It is not affiliated with, endorsed by, or sponsored by Amazon. Amazon, Selling Partner API, and SP-API are trademarks of Amazon.com, Inc. or its affiliates.

Why this server

  • Complete model coverage — generated from amzn/selling-partner-api-models, not a hand-maintained endpoint subset.

  • Version aware — operation IDs include their API version; upstream model commit metadata is embedded in every registry build.

  • Small MCP surface — safe account listing, discovery, description, invocation, artifact retrieval, and a complete Reports workflow.

  • Safe by default — remote writes and deletes require explicit confirmation; credentials are injected server-side and never accepted as tool arguments.

  • Multiple seller accounts — configure stable account names; credentials remain server-side and multi-account calls must select an account explicitly.

  • Marketplace safety — account metadata is loaded from Amazon and account, marketplace, and regional endpoint combinations are validated before execution.

  • Production controls — per-account operation rate limiting, bounded concurrency, retries, dry runs, audit events, response size limits, structured errors, and request IDs.

  • Large result handling — oversized and binary responses become integrity-checked local artifacts that can be read in bounded chunks.

  • Two transports — stdio for local clients and stateless Streamable HTTP for controlled deployments.

Related MCP server: mcp-amazon-sp-api

Tools

Tool

Purpose

list_accounts

List safe account names, regions, metadata status, and marketplace participations.

discover_operations

Search operations by intent, domain, version, and access level.

describe_operation

Return the exact path, method, parameters, request body, and validation schema.

invoke_operation

Execute any operation in the registry. Writes and deletes require confirm=true.

get_artifact

Read a bounded chunk from a large or binary result.

run_report

Create, poll, download, decompress, and persist an SP-API report.

Requirements

  • Node.js 20 or newer

  • An Amazon SP-API application

  • An LWA client ID, client secret, and seller refresh token for live calls

Discovery and operation descriptions work without Amazon credentials.

Install

Clone and build the pinned source:

git clone https://github.com/ailumia/amazon-sp-api-mcp.git
cd amazon-sp-api-mcp
npm ci
npm run build

The package is also prepared for public npm publication as @ailumia/amazon-sp-api-mcp. Until a release is present on npm, configure clients to run the local dist/index.js shown below.

Configure credentials

Set SP_API_ACCOUNTS to a JSON array. Credentials stay in the MCP server environment and are never accepted through tool arguments. ACCOUNT_NAME is a stable routing key, not an Amazon store name. It is exposed as accountName in MCP tool arguments and responses.

Account fields:

Field

Required

Description

ACCOUNT_NAME

When two or more accounts exist

Stable lowercase name: letters, numbers, _, or -; maximum 64 characters.

SP_API_CLIENT_ID

Yes

LWA application client ID.

SP_API_CLIENT_SECRET

Yes

LWA application client secret.

SP_API_REFRESH_TOKEN

Yes

Seller authorization refresh token.

SP_API_REGION

No

na by default; also supports eu and fe.

Single account

Use an array with one account. ACCOUNT_NAME can be omitted; the server assigns the internal name default. This explicit example uses all five supported account fields:

export SP_API_ACCOUNTS='[
  {
    "ACCOUNT_NAME": "primary",
    "SP_API_CLIENT_ID": "amzn1.application-oa2-client...",
    "SP_API_CLIENT_SECRET": "...",
    "SP_API_REFRESH_TOKEN": "...",
    "SP_API_REGION": "na"
  }
]'

Multiple accounts

Every account must have a unique ACCOUNT_NAME when more than one account is configured:

export SP_API_ACCOUNTS='[
  {
    "ACCOUNT_NAME": "hexai-na",
    "SP_API_CLIENT_ID": "amzn1.application-oa2-client...",
    "SP_API_CLIENT_SECRET": "...",
    "SP_API_REFRESH_TOKEN": "...",
    "SP_API_REGION": "na"
  },
  {
    "ACCOUNT_NAME": "hexai-eu",
    "SP_API_CLIENT_ID": "amzn1.application-oa2-client...",
    "SP_API_CLIENT_SECRET": "...",
    "SP_API_REFRESH_TOKEN": "...",
    "SP_API_REGION": "eu"
  }
]'

At startup the server begins loading each account's marketplace participations from Amazon. Use list_accounts to inspect the safe result; credentials are never returned:

{}

An example response includes accountName, region, metadataStatus, and marketplace objects containing marketplaceId, storeName, and participation status.

If metadata discovery fails, metadataStatus is error and the server logs the reason without exposing credentials. Marketplace-scoped calls fail closed with ACCOUNT_METADATA_UNAVAILABLE until discovery succeeds; operations without a Marketplace argument can still run.

Select an account by its stable name:

{
  "operationId": "orders.2026-01-01.searchOrders",
  "accountName": "hexai-eu",
  "query": {
    "marketplaceIds": ["A1PA6795UKMFR9"]
  }
}

When multiple accounts are configured, omitting accountName returns ACCOUNT_NAME_REQUIRED. With one account it remains optional. The server never guesses an account from a marketplace ID because multiple accounts can participate in the same marketplace.

Before a marketplace-scoped request, the server verifies that every requested marketplace is active for the selected account. Operations that require a Seller/Merchant ID accept sellerId in their normal operation arguments. Every step of run_report uses the same selected account.

The supported regions are:

Value

Endpoint

na

https://sellingpartnerapi-na.amazon.com

eu

https://sellingpartnerapi-eu.amazon.com

fe

https://sellingpartnerapi-fe.amazon.com

Discovery and operation descriptions work when SP_API_ACCOUNTS is unset. list_accounts then returns an empty list and live calls return ACCOUNT_NOT_FOUND.

MCP client configuration

Environment values in JSON-based MCP client configuration must escape the account-array JSON:

{
  "mcpServers": {
    "amazon-sp-api": {
      "command": "node",
      "args": ["/absolute/path/amazon-sp-api-mcp/dist/index.js"],
      "env": {
        "SP_API_ACCOUNTS": "[{\"ACCOUNT_NAME\":\"hexai-na\",\"SP_API_CLIENT_ID\":\"...\",\"SP_API_CLIENT_SECRET\":\"...\",\"SP_API_REFRESH_TOKEN\":\"...\",\"SP_API_REGION\":\"na\"}]"
      }
    }
  }
}

The default transport is stdio. Logs are written to stderr so they never corrupt MCP messages on stdout.

Typical agent flow

First list accounts and enabled marketplaces:

{}

Then discover an operation:

{
  "query": "orders updated since a timestamp",
  "domain": "orders",
  "access": "read"
}

Then describe the selected version:

{
  "operationId": "orders.2026-01-01.searchOrders"
}

Finally invoke it using the returned location-aware schema:

{
  "operationId": "orders.2026-01-01.searchOrders",
  "accountName": "hexai-na",
  "query": {
    "marketplaceIds": ["ATVPDKIKX0DER"],
    "lastUpdatedAfter": "2026-07-01T00:00:00Z"
  }
}

Exact operation names and arguments evolve with Amazon's models. Always use discover_operations and describe_operation rather than relying on an example indefinitely.

State-changing operations

POST, PUT, and PATCH operations require confirm=true. DELETE operations receive the stricter delete access classification and also require confirmation.

{
  "operationId": "listingsItems.2021-08-01.patchListingsItem",
  "accountName": "hexai-na",
  "path": {
    "sellerId": "SELLER_ID",
    "sku": "SKU-123"
  },
  "query": {
    "marketplaceIds": ["ATVPDKIKX0DER"]
  },
  "body": {},
  "confirm": true
}

Preview the validated regional request without sending the SP-API operation by using dryRun=true; confirmation is not required for a dry run:

{
  "operationId": "listingsItems.2021-08-01.patchListingsItem",
  "accountName": "hexai-na",
  "path": {
    "sellerId": "SELLER_ID",
    "sku": "SKU-123"
  },
  "query": {
    "marketplaceIds": ["ATVPDKIKX0DER"]
  },
  "body": {},
  "dryRun": true
}

Successful, failed, rejected, and dry-run operations emit JSON audit events with the account name, marketplaces, operation, confirmation state, request ID when available, resource identifiers, and a SHA-256 payload hash for writes. Results and structured errors include an auditId for correlation. Credentials and raw request bodies are not logged.

Reports workflow

run_report manages the asynchronous Reports API lifecycle and returns an artifact reference:

{
  "reportType": "GET_MERCHANT_LISTINGS_ALL_DATA",
  "accountName": "hexai-na",
  "marketplaceIds": ["ATVPDKIKX0DER"],
  "confirm": true
}

The workflow creates the report, polls getReport, fetches the report document, downloads the pre-signed URL, decompresses GZIP content when necessary, and stores the result with SHA-256 integrity metadata.

Streamable HTTP

Local HTTP mode:

npm run build
node dist/index.js --transport http

Endpoints:

  • POST /mcp — stateless Streamable HTTP MCP

  • GET /health — registry and source-commit health information

The default bind address is 127.0.0.1. A non-loopback HOST requires MCP_ALLOWED_HOSTS to reduce DNS rebinding risk. Set MCP_BEARER_TOKEN for shared deployments:

HOST=0.0.0.0 \
MCP_ALLOWED_HOSTS=mcp.example.com \
MCP_BEARER_TOKEN="use-at-least-16-random-characters" \
node dist/index.js --transport http

TLS and internet-facing authorization should be terminated by a trusted reverse proxy or identity-aware gateway. See Security model.

Runtime configuration

Variable

Default

Description

SP_API_ACCOUNTS

unset

JSON array containing the five supported per-account fields above.

SP_API_MAX_RETRIES

5

Retry limit for 429 and transient 5xx responses.

SP_API_MAX_CONCURRENCY

4

Maximum concurrent outbound SP-API requests.

SP_API_MAX_RESPONSE_BYTES

1048576

Maximum inline response size before artifact storage.

SP_API_REQUEST_TIMEOUT_MS

60000

Per-request timeout.

SP_API_ARTIFACT_DIR

./artifacts

Local artifact storage directory.

LOG_LEVEL

info

Pino log level.

HOST / PORT

127.0.0.1:3000

Streamable HTTP listener.

MCP_ALLOWED_HOSTS

unset

Comma-separated HTTP Host allowlist. Required for non-loopback binds.

MCP_BEARER_TOKEN

unset

Optional HTTP bearer token, minimum 16 characters.

Registry updates

The tracked registry is deterministic for an upstream commit and records both the repository and commit SHA.

npm run registry:sync
npm run registry:check

The weekly GitHub workflow runs the same process and opens a pull request when Amazon publishes model changes. Registry generation supports Swagger 2.0 and OpenAPI 3.x.

Architecture

MCP tools
  ├── version-aware operation registry
  ├── account registry + marketplace validation
  ├── Reports workflow
  └── execution pipeline
        ├── JSON Schema validation
        ├── write/delete confirmation policy
        ├── per-account LWA token provider
        ├── account + region + operation rate limiter
        ├── bounded concurrency + retry
        ├── dry-run + structured audit event
        ├── SP-API HTTP transport
        └── inline result / artifact store

See Architecture for module boundaries, operation identity, data flow, and extension rules.

Development

npm ci
npm run check

npm run check runs formatting verification, ESLint, strict TypeScript, tests with coverage, the production build, and registry contract validation.

Useful commands:

npm run dev
npm run test:watch
npm run registry:generate -- /path/to/selling-partner-api-models/models

Contributions are welcome. Read CONTRIBUTING.md, the Code of Conduct, and SECURITY.md before opening a pull request or reporting a vulnerability.

License

Apache License 2.0. The generated registry derives structural metadata from Amazon's Apache-2.0-licensed Selling Partner API models; attribution is recorded in NOTICE.

Available Tools

6 tools
describe_operationDescribe an Amazon SP-API operationA
Read-onlyIdempotent

Return the exact method, path, parameters, request body, and validation schema for an operation ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
operationIdYes

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds what is returned but does not disclose error behavior, prerequisites, or any limitations beyond the annotations.

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 sentence with no wasted words. It front-loads the verb and output, making it easy to parse.

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

Completeness4/5

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

For a simple read-only tool, the description adequately lists what it returns. It could mention that operationId comes from discover_operations, but the core purpose is clear and complete.

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

Parameters2/5

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

Schema coverage is 0% and the description only refers to 'operation ID', which adds little over the parameter name itself. It does not explain the format of operationId or how to obtain it (e.g., from discover_operations).

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

Purpose5/5

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

The description uses the specific verb 'Return' and clearly states the resource (operation details: method, path, parameters, request body, validation schema) for an operation ID. This distinguishes it from siblings like invoke_operation and discover_operations.

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 for retrieving operation details but provides no explicit when-to-use or alternative guidance. It does not mention discover_operations for obtaining operation IDs or when invoke_operation would be preferred.

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

discover_operationsDiscover Amazon SP-API operationsA
Read-onlyIdempotent

Search the version-aware Amazon SP-API registry. Use this before describe_operation or invoke_operation.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryNo
accessNo
domainNo
versionNo
includeDeprecatedNo

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering safety. The description adds that it is 'version-aware' and part of a registry search, but doesn't disclose any additional behaviors like result format or pagination. With no output schema, more detail would be beneficial, but the description is consistent with annotations.

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

Conciseness5/5

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

Two concise sentences: the first states the purpose, the second gives usage guidance. No unnecessary words or repetition of schema information.

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

Completeness2/5

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

Despite 6 parameters and no output schema, the description only provides a brief purpose and usage order. It doesn't explain search behavior, parameter meanings, or return values. This is insufficient for the tool's complexity and leaves agents guessing.

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

Parameters2/5

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

Schema description coverage is 0% and the description mentions none of the six parameters (limit, query, access, domain, version, includeDeprecated). The agent must rely solely on parameter names and types, which is insufficient for a search tool with these filters. The description's 'version-aware' hint only tangentially relates to the version parameter.

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 searches the version-aware Amazon SP-API registry, using the verb 'search' and specifying the resource. It also distinguishes itself by instructing to use it before describe_operation or invoke_operation, differentiating it from sibling tools.

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

Usage Guidelines4/5

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

The description explicitly says 'Use this before describe_operation or invoke_operation', providing a clear usage sequence. It doesn't mention when not to use it or alternative tools beyond that, but it does give direct contextual guidance for ordering.

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

get_artifactRead an SP-API artifactA
Read-onlyIdempotent

Read a chunk from a large or binary result saved by invoke_operation or run_report.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
lengthNo
offsetNo

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is clear. The description adds value by disclosing that this reads a 'chunk' from 'large or binary' artifacts, which is a key behavioral trait beyond the annotations. However, it does not describe error behavior, chunk format (raw bytes, encoding), or how to iterate through the entire artifact. No contradiction with annotations.

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, front-loaded sentence of 17 words that efficiently conveys verb, object, and provenance. It contains no filler or redundant information, every word earns its place.

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 core idea and source of artifacts are clear, but for a chunked-read tool with no output schema, the description omits critical details like how output is represented (raw binary, base64, etc.), how to know total artifact size, and behavior when offset exceeds bounds. This leaves significant gaps in the agent's understanding of the tool's full behavior.

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

Parameters2/5

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

With 0% schema description coverage, the description must compensate. It mentions 'chunk', which implies offset/length usage, and indicates id refers to artifacts saved by invoke_operation/run_report. However, it does not explain the units of length (bytes vs. characters), semantics of offset, or how the id relates to an artifact. The parameters are self-named but under-described, leaving the agent to guess.

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 'Read a chunk' and the resource 'a large or binary result saved by invoke_operation or run_report'. This specific verb+resource pairing distinguishes it from sibling tools that create or execute operations, making the purpose unmistakable.

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 use after invoke_operation or run_report, since artifacts are saved by those tools. It frames this tool as the way to access partial results, providing clear contextual guidance. However, it does not explicitly name alternatives or state when not to use it, so it lacks the exclusionary guidance seen in the highest examples.

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

invoke_operationInvoke an Amazon SP-API operationA
Destructive

Execute an operation using a stable account name. Multiple-account configurations require accountName. Writes require confirm=true unless dryRun=true.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyNo
pathNo
queryNo
dryRunNo
confirmNo
headersNo
accountNameNoStable configured account name; optional only when one account is configured
operationIdYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already indicate destructive=true, but the description adds valuable context about the confirm and dryRun mechanism, which is not in the annotations. It also clarifies the accountName requirement, enhancing transparency about when the tool can be safely invoked. No contradictions with annotations.

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 long, front-loaded with the primary purpose, and every sentence adds value. It avoids redundancy with the schema and annotations, making it concise and well-structured.

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

Completeness3/5

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

For a complex tool with 8 parameters, nested objects, and no output schema, the description is adequate but has gaps. It gives key invocation rules but does not explain how to obtain operationId, construct body/path/query, or handle errors. The sibling tools may help fill these gaps, but the description itself is not fully complete.

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

Parameters3/5

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

Schema description coverage is only 13%, so the description must compensate. It explains accountName ('stable configured account name; optional only when one account is configured') and the semantics of confirm and dryRun. However, it leaves operationId, body, path, query, headers, and other parameters undocumented, leaving significant room for misinterpretation.

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 function: 'Execute an operation using a stable account name.' This is a specific verb+resource combination that differentiates it from sibling tools like list_accounts, discover_operations, and describe_operation. The title 'Invoke an Amazon SP-API operation' reinforces the purpose without ambiguity.

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

Usage Guidelines4/5

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

The description provides clear conditions: 'Multiple-account configurations require accountName' and 'Writes require confirm=true unless dryRun=true.' These give explicit prerequisites for using the tool correctly. However, it does not explicitly mention when not to use this tool or name alternative tools for similar scenarios, so it stops short of a 5.

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

list_accountsList configured Amazon SP-API accountsA
Read-onlyIdempotent

List safe account metadata, including account names, regions, and marketplace participations. Credentials are never returned.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, and the description adds a valuable behavioral guarantee: 'Credentials are never returned.' This goes beyond annotations by addressing a security-relevant aspect of the tool's behavior, critical for an agent deciding to invoke it.

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 core action ('List safe account metadata') and includes just enough detail about the returned fields and a critical safety note. No waste.

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

Completeness5/5

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

For a simple list tool with no parameters and no output schema, the description fully covers what the agent needs to know: what the tool does, what it returns, and a safety guarantee. The sibling tools are more complex, and this description is sufficiently complete for its simple role.

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

Parameters4/5

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

The tool has zero parameters, and the description correctly focuses on output content (account names, regions, marketplace participations). With 0 params, the baseline is 4, and the description provides appropriate context about what the list will contain.

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 function: listing safe account metadata (account names, regions, marketplace participations). It also adds a key differentiator by explicitly stating credentials are never returned, which distinguishes it from sibling tools that deal with operations, artifacts, or reports.

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 the tool is for retrieving account information with no parameters, making usage straightforward. It doesn't explicitly exclude alternatives or state when-not-to-use, but the context is clear for a simple list operation. Given no exclusions are needed, a score of 4 is appropriate.

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

run_reportRun and download an Amazon SP-API reportA

Create a report for a stable account name, poll until completion, download and decompress it, then return an artifact reference.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmYes
timeoutMsNo
reportTypeYes
accountNameNoStable configured account name; optional only when one account is configured
dataEndTimeNo
dataStartTimeNo
reportOptionsNo
marketplaceIdsNo
pollIntervalMsNo

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already indicate readOnly=false and openWorld=true, and the description adds meaningful behavioral detail: the tool creates a report, polls until completion, downloads and decompresses it, and returns an artifact reference. It does not cover failure/retry behavior or rate limits, but the core side-effectful flow is disclosed.

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 workflow without filler. It is compact and every clause contributes essential information about the operation's lifecycle.

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

Completeness2/5

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

With 9 parameters, no output schema, and no enums, the description needs to cover parameter selection and return expectations more thoroughly. It mentions 'artifact reference' but does not explain reportType options, data-window semantics, confirmation requirements, or how to interpret the output.

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

Parameters2/5

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

Schema description coverage is only 11%, but the description adds no parameter meaning beyond mentioning 'stable account name.' reportType, confirm, time windows, reportOptions, marketplaceIds, timeout, and pollInterval are left entirely unexplained by both the schema and the description.

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?

Description uses a specific verb sequence (create, poll, download, decompress, return) tied to Amazon SP-API reports, and the title reinforces the resource. It clearly distinguishes this from sibling tools like get_artifact or invoke_operation by describing the complete report workflow rather than a generic call.

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?

No guidance is given about when to choose run_report over alternatives such as invoke_operation or get_artifact. The description only implies a report-download use case and does not state exclusions, prerequisites, or fallback scenarios.

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. Dates show when Glama detected each change.

  1. 6 tool updatesv1.0.0
    • First observeddescribe_operation
    • First observeddiscover_operations
    • First observedget_artifact
    • First observedinvoke_operation
    • First observedlist_accounts
    • First observedrun_report

TDQS

A4.1/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose: listing accounts, searching operations, describing an operation, invoking an operation, reading artifacts, and running reports. The overlap between discover_operation and describe_operation is minimal because one is for search and the other for detail.

Naming Consistency5/5

All tool names follow a consistent verb_noun snake_case pattern: list_accounts, discover_operations, describe_operation, invoke_operation, get_artifact, run_report. There are no mixed conventions or vague verbs.

Tool Count5/5

With 6 tools, the set is well-scoped. It provides a minimal but sufficient abstraction for interacting with the large Amazon SP-API surface, covering account management, operation discovery and invocation, and report handling.

Completeness5/5

The tool set covers the full workflow: discover operations, describe them, invoke them, and retrieve artifacts. The run_report tool handles the report lifecycle, and get_artifact reads large results. Given the generic invoke_operation, there are no obvious dead ends.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    An MCP server that provides a single tool for discovering, auto-installing, sandboxing, and calling any API from the printing-press corpus. It enables agents to seamlessly find and execute API operations without per-API setup.
    MIT
  • A
    license
    C
    quality
    B
    maintenance
    MCP server that exposes the Amazon Selling Partner API to Claude Desktop and any other MCP client. It wraps the python-amazon-sp-api SDK and ships 55+ tools across 19 SP-API scopes with automatic pagination, throttle-aware retry and multi-marketplace support.
    53
    4
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    MCP server for Amazon Selling Partner API and Advertising API, enabling access to orders, inventory, pricing, ads, and reports via natural language.
    1
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ailumia/amazon-sp-api-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server