Skip to main content
Glama
aasper03

Amazon Orders MCP

by aasper03

Amazon Orders MCP

MCP server for fetching historical Amazon consumer orders from multiple accounts.

Database

Orders are stored in ~/.amazon-orders-mcp/orders.db (SQLite).

  • Import orders — one click; pulls anything not already in the database (skips known orders, refreshes recent ones for status/tracking)

  • View — reads from the database; use the toolbar to filter by date, search, or hide cancelled

Related MCP server: Amazon.in MCP Server

MCP tools

  • sync_orders — import new orders into the database

  • get_orders — read from the database (optional filters)

  • list_accounts, login_account, remove_account

Setup

Already registered in ~/.cursor/mcp.json. Restart Cursor or reload MCP servers to pick it up.

First run installs dependencies automatically via run-amazon-orders-mcp.sh.

Tools

  • list_accounts — saved profiles and session status

  • login_account — open browser to sign in (complete 2FA manually)

  • get_orders — fetch orders (accounts: "all" or comma-separated names)

  • remove_account — delete a saved profile

Example

  1. login_account with account_name: "personal", region: "us"

  2. get_orders with accounts: "all", year: 2025, max_orders: 10

Output fields

Each row: account, order_id, item_name, order_date, order_status, tracking_number

Limitations

  • Unofficial scraping — Amazon HTML changes may break parsers

  • Tracking fetch adds ~2s per shipment

  • US (amazon.com) is the primary target; other regions supported via region code

  • Re-run login_account when sessions expire

Sessions stored in ~/.amazon-orders-mcp/profiles/ (mode 700).

Available Tools

5 tools
get_ordersA

Read orders from the local database (run sync_orders first to populate). Returns item name, order date, tracking number, and order status per item.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax rows to return
searchNoSearch item name, order ID, or tracking
accountsYesAccount profile name(s), comma-separated, or "all"
end_dateNoFilter to date YYYY-MM-DD
start_dateNoFilter from date YYYY-MM-DD
hide_cancelledNo

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It usefully discloses the data-freshness dependency (local DB must be populated by sync_orders) and enumerates returned fields, but says nothing about auth requirements, pagination, ordering, or failure modes when the DB is unpopulated.

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 sentences, front-loaded with the action and immediately followed by the prerequisite and return shape. No filler or redundancy.

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?

No output schema exists, so listing the returned fields (item name, order date, tracking number, order status) is genuinely necessary and present. The prerequisite on sync_orders is covered; only edge cases like empty results or auth needs are unaddressed.

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 83%, so the schema already documents limit, search, accounts, start_date, end_date, and hide_cancelled. The description adds no parameter-level detail beyond noting results are 'per item', so the baseline 3 applies.

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?

States a specific verb and resource ('Read orders from the local database') and adds the source of truth, which distinguishes it from sync_orders by implying reads are local rather than remote. It does not explicitly contrast with list_accounts or the other siblings, so it stops short of full sibling differentiation.

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?

Gives an explicit precondition — 'run sync_orders first to populate' — which is real routing guidance for an agent that might otherwise call this against an empty store. It offers no exclusions or explicit alternatives, but the prerequisite is the main contextual need here.

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

list_accountsA

List saved Amazon account profiles, session status, and last sync time.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries the full burden, but it does disclose the returned fields (session status, last sync time), which is genuine behavioral value given there is no output schema. It omits any statement about auth requirements, pagination, or scoping to a single account.

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 tight sentence with the resource front-loaded and no wasted words. Every clause earns its place by naming a returned field.

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 no-parameter list tool with no output schema, the description adequately conveys what the caller receives. It falls short only on usage context and whether the list is scoped or paginated, which are minor for a simple enumeration.

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?

Zero parameters, so the baseline is 4. There is nothing for the description to clarify beyond the schema.

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?

Specific verb ("List") plus resource ("saved Amazon account profiles") and it enumerates the returned data (session status, last sync time). It is distinguishable from siblings like login_account/remove_account by the read-only listing framing, though it never names an alternative to route against.

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 on when to call this versus siblings such as login_account or sync_orders, and no prerequisites stated. Usage is only weakly implied by the verb "List".

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

login_accountA

Open a browser window to log into an Amazon account. Saves the session for future order fetches. Complete sign-in and 2FA manually in the browser.

ParametersJSON Schema
NameRequiredDescriptionDefault
regionNoAmazon region code. Supported: us, uk, ca, de, fr, es, it, nl, jp, au, mx, in, ae, sa, ie, beus
account_nameYesProfile name for this account (e.g. personal, work)

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it discloses that a browser window is opened, that the session is persisted, and that sign-in and 2FA are manual human steps. It omits blocking/timeout behavior and what happens if a session already exists, but the critical interactive nature is clearly communicated.

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?

Three short sentences, each earning its place: the action, the persistence effect, and the manual step. The key information is front-loaded with no filler.

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?

No output schema exists, and the description covers the essential behavior for a two-parameter authentication tool, including the manual intervention requirement. It could say more about session lifetime or prerequisites for re-login, but nothing critical for calling it correctly is missing.

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 account_name and region are already fully documented in the schema with examples and the supported region list. The description adds no parameter-level meaning beyond the schema, making the baseline of 3 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?

States a specific verb and resource: opens a browser window to log into an Amazon account. It is unmistakably distinct from siblings like list_accounts, sync_orders, get_orders, and remove_account, all of which operate on an existing session rather than creating one.

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?

Gives clear context for use: the saved session is needed for future order fetches, and sign-in/2FA must be completed manually. However, it names no explicit alternative and does not state when not to use it (e.g. if a session already exists), so the guidance is contextual rather than exhaustive.

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

remove_accountB

Delete a saved account profile, its browser session, and cached orders.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_nameYesProfile name to remove

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It does add valuable non-obvious context by disclosing the cascading effects (browser session and cached orders are also deleted), but it omits whether the deletion is permanent/reversible, whether it requires an active session or re-login, and what confirmation is needed.

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 with zero filler; the destructive verb leads and the scope of deletion follows immediately.

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 destructive single-parameter tool with no annotations and no output schema, the description covers what is removed but not the permanence, error behavior, or auth requirements. It is adequate but leaves meaningful holes for an irreversible operation.

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 coverage is 100% and the single parameter 'account_name' is already documented as 'Profile name to remove'. The description adds no syntax, format, or matching semantics beyond the schema, so the baseline of 3 applies.

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 gives a specific verb ('Delete') and resource ('saved account profile'), and further scopes it by naming the collateral artifacts removed (browser session, cached orders). It does not explicitly differentiate itself from siblings, but no sibling (list_accounts, login_account, sync_orders, get_orders) performs removal, so the intent is still 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?

There is no when-to-use guidance, no stated prerequisites, and no mention of alternatives or a confirmation step. Since this is the only removal tool among the siblings, the gap is less about routing and more about the absence of any operational context.

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

sync_ordersA

Import orders from Amazon into the local database. Only fetches orders not already stored (plus recent orders for status/tracking updates).

ParametersJSON Schema
NameRequiredDescriptionDefault
accountsYesAccount profile name(s), comma-separated, or "all"
concurrencyNoParallel detail-page fetches per account (default 3, max 4)

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries the full burden but does disclose meaningful behavior: only orders not already stored are fetched, plus recent orders for status/tracking updates. However, it says nothing about authentication requirements, rate limits, idempotency, or what happens on partial failures during a large import.

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 tight sentences, front-loaded with the primary action and followed by the delta-fetch qualifier. No filler 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?

There is no output schema and no annotations, so the description must carry behavioral context. It covers the fetch scope well but omits what the sync returns (counts, errors), whether it requires prior login, and how it behaves with multiple accounts or concurrency limits.

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 coverage is 100%, so the schema already documents both 'accounts' and 'concurrency' fully, including defaults and the max value. The description adds no additional parameter meaning, so the baseline 3 applies.

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?

States a specific verb and resource ('Import orders from Amazon into the local database'), which clearly separates it from the read-oriented sibling get_orders. It does not explicitly name the siblings, but the import-into-local-store framing makes the distinction inferable.

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 the tool is useful by describing the delta logic, but never states when an agent should choose sync_orders over get_orders or what prerequisites (e.g. an account being logged in via login_account) are needed. Usage is implied rather than directed.

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. 5 tool updatesv1.0.0
    • First observedget_orders
    • First observedlist_accounts
    • First observedlogin_account
    • First observedremove_account
    • First observedsync_orders

TDQS

A3.9/5.0

Scored across 5 tools

Disambiguation5/5

Each tool has a distinct action and target: list_accounts (read accounts), login_account (authenticate), sync_orders (import), get_orders (read local orders), remove_account (delete account). No overlapping purposes; descriptions clarify the read/write split between sync_orders and get_orders.

Naming Consistency5/5

All tools use snake_case with a verb_noun pattern (list_accounts, login_account, sync_orders, get_orders, remove_account). Singular/plural noun variations (account vs accounts) are minor and do not break the pattern.

Tool Count5/5

5 tools appropriately cover the core account and order management workflows without redundancy or excessive granularity. This is well within the ideal 3-15 range for a focused MCP server.

Completeness4/5

Core account lifecycle (list, login, remove) and order workflow (sync, get) are covered. Minor gaps exist: no tool to retrieve a single order by ID or search orders, and sync/get operations do not explicitly target a specific account, requiring workarounds via login switches.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers