BuyWhere Catalog MCP Server
OfficialThe BuyWhere MCP server enables AI agents to search, compare, and discover product deals across 11M+ products in Singapore, Southeast Asia, and US markets in real-time.
Search Products (
search_products): Find products using keywords or natural language queries, with optional filters for country, category, price range, and result limitGet Product Details (
get_product): Retrieve full product info for a single item by its BuyWhere product ID, including prices, specs, and imagesGet Prices (
get_price): Fetch current prices across all available merchants, ranked by price with shipping info, merchant ratings, and stock statusCompare Products (
compare_prices): Side-by-side comparison of 2–5 products with structured differentiators, pros/cons, price ranges, and a best-value recommendationGet Affiliate Link (
get_affiliate_link): Generate a click-tracked affiliate URL that redirects to the merchant pageBrowse Catalog (
get_catalog): Explore available product category taxonomy (top-level and subcategories) to guide searches and filters
This makes it suitable for building AI shopping agents that can recommend, compare, and link to products across retailers like Lazada, Shopee, Amazon, and local merchants.
BuyWhere MCP Server — Product Search & Price Comparison for AI Agents
AI agents use BuyWhere to search products, compare prices, and discover deals across Singapore and US merchants in real time.
Install in 30 Seconds
export BUYWHERE_API_KEY=bw_live_xxxx
npx -y @buywhere/mcp-serverUse with Claude Desktop, Cursor, VS Code Copilot, Cline, Windsurf, OpenCode, Codex, Continue.dev, and any MCP-compatible client.
Related MCP server: Godalo
AI Agents: Use This Package To
Search products across Singapore, US, Malaysia, Thailand, and Vietnam markets by keyword, category, or price range
Compare products across Lazada, Shopee, Amazon, and local retailers in a single query
Find deals and track real-time pricing with multi-currency support
Build shopping agents that recommend, compare, and link to products programmatically
Discover product catalogs with structured taxonomy for supported markets
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.
Demo

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_products → side-by-side with best-value pick]Quick Start
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-serverLegacy email signup (60s, manual approval) → buywhere.ai/api-keys
Tutorials
Part 1: MCP for Ecommerce — The Missing Infrastructure Layer for AI Agent Shopping — Architecture and why agents need a product catalog API
Part 2: Build a Real Shopping Agent in 15 Minutes — Hands-on: set up MCP server, search products, compare prices, build a working agent
From the Blog
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.
MCP for Ecommerce 2026 — How AI agents search real products, compare prices across markets, and why MCP is the standard
Building Production MCP Servers — Architecture, tool design patterns, and distribution (verified ~1,050 npm downloads/month)
MCP Server Ecosystem 2026 — Every MCP category mapped (4,800+ servers across 40+ domains)
AI Agent Commerce: Missing Infrastructure — Why shopping is the last unbuilt layer of the agent-native economy
Cross-Border Price Comparison Tutorial — Build a shopping agent in 10 minutes with BuyWhere MCP
Tools
Tool | Description |
| Search catalog by keyword, category, price, country |
| Full product details by ID (prices, specs, images) |
| Side-by-side comparison of 2–10 products |
| Cheapest deliverable listing for a product across merchants |
| Products with significant price drops |
| Available product category taxonomy |
| Similar products by vector similarity |
| Submit product URLs for catalog ingestion (agents/merchants) |
| v2 search; requires |
| v2 product details by ID |
| v2 comparison; optional |
| v2 deals; requires |
| v2 best price; requires |
Remote MCP: POST https://api.buywhere.ai/mcp (JSON-RPC 2.0, protocolVersion 2024-11-05, 13 tools). Glama listing: https://glama.ai/mcp/servers/BuyWhere/buywhere-mcp
MCP Client Configuration
Framework quickstarts:
CrewAI: API key · BuyWhere quickstart
Mastra: API key · BuyWhere quickstart
Claude Desktop
Add to claude_desktop_config.json:
{
"mcpServers": {
"buywhere": {
"command": "npx",
"args": ["-y", "@buywhere/mcp-server"],
"env": { "BUYWHERE_API_KEY": "bw_live_xxxx" }
}
}
}Cursor / VS Code / Cline
Add to your MCP settings file:
{
"mcpServers": {
"buywhere": {
"command": "npx",
"args": ["-y", "@buywhere/mcp-server"],
"env": { "BUYWHERE_API_KEY": "bw_live_xxxx" }
}
}
}Windsurf
Add to ~/.windsurf/mcp.json:
{
"mcpServers": {
"buywhere": {
"command": "npx",
"args": ["-y", "@buywhere/mcp-server"],
"env": { "BUYWHERE_API_KEY": "bw_live_xxxx" }
}
}
}OpenCode / Codex
Add to opencode.json:
{
"mcpServers": {
"buywhere": {
"command": "npx",
"args": ["-y", "@buywhere/mcp-server"],
"env": { "BUYWHERE_API_KEY": "bw_live_xxxx" }
}
}
}Continue.dev (VS Code / JetBrains)
Add to ~/.continue/config.json:
{
"experimental": {
"mcpServers": {
"buywhere": {
"command": "npx",
"args": ["-y", "@buywhere/mcp-server"],
"env": { "BUYWHERE_API_KEY": "bw_live_xxxx" }
}
}
}
}Mastra
Mastra is a TypeScript-first AI agent framework with native MCP support.
npm install @mastra/core @mastra/mcpimport { 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
LangChain
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")]})LlamaIndex
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 Singapore and US")CrewAI
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 Singapore and US markets",
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()Configuration
Variable | Default | Description |
| (required) | API key (no signup: |
|
| Custom API base URL |
Install
# Run directly (no install)
npx -y @buywhere/mcp-server
# Install globally
npm install -g @buywhere/mcp-server
buywhere-mcpUse Cases
Shopping agents — build AI agents that search, compare, recommend products across markets
Price comparison — multi-market pricing in a single query across Lazada, Shopee, Amazon, local retailers
Deal discovery — find best-value products with real-time pricing and inventory
Ecommerce automation — integrate product search into any MCP-compatible app
Cross-border commerce — compare prices between Singapore, US, Malaysia, Thailand, and Vietnam markets
Agent-to-Agent commerce — delegate shopping tasks between agents via A2A protocol
Architecture
Developer's AI Agent (Claude, Cursor, etc.)
│
├── MCP Protocol (stdio)
│
├── @buywhere/mcp-server
│ ├── search_products(q, category, min_price, max_price, country_code, deliver_to)
│ ├── get_product(product_id)
│ ├── compare_products(product_ids[])
│ ├── find_best_price(product_name, country_code, deliver_to)
│ ├── get_deals(country_code, deliver_to, category)
│ ├── list_categories()
│ ├── find_similar(product_id)
│ └── ingest_products(urls[])
│
└── BuyWhere API (api.buywhere.ai)
└── Product catalog across SG, US, MY, TH, and VN merchantsDevelopment
git clone https://github.com/BuyWhere/buywhere-mcp.git
cd buywhere-mcp
npm install
npm run build
npm startWhy BuyWhere?
BuyWhere is a product search API for AI agents. We aggregate product data from Singapore, US, Malaysia, Thailand, and Vietnam merchants into a single, agent-friendly interface — no store management, no Shopify integration. Just search and compare products in real time.
One API — all markets, all retailers
Agent-native — built for MCP from day one
Real-time — live pricing and availability
Developer-first — no SDK needed, just add the server
Works Well With
These complementary MCP packages extend BuyWhere into powerful multi-tool workflows:
@modelcontextprotocol/server-filesystem — Save shopping results and product research to your local filesystem. Combine with BuyWhere to export deal lists, price comparisons, and product specs as structured files.
@supabase/mcp-server-supabase — Store favorite products, user preferences, and price alerts in Supabase. Persist shopping history across agent sessions.
n8n-mcp — Automate price monitoring workflows. Build no-code pipelines that watch BuyWhere prices and trigger notifications on price drops.
tavily-mcp — Research products before buying. Use Tavily to find reviews and comparisons, then use BuyWhere to get current prices and purchase links.
@playwright/mcp — E2E test your shopping agent interactions. Verify that product search, price comparison, and checkout flows work correctly in browser automation.
Protocols
Protocol | Support |
MCP (Model Context Protocol) | Full support — 10 tools, stdio transport |
A2A (Agent-to-Agent) | Multi-agent task delegation — Agent Card |
Contributing
See CONTRIBUTING.md for how to report issues, submit PRs, and suggest features.
From the Blog
Learn more about MCP servers and the BuyWhere ecosystem:
MCP server discovery — Understanding the MCP server discovery gap
Building production MCP servers — Production best practices for MCP servers
MCP servers that earn their context window — MCP servers that maximize context window value
MCP ecommerce guide — Definitive guide to MCP for ecommerce
BuyWhere MCP launch — Announcing the BuyWhere MCP server launch
MCP server ecosystem 2026 — Complete guide to the MCP server ecosystem in 2026
Support
If you find this project useful:
⭐ Star the repo — it helps others discover BuyWhere
🐛 Open an issue for bugs or feature requests
💬 Start a discussion for questions or ideas
📣 Share it with other developers who build AI agent tools
License
MIT
Available Tools
6 toolscompare_pricesA
Compare 2–5 products side-by-side. Returns structured differentiators, price range, pros/cons, and a best-value recommendation — purpose-built for AI agent decision-making.
| Name | Required | Description | Default |
|---|---|---|---|
| product_ids | Yes | Array of 2–5 BuyWhere product IDs to compare |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that the tool returns structured data including differentiators and a recommendation, indicating a read-only operation without side effects. No hidden behaviors are mentioned, but the description is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that efficiently conveys the tool's purpose and outputs with no superfluous words. Front-loaded with key action and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and no output schema, the description sufficiently covers what the tool does and what it returns. An agent can accurately decide to invoke it for multi-product comparisons.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides a description for 'product_ids' (array of 2-5 strings). The description adds 'BuyWhere' specificity, but does not significantly enhance understanding beyond the schema. Schema coverage is 100%, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool compares 2-5 products side-by-side and lists specific outputs (differentiators, price range, pros/cons, recommendation). It distinguishes itself from sibling tools like get_price and get_product which handle single products.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for multi-product comparison and mentions it is 'purpose-built for AI agent decision-making.' It does not explicitly state when not to use it or name alternatives, but the context from sibling tools makes it clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_affiliate_linkA
Get the click-tracked BuyWhere affiliate link for a product. Share this link with users — it logs the referral and redirects to the merchant page. Always use this instead of raw product URLs when sharing links.
| Name | Required | Description | Default |
|---|---|---|---|
| product_id | Yes | The BuyWhere product ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that the link logs referrals and redirects, which is key behavioral info. With no annotations, this is nearly sufficient; could mention if any authentication is needed but acceptable for a simple tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two efficient sentences with no filler. Front-loads the core action and immediately provides usage guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, usage, and behavioral aspects adequately for a simple tool with one parameter and no output schema. Slightly lacking on return value details but sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema already fully describes the only parameter (product_id) as 'The BuyWhere product ID'. Description does not add extra semantic detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the action ('get') and the specific resource ('click-tracked BuyWhere affiliate link'). Distinguishes from sibling tools like get_product or get_price by focusing on affiliate link generation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly advises to use this tool instead of raw product URLs when sharing links, and explains why (referral logging, redirect). Provides clear context for when to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_catalogA
List available product categories in the BuyWhere catalog. Use this to discover what categories exist before searching or filtering.
| Name | Required | Description | Default |
|---|---|---|---|
| parent_slug | No | Parent category slug to list subcategories (optional — omit for top-level categories) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description lists categories but does not disclose any additional behavioral traits like pagination or rate limits. Adequate for a simple list operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with front-loaded purpose. No redundant information, every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with full schema coverage, the description is fairly complete. Could mention return format, but not essential.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a well-described parameter. The description adds no extra meaning beyond the schema, meeting baseline for adequate parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses specific verb 'List' and resource 'product categories', clearly distinguishing from sibling tools like search_products or get_product.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Use this to discover what categories exist before searching or filtering', providing clear usage context. No need to exclude alternatives as no sibling overlaps.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_priceA
Get current prices for a product across all available merchants. Returns a ranked list of listings with price, shipping, merchant rating, and stock status. Use this to find the cheapest place to buy a specific product.
| Name | Required | Description | Default |
|---|---|---|---|
| product_id | Yes | The BuyWhere product ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description mentions it returns a ranked list with price, shipping, merchant rating, stock status, but doesn't discuss freshness, pagination, or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded, every word adds value; no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, expected output structure, and usage context; missing details like response format completeness, but adequate for a simple tool without output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter (product_id) with schema description identical to tool description; no additional meaning added beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it retrieves current prices for a product across merchants, distinguishes from siblings like get_product and compare_prices.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'use this to find the cheapest place to buy a specific product,' providing clear usage context, though lacks explicit when-not-to-use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_productB
Fetch full details for a single product by its BuyWhere product ID.
| Name | Required | Description | Default |
|---|---|---|---|
| product_id | Yes | The BuyWhere product ID (returned by search_products as product_id) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description carries full burden. Lacks details on what 'full details' includes, error behavior for invalid IDs, or any side effects. Vague behavioral expectations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with no wasted words. Front-loaded with the core action and qualifier.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a simple single-param tool, but missing details about output content and error states. No output schema to supplement, so description should clarify what 'full details' means.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a clear property description. Tool description adds no extra context beyond the schema's property text, so it meets baseline without enhancement.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the action (fetch), resource (full details for a single product), and uniqueness (by BuyWhere product ID). It distinguishes from sibling tools like search_products which return multiple results.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this vs alternatives (e.g., get_price, get_catalog). No mention of prerequisites or when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_productsA
Search the BuyWhere product catalog using keywords or natural language. Returns matching products with title, price, availability, merchant, and URL.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Keyword or natural-language query (e.g. 'wireless earbuds under $50', 'red dress size M') | |
| country | No | Country code to scope results (e.g. 'sg' for Singapore). Defaults to 'sg'. | |
| category | No | Category slug filter (e.g. 'electronics/smartphones', 'fashion/dresses') | |
| limit | No | Maximum number of results to return (1–50, default 10) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. Description implies read-only search behavior but does not explicitly state side effects, authentication, or rate limits. Minimal transparency for a search tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences that front-load purpose and output. No extraneous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, parameters, and return fields adequately for a search tool. Lacks mention of pagination, error responses, or empty result handling, but these are minor gaps given low complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 100% parameters with descriptions. Description adds no meaningful detail beyond the schema, such as query format examples or category slug usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states verb 'Search' and resource 'BuyWhere product catalog'. Specifies output fields (title, price, availability, merchant, URL). Distinguishes from siblings like compare_prices and get_product by focusing on keyword search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Describes when to use (keyword search), but lacks explicit guidance on when not to use or alternatives. No mention of when to prefer compare_prices or get_product over this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool has a clearly distinct purpose: compare_prices does side-by-side comparison, get_affiliate_link provides affiliate links, get_catalog lists categories, get_price shows merchant prices, get_product fetches details, search_products searches catalog. No overlapping functionality.
All tool names follow a consistent verb_noun pattern in snake_case (e.g., compare_prices, search_products). The naming is predictable and easy to understand.
With 6 tools, the set is well-scoped for a price comparison and affiliate linking service. Each tool serves a necessary function without unnecessary bloat.
Core workflows are covered: search, get details, compare, get prices, affiliate links, and category discovery. Minor gaps like lack of explicit filtering or sorting in search are acceptable for the scope.
Maintenance
Related MCP Connectors
AI-agent product catalog: search, lookup & purchase routing over verified merchant data.
Cross-vendor B2B catalog for AI agents: search, compare, find equivalents, request a quote.
Agent-native product catalog: 300M+ products, 150,000+ stores, deliver_to ranking.
AI agent product discovery via open marketplace. Search, compare and discover advertiser products.
Related MCP Servers
- AlicenseCqualityCmaintenanceA Model Context Protocol server enabling product searches across e-commerce platforms, price history tracking, and product specification-based searches using natural language prompts.219MIT
- AlicenseNot gradedqualityDmaintenanceAffiliate product search for AI agents. Indexes structured merchant feeds — real prices, live stock, affiliate links built in. Works with any MCP client.MIT
- AlicenseAqualityDmaintenanceKlarna-style product discovery for AI shopping agents. Makes product catalogs machine-readable so AI agents can search, compare, and purchase products programmatically.6MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to search, compare, buy, and sell products across multiple e-commerce platforms through 13 marketplace tools.1MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/BuyWhere/buywhere-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server