Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 9 additions & 4 deletions .cursor-plugin/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -46,22 +46,27 @@
{
"name": "pr-review-canvas",
"source": "pr-review-canvas",
"description": "Render PR diffs as interactive Cursor Canvases organized for reviewer comprehension groups changes by importance, separates boilerplate from core logic, and highlights tricky or unexpected code."
"description": "Render PR diffs as interactive Cursor Canvases organized for reviewer comprehension \u2014 groups changes by importance, separates boilerplate from core logic, and highlights tricky or unexpected code."
},
{
"name": "docs-canvas",
"source": "docs-canvas",
"description": "Render documentation architecture notes, API references, runbooks, and codebase walkthroughs as a navigable Cursor Canvas with sections, table of contents, diagrams, and cross-references."
"description": "Render documentation \u2014 architecture notes, API references, runbooks, and codebase walkthroughs \u2014 as a navigable Cursor Canvas with sections, table of contents, diagrams, and cross-references."
},
{
"name": "cursor-sdk",
"source": "cursor-sdk",
"description": "Build apps, scripts, CI pipelines, and automations on top of the Cursor TypeScript SDK (@cursor/sdk) runtime selection, auth, streaming, MCP, error handling, and ready-to-extend integration patterns."
"description": "Build apps, scripts, CI pipelines, and automations on top of the Cursor TypeScript SDK (@cursor/sdk) \u2014 runtime selection, auth, streaming, MCP, error handling, and ready-to-extend integration patterns."
},
{
"name": "orchestrate",
"source": "orchestrate",
"description": "Fan large tasks out across parallel Cursor cloud agents with planners, workers, verifiers, and structured handoffs."
},
{
"name": "buywhere",
"source": "buywhere",
"description": "Search 1.5M+ products across Shopee, Lazada, Amazon, Walmart, and 20+ platforms. Compare prices and find deals from Cursor."
}
]
}
}
34 changes: 34 additions & 0 deletions buywhere/.cursor-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
{
"name": "buywhere",
"displayName": "BuyWhere — Product Search & Price Comparison",
"version": "1.0.0",
"description": "Search 1.5M+ products across Shopee, Lazada, Amazon, Walmart, FairPrice, Carousell, and 20+ Southeast Asia and US e-commerce platforms. Compare prices, discover deals, and find best prices directly from Cursor.",
"author": {
"name": "BuyWhere",
"email": "hello@buywhere.ai"
},
"homepage": "https://github.com/BuyWhere/buywhere",
"repository": "https://github.com/BuyWhere/buywhere",
"license": "MIT",
"keywords": [
"shopping",
"price-comparison",
"ecommerce",
"southeast-asia",
"product-search",
"deals",
"mcp",
"singapore",
"lazada",
"shopee",
"amazon"
],
"category": "productivity",
"tags": [
"shopping",
"ecommerce",
"price-comparison",
"mcp-server"
],
"skills": "./skills/"
}
43 changes: 43 additions & 0 deletions buywhere/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
# BuyWhere — Product Search & Price Comparison

Search 1.5M+ products across Shopee, Lazada, Amazon, Walmart, FairPrice, Carousell, and 20+ Southeast Asia and US e-commerce platforms — directly from Cursor.

## Installation

```
/add-plugin buywhere
```

## MCP Server

Connects to the BuyWhere MCP endpoint at `https://api.buywhere.ai/mcp`, providing tools for:

- **search_products** — full-text search across 20+ platforms by keyword, category, price range, and location
- **get_deals** — find current deals and discounts
- **list_categories** — browse product categories
- **find_best_price** — compare prices across platforms for a given product

## Quick start

Once installed, ask Cursor:

- "Find the best price for AirPods Pro in Singapore"
- "Show me deals on laptops under $800 on Lazada and Shopee"
- "Compare prices for Sony WH-1000XM5 across all platforms"
- "What are the top deals in electronics today?"

## Coverage

| Market | Platforms |
|--------|-----------|
| Singapore | Shopee SG, Lazada SG, FairPrice, Carousell |
| US | Amazon, Walmart |
| Malaysia | Shopee MY, Lazada MY |
| Thailand | Shopee TH, Lazada TH |
| Vietnam | Shopee VN, Lazada VN |

## Links

- [GitHub](https://github.com/BuyWhere/buywhere)
- [API Docs](https://api.buywhere.ai/openapi.json)
- [Website](https://buywhere.ai)
7 changes: 7 additions & 0 deletions buywhere/mcp.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"mcpServers": {
"buywhere": {
"url": "https://api.buywhere.ai/mcp"
}
}
}
29 changes: 29 additions & 0 deletions buywhere/skills/product-search/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
---
name: product-search
description: Search products, compare prices, and find deals across Shopee, Lazada, Amazon, Walmart, and 20+ Southeast Asia and US e-commerce platforms. Use when the user wants to find a product, compare prices, discover deals, or get shopping recommendations.
---

# Product Search

## Trigger

User wants to find a product, compare prices across platforms, find deals or discounts, or get shopping recommendations.

## Workflow

1. Identify the product, category, and target market (SG, US, MY, TH, VN).
2. Call `search_products` with the product name, optional category, price range, and location.
3. If the user wants the best price across platforms, call `find_best_price` with the product name.
4. If the user wants current deals, call `get_deals` with optional category filter.
5. Present results ranked by price, rating, or relevance as appropriate.
6. Include platform name, price, currency, and a direct product URL in every result.

## UTM Tracking

Append `?utm_source=cursor&utm_medium=plugin&utm_campaign=buywhere_plugin` to all product URLs returned.
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

UTM append instruction breaks URLs with existing params

Low Severity · Logic Bug

The UTM tracking instruction tells the agent to always append ?utm_source=cursor&utm_medium=plugin&utm_campaign=buywhere_plugin to product URLs. E-commerce URLs almost always already contain query parameters (e.g., item IDs, tracking tokens). Using a hardcoded ? delimiter on those URLs produces malformed URLs with two ? characters. The instruction needs to account for whether the URL already has a query string and use & accordingly.

Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 7850f6b. Configure here.


## Output Format

- List top 5 results with: platform, product name, price (with currency), rating, and URL
- Highlight the best price option
- Note any active deals or discounts