amazon-now-mcp
Automates Amazon Now (amazon.in 10-minute delivery) in your own signed-in Chrome session to build a ready-to-pay cart: scans order history to learn a personal pantry of frequently bought items, searches multiple products at once with results tagged by purchase history, adds items to the cart, views cart totals and savings, and sets or removes item quantities. Never completes checkout.
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-now-mcporder 2 milk, curd, paneer, tomatoes, and the usual atta"
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-now-mcp
An MCP server that turns a spoken or typed grocery list into a ready Amazon Now cart (amazon.in 10-minute delivery). It learns what you usually buy from your order history, picks proven items first, compares prices, and fills the cart. It never checks out. You pay yourself.
Unofficial. Not affiliated with or endorsed by Amazon. It automates the Amazon Now website in your own Chrome, signed in as you. Read Limits and risks first.
Tools
Tool | What it does |
| Scan your Amazon Now orders and rebuild the local pantry (what you buy, how often, when) |
| Your proven items, most-bought first |
| Search several items in one call; results tagged with |
| Add several products to the cart in one call |
| Items, totals, savings, "add ₹X more for free delivery" |
| Set an item's quantity, 0 removes it |
The server ships its own instructions describing the voice-to-cart workflow, so any MCP client follows it.
Related MCP server: Raley
Requirements
Node.js 18+
Google Chrome installed (the server drives it with
puppeteer-core; nothing is downloaded)An amazon.in account with Amazon Now available at your delivery address
Install
1. Sign in once (a Chrome window opens)
npx -y amazon-now-mcp loginSign in to amazon.in, tick Keep me signed in, wait for "Login saved", close the window.
2. Build your pantry (optional but recommended)
npx -y amazon-now-mcp scan months-3Amazon asks for your password again on the order-history page; enter it in the window that opens.
Longer ranges: year-2025, etc. Results merge. Refresh every few weeks.
3. Connect it to your MCP client
Claude Code
claude mcp add amazon-now -- npx -y amazon-now-mcpClaude Desktop (claude_desktop_config.json) and other clients that use the same format:
{
"mcpServers": {
"amazon-now": { "command": "npx", "args": ["-y", "amazon-now-mcp"] }
}
}From a git checkout instead of npm
git clone https://github.com/sl-iitkgp/amazon-order-ai && cd amazon-order-ai && npm install
claude mcp add amazon-now -- node /absolute/path/to/amazon-order-ai/src/server.jsThen say: "order 2 milk, curd, paneer, tomatoes, and the usual atta".
Where your data lives
Nothing personal is stored in the package or the repo. By default:
What | Where |
Chrome profile with your Amazon login |
|
Order history and pantry |
|
Override with AMAZON_NOW_HOME, AMAZON_NOW_PROFILE_DIR, AMAZON_NOW_DATA_DIR. Set CHROME_PATH if
Chrome is not auto-detected. AMAZON_NOW_HEADLESS=false shows the browser while the server runs.
To remove everything, delete ~/.amazon-now-mcp.
There are no API keys, tokens or passwords in this code, and none are needed. You sign in yourself in Chrome.
How it works
Drives your installed Chrome on a dedicated profile (separate from your everyday Chrome).
Search: reads the server-rendered results and the stable
data-csa-c-*attributes on Add buttons.Cart: uses real (trusted) clicks on the site's own Add / +/- buttons and reads the JSON the page itself fetches. Amazon Now rolls back scripted clicks, so the code never uses them.
History: Amazon Now orders show up in normal amazon.in order history as "Amazon Now delivery".
One warm browser, images/fonts blocked: ~3-4 s per search or cart action.
Limits and risks
Scrapes a private web app; selectors can change without notice. Issues and PRs welcome.
Products with a variant picker can't be added yet (reported back, not guessed).
The Chrome profile holds a live Amazon session and
data/holds your purchase history. Never share or commit either.Automated use may breach Amazon's Conditions of Use; keep it personal and light, at your own risk.
Cart contents, prices and your purchase history are sent to whichever AI model you use.
Only one process can use the Chrome profile at a time. Close the login window before running the server.
Contributing
Run node scripts/list-tools.js to check the server starts (no login needed). Before opening a PR, make sure
you have not included screenshots, logs or fixtures containing order IDs, addresses or ASIN lists from your
own account.
License
MIT
Available Tools
6 toolsnow_add_itemsA
Add products to the Amazon Now cart (several in one call). Each needs the asin and the exact now_search query that returned it. quantity = units to add on top of what is already in the cart. Only changes the cart; never places an order.
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose the critical side-effect boundary: 'Only changes the cart; never places an order,' which tells the agent this is not a purchase action. It also clarifies that quantity is additive rather than absolute, though it says nothing about partial-failure behavior or errors for stale ASINs.
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?
Three short sentences, front-loaded with the action, then prerequisites, then semantics, then the safety boundary. No filler or restatement of the tool name.
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 an unannotated mutation tool this covers the essentials: what it does, what each item must contain, how quantity composes, and that no order is placed. Remaining gaps—behavior on invalid/unknown ASINs and what the call returns—are modest since there is no output schema and no annotation contract to reconcile.
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 reported as 0% and the quantity property has no description at all, so the sentence 'quantity = units to add on top of what is already in the cart' resolves the most dangerous ambiguity (additive vs. absolute). The provenance rule tying searchQuery to the originating now_search query also adds meaning beyond the schema's bare 'The now_search query whose results included this ASIN.'
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 ('Add products to the Amazon Now cart') plus the batch scope ('several in one call'). The additive-quantity sentence implicitly separates it from now_set_cart_quantity, so an agent can choose between them without opening either 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 conveyed indirectly: the requirement that each item carry 'the exact now_search query that returned it' implies search-then-add ordering. However, there is no explicit when-to-use/when-not statement or direct pointer to siblings like now_set_cart_quantity or now_view_cart.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
now_get_pantryA
Get the user's proven items from past Amazon Now orders: asin, title, timesOrdered, lastOrdered. Sorted by how often they were bought.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Optional words to filter titles, e.g. "milk curd paneer". Omit to get everything. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full disclosure burden and does add useful behavior: the exact returned fields and the frequency-based sort order. It omits result-count limits, whether the history is cached/stale, and the existence of now_refresh_history as the way to update it, which is material for a history-reading tool.
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 dense sentences with zero filler; the resource and return fields are front-loaded and the sort behavior follows 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?
For a single optional-parameter read with no output schema, the description covers what comes back and how it is ordered, which is most of what an agent needs. The remaining gap is the relationship to now_refresh_history and any cap on the number of returned items.
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?
One optional parameter with 100% schema description coverage, so the baseline is 3 and the schema already explains the query filter with an example. The description adds nothing about the query parameter, such as matching behavior across titles or how it interacts with the frequency sort.
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 a clearly bounded resource (the user's previously ordered items from Amazon Now history), and enumerates the returned fields plus sort order, which separates it from the catalog-oriented now_search. It never names or contrasts a sibling, so the differentiation is implicit rather than 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?
The only usage cue is inside the schema ('Omit to get everything'), and the sort order hints this is for reordering frequently-bought staples. There is no explicit when-to-use guidance versus now_search or now_refresh_history, and no statement about whether history must be refreshed first.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
now_refresh_historyA
Scan the user's Amazon Now orders from their amazon.in order history and rebuild the local pantry of proven items (what they buy, how often, when). Read-only on Amazon. Takes ~3 s per 10 orders.
| Name | Required | Description | Default |
|---|---|---|---|
| period | No | Order history range: "last30", "months-3", or a year like "year-2026". Run more than once to cover several years; results merge. | months-3 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose two useful traits: read-only on Amazon (no remote mutation) and ~3 s per 10 orders (latency scaling). However, it leaves the local side ambiguous — 'rebuild the local pantry' does not say whether existing local entries are replaced or merged, nor what the call returns once complete.
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?
Three short sentences, front-loaded with the action and resource, then the safety profile, then the cost signal. No filler and no redundancy with the schema.
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?
There is no output schema and no annotations, so the description should close the loop on what the agent gets back (item count, summary, pantry snapshot) and what happens to pre-existing local pantry data. It covers scope, safety and cost but not the result or the overwrite/merge semantics.
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 period parameter is fully documented in the schema, including its enum-like pattern and the merge-across-runs behavior, so the schema does the heavy lifting. The description adds only the latency scaling (~3 s per 10 orders), which indirectly informs how wide a period to request, but adds no range syntax or default meaning beyond the schema.
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+resource chain: scan amazon.in order history and rebuild the local pantry of proven items. This is clearly distinct from now_get_pantry, now_search and now_add_items in substance, but the description never names or contrasts a sibling, so the differentiation is implicit rather than stated.
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 agent can infer this is the tool to run when the local pantry is empty or stale, but there is no explicit when-to-use statement, no precondition (e.g. account connected), and no pointer to now_get_pantry for reading the result. The multi-run guidance lives in the schema's period description, not here.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
now_searchA
Search Amazon Now for one or more items (one call for the whole list). Products are deliverable to the account's current address. Each result: asin, title, price, mrp (INR), packSize, rating, sponsored, previouslyBought (site badge), timesOrdered (from pantry), inCartQuantity.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max products per query. | |
| queries | Yes | Search terms, e.g. ["toned milk", "curd", "multigrain atta 5kg"]. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does meaningful work: it discloses that results are restricted to products deliverable to the account's current address, that multiple items should be batched into one call, and it enumerates the returned fields. It omits result pagination behavior, behavior on zero matches, and whether sponsored results are always interleaved.
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?
Three compact sentences, front-loaded with the action and batching rule, followed by the deliverability constraint and the return shape. Every clause carries information and none of it restates the tool name.
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 two-parameter search tool with no output schema, the field enumeration substitutes well for a return-value spec, and the address-scoping caveat covers the main surprise an agent could hit. What is missing is guidance on choosing this over the sibling lookup tools and what an empty result set means.
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 the queries and limit parameters fully documented in the schema itself, so baseline is 3. The description reinforces the array semantics ("one call for the whole list") but adds nothing about limit tuning or query phrasing beyond the schema's own example.
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 Amazon Now") plus the batching scope ("one or more items (one call for the whole list)"), which separates it from single-item operations. It never names a sibling tool, so the differentiation from now_add_items or now_get_pantry is left implicit.
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 by the shopping flow: you search to discover products, presumably before adding them to the cart. There is no explicit "use this when..." statement, no exclusion of the other lookup siblings, and no note that now_get_pantry is the better route for reordering known items.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
now_set_cart_quantityA
Set the exact quantity of an item already in the Amazon Now cart; 0 removes it.
| Name | Required | Description | Default |
|---|---|---|---|
| asin | Yes | Amazon product ASIN, from now_search results. | |
| quantity | Yes | Target quantity; 0 removes the item. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the burden. It correctly signals a mutating operation and usefully discloses that quantity 0 deletes the entry, but says nothing about permission/auth needs, what happens if the ASIN is absent from the cart, or whether totals are recalculated.
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 short sentence, verb first, with the destructive edge case (0 removes) attached immediately. Nothing is padded or restated.
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 two-parameter mutation with no annotations and no output schema, the definition covers the core action and the deletion edge case but leaves error behavior and post-call state unstated. Adequate but with visible gaps.
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%: the asin pattern and its origin ('from now_search') and the quantity 0-20 range with the 0-removes meaning are all documented in the schema. The description's mention of 0 removal merely repeats the schema, adding no new parameter semantics; 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 ('Set') and resource ('exact quantity of an item') plus the scope constraint 'already in the Amazon Now cart', which implicitly separates it from now_add_items and now_view_cart. It stops short of naming a sibling explicitly, so sibling differentiation is inferred rather than declared.
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?
'0 removes it' and 'already in the cart' imply the use case and one edge case, but there is no statement of when to prefer this over now_add_items or now_view_cart, nor what to do if the item is not yet in the cart. Usage is implied, not instructed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
now_view_cartA
Show the current Amazon Now cart: items, quantities, line totals, total, savings, and how much more to add for the next benefit (e.g. free delivery). Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden; it does disclose the 'Read-only' nature and the exact payload contents, which is real value. It omits what happens with an empty cart, whether authentication/session state is required, and any rate-limit or freshness considerations, so meaningful behavioral gaps remain.
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 lists the resource first and then the returned fields, with a two-word safety tag at the end. Nothing is repeated 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?
There is no output schema and no annotations, so the description reasonably compensates by enumerating return fields. For a parameterless read tool it is nearly complete; only empty-cart behavior and any prerequisite state are 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?
The tool takes zero parameters, so there is nothing for the description to disambiguate beyond confirming it acts on the current cart with no filtering arguments. Baseline 4 applies for a parameterless tool.
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 ('Show') and resource ('the current Amazon Now cart') and enumerates the returned data (items, quantities, line totals, total, savings, benefit progress). It is clearly distinguishable from siblings like now_add_items and now_set_cart_quantity, which mutate rather than display the cart.
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 verb 'Show' and the 'Read-only' tag, so an agent can infer this is the inspection tool. However, it never names an alternative or an exclusion — it does not say to use now_set_cart_quantity when the cart needs changing, nor when to call now_search beforehand.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
6 tool updates
v0.2.0- First observed
now_add_items - First observed
now_get_pantry - First observed
now_refresh_history - First observed
now_search - First observed
now_set_cart_quantity - First observed
now_view_cart
TDQS
Scored across 6 tools
Each tool targets a distinct stage of the Amazon Now flow: history refresh, pantry read, search, cart add, cart view, cart quantity set. The one potentially overlapping pair (add_items vs set_cart_quantity) is explicitly differentiated by the 'adds on top of existing cart' vs 'sets exact quantity, 0 removes' wording.
All names share a clean now_ prefix and snake_case style, making the set easy to scan. Minor deviation: most names are verb_noun (now_get_pantry, now_add_items, now_view_cart) but now_search is verb-only, and refresh_history reverses into noun_verb.
Six tools map neatly onto the shopping lifecycle: bootstrap history, read pantry, search, add, inspect cart, adjust quantity. Nothing extraneous and nothing obviously padded.
Search-to-cart lifecycle is covered, and removal is handled via set_cart_quantity=0. Gaps: no order/checkout or delivery-slot tool (possibly intentional read/safety scope) and no way to check order status, so an agent hits a dead end at purchase.
Maintenance
Related MCP Connectors
Turn any shopping list into a ready-to-checkout grocery cart across 26 European supermarkets.
Persistent shopping memory for AI assistants. The AI reasons; Kaufliste stores and executes.
AI meal plans that fill your Kroger/Instacart cart - pantry-aware lists, all from chat.
Your kitchen in chat: pantry stock, shopping lists, recipes and scanned grocery receipts.
Related MCP Servers
- 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.6 npmMIT
- AlicenseCqualityDmaintenanceAutomated grocery shopping assistant with intelligent unit pricing and automatic coupon clipping, enabling AI to search products, manage carts, and plan grocery runs via Claude Desktop or CLI.181-
- AlicenseNot gradedqualityCmaintenanceEnables users to search grocery products and stores, manage a cart, sync purchase history, and predict needed items through MCP tools. It also stores food preferences as server instructions so connected agents can respect them automatically.1MIT

restrackit-pantry-mcpofficial
AlicenseNot gradedqualityBmaintenanceEnables users to turn grocery receipt photos or spoken updates into an up-to-date home pantry, tracking purchases, current stock, and consumption through natural language.MIT