amazon-orders-mcp
Use an AI assistant to sign in to Amazon and read order-related data and settings across Amazon sites.
Sign in to Amazon and check saved sessions per site.
Fetch and search order history by year/time/order type/cursor, optionally with full details.
Get one order, including items, shipments, recipient, totals, and tracking.
Retrieve invoice documents, including printable summaries and seller PDFs.
Read transactions, gift-card balance/activity, Prime payment charges, and Amazon Household members.
View and update configuration, such as default site, sign-in browser, and tuning settings.
Provides tools for accessing Amazon order history, retrieving individual orders by order number, viewing payment transactions and gift card activity, and managing settings such as the Amazon site and sign-in session.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@amazon-orders-mcpwhat did I order on Amazon last month?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
amazon-orders-mcp is an unofficial MCP server for Amazon order history, line items,
and transactions, built on amazon-orders. It gives your AI assistant
tools for your Amazon account, available from Claude and any other MCP client.
The server never sees your credentials. When you sign in, a browser window opens on Amazon's own page, and the server reuses the session that leaves behind. It also runs on a server without a display, where you sign in from a terminal instead (see Remote Clients).
Note: This server reads its data through
amazon-orders, which works by parsing data from Amazon's consumer-facing website. As Amazon provides no official API to use, older versions may break at any time, so it's recommended that you use the latest version.
Installation
amazon-orders-mcp is available on PyPI and is run
with uvx, so there's nothing to install up front. Add it to your AI assistant:
Claude
Claude Desktop: download amazon-orders-mcp-<version>.mcpb from the
latest release and open it.
Claude Code:
claude mcp add amazon-orders -- uvx amazon-orders-mcpChatGPT
ChatGPT Desktop: in Settings → Plugins, add an MCP server of type STDIO, with uvx as the command and
amazon-orders-mcp as its argument.
Codex:
codex mcp add amazon-orders -- uvx amazon-orders-mcpOther Clients
Any client that runs local MCP servers can use this JSON, or amazon-orders-mcp as the command if you've
installed it with pip install amazon-orders-mcp:
{
"mcpServers": {
"amazon-orders": {
"command": "uvx",
"args": ["amazon-orders-mcp"]
}
}
}Remote Clients
For clients that connect to a server instead of running one, the server can also serve Streamable HTTP:
uvx amazon-orders-mcp --transport streamable-httpIt listens at http://127.0.0.1:8000/mcp. See --help to change that, or to require a bearer token (required off
loopback). On a server without a display, sign_in can't open a browser window, so sign in there first with
uvx amazon-orders login, which asks for your username and password instead.
Docker
docker build -t amazon-orders-mcp .
docker run -i --rm -v amazon-orders:/home/app/.config/amazonorders amazon-orders-mcpA container has no display, so sign in with the login target first. See the Dockerfile for how.
Related MCP server: Amazon MCP Server
Basic Usage
Just ask your assistant about your orders, and it will use the following tools:
Tool | Returns |
| Opens a browser window for you to sign in to Amazon, when you ask |
| A batch of orders by year, time filter or order type, optionally detailed |
| A batch of items by product, order number, address or recipient, any year |
| One order, by order number |
| A shipment's carrier and tracking number, from an order's shipment ID |
| An order's printable summary, and any invoice PDFs the seller issues |
| A batch of payment transactions over a number of days, or for an order |
| The Gift Card balance, with a batch of its activity over a number of days |
| Prime membership fee charges, each with its order number |
| Whether you're signed in, on each Amazon site you have a session for |
| The settings your assistant can change, and their values |
| Changes one of those settings |
Order history and transactions come back in batches of limit results (25 by default, and a batch can run up to a
page over), with a cursor your assistant passes back to get the next batch.
Every tool that reads Amazon takes an optional site, like amazon.de, so your assistant can read each Amazon site
you shop on from one server, e.g. "my last amazon.de orders". Without it, tools read your default site, the domain
setting. Each site has its own sign-in, so ask your assistant to sign you in to each one.
Configuration
Ask your assistant to change a setting, such as the default Amazon site (e.g. amazon.co.uk) or the browser to sign in
with. Settings are shared with the amazon-orders CLI, so it follows the same changes. See
Supported Sites for the sites
amazon-orders can read.
Documentation
For more on the data the server returns, amazon-orders's official documentation is available
at Read the Docs, including the
Order entity's fields
and troubleshooting.
Contributing
Want to contribute financially? If you've found amazon-orders-mcp
useful, sponsorship would
be greatly appreciated!
Available Tools
13 toolscheck_sessionARead-only
Check with Amazon whether the user's saved sessions still work: on site, or else on their default site and every other Amazon site they have a saved session for. Also says which site is the default.
| Name | Required | Description | Default |
|---|---|---|---|
| site | No | The Amazon site to check, e.g. `amazon.de`. By default, the default site and every other site with a saved session are checked. |
Output Schema
| Name | Required | Description |
|---|---|---|
| site | Yes | The Amazon site, as `site` accepts it. |
| error | No | Why the session couldn't be checked, if it couldn't. `signed_in` is null then. |
| sites | Yes | Every site checked: the one asked about, or else the default site and every other site with a saved session. |
| default | Yes | Whether it's the user's default site, which tools read when they aren't given `site`. |
| sign_in | No | What to do to sign in, if the user isn't. |
| signed_in | Yes | Whether Amazon still accepts the user's saved session for the site. If Amazon answers the check with an error page, a saved session is assumed to still work. Null if the session couldn't be checked at all. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnlyHint=true) and network reach (openWorldHint=true). The description adds genuine behavioral detail beyond them: the fan-out scope of sites checked when `site` is omitted, and the side-effect-free extra output of which site is the default.
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?
Two sentences, both load-bearing: the first defines the check and its fallback scope, the second adds the default-site reporting. Nothing is padded and the primary action 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?
With a single optional parameter, full schema coverage, annotations, and an output schema, the description covers everything an agent needs to invoke it correctly. The only unstated piece is what the tool does when a session is invalid, which the output schema can reasonably carry.
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 coverage is 100%, and the description largely restates the schema's own wording for `site` (including the fallback-to-default-semantics). It adds no new syntax or format detail beyond the schema's `amazon.de` example, so the baseline 3 applies.
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?
States a specific verb and resource: check with Amazon whether the user's saved sessions are still valid, and additionally report the default site. That is clearly distinct from the mutation sibling sign_in, but the description never names or contrasts an alternative tool, so it stops short of the top band.
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?
It explains the branching behavior well (check `site` if given, otherwise the default site plus every site with a saved session), which is effectively guidance on how to call it. But there is no explicit when-to-use/when-not-to-use framing, nor any pointer to sign_in for the case where no session exists.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_configARead-only
Get the settings that can be changed with update_config, and their values. What each one does: https://amazon-orders.readthedocs.io/api.html#amazonorders.conf.AmazonOrdersConfig
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| tuning | Yes | Settings you may adjust yourself when calls keep failing. A null value means the default. |
| preferences | Yes | The user's choices, changed only when they ask. A null value means the default. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered and the description does not contradict it. The description adds that the return is the set of changeable settings plus their current values, but says nothing about auth requirements, session state, or whether values are defaults vs. user-modified. 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?
Two short sentences, front-loaded with the purpose, and the second sentence points to authoritative documentation for per-setting semantics. Nothing is redundant or padded.
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?
An output schema exists, so return structure need not be explained, and the annotations cover the safety profile; the description also supplies the purpose and an authoritative reference for individual settings. The remaining gap is that it does not mention any session/auth prerequisite, which is mildly relevant given the `sign_in` and `check_session` siblings.
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 tool takes zero parameters, so there is nothing for the description to disambiguate; the baseline for a no-parameter tool is 4. No parameter information is missing.
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 and resource ('Get the settings... and their values') and explicitly distinguishes this tool from its write counterpart by naming `update_config`. An agent can immediately tell this is the read half of a config read/write pair without inspecting any schema.
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?
Usage is implied rather than stated: naming `update_config` signals this is the read counterpart, so an agent can infer it should call this to inspect config before mutating. However, there is no explicit when-to-use guidance, no prerequisites (e.g., needing to sign in first, given the `sign_in`/`check_session` siblings), and no stated exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_family_membersARead-only
Deprecated, use get_orders, whose household_members lists the same members.
| Name | Required | Description | Default |
|---|---|---|---|
| site | No | The Amazon site to read, e.g. `amazon.de`, since each site has its own orders. By default, the user's default site (see `check_session`). |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | No | The FamilyMembers, or an empty list if the account has none. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this as a read-only, open-world operation, so the safety profile is covered. The description adds meaningful behavioral context: the tool is deprecated and its data is equivalent to `household_members` on `get_orders`.
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?
One sentence, front-loaded with the most important fact (“Deprecated”), followed immediately by the correct replacement. There is no wasted text.
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 deprecated tool, the definition gives the agent everything needed to avoid it and use `get_orders` instead. Annotations cover safety, the schema covers the lone parameter, and an output schema exists, so no additional return-value explanation is required.
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 single `site` parameter has 100% schema description coverage, so the schema already explains its meaning and default. The description adds no parameter-level detail, which is acceptable 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 identifies this tool as deprecated and names the replacement, which implies it retrieves the same family/household members as `get_orders.household_members`. It does not explicitly state a verb and resource such as “lists family members,” but the replacement mapping makes the intended behavior clear enough to distinguish it from siblings.
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?
It explicitly says the tool is deprecated and directs the agent to `get_orders`, satisfying the when-not-to-use and alternative-tool guidance. No further usage inference is required.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_gift_cardsARead-only
Get the Amazon Gift Card balance, and a batch of its activity for a given number of days, with a cursor to fetch the next batch.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | The number of days worth of Gift Card activity to get. Ignored when `cursor` is given. | |
| site | No | The Amazon site to read, e.g. `amazon.de`, since each site has its own orders. By default, the user's default site (see `check_session`). | |
| limit | No | Stop fetching activity pages once at least this many GiftCardActivity entries are collected. Whole pages are fetched, so the batch can hold up to a page more than `limit`. `None` fetches every page. | |
| cursor | No | The `cursor` of the previous batch, to fetch the next one. The `days` window it was fetched with carries over. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | No | The results in this batch. |
| cursor | No | Pass this back as `cursor` to the same call to fetch the next batch. A JSON-safe `dict` to keep as it is, not to build or change. `None` when there are no more results. |
| balance | No | The current Gift Card balance, or `None` if Amazon didn't show one. |
| has_more | No | `True` if there are more results to fetch with `cursor`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered. The description adds useful pagination behavior (batches plus a cursor for the next batch), but says nothing about auth expectations, rate limits, or what happens when no gift cards exist.
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 sentence that front-loads the primary resource (balance) and then the secondary payload (activity batch + cursor). No filler, no restatement of the title.
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?
An output schema exists, so return values need no explanation, and the pagination model is captured. What remains missing is any note about prerequisites such as an authenticated session or how site defaults are resolved, though the schema's site parameter covers that partially.
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 days, site, limit, and cursor are all fully documented in the schema itself. The description restates the days-window and cursor-batch concepts without adding syntax, ranges, or edge-case guidance beyond what the schema already gives.
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?
States a concrete verb and resource plus the two things returned: the gift card balance and a batch of activity, with cursor-based batching. That is clearly distinguishable from siblings like get_transactions or get_orders, though the description never names those alternatives explicitly.
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?
Usage is only implied – the reader must infer this is the tool for gift card balance/history rather than get_transactions. There is no explicit when-to-use, when-not-to-use, or named alternative, even though nearby siblings cover overlapping financial data.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_invoicesARead-only
Get the invoice documents of a given Amazon Order ID from its invoice list: the Printable Order Summary (an HTML page, on every site), then any invoice and credit note PDFs (issued by sellers, mostly on EU sites).
| Name | Required | Description | Default |
|---|---|---|---|
| site | No | The Amazon site to read, e.g. `amazon.de`, since each site has its own orders. By default, the user's default site (see `check_session`). | |
| order_id | Yes | The Amazon Order ID to lookup. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | No | The Order's Invoices, the Printable Order Summary first. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the description's added value is the variable-result behavior: the HTML summary is always present, PDFs are optional and seller/site dependent. That is genuinely useful expectation-setting. It does not cover empty results, invalid order IDs, or any auth requirement, so it stops short of full disclosure.
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 that names the resource first and then enumerates the returned document types. Every clause earns its place; nothing is padded.
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?
With an output schema present, return values need not be explained, yet the description still frames their variability well. The only gap is behavior on failure or empty-invoice cases, which an agent would have to discover at call time.
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%, and the site parameter already explains the default-site behavior and the check_session reference. The description only restates that an Order ID is required, adding no format or usage nuance 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get the invoice documents') scoped to an Amazon Order ID, and enumerates the artifacts returned: Printable Order Summary HTML plus seller-issued invoice and credit-note PDFs. This clearly separates it from order-detail siblings like get_order or get_orders without needing to name them.
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?
Usage is implied by the resource itself (ask for invoices of an order), and 'mostly on EU sites' implicitly warns that PDFs may not exist on all marketplaces. But there is no explicit when-to-use vs get_order, no statement that the order must already exist, and no note about needing a session (that hint lives only in the site parameter's schema text).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_orderARead-only
Get the full details for a given Amazon Order ID.
| Name | Required | Description | Default |
|---|---|---|---|
| site | No | The Amazon site to read, e.g. `amazon.de`, since each site has its own orders. By default, the user's default site (see `check_session`). | |
| order_id | Yes | The Amazon Order ID to lookup. |
Output Schema
| Name | Required | Description |
|---|---|---|
| index | No | Where the Order appeared in the history when it was queried. This will inevitably change (e.g. when a new Order is placed, all indexes will then be off by one), but is still captured as it may be applicable in various use-cases. Populated when the Order was fetched through `get_orders` (use `start_index` to correlate), or when the `clone` has its `index` set. |
| items | No | The Order Items. |
| subtotal | No | The Order subtotal. Only populated when `full_details` is `True`. |
| cancelled | No | `True` if the Order was cancelled. When `True`, fields like `grand_total` and the totals on the details page may be `None` because Amazon stops rendering them. |
| gift_card | No | The Gift Card total (rendered as "Gift Card" on digital order details pages), as a negative amount. Only populated when `full_details` is `True`. |
| gift_wrap | No | The Gift Wrap total. Only populated when `full_details` is `True`. |
| recipient | No | The Order Recipients. |
| shipments | No | The Order Shipments. |
| item_count | No | The number of items in the purchase, when Amazon summarizes the count instead of listing the items (e.g. Whole Foods Market orders show "N items in this purchase"). `None` when no such summary is shown. |
| grand_total | No | The Order grand total. |
| full_details | No | If the Orders full details were populated from its details page. |
| order_number | No | The Order number. May be `None` only when the Order is `cancelled` and Amazon stripped the order number from the details page (the `order_number` parameter is used as a fallback in that case). |
| refund_total | No | The Order refund total. Only populated when `full_details` is `True`. |
| estimated_tax | No | The Order estimated tax. Only populated when `full_details` is `True`. For Whole Foods Market orders this is the "Tax and Fees" total from the receipt. |
| free_shipping | No | The Order free shipping, as a negative amount. Only populated when `full_details` is `True`. |
| reward_points | No | The Order reward points, as a negative amount of currency (not a count of points). Only populated when `full_details` is `True`. |
| coupon_savings | No | The Order coupon savings, as a negative amount. Only populated when `full_details` is `True`. |
| is_whole_foods | No | `True` if this is a Whole Foods Market purchase (an in-store/FOPO purchase or a Whole Foods receipt order). Unlike other unsupported order types, these expose a `grand_total` and (often) an `item_count` on the history page, so those fields are populated. |
| payment_method | No | The Order payment method. Only populated when `full_details` is `True`. For Whole Foods Market orders this is the card brand of the first payment method on the receipt (e.g. "Visa"). |
| shipping_total | No | The Order shipping total. Only populated when `full_details` is `True`. |
| amazon_discount | No | The Amazon discount, as a negative amount. Only populated when `full_details` is `True`. |
| total_before_tax | No | The Order total before tax. Only populated when `full_details` is `True`. |
| multibuy_discount | No | The Multibuy discount, as a negative amount. Only populated when `full_details` is `True`. |
| order_placed_date | No | The Order placed date. |
| promotion_applied | No | The Order promotion applied, as a negative amount. Only populated when `full_details` is `True`. |
| order_details_link | No | The Order details link. |
| payment_method_last_4 | No | The Order payment method's last 4 digits, preserved verbatim so leading zeros are not lost. Only populated when `full_details` is `True`. |
| subscription_discount | No | The Order Subscribe & Save discount, as a negative amount. Only populated when `full_details` is `True`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds that it returns 'full details,' which signals completeness of the result, but it does not describe error behavior or any additional operational constraints.
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 front-loaded sentence with no wasted words. It is appropriately sized for a simple lookup tool and gets directly to the point.
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?
An output schema exists, so return values need not be explained, and the input schema fully documents the parameters. The description is complete enough for a simple read-by-ID tool, though it could mention how it relates to sibling list/search tools.
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 the schema already documents both order_id and site clearly, including the default-site behavior. The description only restates the order ID parameter and adds no further semantic detail, so the baseline score of 3 applies.
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 and resource: retrieving full details for a given Amazon Order ID. It is clear what the tool does, but it does not explicitly differentiate itself from sibling tools such as get_orders or search_orders.
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?
Usage is implied by the required order ID, suggesting the tool is for looking up a single known order. However, there is no explicit guidance on when to use this instead of get_orders, search_orders, or get_tracking.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_ordersARead-only
Get a batch of the Amazon Order history for a given time period, with the Amazon Household members whose Orders the account can view and a cursor to fetch the next batch.
| Name | Required | Description | Default |
|---|---|---|---|
| site | No | The Amazon site to read, e.g. `amazon.de`, since each site has its own orders. By default, the user's default site (see `check_session`). | |
| year | No | The year for which to get history. Ignored if `time_filter` or `cursor` is provided. Defaults to the current year if neither `year` nor `time_filter` is specified. | |
| limit | No | Stop fetching history pages once at least this many Orders are collected. Whole pages are fetched, so the batch can hold up to a page more than `limit`. `None` fetches every page. | |
| cursor | No | The `cursor` of the previous batch, to fetch the next one. The filters it was fetched with carry over. | |
| start_index | No | The index of the Order from which to start fetching in the history. Ignored if `cursor` is provided. | |
| time_filter | No | The time filter to use. Supported values are `"last30"` (last 30 days), `"months-3"` (past 3 months), or `"year-YYYY"` (specific year). If provided, this takes precedence over the `year` parameter. | |
| full_details | No | Get the full details for each Order in the batch. This will execute an additional request per Order. | |
| order_filter | No | The order type filter to use, e.g. `"digital-orders"` for Kindle and other digital purchases, which the default history doesn't include. If provided, appended alongside the time filter. | |
| family_member_id | No | The ID of an Amazon Household member whose Orders to get, such as a linked Teen account, from `household_members`. An account in an Amazon Household gets the whole household's Orders by default; pass `"self"` for only its own. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | No | The results in this batch. |
| cursor | No | Pass this back as `cursor` to the same call to fetch the next batch. A JSON-safe `dict` to keep as it is, not to build or change. `None` when there are no more results. |
| has_more | No | `True` if there are more results to fetch with `cursor`. |
| household_members | No | The Amazon Household members whose Orders the account can view, such as linked Teen accounts, from the Order history's member filter. Pass a member's `id` as `family_member_id` to get their Orders. Empty if the account has none. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint=true and openWorldHint=true already declaring the safety profile, the description still adds real context: results come in batches, a cursor drives the next batch, and household members whose orders the account can view are included. It stops short of noting that the batch may exceed `limit` due to whole-page fetching or that `full_details` triggers extra requests, both of which remain schema-only.
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 with no filler; the return-shape clause is packed but each part (history, household members, cursor) carries information. Slightly dense/run-on for a one-liner but efficient.
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?
An output schema exists, so explaining return values is unnecessary; the description covers purpose and pagination adequately for a 9-param, all-optional tool. The remaining gap is routing guidance among the many sibling retrieval tools, which is the one thing an agent still has to infer.
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 coverage is 100% with rich per-parameter documentation, so the baseline is 3. The description only gestures at the time-period and cursor semantics; precedence rules, filter values, and `family_member_id` behavior are all left to the schema, which is acceptable but adds nothing.
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?
States a specific verb and resource (get a batch of Amazon Order history) plus the returned payload shape (household members, cursor). This distinguishes it implicitly from the singular `get_order` and from `search_orders`, but it never names those siblings to make the split explicit.
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?
Usage is only implied: fetching history for a time period with cursor-based paging and optional household scope. There is no statement of when to prefer this over `search_orders` or `get_order`, and no prerequisites (e.g. requiring a session) are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_prime_paymentsARead-only
Get every charge in the Prime membership payment history.
| Name | Required | Description | Default |
|---|---|---|---|
| site | No | The Amazon site to read, e.g. `amazon.de`, since each site has its own orders. By default, the user's default site (see `check_session`). |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | No | A list of the PrimePayments, newest first. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the agent knows this is a safe, network-dependent read. The description adds that results cover 'every charge' in the history, but says nothing about pagination, ordering, or volume, so it adds only modest context 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with zero filler. The scope qualifier is stated immediately.
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?
With annotations covering safety, a fully documented single parameter, and an output schema handling return values, the description covers what remains. A brief note on multi-site behavior would make it airtight, but nothing essential for correct invocation is missing.
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% and the single 'site' parameter is fully documented, including its default behavior referencing check_session. The description contributes nothing about the parameter, so baseline 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 states a specific verb ('Get') and a specific resource ('every charge in the Prime membership payment history'), which clearly separates it from siblings like get_gift_card_activity or get_order_history. It doesn't explicitly name the nearest alternatives (e.g. get_transactions), 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The scope ('Prime membership payment history') implicitly tells an agent when this tool applies rather than a general transaction listing. However, there is no explicit when-to-use guidance and no mention of alternatives such as get_transactions for non-Prime payments.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_trackingARead-only
Get the carrier and tracking number of a Shipment from its package tracking page.
| Name | Required | Description | Default |
|---|---|---|---|
| site | No | The Amazon site to read, e.g. `amazon.de`, since each site has its own orders. By default, the user's default site (see `check_session`). | |
| order_id | Yes | The Amazon Order ID of the Shipment. | |
| shipment_id | Yes | The Shipment's `shipment_id`. Amazon stops showing the tracking link it comes from on older Orders. |
Output Schema
| Name | Required | Description |
|---|---|---|
| carrier | No | The carrier name, e.g. `UPS`, or `Amazon` for Amazon's own delivery network. |
| tracking_number | No | The carrier's tracking number, e.g. `1Z999AA10123456784` or `TBA000000000000`. Always a `str`, since many (e.g. USPS) are all digits and may have leading zeros. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the agent knows this is a safe external read. The description adds that data comes from scraping the package tracking page, which is mild context, but it doesn't mention failure modes (e.g., what happens when tracking is unavailable) or return shape. With annotations carrying the safety profile, a 3 fits.
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 efficient sentence with the resource and source front-loaded. Every clause earns its place; nothing is wasted or buried.
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?
An output schema exists, annotations cover the safety and open-world profile, and parameters are fully documented in the schema. The description supplies the core purpose and source, so it is complete enough for correct invocation, with only minor room for failure-mode detail.
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 the schema already explains site, order_id, and shipment_id, including the note that Amazon hides tracking links on older orders. The description adds no syntax or format detail beyond the schema, making the baseline 3 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?
States a specific verb ('Get') and resource ('carrier and tracking number of a Shipment'), and even names the source ('package tracking page'). It is clearly distinguishable from list-type siblings like get_order_history or get_order, though it doesn't explicitly name an alternative.
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?
Usage is implied by the description (retrieve tracking info for a shipment), but there is no explicit when-to-use, when-not-to-use, or named alternative among the siblings. An agent must infer that this is the tool for tracking details rather than order details.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_transactionsARead-only
Get a batch of Amazon Transaction history for a given number of days, or for a single Order, with a cursor to fetch the next batch.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | The number of days worth of Transactions to get. Ignored when `order_id` or `cursor` is given. | |
| site | No | The Amazon site to read, e.g. `amazon.de`, since each site has its own orders. By default, the user's default site (see `check_session`). | |
| limit | No | Stop fetching Transaction pages once at least this many Transactions are collected. Whole pages are fetched, so the batch can hold up to a page more than `limit`. `None` fetches every page. | |
| cursor | No | The `cursor` of the previous batch, to fetch the next one. The `days` window or `order_id` it was fetched with carries over. | |
| order_id | No | If given, only Transactions for this Amazon Order ID are returned, as in `get_transactions`. Ignored when `cursor` is given. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | No | The results in this batch. |
| cursor | No | Pass this back as `cursor` to the same call to fetch the next batch. A JSON-safe `dict` to keep as it is, not to build or change. `None` when there are no more results. |
| has_more | No | `True` if there are more results to fetch with `cursor`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered. The description usefully adds that results come in batches with a cursor for the next batch, which is real behavioral context beyond the annotations' scope. It stops short of describing ordering, freshness, or failure 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?
A single sentence that front-loads the verb and resource and then enumerates the modes plus pagination. Dense but every clause carries information; slightly run-on but not wasteful.
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?
An output schema exists so return values need no explanation, and all five parameters are fully described in the schema. The description covers the modal selection and pagination, leaving only tool-routing against siblings unaddressed.
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% and every parameter is documented in detail there, including the cursor carry-over and the limit page-rounding semantics. The description only restates the three modes, so the baseline 3 applies with no meaningful added semantics.
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?
States a specific verb and resource ('Get a batch of Amazon Transaction history') plus the three access modes: day window, single order, cursor batch. It does not name any sibling tool, so an agent cannot distinguish it from get_order_history or get_order without reading further, which keeps it at 4 rather than 5.
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 the three usage modes (days, order_id, cursor) but never states when to prefer this tool over get_order_history or get_order, nor any prerequisites beyond what the schema states. Usage is implied by the parameter modes rather than explained.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_ordersARead-only
Search every year of the Order history for Orders by product title, Order number, address, or recipient, as the search box on Your Orders does, getting each matching Item with its Order's number and date.
| Name | Required | Description | Default |
|---|---|---|---|
| site | No | The Amazon site to read, e.g. `amazon.de`, since each site has its own orders. By default, the user's default site (see `check_session`). | |
| limit | No | Stop fetching result pages once at least this many results are collected. Whole pages are fetched, so the batch can hold up to a page more than `limit`. `None` fetches every page. | |
| query | Yes | What to search for: words from a product title, an Order number, or a name or address an Order was sent to. | |
| cursor | No | The `cursor` of the previous batch, to fetch the next one. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | No | The results in this batch. |
| cursor | No | Pass this back as `cursor` to the same call to fetch the next batch. A JSON-safe `dict` to keep as it is, not to build or change. `None` when there are no more results. |
| has_more | No | `True` if there are more results to fetch with `cursor`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true. The description adds useful context by stating that it searches every year of order history and returns each matching Item with its Order number and date.
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, front-loaded sentence that clearly conveys scope, search inputs, and result content without unnecessary wording.
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 full schema coverage, an output schema, and annotations covering safety and openness, the description provides enough context to call the tool correctly. It could be stronger only by explicitly situating this tool relative to its siblings.
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 the parameters are already well documented. The description reinforces the query semantics but adds little beyond what the schema already provides for site, limit, and cursor.
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 gives a specific verb and resource: search Order history for Orders by product title, Order number, address, or recipient. It clearly states the search scope and result shape, though it does not explicitly distinguish itself from sibling tools like get_orders or get_order.
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 by explaining what can be searched and comparing the behavior to the search box on Your Orders. However, it gives no explicit guidance on when to use this tool versus get_orders, get_order, or other siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sign_inAIdempotent
Sign the user in to Amazon, when they ask you to or after a tool says they aren't signed in. Opens a browser window on the user's computer, where they sign in on Amazon's own page, so their credentials are never seen. Wait for them to finish, which they have 120 seconds to do. If it says there's no browser to sign in with, ask the user which to use, then call this again with browser.
| Name | Required | Description | Default |
|---|---|---|---|
| site | No | The Amazon site to sign in to, e.g. `amazon.de`, since each site has its own sign-in. By default, the user's default site. | |
| browser | No | Only when there's no browser to sign in with: the one the user chose, either one offered to download for them or a browser they already have installed. It's saved, so they're only asked once. |
Output Schema
| Name | Required | Description |
|---|---|---|
| site | Yes | The Amazon site, as `site` accepts it. |
| error | No | Why the session couldn't be checked, if it couldn't. `signed_in` is null then. |
| sites | Yes | Every site checked: the one asked about, or else the default site and every other site with a saved session. |
| default | Yes | Whether it's the user's default site, which tools read when they aren't given `site`. |
| sign_in | No | What to do to sign in, if the user isn't. |
| signed_in | Yes | Whether Amazon still accepts the user's saved session for the site. If Amazon answers the check with an error page, a saved session is assumed to still work. Null if the session couldn't be checked at all. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations it discloses the key traits: it launches a browser window on the user's own machine, credentials never pass through the agent, the call blocks until the user finishes with a 120-second limit, and how the no-browser case behaves. That is exactly the context an agent needs for an interactive, open-world operation.
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 trigger condition comes first, followed by the mechanism, timing constraint, and error fallback, in four tight sentences with no repetition or filler.
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?
Output schema covers return values, so the description needn't explain them; what remains (interactivity, timeout, browser selection flow, consent trigger) is fully covered. Nothing an agent needs to invoke this correctly is missing.
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 coverage is 100%, so the baseline is 3. The description adds real workflow meaning for `browser` (only use it after the no-browser error, and the choice is persisted so the user is asked once), but says nothing extra about `site` beyond what the schema already documents.
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?
States a specific verb and resource ('Sign the user in to Amazon') and is clearly distinguishable from siblings like check_session, which reads state rather than initiating an interactive login. An agent can identify the action without opening the schema.
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?
Gives explicit triggers ('when they ask you to or after a tool says they aren't signed in') and a concrete fallback flow if the no-browser error occurs: ask the user, then re-call with `browser`. Both when-to-use and what-to-do-next are spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_configAIdempotent
Change a setting. Change a preference, like the Amazon site (domain) or the browser to sign in with (browser), only when the user asks. You may change a tuning setting yourself when calls keep failing (e.g. a longer request_timeout after timeouts, or a smaller thread_pool_size when Amazon throttles requests), and tell the user what you changed. warn_on_missing_required_field returns partial data instead of an error, so say so if you change it. A preference is saved, and tuning lasts until the server restarts unless save is true, which you can offer if a change keeps helping. domain is the default site, which tools read when they aren't given site, so to read another site once, pass it as site instead. After changing domain, check with check_session, since the user may need to sign in to the new default site. What each setting does: https://amazon-orders.readthedocs.io/api.html#amazonorders.conf.AmazonOrdersConfig
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | The setting, from `get_config`. | |
| save | No | Whether to save the change. By default, a preference is saved and tuning isn't. | |
| value | Yes | The new value. Null or an empty string sets it back to the default. |
Output Schema
| Name | Required | Description |
|---|---|---|
| key | Yes | The setting. |
| saved | Yes | Whether the change was saved, or only made until the server restarts. |
| value | No | The value now in effect. A null value means the default. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare non-read-only, idempotent, non-destructive, closed-world, so the bar is lower; the description nonetheless adds real behavioral context the annotations cannot carry — preference changes persist, tuning changes die at server restart unless `save` is true, `warn_on_missing_required_field` degrades errors into partial data, and a `domain` change may force re-authentication verified via check_session. It stops just short of describing the response payload, which is covered by the output schema.
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?
Front-loaded with the core action and dense with actionable detail, but it sprawls into a long run of clauses and offloads key enumeration to an external link rather than staying self-contained. Every sentence is largely load-bearing, so the penalty is mild.
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 3-parameter mutation tool with an output schema and full annotation coverage, the description supplies everything an agent needs: what may be changed autonomously, persistence semantics, the restart caveat, the partial-data side effect, and the required follow-up check after a domain change.
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 coverage is 100%, so the baseline is 3, and the description earns an increment by explaining what specific key values mean (`domain` as the default site consumed by tools lacking `site`, `browser` as sign-in target) and by elaborating the `save` trade-off beyond the schema's one-liner. It does not enumerate the full key set, deferring to an external documentation URL instead.
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?
Starts with a specific verb+resource ('Change a setting') and immediately disambiguates the two classes of setting it mutates: user preferences (domain, browser) versus tuning knobs (request_timeout, thread_pool_size). It also ties itself to the sibling get_config by saying the key comes from there, so an agent can distinguish read-config from write-config without inspecting schemas.
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?
Gives explicit when-to-use rules for both modes: preferences 'only when the user asks', tuning settings autonomously 'when calls keep failing' with concrete trigger examples (timeouts, throttling). It also supplies an alternative path ('to read another site once, pass it as `site` instead') and guidance on when to offer `save`.
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.
2 tool updates
v2.1.0- Changed
get_family_members1 field changed- changed
Output schema / properties / items / items / properties / id / descriptionPrevious value: -"The FamilyMember ID, Amazon's `familyMemberId`."New value: +"The FamilyMember ID, the value Amazon's household member filter (`householdMembers`) takes."
- Changed
get_orders3 fields changed- changed
Input schema / properties / family_member_id / descriptionPrevious value: -"The ID of an Amazon Household member whose Orders to get, such as a linked Teen account, from `get_family_members`."New value: +"The ID of an Amazon Household member whose Orders to get, such as a linked Teen account, from `household_members`. An account in an Amazon Household gets the whole household's Orders by default; pass `\"self\"` for only its own." - changed
Output schema / descriptionPrevious value: -"The batch of Orders, and the cursor for the next one."New value: +"The batch of Orders, the Amazon Household members, and the cursor for the next one." - added
Output schema / properties / household_membersAdded value: +{ + "description": "The Amazon Household members whose Orders the account can view, such as linked Teen accounts, from the Order history's member filter. Pass a member's `id` as `family_member_id` to get their Orders. Empty if the account has none.", + "items": { + "additionalProperties": true, + "description": "A member of the Amazon Household whose Orders the account can view, such as a linked Teen account. Pass its `id` as `family_member_id` to `get_orders` to get their Orders.", + "properties": { + "id": { + "description": "The FamilyMember ID, the value Amazon's household member filter (`householdMembers`) takes.", + "type": "string" + }, + "name": { + "description": "The FamilyMember name.", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" +}
10 tool updates
v2.0.1- Changed
get_family_members1 field changed- changed
Output schema / properties / items / items / descriptionPrevious value: -"A member of the Amazon Household whose Orders the account can view, such as a linked Teen account. Pass its `id` as `family_member_id` to `get_order_history` to get their Orders."New value: +"A member of the Amazon Household whose Orders the account can view, such as a linked Teen account. Pass its `id` as `family_member_id` to `get_orders` to get their Orders."
- Removed
get_gift_card_activity - Removed
get_gift_card_balance - Added
get_gift_cards - Removed
get_invoice_pdfs - Added
get_invoices - Changed
get_order4 fields changed- changed
Output schema / properties / index / descriptionPrevious value: -"Where the Order appeared in the history when it was queried. This will inevitably change (e.g. when a new Order is placed, all indexes will then be off by one), but is still captured as it may be applicable in various use-cases. Populated when the Order was fetched through `get_order_history` (use `start_index` to correlate), or when the `clone` has its `index` set."New value: +"Where the Order appeared in the history when it was queried. This will inevitably change (e.g. when a new Order is placed, all indexes will then be off by one), but is still captured as it may be applicable in various use-cases. Populated when the Order was fetched through `get_orders` (use `start_index` to correlate), or when the `clone` has its `index` set." - changed
Output schema / properties / items / items / descriptionPrevious value: -"An Item in an Amazon `Order`. If desired fields are populated as `None`, ensure `full_details` is `True` when retrieving the Order (for instance, with `get_order_history`), since by default it is `False` (it will slow down querying)."New value: +"An Item in an Amazon `Order`. If desired fields are populated as `None`, ensure `full_details` is `True` when retrieving the Order (for instance, with `get_orders`), since by default it is `False` (it will slow down querying)." - changed
Output schema / properties / shipments / items / properties / delivery_status / descriptionPrevious value: -"The Shipment delivery status."New value: +"The Shipment delivery status, or `None` once Amazon stops showing it, some weeks after delivery." - changed
Output schema / properties / shipments / items / properties / items / items / descriptionPrevious value: -"An Item in an Amazon `Order`. If desired fields are populated as `None`, ensure `full_details` is `True` when retrieving the Order (for instance, with `get_order_history`), since by default it is `False` (it will slow down querying)."New value: +"An Item in an Amazon `Order`. If desired fields are populated as `None`, ensure `full_details` is `True` when retrieving the Order (for instance, with `get_orders`), since by default it is `False` (it will slow down querying)."
- Removed
get_order_history - Added
get_orders - Added
search_orders
11 tool updates
v1.4.2- Changed
check_session11 fields changed- added
Input schema / properties / siteAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The Amazon site to check, e.g. `amazon.de`. By default, the default site and every other site with a saved session are checked.", + "title": "Site" +} - added
Output schema / $defsAdded value: +{ + "SiteSessionStatus": { + "description": "The user's session status on an Amazon site.", + "properties": { + "default": { + "description": "Whether it's the user's default site, which tools read when they aren't given `site`.", + "title": "Default", + "type": "boolean" + }, + "error": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Why the session couldn't be checked, if it couldn't. `signed_in` is null then.", + "title": "Error" + }, + "sign_in": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "What to do to sign in, if the user isn't.", + "title": "Sign In" + }, + "signed_in": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "description": "Whether Amazon still accepts the user's saved session for the site. If Amazon answers the check with an error page, a saved session is assumed to still work. Null if the session couldn't be checked at all.", + "title": "Signed In" + }, + "site": { + "description": "The Amazon site, as `site` accepts it.", + "title": "Site", + "type": "string" + } + }, + "required": [ + "signed_in", + "site", + "default" + ], + "title": "SiteSessionStatus", + "type": "object" + } +} - changed
Output schema / descriptionPrevious value: -"The user's Amazon session status, returned by the ``check_session`` tool."New value: +"The user's Amazon session status, returned by the ``check_session`` and ``sign_in`` tools: for the site asked\nabout, or else the default site, and for every site checked." - added
Output schema / properties / defaultAdded value: +{ + "description": "Whether it's the user's default site, which tools read when they aren't given `site`.", + "title": "Default", + "type": "boolean" +} - added
Output schema / properties / errorAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Why the session couldn't be checked, if it couldn't. `signed_in` is null then.", + "title": "Error" +} - added
Output schema / properties / signed_in / anyOfAdded value: +[ + { + "type": "boolean" + }, + { + "type": "null" + } +] - changed
Output schema / properties / signed_in / descriptionPrevious value: -"Whether Amazon still accepts the user's saved session. If Amazon couldn't be reached to check, a saved session is assumed to still work."New value: +"Whether Amazon still accepts the user's saved session for the site. If Amazon answers the check with an error page, a saved session is assumed to still work. Null if the session couldn't be checked at all." - removed
Output schema / properties / signed_in / typeRemoved value: -"boolean" - changed
Output schema / properties / site / descriptionPrevious value: -"The Amazon site the server is set to read."New value: +"The Amazon site, as `site` accepts it." - added
Output schema / properties / sitesAdded value: +{ + "description": "Every site checked: the one asked about, or else the default site and every other site with a saved session.", + "items": { + "$ref": "#/$defs/SiteSessionStatus" + }, + "title": "Sites", + "type": "array" +} - changed
Output schema / requiredPrevious value: -[ - "signed_in", - "site" -]New value: +[ + "signed_in", + "site", + "default", + "sites" +]
- Added
get_family_members - Changed
get_gift_card_activity1 field changed- added
Input schema / properties / siteAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The Amazon site to read, e.g. `amazon.de`, since each site has its own orders. By default, the user's default site (see `check_session`).", + "title": "Site" +}
- Changed
get_gift_card_balance2 fields changed- added
Input schema / properties / siteAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The Amazon site to read, e.g. `amazon.de`, since each site has its own orders. By default, the user's default site (see `check_session`).", + "title": "Site" +} - changed
Output schema / properties / balance / descriptionPrevious value: -"The current Gift Card balance, in the currency of the Amazon site the server is set to read (see `check_session`)."New value: +"The current Gift Card balance, in the currency of the Amazon site read."
- Added
get_invoice_pdfs - Changed
get_order1 field changed- added
Input schema / properties / siteAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The Amazon site to read, e.g. `amazon.de`, since each site has its own orders. By default, the user's default site (see `check_session`).", + "title": "Site" +}
- Changed
get_order_history2 fields changed- added
Input schema / properties / family_member_idAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The ID of an Amazon Household member whose Orders to get, such as a linked Teen account, from `get_family_members`.", + "title": "Family Member Id" +} - added
Input schema / properties / siteAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The Amazon site to read, e.g. `amazon.de`, since each site has its own orders. By default, the user's default site (see `check_session`).", + "title": "Site" +}
- Added
get_prime_payments - Changed
get_tracking1 field changed- added
Input schema / properties / siteAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The Amazon site to read, e.g. `amazon.de`, since each site has its own orders. By default, the user's default site (see `check_session`).", + "title": "Site" +}
- Changed
get_transactions1 field changed- added
Input schema / properties / siteAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The Amazon site to read, e.g. `amazon.de`, since each site has its own orders. By default, the user's default site (see `check_session`).", + "title": "Site" +}
- Changed
sign_in11 fields changed- added
Input schema / properties / siteAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The Amazon site to sign in to, e.g. `amazon.de`, since each site has its own sign-in. By default, the user's default site.", + "title": "Site" +} - added
Output schema / $defsAdded value: +{ + "SiteSessionStatus": { + "description": "The user's session status on an Amazon site.", + "properties": { + "default": { + "description": "Whether it's the user's default site, which tools read when they aren't given `site`.", + "title": "Default", + "type": "boolean" + }, + "error": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Why the session couldn't be checked, if it couldn't. `signed_in` is null then.", + "title": "Error" + }, + "sign_in": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "What to do to sign in, if the user isn't.", + "title": "Sign In" + }, + "signed_in": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "description": "Whether Amazon still accepts the user's saved session for the site. If Amazon answers the check with an error page, a saved session is assumed to still work. Null if the session couldn't be checked at all.", + "title": "Signed In" + }, + "site": { + "description": "The Amazon site, as `site` accepts it.", + "title": "Site", + "type": "string" + } + }, + "required": [ + "signed_in", + "site", + "default" + ], + "title": "SiteSessionStatus", + "type": "object" + } +} - changed
Output schema / descriptionPrevious value: -"The user's Amazon session status, returned by the ``check_session`` tool."New value: +"The user's Amazon session status, returned by the ``check_session`` and ``sign_in`` tools: for the site asked\nabout, or else the default site, and for every site checked." - added
Output schema / properties / defaultAdded value: +{ + "description": "Whether it's the user's default site, which tools read when they aren't given `site`.", + "title": "Default", + "type": "boolean" +} - added
Output schema / properties / errorAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Why the session couldn't be checked, if it couldn't. `signed_in` is null then.", + "title": "Error" +} - added
Output schema / properties / signed_in / anyOfAdded value: +[ + { + "type": "boolean" + }, + { + "type": "null" + } +] - changed
Output schema / properties / signed_in / descriptionPrevious value: -"Whether Amazon still accepts the user's saved session. If Amazon couldn't be reached to check, a saved session is assumed to still work."New value: +"Whether Amazon still accepts the user's saved session for the site. If Amazon answers the check with an error page, a saved session is assumed to still work. Null if the session couldn't be checked at all." - removed
Output schema / properties / signed_in / typeRemoved value: -"boolean" - changed
Output schema / properties / site / descriptionPrevious value: -"The Amazon site the server is set to read."New value: +"The Amazon site, as `site` accepts it." - added
Output schema / properties / sitesAdded value: +{ + "description": "Every site checked: the one asked about, or else the default site and every other site with a saved session.", + "items": { + "$ref": "#/$defs/SiteSessionStatus" + }, + "title": "Sites", + "type": "array" +} - changed
Output schema / requiredPrevious value: -[ - "signed_in", - "site" -]New value: +[ + "signed_in", + "site", + "default", + "sites" +]
3 tool updates
v1.3.0- Added
get_gift_card_balance - Changed
get_order_history1 field changed- added
Input schema / properties / order_filterAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The order type filter to use, e.g. `\"digital-orders\"` for Kindle and other digital purchases, which the default history doesn't include. If provided, appended alongside the time filter.", + "title": "Order Filter" +}
- Added
get_tracking
8 tool updates
v1.2.0- First observed
check_session - First observed
get_config - First observed
get_gift_card_activity - First observed
get_order - First observed
get_order_history - First observed
get_transactions - First observed
sign_in - First observed
update_config
TDQS
Scored across 13 tools
The distinction between get_order (single order), get_orders (paged history), and search_orders (keyword search across years) is spelled out clearly, and get_config/update_config are an obvious read/write pair. The main blemish is get_family_members, which is redundant with the household_members field of get_orders — the deprecation note mitigates but does not eliminate the overlap.
Every tool is snake_case with a verb-first pattern (get_*, search_*, check_*, sign_in, update_config), and get_order/get_orders follows a predictable singular/plural distinction rather than an arbitrary naming difference.
Thirteen tools is well within a healthy range for an order-history client, and each covers a distinct Amazon surface (orders, tracking, invoices, transactions, gift cards, Prime, auth, config). A couple are niche (get_prime_payments, get_gift_cards) and the deprecated get_family_members earns no place, but nothing is bloated.
The read-side lifecycle is solid: auth (sign_in, check_session), configuration (get/update_config), order retrieval (get_orders, get_order, search_orders), and downstream artifacts (tracking, invoices, transactions, gift cards, Prime payments). Gaps are minor for a read-only history client — there is no direct shipment/package listing (tracking must be reached via an order), and no returns/refund surface.
Maintenance
Related MCP Connectors
A paid remote MCP for AI SDK data query MCP, built to return verdicts, receipts, usage logs, and aud
Managed Amazon Seller Central and Ads access for OAuth-capable MCP clients.
Discover, plan and run tools across your connected business systems through one OAuth MCP endpoint
Plan projects, develop learning, and inspect agent activity with account-scoped MCP tools.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to search products, manage shopping carts, place orders, and retrieve order history from Amazon and Target accounts.2MIT
- AlicenseNot gradedqualityDmaintenanceEnables interaction with Amazon services through AI assistants, allowing users to search products, manage their cart, view order history, and place orders using natural language.12 npmMIT
- AlicenseNot gradedqualityDmaintenanceEnables users to search for products, retrieve details, and manage their shopping cart on Amazon through the MCP framework. It also supports viewing order history and provides a demonstration of ordering capabilities within AI interfaces.12 npm54MIT
- FlicenseNot gradedqualityCmaintenanceEnables natural language querying of a customer and orders database through read-only MCP tools for finding customers, listing orders, and generating revenue summaries.-