Skip to main content
Glama
nexus-mcp-infra

buywhere-singapore-value-intelligence

# BuyWhere Singapore Value Intelligence API

Semantic product search over Singapore e-commerce (BuyWhere), ranked by an auditable value-score derived from Shannon entropy across vendor price distributions - not just "cheapest first."

Available both as a plain HTTP API and as an MCP server (5 tools) for AI agents.


Base URL

https://useful-data-source-for-agents-production.up.railway.app

Authentication

All business endpoints require an X-API-Key header: X-API-Key:

/health requires no authentication.

Pricing

Two ways to pay, same endpoints:

  • x402 (pay-per-call, USDC on Base) - currently on Base Sepolia testnet, $0.01/call. A request without payment gets 402 Payment Required with the payment details in the payment-required response header.

  • Stripe (metered billing) - for callers provisioned with an API key and a Stripe customer on the account.


Endpoints

Semantic product search over the BuyWhere Singapore catalog, ranked by composite value-score.

Query params:

  • query (required) - natural-language product description

  • limit (default 10, 1-50)

  • min_value_score (default 0.0, range 0.0-1.0) - filter out products below this score GET /search?query=noise+cancelling+headphones&limit=5&min_value_score=0.5

Response (ProductSearchResponse):

{
  "query": "noise cancelling headphones",
  "result_count": 5,
  "currency": "SGD",
  "products": [
    {
      "product_id": "abc123",
      "title": "Sony WH-1000XM5",
      "category": "electronics",
      "image_url": "...",
      "vendor_offers": ["..."],
      "price_min_sgd": 389.00,
      "price_max_sgd": 429.00,
      "price_mean_sgd": 405.30,
      "shannon_entropy_bits": 1.24,
      "causal_reliability_score": 0.92,
      "value_score": 0.847,
      "value_score_explanation": "..."
    }
  ],
  "computation_ms": 43.2
}

GET /product/{product_id}/value_breakdown

Full auditable decomposition of the value-score formula for one product - entropy component, reliability component, price-rank component, the formula itself, and the recommended vendor/price.

GET /product/{product_id}/price_distribution

Vendor price distribution for one product: entropy (raw and normalized), price spread, coefficient of variation, and a plain-language interpretation of market fragmentation.

GET /health

Liveness probe. Returns { status, upstream_reachable, api_version, timestamp }. No auth required. Not billed (excluded from both Stripe and x402).


MCP tools

Connect an MCP-compatible client (Claude, Cursor, etc.) to the streamable HTTP endpoint at: https://useful-data-source-for-agents-production.up.railway.app/mcp

Exposes 5 tools:

  • rank_buywhere_products_by_value_score - ranked search with max_price_sgd and category_filter

  • fetch_buywhere_vendor_price_distribution - vendor spread for a known product_id

  • resolve_buywhere_product_identity - disambiguate a partial/fuzzy product name into candidate product IDs

  • compare_buywhere_products_causal_rank - head-to-head comparison of 2-10 products with confounder adjustment

  • extract_buywhere_deal_anomalies - z-score based detection of mispriced or outlier listings


Value-score: the method

For each product, prices across vendors are treated as a distribution. The composite value_score blends:

  • Entropy component - Shannon entropy of the price distribution across vendors (H, in bits) normalized against the maximum possible entropy for that vendor count. Higher entropy = genuine price competition, not vendors clustered at the same number.

  • Reliability component - a causal-reliability score per vendor.

  • Price-rank component - where this vendor's price sits in the observed range.

Every response includes the raw components (shannon_entropy_bits, entropy_component, reliability_component, price_rank_component) and, on /product/{id}/value_breakdown, the formula string itself - so an agent can cite the reasoning, not just the number.


Limits

  • /search: limit up to 50 results per call

  • MCP compare_buywhere_products_causal_rank: 2-10 product IDs per call