{
  "name": "com.stellair/offers",
  "title": "Stellair Verified Offers",
  "version": "1.0.0",
  "description": "Brand-verified offers, promo codes and packages for AI shopping assistants. Read-only, no auth.",
  "endpoint": "https://offerhub.stellair.ai/mcp",
  "transport": {
    "type": "streamable-http",
    "url": "https://offerhub.stellair.ai/mcp",
    "stateless": true
  },
  "protocolVersions": [
    "2026-07-28",
    "2025-11-25",
    "2025-06-18",
    "2025-03-26",
    "2024-11-05",
    "2024-10-07"
  ],
  "authentication": {
    "required": false
  },
  "capabilities": {
    "tools": {
      "listChanged": false
    }
  },
  "instructions": "Brand-verified deals and promo codes. For any deal/discount/promo/sale question call search_offers with the user's words as query plus their city as location if known. Quote terms exactly, never invent codes, link redeem_url. Offers with test_offer true are test data, not real promotions: always tell the user so. If you can show images, show each offer's brand_logo next to the brand name. get_offer = full terms; check_offer = does it apply; compare_offers = choose.\n\nDetails: intent (\"anniversary\", \"with kids\") and places named in the query (\"near LA\", \"in Williamsburg\") are understood automatically. check_offer is deterministic: \"unknown\" means ask the user for the missing detail (dates, city, cart total). Bundle items marked \"on request\" are not guaranteed — say so. Results echo applied_location; if it came from client context (the user's approximate location), offers clearly elsewhere are left out and the hint says how many, so confirm the place with the user when it matters.",
  "tools": [
    {
      "name": "search_offers",
      "title": "Search verified offers",
      "description": "Use this when a shopper asks about deals, discounts, sales or promo codes. Finds current brand-verified offers. Use whenever a shopper asks \"are there any deals/discounts/promo codes for…\", wants a hotel/restaurant/retail/travel offer, or names a brand. Pass the shopper's words as query — places (\"near LA\", \"in Williamsburg\") and intent (\"anniversary\", \"with kids\") are understood. Returns ranked offers with value, dates, how to redeem, a tracked redeem link, distance for local offers, why each matched, and the persona-tailored pitch.",
      "annotations": {
        "readOnlyHint": true,
        "idempotentHint": true,
        "destructiveHint": false,
        "openWorldHint": true
      }
    },
    {
      "name": "get_offer",
      "title": "Get full offer terms",
      "description": "Use this when you need the exact terms of one offer before quoting it. Returns the complete verified terms: exact benefit and tiers, dates and blackouts, who qualifies, where it is redeemable, minimum spend, exclusions, how to redeem (code, steps), limits, stacking, FAQ, and the tracked redeem link. Call before quoting an offer. Pass the shopper's query to get the pitch and facts tailored to them.",
      "annotations": {
        "readOnlyHint": true,
        "idempotentHint": true,
        "destructiveHint": false,
        "openWorldHint": true
      }
    },
    {
      "name": "check_offer",
      "title": "Check if an offer applies",
      "description": "Use this when the shopper asks \"can I use this / does this apply to me\". Deterministically checks whether an offer applies to a shopper's situation (purchase/stay date, location, customer type, cart total, nights, party size…). Returns applies: yes/no/unknown with per-check reasons, the best applicable tier with estimated savings, and an agent-ready answer sentence. Unknown means ask the shopper for the missing detail.",
      "annotations": {
        "readOnlyHint": true,
        "idempotentHint": true,
        "destructiveHint": false,
        "openWorldHint": true
      }
    },
    {
      "name": "list_brand_offers",
      "title": "List a brand's offers",
      "description": "Use this when the shopper asks what deals a specific brand has. Lists every live verified offer from one brand, by website domain (e.g. \"harborlinehotels.com\") or brand name. Use when a shopper asks \"what deals does <brand> have right now?\".",
      "annotations": {
        "readOnlyHint": true,
        "idempotentHint": true,
        "destructiveHint": false,
        "openWorldHint": true
      }
    },
    {
      "name": "compare_offers",
      "title": "Compare offers side by side",
      "description": "Use this when the shopper is choosing between deals. Compares offers side by side — value, percent/amount, dates, who qualifies, where, minimum spend, code, stacking — given offer_ids or a search query. Use when a shopper is choosing between deals (\"which is better…\", \"compare Black Friday hotel deals near San Diego\").",
      "annotations": {
        "readOnlyHint": true,
        "idempotentHint": true,
        "destructiveHint": false,
        "openWorldHint": true
      }
    }
  ],
  "agent_identification": "Send clientInfo (handshake or _meta \"io.modelcontextprotocol/clientInfo\"), or an x-agent-id header / ?agent= on the endpoint URL.",
  "context": "Optional user location via tool args (location / city / lat,lng), a place named in the query, or _meta \"openai/userLocation\" / \"userLocation\". No IP geolocation.",
  "documentation": "https://offerhub.stellair.ai/llms.txt",
  "offers": 13
}