Skip to main content
Glama

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

now_refresh_history

Scan your Amazon Now orders and rebuild the local pantry (what you buy, how often, when)

now_get_pantry

Your proven items, most-bought first

now_search

Search several items in one call; results tagged with timesOrdered (pantry) and previouslyBought

now_add_items

Add several products to the cart in one call

now_view_cart

Items, totals, savings, "add ₹X more for free delivery"

now_set_cart_quantity

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 login

Sign in to amazon.in, tick Keep me signed in, wait for "Login saved", close the window.

npx -y amazon-now-mcp scan months-3

Amazon 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-mcp

Claude 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.js

Then 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

~/.amazon-now-mcp/chrome-profile

Order history and pantry

~/.amazon-now-mcp/data

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 tools
now_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.

NameRequiredDescriptionDefault
itemsYes

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does 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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

NameRequiredDescriptionDefault
queryNoOptional words to filter titles, e.g. "milk curd paneer". Omit to get everything.

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the full 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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

NameRequiredDescriptionDefault
periodNoOrder history range: "last30", "months-3", or a year like "year-2026". Run more than once to cover several years; results merge.months-3

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries the full burden, 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.

Conciseness5/5

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.

Completeness3/5

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

There is no output schema and no annotations, so the description 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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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_set_cart_quantityA

Set the exact quantity of an item already in the Amazon Now cart; 0 removes it.

NameRequiredDescriptionDefault
asinYesAmazon product ASIN, from now_search results.
quantityYesTarget quantity; 0 removes the item.

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description carries the full burden; it 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.

Conciseness5/5

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.

Completeness4/5

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

There is no output schema and no annotations, so the description 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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

  1. 6 tool updatesv0.2.0
    • First observednow_add_items
    • First observednow_get_pantry
    • First observednow_refresh_history
    • First observednow_search
    • First observednow_set_cart_quantity
    • First observednow_view_cart

TDQS

A3.9/5.0

Scored across 6 tools

Disambiguation5/5

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.

Naming Consistency4/5

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.

Tool Count5/5

Six tools map neatly onto the shopping lifecycle: bootstrap history, read pantry, search, add, inspect cart, adjust quantity. Nothing extraneous and nothing obviously padded.

Completeness4/5

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

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables 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 npm
    MIT
  • A
    license
    C
    quality
    D
    maintenance
    Automated 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.
    18
    1
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables 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.
    1
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables 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