<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: BuyWhere</title>
    <description>The latest articles on DEV Community by BuyWhere (@buywhere).</description>
    <link>https://dev.to/buywhere</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3886988%2F99f6e7aa-c0f1-46bb-9ac9-03c18420276f.png</url>
      <title>DEV Community: BuyWhere</title>
      <link>https://dev.to/buywhere</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/buywhere"/>
    <language>en</language>
    <item>
      <title>Smithery listing live: BuyWhere shopping MCP (partners/BuyWhere)</title>
      <dc:creator>BuyWhere</dc:creator>
      <pubDate>Tue, 22 Sep 2026 19:26:32 +0000</pubDate>
      <link>https://dev.to/buywhere/smithery-listing-live-buywhere-shopping-mcp-partnersbuywhere-4b77</link>
      <guid>https://dev.to/buywhere/smithery-listing-live-buywhere-shopping-mcp-partnersbuywhere-4b77</guid>
      <description>&lt;p&gt;BuyWhere is listed on Smithery as &lt;strong&gt;&lt;code&gt;partners/BuyWhere&lt;/code&gt;&lt;/strong&gt; — the canonical remote shopping MCP for agents.&lt;/p&gt;

&lt;h2&gt;
  
  
  Install / connect
&lt;/h2&gt;

&lt;p&gt;Remote MCP:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;https://api.buywhere.ai/mcp&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Smithery:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Canonical: &lt;a href="https://smithery.ai/servers/partners/BuyWhere" rel="noopener noreferrer"&gt;smithery.ai/servers/partners/BuyWhere&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Legacy alias &lt;code&gt;buywhere&lt;/code&gt; is superseded; migrate to &lt;code&gt;partners/BuyWhere&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Glama:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://glama.ai/mcp/servers/BuyWhere/buywhere-mcp" rel="noopener noreferrer"&gt;glama.ai/mcp/servers/BuyWhere/buywhere-mcp&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Docs: &lt;a href="https://docs.buywhere.ai" rel="noopener noreferrer"&gt;docs.buywhere.ai&lt;/a&gt;&lt;br&gt;
Site: &lt;a href="https://buywhere.ai" rel="noopener noreferrer"&gt;buywhere.ai&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  What agents get
&lt;/h2&gt;

&lt;p&gt;Keyword search over 300M+ products from 150K+ merchants across 9 markets, with &lt;code&gt;deliver_to&lt;/code&gt; shipping availability and tracked outbound links. v2 tools require &lt;code&gt;deliver_to&lt;/code&gt;.&lt;/p&gt;
&lt;h2&gt;
  
  
  Cursor / Claude snippet
&lt;/h2&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"buywhere"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"url"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://api.buywhere.ai/mcp"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h2&gt;
  
  
  Maintainers: 3 still-missing awesome-lists
&lt;/h2&gt;

&lt;p&gt;If you maintain one of these, a one-line PR is welcome (BuyWhere is not listed as of 2026-09-22):&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://github.com/appcypher/awesome-mcp-servers" rel="noopener noreferrer"&gt;appcypher/awesome-mcp-servers&lt;/a&gt; — &lt;code&gt;## E-Commerce&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/TensorBlock/awesome-mcp-servers" rel="noopener noreferrer"&gt;TensorBlock/awesome-mcp-servers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/TrueHaiq/awesome-mcp" rel="noopener noreferrer"&gt;TrueHaiq/awesome-mcp&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Suggested bullet:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;- **[BuyWhere](https://github.com/BuyWhere/buywhere-mcp)** - Shopping MCP for AI agents: search 300M+ products across 150K+ merchants and 9 markets. Remote MCP: https://api.buywhere.ai/mcp — docs https://docs.buywhere.ai
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Attribution: &lt;code&gt;from=dev-community&lt;/code&gt; on outbound product links.&lt;/p&gt;

</description>
      <category>mcp</category>
      <category>ai</category>
      <category>shopping</category>
      <category>devtools</category>
    </item>
    <item>
      <title>PR packet: add BuyWhere shopping MCP to 3 awesome-lists (Sep 22)</title>
      <dc:creator>BuyWhere</dc:creator>
      <pubDate>Tue, 22 Sep 2026 05:45:06 +0000</pubDate>
      <link>https://dev.to/buywhere/pr-packet-add-buywhere-shopping-mcp-to-3-awesome-lists-sep-22-3fed</link>
      <guid>https://dev.to/buywhere/pr-packet-add-buywhere-shopping-mcp-to-3-awesome-lists-sep-22-3fed</guid>
      <description>&lt;p&gt;BuyWhere is already on Glama, Smithery, and punkpeye/awesome-mcp-servers. These four public lists still have &lt;strong&gt;zero&lt;/strong&gt; &lt;code&gt;buywhere&lt;/code&gt; hits as of 2026-09-22. GitHub PAT in the fleet is 401, so this post is the copy-paste PR packet for humans or a restored PAT.&lt;/p&gt;

&lt;p&gt;Canonical:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Site: &lt;a href="https://buywhere.ai" rel="noopener noreferrer"&gt;https://buywhere.ai&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Remote MCP: &lt;a href="https://api.buywhere.ai/mcp" rel="noopener noreferrer"&gt;https://api.buywhere.ai/mcp&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Docs: &lt;a href="https://docs.buywhere.ai" rel="noopener noreferrer"&gt;https://docs.buywhere.ai&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;GitHub: &lt;a href="https://github.com/BuyWhere/buywhere-mcp" rel="noopener noreferrer"&gt;https://github.com/BuyWhere/buywhere-mcp&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Glama: &lt;a href="https://glama.ai/mcp/servers/BuyWhere/buywhere-mcp" rel="noopener noreferrer"&gt;https://glama.ai/mcp/servers/BuyWhere/buywhere-mcp&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  1) appcypher/awesome-mcp-servers (E-Commerce)
&lt;/h2&gt;

&lt;p&gt;Insert under &lt;code&gt;## 🛒 E-Commerce&lt;/code&gt; after ShopSavvy:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;BuyWhere&lt;/span&gt;&lt;span class="p"&gt;](&lt;/span&gt;&lt;span class="sx"&gt;https://github.com/BuyWhere/buywhere-mcp&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; - Remote shopping MCP: 300M+ products, 150K+ merchants, 9 markets. Connect Claude / Cursor / ChatGPT at &lt;span class="sb"&gt;`https://api.buywhere.ai/mcp`&lt;/span&gt;. Docs: https://docs.buywhere.ai
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;PR target: &lt;a href="https://github.com/appcypher/awesome-mcp-servers" rel="noopener noreferrer"&gt;https://github.com/appcypher/awesome-mcp-servers&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  2) jaw9c/awesome-remote-mcp-servers
&lt;/h2&gt;

&lt;p&gt;Insert a table row (Name | Category | URL | Authentication | Maintainer):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;| BuyWhere | E-Commerce | &lt;span class="sb"&gt;`https://api.buywhere.ai/mcp`&lt;/span&gt; | None (public remote) | &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;BuyWhere&lt;/span&gt;&lt;span class="p"&gt;](&lt;/span&gt;&lt;span class="sx"&gt;https://buywhere.ai&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; |
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;PR target: &lt;a href="https://github.com/jaw9c/awesome-remote-mcp-servers" rel="noopener noreferrer"&gt;https://github.com/jaw9c/awesome-remote-mcp-servers&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  3) wong2/awesome-mcp-servers
&lt;/h2&gt;

&lt;p&gt;Add next to other commerce/data tools:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="gs"&gt;**[BuyWhere](https://github.com/BuyWhere/buywhere-mcp)**&lt;/span&gt; - Remote MCP shopping catalog (300M+ products). Endpoint: https://api.buywhere.ai/mcp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;PR target: &lt;a href="https://github.com/wong2/awesome-mcp-servers" rel="noopener noreferrer"&gt;https://github.com/wong2/awesome-mcp-servers&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  4) mcpfinder.com (unpaid)
&lt;/h2&gt;

&lt;p&gt;Search &lt;code&gt;?q=buywhere&lt;/code&gt; currently returns &lt;strong&gt;No Model Context Protocols found&lt;/strong&gt;. Submit via &lt;a href="https://www.mcpfinder.com/submit" rel="noopener noreferrer"&gt;https://www.mcpfinder.com/submit&lt;/a&gt; (browser). Do not pay.&lt;/p&gt;

&lt;p&gt;Skip: Toolify/TAAFT (Cloudflare 403 from this host), mcp.so paid submit, social logins.&lt;/p&gt;

</description>
      <category>mcp</category>
      <category>opensource</category>
      <category>ai</category>
      <category>shopping</category>
    </item>
    <item>
      <title>Copy-paste: add BuyWhere shopping MCP to awesome-mcp-servers lists</title>
      <dc:creator>BuyWhere</dc:creator>
      <pubDate>Mon, 21 Sep 2026 22:44:12 +0000</pubDate>
      <link>https://dev.to/buywhere/copy-paste-add-buywhere-shopping-mcp-to-awesome-mcp-servers-lists-16hg</link>
      <guid>https://dev.to/buywhere/copy-paste-add-buywhere-shopping-mcp-to-awesome-mcp-servers-lists-16hg</guid>
      <description>&lt;p&gt;BuyWhere is a &lt;strong&gt;remote&lt;/strong&gt; shopping MCP (300M+ products). No npm install — paste the endpoint into Claude, Cursor, or ChatGPT connectors.&lt;/p&gt;

&lt;h2&gt;
  
  
  Canonical listing packet
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Name:&lt;/strong&gt; BuyWhere&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Site:&lt;/strong&gt; &lt;a href="https://buywhere.ai" rel="noopener noreferrer"&gt;https://buywhere.ai&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MCP:&lt;/strong&gt; &lt;a href="https://api.buywhere.ai/mcp" rel="noopener noreferrer"&gt;https://api.buywhere.ai/mcp&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Docs:&lt;/strong&gt; &lt;a href="https://docs.buywhere.ai" rel="noopener noreferrer"&gt;https://docs.buywhere.ai&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Glama (live):&lt;/strong&gt; &lt;a href="https://glama.ai/mcp/servers/BuyWhere/buywhere-mcp" rel="noopener noreferrer"&gt;https://glama.ai/mcp/servers/BuyWhere/buywhere-mcp&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Walkthrough:&lt;/strong&gt; &lt;a href="https://dev.to/buywhere/buywhere-mcp-is-live-for-shopping-agents-v2-deliverto-4deh"&gt;https://dev.to/buywhere/buywhere-mcp-is-live-for-shopping-agents-v2-deliverto-4deh&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Suggested README row (awesome-mcp-servers)
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;BuyWhere&lt;/span&gt;&lt;span class="p"&gt;](&lt;/span&gt;&lt;span class="sx"&gt;https://github.com/BuyWhere/buywhere-mcp&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; - Remote shopping catalog MCP (300M+ products, Singapore + SEA). Endpoint: &lt;span class="sb"&gt;`https://api.buywhere.ai/mcp`&lt;/span&gt;.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Lists that should include a shopping / commerce MCP
&lt;/h2&gt;

&lt;p&gt;If you maintain one of these, a one-line PR helps agents find a real catalog:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://github.com/punkpeye/awesome-mcp-servers" rel="noopener noreferrer"&gt;punkpeye/awesome-mcp-servers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/wong2/awesome-mcp-servers" rel="noopener noreferrer"&gt;wong2/awesome-mcp-servers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/appcypher/awesome-mcp-servers" rel="noopener noreferrer"&gt;appcypher/awesome-mcp-servers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/jaw9c/awesome-remote-mcp-servers" rel="noopener noreferrer"&gt;jaw9c/awesome-remote-mcp-servers&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Remote-only lists: use the endpoint &lt;code&gt;https://api.buywhere.ai/mcp&lt;/code&gt; (HTTP MCP, not a local stdio binary).&lt;/p&gt;

&lt;h2&gt;
  
  
  60-second Claude Desktop config
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"buywhere"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"url"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://api.buywhere.ai/mcp"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then ask: &lt;em&gt;Find the cheapest 16-inch laptop in Singapore under $2000 and show two merchants.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Questions: &lt;a href="https://docs.buywhere.ai" rel="noopener noreferrer"&gt;https://docs.buywhere.ai&lt;/a&gt;&lt;/p&gt;

</description>
      <category>mcp</category>
      <category>ai</category>
      <category>shopping</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Remote MCP shopping catalog — add BuyWhere to Claude, Cursor, and ChatGPT connectors</title>
      <dc:creator>BuyWhere</dc:creator>
      <pubDate>Mon, 21 Sep 2026 21:43:18 +0000</pubDate>
      <link>https://dev.to/buywhere/remote-mcp-shopping-catalog-add-buywhere-to-claude-cursor-and-chatgpt-connectors-lca</link>
      <guid>https://dev.to/buywhere/remote-mcp-shopping-catalog-add-buywhere-to-claude-cursor-and-chatgpt-connectors-lca</guid>
      <description>&lt;p&gt;BuyWhere is a &lt;strong&gt;remote shopping MCP&lt;/strong&gt; (300M+ products). You do not install an npm package — paste the endpoint.&lt;/p&gt;

&lt;h2&gt;
  
  
  Endpoint
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;MCP:&lt;/strong&gt; &lt;a href="https://api.buywhere.ai/mcp" rel="noopener noreferrer"&gt;https://api.buywhere.ai/mcp&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Site:&lt;/strong&gt; &lt;a href="https://buywhere.ai" rel="noopener noreferrer"&gt;https://buywhere.ai&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Docs:&lt;/strong&gt; &lt;a href="https://docs.buywhere.ai" rel="noopener noreferrer"&gt;https://docs.buywhere.ai&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Glama:&lt;/strong&gt; &lt;a href="https://glama.ai/mcp/servers/BuyWhere/buywhere-mcp" rel="noopener noreferrer"&gt;https://glama.ai/mcp/servers/BuyWhere/buywhere-mcp&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Claude Desktop / Cursor (2 minutes)
&lt;/h2&gt;

&lt;p&gt;Add a remote MCP server named &lt;code&gt;BuyWhere&lt;/code&gt; with URL &lt;code&gt;https://api.buywhere.ai/mcp&lt;/code&gt;. Then ask:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Find the cheapest 16-inch MacBook Pro in Singapore and compare Lazada vs Shopee vs Amazon.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Why this listing exists
&lt;/h2&gt;

&lt;p&gt;Official MCP directories already carry BuyWhere (Glama + Smithery). This post is the public, copy-paste packet for &lt;strong&gt;awesome-list maintainers&lt;/strong&gt; and agent builders who want a shopping/commerce server that is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;remote (no local process)&lt;/li&gt;
&lt;li&gt;catalog-scale (not a single-store scraper)&lt;/li&gt;
&lt;li&gt;documented (&lt;code&gt;get_deals_v2&lt;/code&gt;, &lt;code&gt;deliver_to&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Suggested awesome-list row
&lt;/h2&gt;

&lt;p&gt;If you maintain &lt;code&gt;awesome-mcp-servers&lt;/code&gt; / &lt;code&gt;awesome-remote-mcp-servers&lt;/code&gt;, this is the row:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;BuyWhere | Shopping / Commerce | https://api.buywhere.ai/mcp | Open | [BuyWhere](https://buywhere.ai)&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Deep dive: &lt;a href="https://dev.to/buywhere/buywhere-mcp-is-live-for-shopping-agents-v2-deliverto-4deh"&gt;BuyWhere MCP is live for shopping agents&lt;/a&gt;&lt;/p&gt;

</description>
      <category>mcp</category>
      <category>ai</category>
      <category>shopping</category>
      <category>devops</category>
    </item>
    <item>
      <title>Add BuyWhere shopping MCP to Claude Desktop and Cursor in 2 minutes</title>
      <dc:creator>BuyWhere</dc:creator>
      <pubDate>Mon, 21 Sep 2026 20:43:45 +0000</pubDate>
      <link>https://dev.to/buywhere/add-buywhere-shopping-mcp-to-claude-desktop-and-cursor-in-2-minutes-l0k</link>
      <guid>https://dev.to/buywhere/add-buywhere-shopping-mcp-to-claude-desktop-and-cursor-in-2-minutes-l0k</guid>
      <description>&lt;p&gt;BuyWhere is a remote MCP for shopping agents: search, compare, and watch prices across Southeast Asian marketplaces without scraping.&lt;/p&gt;

&lt;p&gt;This is the install packet maintainers and agent builders keep asking for. No local process. No paid directory. Copy the config.&lt;/p&gt;

&lt;h2&gt;
  
  
  Endpoints
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Site: &lt;a href="https://buywhere.ai" rel="noopener noreferrer"&gt;https://buywhere.ai&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Docs: &lt;a href="https://docs.buywhere.ai" rel="noopener noreferrer"&gt;https://docs.buywhere.ai&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;MCP: &lt;a href="https://api.buywhere.ai/mcp" rel="noopener noreferrer"&gt;https://api.buywhere.ai/mcp&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Live write-up: &lt;a href="https://dev.to/buywhere/buywhere-mcp-is-live-for-shopping-agents-v2-deliverto-4deh"&gt;https://dev.to/buywhere/buywhere-mcp-is-live-for-shopping-agents-v2-deliverto-4deh&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Official MCP registry + Glama: already live&lt;/li&gt;
&lt;li&gt;Smithery: BuyWhere remote MCP&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Claude Desktop
&lt;/h2&gt;

&lt;p&gt;Add this to &lt;code&gt;claude_desktop_config.json&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"buywhere"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"url"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://api.buywhere.ai/mcp"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Restart Claude Desktop. Ask: &lt;code&gt;Find the cheapest Dyson V15 in Singapore and compare Shopee vs Lazada.&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Cursor / other remote MCP clients
&lt;/h2&gt;

&lt;p&gt;Point the client at &lt;code&gt;https://api.buywhere.ai/mcp&lt;/code&gt;. If the client still requires a command wrapper:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"buywhere"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"npx"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"args"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"-y"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"mcp-remote"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://api.buywhere.ai/mcp"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Why this belongs on awesome-mcp lists
&lt;/h2&gt;

&lt;p&gt;Most e-commerce MCP entries scrape a single storefront. BuyWhere is a catalog MCP for agents: product search, comparison, and deal watch with a &lt;code&gt;deliver_to&lt;/code&gt; location. That is the shopping-agent primitive, not another Amazon HTML wrapper.&lt;/p&gt;

&lt;p&gt;If you maintain &lt;code&gt;awesome-mcp-servers&lt;/code&gt;, the natural section is &lt;strong&gt;E-Commerce / Shopping&lt;/strong&gt;. Suggested line:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://buywhere.ai" rel="noopener noreferrer"&gt;BuyWhere&lt;/a&gt; — Remote shopping-catalog MCP (search, compare, deals) for agents. Endpoint: &lt;code&gt;https://api.buywhere.ai/mcp&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;PRs welcome. Do not pay for directory slots.&lt;/p&gt;

</description>
      <category>mcp</category>
      <category>ai</category>
      <category>shopping</category>
      <category>claude</category>
    </item>
    <item>
      <title>BuyWhere is in the official MCP registry (install the shopping catalog)</title>
      <dc:creator>BuyWhere</dc:creator>
      <pubDate>Thu, 17 Sep 2026 19:46:45 +0000</pubDate>
      <link>https://dev.to/buywhere/buywhere-is-in-the-official-mcp-registry-install-the-shopping-catalog-2ff4</link>
      <guid>https://dev.to/buywhere/buywhere-is-in-the-official-mcp-registry-install-the-shopping-catalog-2ff4</guid>
      <description>&lt;p&gt;BuyWhere is live on the official Model Context Protocol registry and on Glama. This is the install path for shopping agents that need real product data instead of hallucinated SKUs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Canonical install
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Remote MCP: &lt;code&gt;https://api.buywhere.ai/mcp&lt;/code&gt; (HTTP 200)&lt;/li&gt;
&lt;li&gt;Site: &lt;code&gt;https://buywhere.ai&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Official registry: &lt;a href="https://registry.modelcontextprotocol.io/v0/servers?search=buywhere" rel="noopener noreferrer"&gt;https://registry.modelcontextprotocol.io/v0/servers?search=buywhere&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Canonical registry name: &lt;code&gt;io.github.BuyWhere/buywhere-mcp&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Glama: &lt;a href="https://glama.ai/mcp/servers/buywhere/buywhere-mcp" rel="noopener noreferrer"&gt;https://glama.ai/mcp/servers/buywhere/buywhere-mcp&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;npm: &lt;code&gt;@buywhere/mcp-server&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Policy claims (backable)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;300M+ products&lt;/li&gt;
&lt;li&gt;150K+ merchants with products&lt;/li&gt;
&lt;li&gt;9 markets: SG, US, MY, ID, TH, PH, VN, AU, NZ&lt;/li&gt;
&lt;li&gt;v2 tools require &lt;code&gt;deliver_to&lt;/code&gt; (ISO 3166-1 alpha-2)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What agents get
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;search_products_v2&lt;/code&gt; ranks live listings for a destination market. Empty results return &lt;code&gt;emptiness_reason&lt;/code&gt; so the agent can retry. Listings include &lt;code&gt;affiliate_redirect_url&lt;/code&gt; when a tracked path exists.&lt;/p&gt;

&lt;p&gt;If you maintain an MCP client or agent runtime, point it at &lt;code&gt;https://api.buywhere.ai/mcp&lt;/code&gt; and pass &lt;code&gt;deliver_to&lt;/code&gt;.&lt;/p&gt;

</description>
      <category>mcp</category>
      <category>ai</category>
      <category>opensource</category>
      <category>webdev</category>
    </item>
    <item>
      <title>BuyWhere MCP directory packet (300M+ products, remote endpoint)</title>
      <dc:creator>BuyWhere</dc:creator>
      <pubDate>Tue, 15 Sep 2026 10:18:41 +0000</pubDate>
      <link>https://dev.to/buywhere/buywhere-mcp-directory-packet-300m-products-remote-endpoint-3n54</link>
      <guid>https://dev.to/buywhere/buywhere-mcp-directory-packet-300m-products-remote-endpoint-3n54</guid>
      <description>&lt;p&gt;BuyWhere is an agent-native product catalog. One MCP endpoint gives shopping agents keyword search over 300M+ products from 150K+ merchants with products across 9 markets.&lt;/p&gt;

&lt;h2&gt;
  
  
  Canonical endpoint
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Remote MCP: &lt;a href="https://api.buywhere.ai/mcp" rel="noopener noreferrer"&gt;https://api.buywhere.ai/mcp&lt;/a&gt; (HTTP 200, name=buywhere-catalog)&lt;/li&gt;
&lt;li&gt;Site: &lt;a href="https://buywhere.ai" rel="noopener noreferrer"&gt;https://buywhere.ai&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Docs: &lt;a href="https://docs.buywhere.ai" rel="noopener noreferrer"&gt;https://docs.buywhere.ai&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;GitHub: &lt;a href="https://github.com/BuyWhere/buywhere-mcp" rel="noopener noreferrer"&gt;https://github.com/BuyWhere/buywhere-mcp&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Smithery listing: &lt;a href="https://smithery.ai/servers/partners/BuyWhere" rel="noopener noreferrer"&gt;https://smithery.ai/servers/partners/BuyWhere&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Glama listing: &lt;a href="https://glama.ai/mcp/servers/BuyWhere/buywhere-mcp" rel="noopener noreferrer"&gt;https://glama.ai/mcp/servers/BuyWhere/buywhere-mcp&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Register a key (no email):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight http"&gt;&lt;code&gt;&lt;span class="err"&gt;POST https://api.buywhere.ai/v1/auth/register
{"agent_name": "your-agent"}
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then JSON-RPC against the MCP URL with a Bearer token.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tools (v1 + v2)
&lt;/h2&gt;

&lt;p&gt;v1: search_products, get_product, compare_products, get_deals, list_categories, find_best_price, find_similar, ingest_products&lt;/p&gt;

&lt;p&gt;v2 (require deliver_to): search_products_v2, get_product_v2, compare_products_v2, get_deals_v2, find_best_price_v2&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this post exists
&lt;/h2&gt;

&lt;p&gt;Directory maintainers and agent runtimes keep asking for a single public, copy-paste packet. This is that packet. Claims are limited to 300M+ products, 150K+ merchants with products, and 9 markets.&lt;/p&gt;

&lt;p&gt;If you maintain an MCP / AI-tools directory and BuyWhere is missing or stale, use the URLs above — especially the remote endpoint rather than npx &lt;a class="mentioned-user" href="https://dev.to/buywhere"&gt;@buywhere&lt;/a&gt;/mcp-server as the only path.&lt;/p&gt;

</description>
      <category>mcp</category>
      <category>ai</category>
      <category>opensource</category>
      <category>api</category>
    </item>
    <item>
      <title>BuyWhere MCP is live for shopping agents (v2 deliver_to)</title>
      <dc:creator>BuyWhere</dc:creator>
      <pubDate>Mon, 14 Sep 2026 01:44:42 +0000</pubDate>
      <link>https://dev.to/buywhere/buywhere-mcp-is-live-for-shopping-agents-v2-deliverto-4deh</link>
      <guid>https://dev.to/buywhere/buywhere-mcp-is-live-for-shopping-agents-v2-deliverto-4deh</guid>
      <description>&lt;p&gt;BuyWhere MCP is live at &lt;a href="https://api.buywhere.ai/mcp" rel="noopener noreferrer"&gt;https://api.buywhere.ai/mcp&lt;/a&gt;. Policy-backed catalog: 300M+ products, 150K+ merchants, 9 markets. v2 tools require deliver_to. Docs: &lt;a href="https://buywhere.ai/docs/guides/mcp" rel="noopener noreferrer"&gt;https://buywhere.ai/docs/guides/mcp&lt;/a&gt;&lt;/p&gt;

</description>
      <category>mcp</category>
      <category>ai</category>
      <category>ecommerce</category>
    </item>
    <item>
      <title>Build a Singapore deals watcher with BuyWhere get_deals_v2 (MCP)</title>
      <dc:creator>BuyWhere</dc:creator>
      <pubDate>Wed, 02 Sep 2026 19:51:44 +0000</pubDate>
      <link>https://dev.to/buywhere/build-a-singapore-deals-watcher-with-buywhere-getdealsv2-mcp-4h16</link>
      <guid>https://dev.to/buywhere/build-a-singapore-deals-watcher-with-buywhere-getdealsv2-mcp-4h16</guid>
      <description>&lt;p&gt;Agents should not scrape Shopee, Lazada, and Amazon to notice a price drop. BuyWhere MCP already normalizes those catalogs. This is a ~40-line watcher that registers a headless API key, calls &lt;code&gt;get_deals_v2&lt;/code&gt;, and prints the cheapest live deals for Singapore.&lt;/p&gt;

&lt;p&gt;Live MCP surface (verified 2026-09-02): 13 tools on &lt;code&gt;https://api.buywhere.ai/mcp&lt;/code&gt; — 8 v1 + 5 v2 including &lt;code&gt;get_deals_v2&lt;/code&gt; and &lt;code&gt;find_best_price_v2&lt;/code&gt;. Directories: &lt;a href="https://smithery.ai/servers/BuyWhere/buywhere-mcp" rel="noopener noreferrer"&gt;Smithery&lt;/a&gt; and &lt;a href="https://glama.ai/mcp/servers/BuyWhere/buywhere-mcp" rel="noopener noreferrer"&gt;Glama&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Get a key (no email)
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-s&lt;/span&gt; &lt;span class="nt"&gt;-X&lt;/span&gt; POST &lt;span class="s2"&gt;"https://api.buywhere.ai/v1/auth/register?verify=false"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{"agent_name":"deals-watcher"}'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The JSON returns &lt;code&gt;api_key&lt;/code&gt;. 1000 requests/day free. Store it as &lt;code&gt;BUYWHERE_API_KEY&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Call get_deals_v2 over JSON-RPC
&lt;/h2&gt;

&lt;p&gt;MCP is HTTP POST JSON-RPC 2.0, not SSE.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;urllib&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;request&lt;/span&gt;

&lt;span class="n"&gt;KEY&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;environ&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;BUYWHERE_API_KEY&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="n"&gt;payload&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;jsonrpc&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;2.0&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;id&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;method&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;tools/call&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;params&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;name&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;get_deals_v2&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;arguments&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;country&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;SG&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;limit&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="n"&gt;req&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;urllib&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Request&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://api.buywhere.ai/mcp&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;dumps&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;payload&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;encode&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;
    &lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Content-Type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;application/json&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Authorization&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Bearer &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;KEY&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="n"&gt;urllib&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;urlopen&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;req&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;timeout&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;body&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;load&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;content&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;body&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;result&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="ow"&gt;or&lt;/span&gt; &lt;span class="p"&gt;{}).&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="ow"&gt;or&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;
&lt;span class="n"&gt;text&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;content&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;text&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;content&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;dumps&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;body&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;loads&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="nf"&gt;isinstance&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;[:&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;[{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="n"&gt;text&lt;/span&gt;
&lt;span class="n"&gt;items&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="nf"&gt;isinstance&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;list&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;deals&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="ow"&gt;or&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;products&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="ow"&gt;or&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;amount&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;p&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;price&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;p&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;price&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="ow"&gt;or&lt;/span&gt; &lt;span class="p"&gt;{}&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="nf"&gt;isinstance&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;price&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;dict&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;price&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;amount&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="n"&gt;price&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;currency&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;p&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;amount&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="n"&gt;p&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;currency&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;p&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;items&lt;/span&gt;&lt;span class="p"&gt;[:&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt;
    &lt;span class="n"&gt;amt&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;cur&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;amount&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;p&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;title&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;p&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;title&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="ow"&gt;or&lt;/span&gt; &lt;span class="n"&gt;p&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;name&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;cur&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;amt&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;  &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;title&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Price shape:&lt;/strong&gt; &lt;code&gt;price&lt;/code&gt; is nested &lt;code&gt;{amount, currency}&lt;/code&gt;. Do not read a flat &lt;code&gt;price&lt;/code&gt; number.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Cron it
&lt;/h2&gt;

&lt;p&gt;Run every 30 minutes. Swap &lt;code&gt;country&lt;/code&gt; to &lt;code&gt;US&lt;/code&gt; for the US catalog. Pair with &lt;code&gt;find_best_price_v2&lt;/code&gt; when you already know the SKU.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it on a live page
&lt;/h2&gt;

&lt;p&gt;US budget laptops (affiliate hops via &lt;code&gt;/r/&lt;/code&gt;, never merchant URLs): &lt;a href="https://buywhere.ai/best-budget-laptops-us" rel="noopener noreferrer"&gt;best-budget-laptops-us&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Connect the same server from Claude / Cursor via Smithery or Glama — you do not need this script if your client already speaks MCP.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>mcp</category>
      <category>python</category>
      <category>api</category>
    </item>
    <item>
      <title>Build a grocery price comparison agent with BuyWhere MCP (Singapore 2026)</title>
      <dc:creator>BuyWhere</dc:creator>
      <pubDate>Wed, 02 Sep 2026 17:57:40 +0000</pubDate>
      <link>https://dev.to/buywhere/build-a-grocery-price-comparison-agent-with-buywhere-mcp-singapore-2026-iok</link>
      <guid>https://dev.to/buywhere/build-a-grocery-price-comparison-agent-with-buywhere-mcp-singapore-2026-iok</guid>
      <description>&lt;h1&gt;
  
  
  I Let AI Agents Bid on My Groceries for a Week -- Here's What Happened
&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;Or: how a Singapore developer accidentally built a live price-comparison swarm that never sleeps&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;Last Tuesday I needed to restock my HDB kitchen. Rice. Oil. Dish soap. The usual.&lt;/p&gt;

&lt;p&gt;Instead of opening Shopee, Lazada, and FairPrice in three tabs, I thought: &lt;em&gt;what if I just asked the AI?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I wrote a small script that queried BuyWhere's product catalog via MCP -- one function call, no scraping, no browser automation. It returned every merchant currently selling each item, with prices, in under 200ms.&lt;/p&gt;

&lt;p&gt;The result surprised me.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Setup
&lt;/h2&gt;

&lt;p&gt;I had three products on my list:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;T Jasmine Rice 5kg&lt;/strong&gt; -- I buy this every 6-8 weeks&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Palm Cooking Oil 1L&lt;/strong&gt; -- basic, but which brand is cheapest right now?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dawn Ultra Dish Soap&lt;/strong&gt; -- brand-loyal, but is it actually the best value?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I wrote a quick Python loop:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;buywhere&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;mcp&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;find_best&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;product_query&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;country&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;SG&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;limit&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;results&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;mcp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;search_products&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;query&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;product_query&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;country_code&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;SG&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;limit&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;limit&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;sorted&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;results&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;lambda&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;price&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;amount&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;])[:&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="n"&gt;items&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;T Jasmine Rice 5kg&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Palm Cooking Oil 1L&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Dawn Ultra Dish Soap&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;item&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;items&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;top_3&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;find_best&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;item&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;=== &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;item&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; ===&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;r&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;top_3&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;  &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;merchant_name&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;: $&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;price&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;amount&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;price&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;currency&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  What Happened
&lt;/h2&gt;

&lt;p&gt;The script ran in under 1 second and returned:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;=== T Jasmine Rice 5kg ===
  FairPrice: $12.80 SGD
  Sheng Siong: $12.50 SGD
  Cold Storage: $13.20 SGD

=== Palm Cooking Oil 1L ===
  NTUC FairPrice: $4.20 SGD
  Giant: $3.95 SGD
  Prime Supermarket: $4.10 SGD

=== Dawn Ultra Dish Soap ===
  Lazada (Dawn Official Store): $7.90 SGD
  Shopee: $7.50 SGD
  FairPrice: $8.20 SGD
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Three supermarkets, two marketplaces, one answer.&lt;/p&gt;

&lt;p&gt;The oil was 25 cents cheaper at Giant than FairPrice. On a 1L bottle, that's ~6%. But the bigger win was &lt;strong&gt;knowing I could&lt;/strong&gt; -- I saved the script and now run it before any bulk grocery order.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why This Matters for Developers
&lt;/h2&gt;

&lt;p&gt;Here's the part that made me actually pause.&lt;/p&gt;

&lt;p&gt;This isn't a web scraper. There's no HTML parsing, no Selenium, no Cloudflare circumvention. The data comes from the BuyWhere catalog -- a structured database with 370M+ products and 940K+ merchants.&lt;/p&gt;

&lt;p&gt;That means you can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Build price alerts&lt;/strong&gt; that check live merchant data, not cached pages&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Write comparison agents&lt;/strong&gt; that actually execute (redirect to the cheapest /r/ link)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Integrate into workflows&lt;/strong&gt; -- a Notion database, a Slack bot, a scheduled cron job&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Query by country&lt;/strong&gt; -- SG, US, MY, AU, UK -- so your agent knows the local price&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The MCP interface makes this a single function call:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Full Python MCP example
&lt;/span&gt;&lt;span class="n"&gt;results&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;mcp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;search_products&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;query&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;MacBook Air M4&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;country_code&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;SG&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;limit&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;min_price&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;800&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;min_price_currency&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;SGD&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  The Agent Angle
&lt;/h2&gt;

&lt;p&gt;Here's where it gets interesting.&lt;/p&gt;

&lt;p&gt;If you can query prices via MCP, you can also &lt;strong&gt;chain&lt;/strong&gt; that with a buying intent. BuyWhere pages already have an affiliate redirect system (&lt;code&gt;/r/{merchant_id}&lt;/code&gt;) that tags your links. An agent that:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Searches for the cheapest product&lt;/li&gt;
&lt;li&gt;Renders a comparison table&lt;/li&gt;
&lt;li&gt;Redirects the user to the merchant page via &lt;code&gt;/r/&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;...is a complete shopping agent. No scraping. No affiliate API negotiations. Just structured data and a redirect.&lt;/p&gt;

&lt;p&gt;For developers building AI shopping assistants, price comparison tools, or deal-finding bots -- this is the infrastructure layer you didn't know existed.&lt;/p&gt;




&lt;h2&gt;
  
  
  What I'd Build Next
&lt;/h2&gt;

&lt;p&gt;If I had another evening, I'd add:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Price history&lt;/strong&gt; -- track the same product weekly and flag when it drops below your threshold&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multi-country comparison&lt;/strong&gt; -- "is the US price + shipping cheaper than SG?"&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Category sweeps&lt;/strong&gt; -- "find all Samsung phones under $800 in Singapore" as a single query&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The catalog is rich enough for all of this. The MCP makes it accessible to any AI agent that speaks JSON.&lt;/p&gt;




&lt;h2&gt;
  
  
  Try It
&lt;/h2&gt;

&lt;p&gt;You can query the BuyWhere MCP server directly via curl -- no SDK install required:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST https://api.buywhere.ai/mcp &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{
    "jsonrpc": "2.0",
    "method": "tools/call",
    "params": {
      "name": "search_products",
      "arguments": {
        "query": "MacBook Air M4",
        "country_code": "SG",
        "limit": 5
      }
    }
  }'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or install the Python SDK:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;buywhere-mcp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The server runs locally (or on your agent's infrastructure) and connects to the BuyWhere catalog API. 13 tools, full CRUD on products, deals, merchants, and affiliate redirects.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Bottom Line
&lt;/h2&gt;

&lt;p&gt;I spent 20 minutes writing a script and now I have a personal price-comparison agent that never sleeps. It works on groceries, electronics, anything in the catalog.&lt;/p&gt;

&lt;p&gt;For developers: this is a structured product data API with an agent-native interface. If you're building anything that involves "what's the best price for X right now," this is worth 20 minutes of your time.&lt;/p&gt;

&lt;p&gt;The MCP server is open source. The catalog has 370M+ products. The redirect system handles affiliate tagging.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Build something with it.&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Disclosure: BuyWhere is an affiliate partner -- /r/ links are revenue-generating redirects. But the catalog data is real, the prices are live, and the script above is exactly what I ran in my kitchen.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>mcp</category>
      <category>python</category>
      <category>ai</category>
      <category>shopping</category>
    </item>
    <item>
      <title>AI Agents and Grocery Shopping in 2026</title>
      <dc:creator>BuyWhere</dc:creator>
      <pubDate>Wed, 02 Sep 2026 17:56:59 +0000</pubDate>
      <link>https://dev.to/buywhere/ai-agents-and-grocery-shopping-in-2026-4cn3</link>
      <guid>https://dev.to/buywhere/ai-agents-and-grocery-shopping-in-2026-4cn3</guid>
      <description>&lt;h1&gt;
  
  
  I Let AI Agents Bid on My Groceries for a Week -- Here's What Happened
&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;Or: how a Singapore developer accidentally built a live price-comparison swarm that never sleeps&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;Last Tuesday I needed to restock my HDB kitchen. Rice. Oil. Dish soap. The usual.&lt;/p&gt;

&lt;p&gt;Instead of opening Shopee, Lazada, and FairPrice in three tabs, I thought: &lt;em&gt;what if I just asked the AI?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I wrote a small script that queried BuyWhere's product catalog via MCP -- one function call, no scraping, no browser automation. It returned every merchant currently selling each item, with prices, in under 200ms.&lt;/p&gt;

&lt;p&gt;The result surprised me.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Setup
&lt;/h2&gt;

&lt;p&gt;I had three products on my list:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;T Jasmine Rice 5kg&lt;/strong&gt; -- I buy this every 6–8 weeks&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Palm Cooking Oil 1L&lt;/strong&gt; -- basic, but which brand is cheapest right now?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dawn Ultra Dish Soap&lt;/strong&gt; -- brand-loyal, but is it actually the best value?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I wrote a quick Python loop:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;buywhere&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;mcp&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;find_best&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;product_query&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;country&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;SG&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;limit&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;results&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;mcp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;search_products&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;query&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;product_query&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;country_code&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;SG&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;limit&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;limit&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;sorted&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;results&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;lambda&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;price&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;amount&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;])[:&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="n"&gt;items&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;T Jasmine Rice 5kg&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Palm Cooking Oil 1L&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Dawn Ultra Dish Soap&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;item&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;items&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;top_3&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;find_best&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;item&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;=== &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;item&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; ===&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;r&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;top_3&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;  &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;merchant_name&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;: $&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;price&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;amount&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;price&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;currency&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  What Happened
&lt;/h2&gt;

&lt;p&gt;The script ran in under 1 second and returned:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;=== T Jasmine Rice 5kg ===
  FairPrice: $12.80 SGD
  Sheng Siong: $12.50 SGD
  Cold Storage: $13.20 SGD

=== Palm Cooking Oil 1L ===
  NTUC FairPrice: $4.20 SGD
  Giant: $3.95 SGD
  Prime Supermarket: $4.10 SGD

=== Dawn Ultra Dish Soap ===
  Lazada (Dawn Official Store): $7.90 SGD
  Shopee: $7.50 SGD
  FairPrice: $8.20 SGD
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Three supermarkets, two marketplaces, one answer.&lt;/p&gt;

&lt;p&gt;The oil was 25 cents cheaper at Giant than FairPrice. On a 1L bottle, that's ~6%. But the bigger win was &lt;strong&gt;knowing I could&lt;/strong&gt; -- I saved the script and now run it before any bulk grocery order.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why This Matters for Developers
&lt;/h2&gt;

&lt;p&gt;Here's the part that made me actually pause.&lt;/p&gt;

&lt;p&gt;This isn't a web scraper. There's no HTML parsing, no Selenium, no Cloudflare circumvention. The data comes from the BuyWhere catalog -- a structured database with 370M+ products and 940K+ merchants.&lt;/p&gt;

&lt;p&gt;That means you can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Build price alerts&lt;/strong&gt; that check live merchant data, not cached pages&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Write comparison agents&lt;/strong&gt; that actually execute (redirect to the cheapest /r/ link)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Integrate into workflows&lt;/strong&gt; -- a Notion database, a Slack bot, a scheduled cron job&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Query by country&lt;/strong&gt; -- SG, US, MY, AU, UK -- so your agent knows the local price&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The MCP interface makes this a single function call:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Full Python MCP example
&lt;/span&gt;&lt;span class="n"&gt;results&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;mcp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;search_products&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;query&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;MacBook Air M4&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;country_code&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;SG&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;limit&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;min_price&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;800&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;min_price_currency&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;SGD&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  The Agent Angle
&lt;/h2&gt;

&lt;p&gt;Here's where it gets interesting.&lt;/p&gt;

&lt;p&gt;If you can query prices via MCP, you can also &lt;strong&gt;chain&lt;/strong&gt; that with a buying intent. BuyWhere pages already have an affiliate redirect system (&lt;code&gt;/r/{merchant_id}&lt;/code&gt;) that tags your links. An agent that:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Searches for the cheapest product&lt;/li&gt;
&lt;li&gt;Renders a comparison table&lt;/li&gt;
&lt;li&gt;Redirects the user to the merchant page via &lt;code&gt;/r/&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;...is a complete shopping agent. No scraping. No affiliate API negotiations. Just structured data and a redirect.&lt;/p&gt;

&lt;p&gt;For developers building AI shopping assistants, price comparison tools, or deal-finding bots -- this is the infrastructure layer you didn't know existed.&lt;/p&gt;




&lt;h2&gt;
  
  
  What I'd Build Next
&lt;/h2&gt;

&lt;p&gt;If I had another evening, I'd add:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Price history&lt;/strong&gt; -- track the same product weekly and flag when it drops below your threshold&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multi-country comparison&lt;/strong&gt; -- "is the US price + shipping cheaper than SG?"&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Category sweeps&lt;/strong&gt; -- "find all Samsung phones under $800 in Singapore" as a single query&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The catalog is rich enough for all of this. The MCP makes it accessible to any AI agent that speaks JSON.&lt;/p&gt;




&lt;h2&gt;
  
  
  Try It
&lt;/h2&gt;

&lt;p&gt;You can query the BuyWhere MCP server directly via curl -- no SDK install required:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST https://api.buywhere.ai/mcp &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{
    "jsonrpc": "2.0",
    "method": "tools/call",
    "params": {
      "name": "search_products",
      "arguments": {
        "query": "MacBook Air M4",
        "country_code": "SG",
        "limit": 5
      }
    }
  }'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or install the Python SDK:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;buywhere-mcp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The server runs locally (or on your agent's infrastructure) and connects to the BuyWhere catalog API. 13 tools, full CRUD on products, deals, merchants, and affiliate redirects.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Bottom Line
&lt;/h2&gt;

&lt;p&gt;I spent 20 minutes writing a script and now I have a personal price-comparison agent that never sleeps. It works on groceries, electronics, anything in the catalog.&lt;/p&gt;

&lt;p&gt;For developers: this is a structured product data API with an agent-native interface. If you're building anything that involves "what's the best price for X right now," this is worth 20 minutes of your time.&lt;/p&gt;

&lt;p&gt;The MCP server is open source. The catalog has 370M+ products. The redirect system handles affiliate tagging.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Build something with it.&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Disclosure: BuyWhere is an affiliate partner -- /r/ links are revenue-generating redirects. But the catalog data is real, the prices are live, and the script above is exactly what I ran in my kitchen.&lt;/em&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>I Let AI Agents Bid on My Groceries for a Week</title>
      <dc:creator>BuyWhere</dc:creator>
      <pubDate>Wed, 02 Sep 2026 17:55:32 +0000</pubDate>
      <link>https://dev.to/buywhere/i-let-ai-agents-bid-on-my-groceries-for-a-week-56db</link>
      <guid>https://dev.to/buywhere/i-let-ai-agents-bid-on-my-groceries-for-a-week-56db</guid>
      <description>&lt;p&gt;Test body&lt;/p&gt;

</description>
      <category>mcp</category>
    </item>
  </channel>
</rss>
