The Problem with AI Shopping Today
AI assistants are terrible at shopping. Ask them to find the cheapest OLED TV in Singapore and they'll either hallucinate prices or give you generic advice about "comparing retailers online." Meanwhile, actually finding that TV would take you 45 minutes across five different websites.
This isn't the AI's fault. It's a data problem.
Shopping requires real-time product data from multiple retailers: current prices, stock status, shipping costs, product specifications, reviews. Getting this data reliably is notoriously difficult. Retailers change their websites constantly, implement anti-bot measures, and use incompatible data formats.
The result is that every team building AI commerce capabilities ends up rebuilding the same integration work—scrapers that break, normalization logic that decays, rate limiting that causes failures. It's commodity work that happens to be frustrating.
Enter BuyWhere MCP
BuyWhere MCP is a Model Context Protocol server that gives AI agents direct access to a unified product catalog. Instead of building and maintaining scrapers for each retailer, agents get a single interface that handles:
- Multi-retailer search across all integrated platforms
- Price comparison with shipping factored in
- Product details with standardized specifications
- Availability checking with real-time stock status
The key architectural principle: your AI agent talks to BuyWhere MCP, and BuyWhere MCP handles everything else. No retailer credentials in your agent code. No scraping logic. No normalization code. Just a clean tool interface.
Quick Start
Installation
npx @buywhere/mcp-server
That's it—no npm install needed for the server itself, though you'll want the MCP SDK for your agent.
Configuration
Add to your AI agent's MCP configuration:
{
"mcpServers": {
"buywhere": {
"command": "npx",
"args": ["@buywhere/mcp-server"]
}
}
}
Available Tools
| Tool | Description | Parameters |
|---|---|---|
search_products |
Search across all retailers |
query, region, category, limit
|
compare_products |
Compare prices for specific products |
product_ids, region
|
get_product_details |
Get full product information |
product_id, region
|
get_price_history |
Track price changes over time |
product_id, days
|
The search_products tool is your starting point for most use cases. It searches the entire unified catalog and returns normalized results sorted by relevance.
Code Example
Here's a complete example of a shopping agent that finds the best deal:
import { mcp } from "@modelcontextprotocol/sdk";
// Initialize BuyWhere MCP client
const buywhere = mcp.client("buywhere");
async function findBestDeal(productQuery, region = "sg") {
// Search all retailers at once
const searchResults = await buywhere.callTool("search_products", {
query: productQuery,
region,
limit: 20
});
// Get detailed info and pricing for top matches
const productIds = searchResults.products.map(p => p.id);
const comparisons = await buywhere.callTool("compare_products", {
product_ids: productIds,
region
});
// Sort by total price (including shipping)
return comparisons.products
.sort((a, b) => (a.price + a.shipping) - (b.price + b.shipping))
.slice(0, 5);
}
const bestLaptops = await findBestDeal("ASUS ROG laptop 2024", "sg");
console.log(bestLaptops);
Note what this code doesn't contain: no retailer-specific logic, no scraping, no data normalization. The agent just calls tools and processes results.
Supported Regions
Currently in production:
- 🇸🇬 Singapore (sg)
- 🇲🇾 Malaysia (my) — beta
- 🇹🇭 Thailand (th) — beta
Singapore is the primary region with full coverage across major retailers. Malaysia and Thailand are in beta with selected retailers.
Why MCP?
Model Context Protocol provides a standardized way for AI agents to interact with external tools. By implementing BuyWhere as an MCP server, we get several benefits:
Compatibility: Works with any MCP-compatible AI agent or framework. Your agent isn't locked into a specific provider or SDK.
Standardization: Same interface regardless of which AI model you're using. Claude, GPT-4, Llama—same BuyWhere calls work everywhere.
Security: No need to expose retailer credentials to the AI agent. The agent gets data, not access to retailer systems.
Reliability: Centralized error handling and retry logic. If a request fails, BuyWhere retries with backoff before returning an error.
Architecture Notes
For those interested in how it works:
BuyWhere MCP maintains connections to multiple retailer data sources—scrapers, official APIs, and data partnerships. When you call search_products, the server:
- Normalizes your query across all sources
- Executes searches in parallel
- Collects and normalizes results
- Deduplicates products that appear on multiple retailers
- Returns unified results
This parallel execution is key. Instead of sequential retailer queries that take 5+ seconds, you get results in under a second.
Roadmap
Coming soon:
Natural language filtering: "Find laptops under S$2000 with at least 16GB RAM" — the server will handle the translation to structured filters.
Price alerts: Monitor specific products and notify when prices drop below a threshold. Persistent monitoring across sessions.
Review aggregation: Sentiment analysis and key theme extraction across retailer reviews. "What do users complain about most?"
Multi-region comparison: Compare prices across Southeast Asia. Find if it's cheaper to ship from Malaysia to Singapore.
Inventory matching: Find products that are in stock now across nearby retailers.
Get Started
The server is available on npm. Check the GitHub repository for detailed documentation, example agents, and contribution guidelines.
For teams building AI commerce applications, BuyWhere MCP is the foundation that lets you focus on the AI—building intelligent recommendations, natural language interfaces, personalized shopping experiences—rather than the data pipeline.
The boring part is solved. Build the interesting part.
Start building with BuyWhere
Connect your agent to live product search and MCP tools in minutes instead of maintaining merchant scrapers.
Top comments (0)