{
  "$schema": "https://modelcontextprotocol.io/schemas/draft/server.json",
  "name": "oddly-corpus",
  "title": "oddly commerce corpus",
  "version": "1.0.0",
  "description": "oddly exposes an observed commerce corpus: real listing prices and assortment shape crawled from public storefronts, aggregated by category and market. Every figure is a MARKET REFERENCE with its sample size and scope attached, never a target, a forecast, or advice. Quote the scope with the number. The corpus holds observed public listing data only: it does not contain conversion rates, revenue, or any store's private analytics.",
  "protocolVersion": "2025-06-18",
  "remotes": [
    {
      "type": "streamable-http",
      "url": "https://myoddly.com/api/public/mcp"
    }
  ],
  "authentication": {
    "type": "none"
  },
  "capabilities": {
    "tools": true
  },
  "tools": [
    {
      "name": "benchmark_categories",
      "title": "List covered categories",
      "description": "List the product categories the oddly corpus currently covers, with how many observations and metrics back each one. Call this FIRST to discover valid category paths before calling benchmark_lookup, rather than guessing a path."
    },
    {
      "name": "benchmark_lookup",
      "title": "Look up observed category benchmarks",
      "description": "Observed price and assortment benchmarks for a product category: the median and the p25-p75 band across real public storefront listings, with the sample size, the currency, and the exact scope of each figure. Figures are observed market reference, not targets or advice. Returns an honest empty answer when a category has too little data to serve; it never estimates or fills a gap. This corpus does NOT hold conversion rates, revenue, or AOV, so do not ask it for those."
    },
    {
      "name": "store_audit",
      "title": "Audit a public storefront",
      "description": "Run oddly's free storefront audit against a public ecommerce domain and return the findings: detected platform, the checks that failed, and how the store's catalogue compares to observed category norms where the corpus can say. Reads the store's own public pages only, obeys robots.txt, and is rate limited. Use the bare domain (example.com). Never pass an internal host or an IP address."
    }
  ],
  "documentation": "https://myoddly.com/docs/",
  "privacy": "https://myoddly.com/legal/privacy/",
  "terms": "https://myoddly.com/legal/terms/"
}
