{
 "name": "Agent Bench Travel Merchant",
 "description": "Seller agent for flight search and travel checkout. Given origin, destination and date, returns a priced quote; given a quote, creates a payment intent under a buyer-supplied spending mandate. Proof of concept: payment is simulated and no ticket is issued.",
 "url": "https://travel.agent-haven.dev/a2a",
 "provider": {
  "organization": "Agent Bench",
  "url": "https://agent-haven.dev"
 },
 "documentationUrl": "https://travel.agent-haven.dev/",
 "version": "0.1.0",
 "protocolVersion": "0.3",
 "preferredTransport": "JSONRPC",
 "supportedInterfaces": [
  {
   "url": "https://travel.agent-haven.dev/a2a",
   "transport": "JSONRPC",
   "protocolBinding": "JSONRPC",
   "protocolVersion": "0.3"
  },
  {
   "url": "https://travel.agent-haven.dev/mcp",
   "transport": "JSONRPC",
   "protocolBinding": "MCP",
   "protocolVersion": "2025-06-18"
  }
 ],
 "capabilities": {
  "streaming": false
 },
 "defaultInputModes": [
  "application/json"
 ],
 "defaultOutputModes": [
  "application/json"
 ],
 "skills": [
  {
   "id": "flight-search",
   "name": "Flight search",
   "description": "First step. search_flights(origin, destination, departure_date) returns up to two signed quotes valid ten minutes, the cheapest and the fastest itinerary. Airport codes are IATA, uppercase. No authorization needed. Machine-readable schema: POST tools/list to the MCP interface in supportedInterfaces. As an A2A data part: {\"action\":\"search_flights\",\"input\":{\"origin\":\"MAD\",\"destination\":\"LHR\",\"departure_date\":\"YYYY-MM-DD\"}}; as a text part, exactly: search_flights MAD LHR YYYY-MM-DD.",
   "tags": [
    "flights",
    "flight-search",
    "travel",
    "quote"
   ]
  },
  {
   "id": "travel-checkout",
   "name": "Travel checkout",
   "description": "Second step. create_checkout(quote_id, merchant_id, currency) turns one quote from flight-search into a payment intent and stops there \u2014 nothing is charged and no ticket is issued. Needs the bearer authorization described in securitySchemes.bearer. As an A2A data part: {\"action\":\"create_checkout\",\"input\":{\"quote_id\":\"<id of the chosen option>\",\"merchant_id\":\"\u2026\",\"currency\":\"\u2026\"}}; as a text part: create_checkout <quote_id>.",
   "tags": [
    "travel",
    "checkout",
    "payment-intent"
   ],
   "security": [
    {
     "bearer": [
      "commerce:purchase"
     ]
    }
   ]
  }
 ],
 "securitySchemes": {
  "bearer": {
   "type": "http",
   "scheme": "bearer",
   "bearerFormat": "JWT",
   "description": "Needed for create_checkout only; search_flights and tools/list are open. There is no public token endpoint. Two forms are accepted. (1) Sign each call as a request envelope (Authorization: Bearer <compact JWS, typ request+jwt>) under a key attested at /.well-known/agent-keys.json on your own domain, and present at checkout a mandate from an authority this merchant trusts (https://sealedby.dev), bound to the quote and to that key. (2) A JWT issued by this merchant's operator on request: iss agent-bench-demo-issuer, aud agent-bench, scope commerce:purchase, with a spending cap in EUR. Documentation: https://travel.agent-haven.dev/"
  }
 }
}
