Server definition
- Hash
- sha256:bc85c7f777437064a0ed67d263cd1dd5e27457522851a2565b893c47178eae7b
- What it is
- What a remote MCP server returned when asked what it offers: 13 tools
The blob, as servednamed by its sha256
{
"instructions": null,
"tools": [
{
"description": "Compare multiple products side-by-side. Returns price, brand, rating, and category for each.",
"inputSchema": {
"properties": {
"ids": {
"description": "Array of product IDs to compare (2-10)",
"items": {
"type": "string"
},
"maxItems": 10,
"minItems": 2,
"type": "array"
}
},
"required": [
"ids"
],
"type": "object"
},
"name": "compare_products",
"outputSchema": null
},
{
"description": "REQUIRED deliver_to. Compare multiple products side-by-side. Always pass deliver_to=\"SG\" (or your buyer's country). Returns price, brand, rating, category, and a resolved outbound_url per product for the buyer market.",
"inputSchema": {
"properties": {
"deliver_to": {
"description": "REQUIRED. Buyer delivery country/market (ISO country code, e.g. \"SG\", \"US\").",
"type": "string"
},
"ids": {
"description": "Array of product IDs to compare (2-10)",
"items": {
"type": "string"
},
"maxItems": 10,
"minItems": 2,
"type": "array"
}
},
"required": [
"ids",
"deliver_to"
],
"type": "object"
},
"name": "compare_products_v2",
"outputSchema": null
},
{
"description": "Use 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\". Returns schema.org/Product entities with schema.org/AggregateOffer (lowPrice, offerCount, priceCurrency) across all merchants. BUY-74597 degraded contract: when the candidates query cannot complete inside the user-facing timeout, this tool returns a 200-OK envelope with `meta.degraded=true`, `meta.status=\"degraded\"`, `meta.emptiness_reason=\"api_error\"` with `meta.degraded_kind=\"timeout\"` (or `\"partial_timeout\"` / `\"auth_failure\"`), `meta.confidence=\"low\"`, and `meta.diagnostic.timed_out_stage=\"catalog_search\"`, with `best_price=null` and `alternatives=[]`. It never returns an unqualified empty result when the cause is timeout, auth failure, upstream exception, or circuit breaker.",
"inputSchema": {
"properties": {
"category": {
"description": "Category to filter by (e.g., \"electronics\", \"fashion\")",
"type": "string"
},
"country": {
"description": "Alias for country_code (deprecated, use country_code)",
"type": "string"
},
"country_code": {
"description": "Country to search in (defaults to SG). Alias: country.",
"enum": [
"SG",
"MY",
"TH",
"PH",
"VN",
"ID",
"US"
],
"type": "string"
},
"deliver_to": {
"description": "Treat as REQUIRED for buyer-facing use: ISO-3166 country of the END USER (e.g. \"SG\", \"US\"). Without it results are not shipping-ranked and may be undeliverable. Preferred over country_code/country.",
"type": "string"
},
"market": {
"description": "Alias for country_code (deprecated, use country_code).",
"type": "string"
},
"product_name": {
"description": "Product name to find best price for (e.g., \"iphone 15 pro 256gb\", \"samsung galaxy s24\")",
"type": "string"
},
"q": {
"description": "Keyword search query — alias for product_name",
"type": "string"
},
"region": {
"description": "Region filter - use \"us\" for United States or \"sea\" for Southeast Asia",
"enum": [
"us",
"sea"
],
"type": "string"
}
},
"type": "object"
},
"name": "find_best_price",
"outputSchema": null
},
{
"description": "REQUIRED deliver_to. Use 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\". Always pass deliver_to=\"SG\" (or your buyer's country). Returns schema.org/Product entities with schema.org/AggregateOffer (lowPrice, offerCount, priceCurrency) across all merchants. Response includes a shopping_job_id (UUID) you can use to resume a multi-merchant price-comparison session for the buyer.",
"inputSchema": {
"properties": {
"category": {
"description": "Category to filter by (e.g., \"electronics\", \"fashion\")",
"type": "string"
},
"country": {
"description": "Alias for country_code (deprecated, use country_code)",
"type": "string"
},
"country_code": {
"description": "Country to search in (defaults to SG). Alias: country.",
"enum": [
"SG",
"MY",
"TH",
"PH",
"VN",
"ID",
"US"
],
"type": "string"
},
"deliver_to": {
"description": "REQUIRED. Buyer delivery country/market (ISO country code, e.g. \"SG\", \"US\").",
"type": "string"
},
"product_name": {
"description": "Product name to find best price for (e.g., \"iphone 15 pro 256gb\", \"samsung galaxy s24\")",
"type": "string"
},
"q": {
"description": "Keyword search query — alias for product_name",
"type": "string"
},
"region": {
"description": "Region filter - use \"us\" for United States or \"sea\" for Southeast Asia",
"enum": [
"us",
"sea"
],
"type": "string"
}
},
"required": [
"deliver_to"
],
"type": "object"
},
"name": "find_best_price_v2",
"outputSchema": null
},
{
"description": "Find products similar to a given product using vector similarity. Returns up to 10 nearest neighbours by semantic meaning (title+description embedding). Useful for \"more like this\" recommendations.",
"inputSchema": {
"properties": {
"limit": {
"default": 10,
"description": "Number of similar products to return (1-10, default 10)",
"type": "integer"
},
"product_id": {
"description": "UUID of the source product",
"type": "string"
}
},
"required": [
"product_id"
],
"type": "object"
},
"name": "find_similar",
"outputSchema": null
},
{
"description": "Get discounted products sorted by discount percentage. Returns schema.org/Product entities with schema.org/Offer properties: price, priceCurrency, availability, originalPrice, and discountPercentage. Covers Singapore, Malaysia, Indonesia, Thailand, Vietnam, and US e-commerce. Supports currency, region (sea, us, eu, au), country (SG, US, VN, MY, ...) and category filters. BUY-74597 degraded contract: when the discount-index scan cannot complete inside the user-facing timeout, this tool returns a 200-OK envelope with `meta.status=\"degraded\"`, `meta.emptiness_reason=\"api_error\"` with `meta.degraded_kind=\"timeout\"` (or `\"partial_timeout\"` / `\"auth_failure\"`), `meta.confidence=\"low\"`, and `meta.diagnostic.timed_out_stage` (typically `offer_aggregation`). It never returns an unqualified empty result when the cause is timeout, auth failure, upstream exception, or circuit breaker. Branch on `meta.degraded === true` or `meta.status === \"degraded\"`.",
"inputSchema": {
"properties": {
"category": {
"description": "Filter deals by product category (e.g. \"Electronics\", \"Beauty\", \"home_and_kitchen\"). Handler matches against category text and category_path[1]; slug-style input is accepted. BUY-76853/BUY-83657.",
"type": "string"
},
"country": {
"description": "Alias for country_code (deprecated, use country_code)",
"type": "string"
},
"country_code": {
"description": "Filter by ISO country code. Alias: country.",
"enum": [
"SG",
"US",
"VN",
"TH",
"MY"
],
"type": "string"
},
"currency": {
"default": "SGD",
"description": "Filter by currency code (SGD, USD, MYR, VND, THB). Defaults to SGD.",
"type": "string"
},
"deliver_to": {
"description": "Treat as REQUIRED for buyer-facing use: ISO-3166 country of the END USER (e.g. \"SG\", \"US\"). Without it results are not shipping-ranked and may be undeliverable. Preferred over country_code/country.",
"type": "string"
},
"limit": {
"default": 20,
"description": "Number of results (max 100, default 20)",
"type": "integer"
},
"market": {
"description": "Alias for country_code (deprecated, use country_code).",
"type": "string"
},
"min_discount": {
"default": 10,
"description": "Minimum discount percentage (default 10)",
"type": "number"
},
"offset": {
"default": 0,
"description": "Pagination offset",
"type": "integer"
},
"region": {
"description": "Filter by region (sea, us, eu, au)",
"type": "string"
}
},
"type": "object"
},
"name": "get_deals",
"outputSchema": null
},
{
"description": "REQUIRED deliver_to. Get discounted products sorted by discount percentage. Always pass deliver_to=\"SG\" (or your buyer's country). Returns schema.org/Product entities with schema.org/Offer properties: price, priceCurrency, availability, originalPrice, and discountPercentage. Covers Singapore, Malaysia, Indonesia, Thailand, Vietnam, and US e-commerce. Supports currency, region (sea, us, eu, au), country (SG, US, VN, MY, ...) and category filters.",
"inputSchema": {
"properties": {
"category": {
"description": "Filter deals by product category (e.g. \"Electronics\", \"Beauty\", \"home_and_kitchen\"). Handler matches against category text and category_path[1]; slug-style input is accepted. BUY-76853/BUY-83657.",
"type": "string"
},
"country": {
"description": "Alias for country_code (deprecated, use country_code)",
"type": "string"
},
"country_code": {
"description": "Filter by ISO country code. Alias: country.",
"enum": [
"SG",
"US",
"VN",
"TH",
"MY"
],
"type": "string"
},
"currency": {
"default": "SGD",
"description": "Filter by currency code (SGD, USD, MYR, VND, THB). Defaults to SGD.",
"type": "string"
},
"deliver_to": {
"description": "REQUIRED. Buyer delivery country/market (ISO country code, e.g. \"SG\", \"US\").",
"type": "string"
},
"limit": {
"default": 20,
"description": "Number of results (max 100, default 20)",
"type": "integer"
},
"min_discount": {
"default": 10,
"description": "Minimum discount percentage (default 10)",
"type": "number"
},
"offset": {
"default": 0,
"description": "Pagination offset",
"type": "integer"
},
"region": {
"description": "Filter by region (sea, us, eu, au)",
"type": "string"
}
},
"required": [
"deliver_to"
],
"type": "object"
},
"name": "get_deals_v2",
"outputSchema": null
},
{
"description": "Get a specific product by its ID, including full details and current price.",
"inputSchema": {
"properties": {
"id": {
"description": "Product UUID",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "get_product",
"outputSchema": null
},
{
"description": "REQUIRED deliver_to. Get a specific product by its ID, including full details and current price. Always pass deliver_to=\"SG\" (or your buyer's country). Response includes a resolved outbound_url (https://…) that routes the buyer through the BuyWhere click tracker when the product has merchant offers.",
"inputSchema": {
"properties": {
"deliver_to": {
"description": "REQUIRED. Buyer delivery country/market (ISO country code, e.g. \"SG\", \"US\").",
"type": "string"
},
"id": {
"description": "Product UUID",
"type": "string"
}
},
"required": [
"id",
"deliver_to"
],
"type": "object"
},
"name": "get_product_v2",
"outputSchema": null
},
{
"description": "Ingest (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.",
"inputSchema": {
"properties": {
"products": {
"description": "Array of product objects to ingest (max 1000)",
"items": {
"properties": {
"brand": {
"description": "Brand name",
"type": "string"
},
"category": {
"description": "Product category",
"type": "string"
},
"country_code": {
"description": "ISO country code (e.g. \"SG\", \"US\")",
"type": "string"
},
"currency": {
"default": "SGD",
"description": "Currency code (default: SGD)",
"type": "string"
},
"description": {
"description": "Product description",
"type": "string"
},
"image_url": {
"description": "Main product image URL",
"type": "string"
},
"is_active": {
"description": "Whether the product is active (default: true)",
"type": "boolean"
},
"is_available": {
"description": "Whether the product is in stock",
"type": "boolean"
},
"merchant_id": {
"description": "Merchant identifier",
"type": "string"
},
"metadata": {
"description": "Additional product metadata",
"type": "object"
},
"price": {
"description": "Current price (must be >= 0)",
"type": "number"
},
"region": {
"description": "Region identifier (e.g. \"sea\", \"us\")",
"type": "string"
},
"sku": {
"description": "Unique stock keeping unit identifier",
"type": "string"
},
"title": {
"description": "Product title",
"type": "string"
},
"url": {
"description": "Product URL on the merchant site",
"type": "string"
}
},
"required": [
"sku",
"merchant_id",
"title",
"price",
"url"
],
"type": "object"
},
"type": "array"
},
"source": {
"description": "Data source identifier (e.g. \"shopee_sg\", \"amazon_sg\", \"lazada_sg\")",
"type": "string"
}
},
"required": [
"source",
"products"
],
"type": "object"
},
"name": "ingest_products",
"outputSchema": null
},
{
"description": "List top-level product categories available in the BuyWhere catalog.",
"inputSchema": {
"properties": {
"country": {
"description": "Alias for country_code (deprecated, use country_code)",
"type": "string"
},
"country_code": {
"description": "Filter by ISO country code. Defaults to SG.",
"enum": [
"SG",
"US",
"VN",
"TH",
"MY",
"GB",
"IN",
"AU"
],
"type": "string"
},
"market": {
"description": "Alias for country_code (deprecated, use country_code).",
"type": "string"
},
"region": {
"description": "Region alias mapped to ISO country code.",
"enum": [
"us",
"sg",
"my",
"gb",
"in",
"au"
],
"type": "string"
}
},
"type": "object"
},
"name": "list_categories",
"outputSchema": null
},
{
"description": "Search the BuyWhere product catalog by keyword. Treat deliver_to as REQUIRED for buyer-facing use (ISO-3166 country of the end user); it takes precedence over country_code/country and prevents all-market scans. Returns product records with title, description, image, price, and merchant information. Covers e-commerce platforms across Singapore, Malaysia, Indonesia, Thailand, Vietnam, and US. Use compact=true for agent-optimized responses with structured_specs, comparison_attributes, and normalized_price_usd fields. BUY-74597 degraded contract: when the catalog query cannot complete inside the user-facing timeout, this tool returns a 200-OK envelope with `meta.status=\"degraded\"`, `meta.emptiness_reason=\"api_error\"` with `meta.degraded_kind=\"timeout\"` (or `\"partial_timeout\"` / `\"auth_failure\"`), `meta.confidence=\"low\"`, and `meta.diagnostic.timed_out_stage` naming the failed stage (catalog_search / offer_aggregation / merchant_join). It never returns an unqualified empty result when the cause is timeout, auth failure, upstream exception, or circuit breaker. Agents should branch on `meta.degraded === true` (or `meta.status === \"degraded\"`) instead of treating empty `data` as no_match.",
"inputSchema": {
"properties": {
"category": {
"description": "Filter by product category name (e.g. \"Laptops\", \"Smartphones\", \"Televisions\"). Use to exclude accessories and get actual products.",
"type": "string"
},
"compact": {
"default": false,
"description": "Return agent-optimized compact shape: structured_specs, comparison_attributes, normalized_price_usd. Reduces response size ~40%. Recommended for agent tool-use.",
"type": "boolean"
},
"country": {
"description": "Alias for country_code (deprecated, use country_code)",
"type": "string"
},
"country_code": {
"description": "Filter by ISO country code. Also infers default currency for price filters (SG→SGD, US→USD, VN→VND, TH→THB, MY→MYR).",
"enum": [
"SG",
"US",
"VN",
"TH",
"MY"
],
"type": "string"
},
"deliver_to": {
"description": "Treat as REQUIRED for buyer-facing use: ISO-3166 country of the END USER (e.g. \"SG\", \"US\"). Without it results are not shipping-ranked and may be undeliverable. Preferred over country_code/country.",
"type": "string"
},
"domain": {
"description": "Filter by merchant platform (e.g. lazada, shopee, amazon)",
"type": "string"
},
"limit": {
"default": 20,
"description": "Number of results (max 100, default 20)",
"type": "integer"
},
"market": {
"description": "Alias for country_code (deprecated, use country_code).",
"type": "string"
},
"max_price": {
"description": "Maximum price (in currency inferred from country_code, or SGD by default)",
"type": "number"
},
"min_price": {
"description": "Minimum price (in currency inferred from country_code, or SGD by default)",
"type": "number"
},
"mode": {
"default": "keyword",
"description": "Search mode: keyword=FTS only (default, matches REST /v1/products/search), semantic=vector only, hybrid=RRF blend of FTS+vector. Falls back to keyword if vector DB or FLOWAI_EMBED_API_KEY unavailable.",
"enum": [
"keyword",
"semantic",
"hybrid"
],
"type": "string"
},
"offset": {
"default": 0,
"description": "Pagination offset",
"type": "integer"
},
"q": {
"description": "Keyword search query",
"type": "string"
},
"query": {
"description": "Alias for q (accepted for agent convenience; use q). Without this, callers passing `query` get 0 rows and the reltuples-derived total — see BUY-75287.",
"type": "string"
},
"region": {
"description": "Filter by region (sea, us, eu, au)",
"type": "string"
}
},
"type": "object"
},
"name": "search_products",
"outputSchema": null
},
{
"description": "REQUIRED deliver_to. Search the BuyWhere product catalog by keyword. The deliver_to parameter is REQUIRED (ISO country code, e.g. \"SG\", \"US\") — it takes precedence over country_code/country and prevents all-market scans. Always pass deliver_to=\"SG\" (or your buyer's country). Returns product records with title, description, image, price, and merchant information. Covers e-commerce platforms across Singapore, Malaysia, Indonesia, Thailand, Vietnam, and US. Use compact=true for agent-optimized responses with structured_specs, comparison_attributes, and normalized_price_usd fields.",
"inputSchema": {
"properties": {
"category": {
"description": "Filter by product category name (e.g. \"Laptops\", \"Smartphones\", \"Televisions\"). Use to exclude accessories and get actual products.",
"type": "string"
},
"compact": {
"default": false,
"description": "Return agent-optimized compact shape: structured_specs, comparison_attributes, normalized_price_usd. Reduces response size ~40%. Recommended for agent tool-use.",
"type": "boolean"
},
"country": {
"description": "Alias for country_code (deprecated, use country_code)",
"type": "string"
},
"country_code": {
"description": "Filter by ISO country code. Also infers default currency for price filters (SG→SGD, US→USD, VN→VND, TH→THB, MY→MYR).",
"enum": [
"SG",
"US",
"VN",
"TH",
"MY"
],
"type": "string"
},
"deliver_to": {
"description": "REQUIRED. Buyer delivery country/market (ISO country code, e.g. \"SG\", \"US\").",
"type": "string"
},
"domain": {
"description": "Filter by merchant platform (e.g. lazada, shopee, amazon)",
"type": "string"
},
"limit": {
"default": 20,
"description": "Number of results (max 100, default 20)",
"type": "integer"
},
"max_price": {
"description": "Maximum price (in currency inferred from country_code, or SGD by default)",
"type": "number"
},
"min_price": {
"description": "Minimum price (in currency inferred from country_code, or SGD by default)",
"type": "number"
},
"mode": {
"default": "keyword",
"description": "Search mode: keyword=FTS only (default, matches REST /v1/products/search), semantic=vector only, hybrid=RRF blend of FTS+vector. Falls back to keyword if vector DB or FLOWAI_EMBED_API_KEY unavailable.",
"enum": [
"keyword",
"semantic",
"hybrid"
],
"type": "string"
},
"offset": {
"default": 0,
"description": "Pagination offset",
"type": "integer"
},
"q": {
"description": "Keyword search query",
"type": "string"
},
"query": {
"description": "Alias for q (accepted for agent convenience; use q). Without this, callers passing `query` get 0 rows and the reltuples-derived total — see BUY-75287.",
"type": "string"
},
"region": {
"description": "Filter by region (sea, us, eu, au)",
"type": "string"
}
},
"required": [
"deliver_to"
],
"type": "object"
},
"name": "search_products_v2",
"outputSchema": null
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:bc85c7f777437064a0ed67d263cd1dd5e27457522851a2565b893c47178eae7b | sha256sum