{"openapi":"3.1.0","info":{"title":"ExpeditionInsure API","version":"1.0.0","description":"Travel insurance quoting API for polar and safari expeditions. Covers Antarctica, Arctic, Svalbard, Galápagos, and African Safari destinations.\n\n## Agentic Commerce Protocol (ACP)\n\nFor structured checkout sessions (ChatGPT Instant Checkout, agent wallets), see the ACP spec at `/acp/v1/openapi.json`.\n\n## How to use this API as an AI agent\n\nUse progressive disclosure to collect trip details from the user:\n\n1. **Extract first** — pull everything from the user's initial message before asking questions\n2. **Destination** — \"Where are you going?\" (Antarctica, Arctic, Galápagos, Safari)\n3. **Dates + duration** — \"When do you depart and how long?\" Defaults: Antarctica 14d, Arctic 10d, Safari 12d, Galápagos 10d\n4. **Travelers + ages** — \"How many travelers and their ages?\" Ages are a major cost driver (70+ costs significantly more)\n5. **Trip cost** — \"Total trip cost for all travelers?\" Typical: Antarctica $15-50k/pp, Safari $5-15k/pp\n6. **Residence** — \"Where do you live?\" If US, ask which state. Affects plan eligibility.\n7. Call POST /quotes with all collected details\n8. Present the recommended plan first, then offer alternatives\n9. When ready to purchase, call POST /checkout\n\nIMPORTANT DISCLOSURES — always relay to users:\n- You are an AI assistant providing information only\n- All answers are estimates that must be confirmed by a human representative or in the policy documents, and do not constitute a binding contract\n- This is offered as a courtesy for immediate answers; questions are logged for analysis and improvement\n- For anything that needs confirming, contact help@expedition.insure"},"servers":[{"url":"https://mcp.expedition.insure"}],"paths":{"/api/v1/destinations":{"get":{"operationId":"getDestinations","summary":"List expedition destinations","description":"Returns all expedition destinations covered by ExpeditionInsure with coverage requirements.","responses":{"200":{"description":"List of destinations","content":{"application/json":{"schema":{"type":"object","properties":{"destinations":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"slug":{"type":"string"},"description":{"type":"string"},"region":{"type":"string","nullable":true}}}}}}}}}}}},"/api/v1/products":{"get":{"operationId":"listProducts","summary":"List insurance plans","description":"Browse available insurance plans, optionally filtered by destination and residence.","parameters":[{"name":"destination","in":"query","description":"Destination slug (e.g. 'antarctica', 'arctic', 'galapagos', 'african-safari')","schema":{"type":"string"}},{"name":"residence","in":"query","description":"Country code (e.g. 'US', 'UK'). Affects plan eligibility.","schema":{"type":"string"}},{"name":"state","in":"query","description":"US state code (e.g. 'NY'). Required if residence is US.","schema":{"type":"string"}},{"name":"tier","in":"query","description":"Filter by plan tier.","schema":{"type":"string","enum":["basic","standard","premium"]}},{"name":"include_disabled","in":"query","description":"Include admin-only / disabled plans. Defaults to false.","schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"List of plans","content":{"application/json":{"schema":{"type":"object","properties":{"destination":{"type":"string"},"plansCount":{"type":"integer"},"plans":{"type":"array","items":{"$ref":"#/components/schemas/PlanSummary"}}}}}}}}}},"/api/v1/products/{planId}":{"get":{"operationId":"getPlanDetails","summary":"Get plan details","description":"Full coverage details for a specific insurance plan including eligibility and limits.","parameters":[{"name":"planId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Plan details","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlanDetails"}}}},"404":{"description":"Plan not found"}}}},"/api/v1/quotes":{"post":{"operationId":"createQuote","summary":"Get an instant quote","description":"Create a quote and get premium estimates for all eligible plans. This is the primary endpoint for pricing.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuoteRequest"}}}},"responses":{"200":{"description":"Quote with premium estimates","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuoteResponse"}}}},"400":{"description":"Missing required fields"}}}},"/api/v1/coverage-gap":{"post":{"operationId":"analyzeCoverageGap","summary":"Analyze credit card coverage gaps","description":"Compare credit card travel benefits against expedition requirements. Helps users understand if they need dedicated insurance.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["destination"],"properties":{"destination":{"type":"string","description":"Destination slug or name"},"creditCardName":{"type":"string","description":"Credit card name (e.g. 'Chase Sapphire Reserve')"},"tripCost":{"type":"number","description":"Total trip cost in USD"},"tripCostRange":{"type":"string","enum":["under-10k","10k-20k","over-20k"],"description":"Approximate cost range if exact amount unknown"}}}}}},"responses":{"200":{"description":"Coverage gap analysis"}}}},"/api/v1/checkout":{"post":{"operationId":"createCheckout","summary":"Create a checkout link","description":"Generate a secure 30-minute checkout URL for a selected plan. The user completes payment at this URL.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["quoteId","planId","sessionId"],"properties":{"quoteId":{"type":"string"},"planId":{"type":"string"},"sessionId":{"type":"string","description":"Session ID returned by POST /quotes"},"email":{"type":"string"},"guestNames":{"type":"array","items":{"type":"string"}},"agentSummary":{"type":"string","description":"Summary of the conversation shown on checkout"}}}}}},"responses":{"200":{"description":"Checkout link","content":{"application/json":{"schema":{"type":"object","properties":{"checkoutUrl":{"type":"string","format":"uri"}}}}}}}}},"/api/v1/purchase":{"post":{"operationId":"purchaseWithMpp","summary":"Purchase insurance via MPP (machine payment)","description":"Purchase a plan using the Machine Payments Protocol (MPP). On first call, returns HTTP 402 with a payment challenge. The agent's payment system (Tempo wallet or SPT) handles payment and retries the request. On successful payment, records the purchase and returns a receipt. No human web checkout needed.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["quoteId","planId"],"properties":{"quoteId":{"type":"string","description":"Quote ID returned by POST /quotes"},"planId":{"type":"string","description":"Plan ID from the quote's plans array"}}}}}},"responses":{"200":{"description":"Purchase confirmation with receipt","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["purchased","already_paid"]},"quoteId":{"type":"string"},"quoteNumber":{"type":"string"},"planName":{"type":"string"},"amountCharged":{"type":"number"},"currency":{"type":"string"},"nextSteps":{"type":"string"}}}}}},"400":{"description":"Missing fields or invalid plan"},"402":{"description":"MPP payment challenge — the agent's wallet must authorize payment and retry the request with credentials"},"404":{"description":"Quote not found"}}}}},"components":{"schemas":{"PlanSummary":{"type":"object","properties":{"id":{"type":"string","description":"Stable plan identifier"},"planId":{"type":"string","description":"Alias of id (legacy field name)"},"name":{"type":"string"},"planName":{"type":"string","description":"Alias of name (legacy field name)"},"brand":{"type":"string","description":"Short carrier brand name (e.g. 'IMG', '7C'), suitable for UI chips"},"carrier":{"type":"string","description":"Full carrier legal name"},"tier":{"type":"string","enum":["basic","standard","premium"]},"description":{"type":"string"},"features":{"type":"array","items":{"type":"string"}},"basePrice":{"type":"number"},"countriesCovered":{"type":"array","items":{"type":"string"}},"evacuationCoverage":{"type":"number"},"medicalExpenseLimit":{"type":"number"},"tripCancellationLimit":{"type":"number"},"deductible":{"type":"number"},"isRecommended":{"type":"boolean"},"availabilityMode":{"type":"string","enum":["full","deposit","inquiry","admin_only"]},"highlights":{"type":"array","items":{"type":"string"}}},"required":["id","name","brand","features"]},"PlanDetails":{"type":"object","properties":{"planId":{"type":"string"},"planName":{"type":"string"},"carrier":{"type":"string"},"tier":{"type":"string"},"coverage":{"type":"object","properties":{"medicalExpenseLimit":{"type":"number"},"evacuationCoverage":{"type":"number"},"tripCancellation":{"type":"number"},"deductible":{"type":"number"},"cancelReason":{"type":"string"}}},"eligibility":{"type":"object","properties":{"residenceType":{"type":"string"},"minAge":{"type":"integer"},"maxAge":{"type":"integer"},"maxTripDuration":{"type":"integer","nullable":true},"maxTravelers":{"type":"integer","nullable":true}}},"highlights":{"type":"array","items":{"type":"string"}},"policyTermsUrl":{"type":"string","nullable":true}}},"QuoteRequest":{"type":"object","required":["destination","startDate","durationDays","tripCost","travelers","travelerAges","residence"],"properties":{"destination":{"type":"string","description":"e.g. 'Antarctica', 'Arctic', 'African Safari'"},"startDate":{"type":"string","format":"date","description":"ISO date (e.g. '2026-11-15')"},"durationDays":{"type":"integer","description":"Trip duration"},"tripCost":{"type":"number","description":"Total cost in USD for ALL travelers"},"travelers":{"type":"integer"},"travelerAges":{"type":"array","items":{"type":"integer"},"description":"Ages at time of departure"},"residence":{"type":"string","description":"Country code (e.g. 'US', 'UK')"},"state":{"type":"string","description":"US state code"},"operator":{"type":"string","description":"Tour operator name"},"currency":{"type":"string","default":"USD"},"depositPaidDate":{"type":"string","format":"date","description":"Affects CFAR eligibility"},"email":{"type":"string","format":"email"}}},"QuoteResponse":{"type":"object","properties":{"quoteId":{"type":"string"},"quoteNumber":{"type":"string"},"sessionId":{"type":"string","description":"Use this for POST /checkout"},"tripSummary":{"type":"object"},"recommendedPlan":{"type":"string"},"plans":{"type":"array","items":{"type":"object","properties":{"planName":{"type":"string"},"estimatedPremium":{"type":"number"},"premiumPerTraveler":{"type":"number"},"confidence":{"type":"string","enum":["high","medium","low"]},"medicalLimit":{"type":"number","nullable":true},"deductible":{"type":"number","nullable":true},"isRecommended":{"type":"boolean"},"notes":{"type":"string","nullable":true}}}},"disclaimer":{"type":"string"}}}}}}