
Connects your AI agent to 50M+ products across Singapore, Southeast Asia, and US markets through six core tools: search_products for catalog queries with filters on price and category, get_product for full specs and pricing, compare_prices for side-by-side analysis, get_price for real-time merchant data, get_affiliate_link for tracked URLs, and get_catalog for browsing taxonomy. Built on the BuyWhere API with multi-currency support and coverage of Lazada, Shopee, Amazon, and regional retailers. Reach for this when you're building shopping assistants, price comparison agents, or deal finders that need structured product data instead of web scraping. Supports both stdio and streamable HTTP transports. Requires a free API key from buywhere.ai.
claude mcp add --transport http buywhere-mcp https://api.buywhere.ai/mcpRun in your terminal. Add --scope user to make it available in every project.
Review the command, arguments, and environment values before installing — MCP servers run with your local permissions.
Verified live against the running server on Jun 10, 2026.
search_productsSearch the BuyWhere product catalog by keyword. Returns products from e-commerce platforms across multiple regions (Singapore, US, etc.). Use compact=true for agent-optimized responses with structured_specs, comparison_attributes, and normalized_price_usd fields.11 paramsSearch the BuyWhere product catalog by keyword. Returns products from e-commerce platforms across multiple regions (Singapore, US, etc.). Use compact=true for agent-optimized responses with structured_specs, comparison_attributes, and normalized_price_usd fields.
categorystringcompactbooleancountrystringcountry_codestringSG · US · VN · TH · MYdomainstringlimitintegermax_pricenumbermin_pricenumberoffsetintegerqstringregionstringget_productGet a specific product by its ID, including full details and current price.1 paramsGet a specific product by its ID, including full details and current price.
id*stringcompare_productsCompare multiple products side-by-side. Returns price, brand, rating, and category for each.1 paramsCompare multiple products side-by-side. Returns price, brand, rating, and category for each.
ids*arrayget_dealsGet discounted products sorted by discount percentage. Returns products with original price and discount percentage. Supports currency, region (sea, us, eu, au) and country (SG, US, VN, MY, ...) filters.7 paramsGet discounted products sorted by discount percentage. Returns products with original price and discount percentage. Supports currency, region (sea, us, eu, au) and country (SG, US, VN, MY, ...) filters.
countrystringcountry_codestringSG · US · VN · TH · MYcurrencystringlimitintegermin_discountnumberoffsetintegerregionstringlist_categoriesList top-level product categories available in the BuyWhere catalog.2 paramsList top-level product categories available in the BuyWhere catalog.
countrystringcountry_codestringSG · US · VN · TH · MYfind_best_priceUse this whenever a user asks about prices, wants to find the cheapest option, or asks "what's the best price for X" or "where can I buy X for the lowest price". This finds the best current price across all merchants.5 paramsUse this whenever a user asks about prices, wants to find the cheapest option, or asks "what's the best price for X" or "where can I buy X for the lowest price". This finds the best current price across all merchants.
categorystringcountrystringcountry_codestringSG · MY · TH · PH · VN · IDproduct_name*stringregionstringus · seaingest_productsIngest (upsert) a batch of products into the BuyWhere catalog. Use this to add or update product listings from any merchant/source. Requires a valid API key with ingest permissions. Accepts up to 1000 products per call with source, SKU, title, price, URL, and optional metadata.2 paramsIngest (upsert) a batch of products into the BuyWhere catalog. Use this to add or update product listings from any merchant/source. Requires a valid API key with ingest permissions. Accepts up to 1000 products per call with source, SKU, title, price, URL, and optional metadata.
products*arraysource*stringAI agents use BuyWhere to search 367M+ products across 932K+ merchants, compare prices, and discover deals in the United States and Singapore — with growing coverage across UK, EU, SEA, and AU — in real time.
# Agents: get a key with zero human steps (no email):
# curl -X POST "https://api.buywhere.ai/v1/auth/register?verify=false" \
# -H "Content-Type: application/json" -d '{"agent_name": "my-agent"}'
export BUYWHERE_API_KEY=bw_live_xxxx
npx -y @buywhere/mcp-server
Use with Claude Desktop, Cursor, VS Code Copilot, Cline, Windsurf, OpenCode, Codex, Continue.dev, and any MCP-compatible client.
Or get one in 3 seconds, no signup, no email: POST /v1/auth/register · Legacy form: buywhere.ai/api-keys
Join the "Build With BuyWhere" AI Agent Developer Challenge! Use the BuyWhere MCP server to create AI agents that search, compare, and recommend products across the United States and Singapore — with growing coverage across UK, EU, SEA, and AU.
Product search API for AI agents via Model Context Protocol. Built for AI agent commerce, not store management.
Official MCP Registry listing: io.github.BuyWhere/buywhere-mcp
Works with Claude Desktop, Cursor, VS Code Copilot, Cline, Windsurf, OpenCode, Codex, Continue.dev, and any MCP-compatible client. Also supports Agent-to-Agent (A2A) protocol.

44-second demo: product search, deal discovery, price comparison, and multi-region support.
User: "Find me wireless earbuds under $50 available in Singapore"
Agent: [calls search_products → returns 5 matching products]
User: "Compare the top 3"
Agent: [calls compare_prices → side-by-side with best-value pick]
Get a key in 3 seconds — no signup, no email:
# 1. Register (one call, returns api_key instantly)
curl -X POST https://api.buywhere.ai/v1/auth/register \
-H "Content-Type: application/json" \
-d '{"agent_name":"your-agent"}'
# → {"api_key":"bw_...","tier":"unverified","rate_limit":{"rpm":20,"daily":1000}}
# 2. Use the key
export BUYWHERE_API_KEY=bw_...
npx -y @buywhere/mcp-server
# 3. Call v2 tools — always pass deliver_to
search_products_v2({ query: "robot vacuum", deliver_to: "SG" })
find_best_price_v2({ query: "iphone 16", deliver_to: "US" })
Legacy email signup (60s, manual approval) → buywhere.ai/api-keys
Read the BuyWhere Engineering Blog for deep dives on MCP architecture, agent commerce, and the ecosystem.
Also follow the BuyWhere Hashnode blog mirror for the same engineering content on Hashnode.
| Tool | Description |
|---|---|
search_products | Search catalog by keyword, category, price, region |
get_product | Full product details by ID (prices, specs, images) |
compare_prices | Side-by-side comparison of 2–5 products |
get_price | Current prices across all merchants for one product |
get_affiliate_link | Click-tracked affiliate URL for a product |
get_catalog | Available product category taxonomy |
deliver_to RequiredThe v2 tool surface requires an end-user country code (deliver_to) on every search,
price, and deals call so results are ranked for shippable products in that market.
Calls without deliver_to return error -32602 INVALID_PARAMETER.
| Tool | Required Params | Description |
|---|---|---|
search_products_v2 | query, deliver_to | Search catalog filtered to end-user's market (SG, US, MY, etc.) |
get_product_v2 | product_id | Full product details with per-row availability for the scoped market |
compare_products_v2 | ids[] | Compare 2–10 products, scoped to a market via deliver_to |
find_best_price_v2 | query, deliver_to | Return the single cheapest shippable listing |
get_deals_v2 | deliver_to | All products with ≥20% price drops, filtered to shippable in market |
# v2 call — always include deliver_to (ISO 3166-1 alpha-2)
search_products_v2({ query: "robot vacuum", deliver_to: "SG" })
find_best_price_v2({ query: "iphone 16", deliver_to: "US" })
get_deals_v2({ deliver_to: "MY" })
# v1 is still available (legacy)
search_products({ query: "robot vacuum" })
Framework quickstarts:
Add to claude_desktop_config.json:
{
"mcpServers": {
"buywhere": {
"command": "npx",
"args": ["-y", "@buywhere/mcp-server"],
"env": { "BUYWHERE_API_KEY": "bw_live_xxxx" }
}
}
}
Add to your MCP settings file:
{
"mcpServers": {
"buywhere": {
"command": "npx",
"args": ["-y", "@buywhere/mcp-server"],
"env": { "BUYWHERE_API_KEY": "bw_live_xxxx" }
}
}
}
Add to ~/.windsurf/mcp.json:
{
"mcpServers": {
"buywhere": {
"command": "npx",
"args": ["-y", "@buywhere/mcp-server"],
"env": { "BUYWHERE_API_KEY": "bw_live_xxxx" }
}
}
}
Add to opencode.json:
{
"mcpServers": {
"buywhere": {
"command": "npx",
"args": ["-y", "@buywhere/mcp-server"],
"env": { "BUYWHERE_API_KEY": "bw_live_xxxx" }
}
}
}
Add to ~/.continue/config.json:
{
"experimental": {
"mcpServers": {
"buywhere": {
"command": "npx",
"args": ["-y", "@buywhere/mcp-server"],
"env": { "BUYWHERE_API_KEY": "bw_live_xxxx" }
}
}
}
}
Mastra is a TypeScript-first AI agent framework with native MCP support.
npm install @mastra/core @mastra/mcp
import { Mastra } from '@mastra/core';
import { MastraMCPClient } from '@mastra/mcp';
const buywhere = new MastraMCPClient({
name: 'buywhere',
server: {
url: new URL('https://api.buywhere.ai/mcp'),
requestInit: {
headers: { 'Authorization': `Bearer ${process.env.BUYWHERE_API_KEY}` },
},
},
});
const agent = new Mastra({
agents: {
shoppingAgent: {
instructions: 'You are a shopping assistant. Use BuyWhere to find and compare products.',
tools: await buywhere.tools(),
},
},
});
const result = await agent.agents.shoppingAgent.generate(
'Find me the best deal on a Sony WH-1000XM5 in Singapore'
);
Full guide: BuyWhere + Mastra Integration
Use BuyWhere tools in LangChain agents via the MCP adapter:
from langchain_mcp_adapters.client import MultiServerMCPClient
from langgraph.prebuilt import create_react_agent
from langchain_anthropic import ChatAnthropic
async def main():
async with MultiServerMCPClient({
"buywhere": {
"url": "https://api.buywhere.ai/mcp",
"transport": "streamable_http",
"headers": {"Authorization": f"Bearer {BUYWHERE_API_KEY}"},
}
}) as client:
tools = await client.get_tools()
agent = create_react_agent(ChatAnthropic(model="claude-sonnet-4-5"), tools)
result = await agent.ainvoke({"messages": [("user", "Find the cheapest Sony headphones in Singapore")]})
Connect BuyWhere via LlamaIndex MCP client:
from llama_index.tools.mcp import BasicMCPClient, McpToolSpec
from llama_index.agent.openai import OpenAIAgent
async def main():
mcp_client = BasicMCPClient(
command_or_url="https://api.buywhere.ai/mcp",
headers={"Authorization": f"Bearer {BUYWHERE_API_KEY}"},
)
mcp_tool_spec = McpToolSpec(client=mcp_client)
tools = mcp_tool_spec.to_tool_list()
agent = OpenAIAgent.from_tools(tools)
response = await agent.achat("Compare prices for iPhone 16 Pro across US and Singapore")
Use BuyWhere in a CrewAI agent with MCP tool integration:
from crewai import Agent, Task, Crew
from crewai_tools import MCPServerAdapter
buywhere_server = MCPServerAdapter(
server_params={
"url": "https://api.buywhere.ai/mcp",
"headers": {"Authorization": f"Bearer {BUYWHERE_API_KEY}"},
"transport": "streamable-http",
}
)
shopping_agent = Agent(
role="Shopping Research Analyst",
goal="Find the best deals across US and Singapore markets (UK, EU, SEA, and AU expanding)",
tools=[buywhere_server],
)
task = Task(
description="Find the best price for Sony WH-1000XM5 headphones across all available markets",
agent=shopping_agent,
expected_output="Product comparison with prices and merchant links",
)
crew = Crew(agents=[shopping_agent], tasks=[task])
result = crew.kickoff()
| Variable | Default | Description |
|---|---|---|
BUYWHERE_API_KEY | (required) | API key (no signup: POST /v1/auth/register {"agent_name":"<name>"}) — returns instantly, no email verification |
BUYWHERE_API_URL | https://api.buywhere.ai/mcp | Custom API base URL |
v2 tools require
deliver_to— on the v2 surface (search, find_best_price, get_deals), every call must include the end-user's ISO 3166-1 alpha-2 country code so results are ranked for shippable products. Omitting it returns error-32602 INVALID_PARAMETER.
# Run directly (no install)
npx -y @buywhere/mcp-server
# Install globally
npm install -g @buywhere/mcp-server
buywhere-mcp
Developer's AI Agent (Claude, Cursor, etc.)
│
├── MCP Protocol (stdio or streamable-http)
│
├── @buywhere/mcp-server
│ ├── search_products_v2(q, deliver_to) # v2: requires deliver_to
│ ├── get_product_v2(product_id)
│ ├── compare_products_v2(ids[], deliver_to)
│ ├── find_best_price_v2(q, deliver_to) # v2: requires deliver_to
│ ├── get_deals_v2(deliver_to) # v2: requires deliver_to
│ ├── get_product(product_id) # v1: still available
│ ├── compare_prices(product_ids[])
│ └── get_catalog()
│
└── BuyWhere API (api.buywhere.ai)
└── Product catalog across US and Singapore merchants (UK, EU, SEA, and AU expanding)
git clone https://github.com/BuyWhere/buywhere-mcp.git
cd buywhere-mcp
npm install
npm run build
npm start
BuyWhere is a product search API for AI agents. We aggregate 367M+ products from 932K+ merchants in the United States and Singapore — with growing coverage across UK, EU, SEA, and AU — into a single, agent-friendly interface. No store management, no Shopify integration. Just search and compare products in real time.
These complementary MCP packages extend BuyWhere into powerful multi-tool workflows:
| Protocol | Support |
|---|---|
| MCP (Model Context Protocol) | Full support — 11 tools (6 v1 + 5 v2), stdio + streamable-http transports |
| A2A (Agent-to-Agent) | Multi-agent task delegation — Agent Card |
See CONTRIBUTING.md for how to report issues, submit PRs, and suggest features.
Learn more about MCP servers and the BuyWhere ecosystem:
If you find this project useful:
MIT