{"openapi":"3.1.0","info":{"title":"Couple Travel API","version":"0.1.0","description":"A fully local couples travel-planning compatibility checklist: nine travel-preference dimensions with discussion questions, an answer-comparison scorer, a traveler-archetype classifier, budget-alignment tips, a pre-trip logistics checklist and a glossary.\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://coupletravel.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"hr@unifydynamics.com","url":"https://connectorbay.com/coupletravel/docs"},"termsOfService":"https://connectorbay.com/coupletravel/terms"},"servers":[{"url":"https://coupletravel.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/coupletravel/docs"},"security":[{},{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/dimension_list":{"post":{"operationId":"dimension_list","summary":"Every travel-preference dimension this checklist covers, with a short description of each. Use for \"what","description":"Every travel-preference dimension this checklist covers, with a short description of each. Use for \"what\n    should couples align on before a trip\", \"what dimensions does this checklist cover\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"dimension_listArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/dimension_info":{"post":{"operationId":"dimension_info","summary":"Full detail for one travel-preference dimension: description, why it matters for couples specifically,","description":"Full detail for one travel-preference dimension: description, why it matters for couples specifically,\n    its labeled options, and discussion questions. Use for \"tell me about the pace dimension\", \"why does\n    accommodation style matter for couples\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"dimension":{"description":"A dimension id or name.","examples":["pace","budget_style","planning style"],"minLength":1,"title":"Dimension","type":"string"}},"required":["dimension"],"title":"dimension_infoArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/questionnaire":{"post":{"operationId":"questionnaire","summary":"The checklist phrased as questions to pose to both partners — one dimension, or all nine. Give this to","description":"The checklist phrased as questions to pose to both partners — one dimension, or all nine. Give this to\n    each partner separately before comparing answers with compare_answers. Use for \"give us the questionnaire\",\n    \"what should we each answer before comparing notes\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"dimension":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"A specific dimension id/name; omit for the full nine-dimension questionnaire.","title":"Dimension"}},"title":"questionnaireArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/compare_answers":{"post":{"operationId":"compare_answers","summary":"Compares both partners' answers dimension by dimension: aligned (same answer), adjacent (one step apart","description":"Compares both partners' answers dimension by dimension: aligned (same answer), adjacent (one step apart\n    on an ordered scale — half credit), or mismatch. Returns an overall alignment score and attaches discussion\n    questions to every mismatched or adjacent dimension. Use for \"compare our travel preference answers\", \"how\n    compatible are we as travelers based on this\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"partner_a_answers":{"additionalProperties":{"type":"string"},"description":"Partner A's answers as {dimension_id: option_value}.","examples":[{"budget_style":"mid_range","pace":"packed"}],"title":"Partner A Answers","type":"object"},"partner_b_answers":{"additionalProperties":{"type":"string"},"description":"Partner B's answers, same shape as partner_a_answers.","title":"Partner B Answers","type":"object"}},"required":["partner_a_answers","partner_b_answers"],"title":"compare_answersArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/discussion_prompts":{"post":{"operationId":"discussion_prompts","summary":"Conversation-starter questions for one or more named dimensions (or all nine if omitted) — handy for","description":"Conversation-starter questions for one or more named dimensions (or all nine if omitted) — handy for\n    working through whatever compare_answers flagged as mismatched or adjacent. Use for \"give us discussion\n    questions for pace and budget\", \"what should we talk through together\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"dimensions":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"default":null,"description":"Dimension ids/names to get questions for; omit for all nine.","title":"Dimensions"}},"title":"discussion_promptsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/traveler_profile":{"post":{"operationId":"traveler_profile","summary":"Classifies one partner's answer set into a plain-language travel archetype (e.g. \"The Meticulous","description":"Classifies one partner's answer set into a plain-language travel archetype (e.g. \"The Meticulous\n    Planner\", \"The Adrenaline Seeker\", \"The Balanced Traveler\") using simple rule matching on a few key\n    dimensions — a readable label for a preference pattern, not a personality test. Use for \"what kind of\n    traveler am I based on my answers\", \"give my partner and me each a travel archetype\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"answers":{"additionalProperties":{"type":"string"},"description":"One partner's full answer set as {dimension_id: option_value}.","minProperties":1,"title":"Answers","type":"object"}},"required":["answers"],"title":"traveler_profileArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/budget_alignment_tips":{"post":{"operationId":"budget_alignment_tips","summary":"General tips for a couple aligning on trip budget and spending comfort before booking. Use for \"how do","description":"General tips for a couple aligning on trip budget and spending comfort before booking. Use for \"how do\n    we agree on a travel budget\", \"we have different spending comfort levels, what should we do\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"budget_alignment_tipsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/pre_trip_logistics_checklist":{"post":{"operationId":"pre_trip_logistics_checklist","summary":"A general pre-trip logistics checklist by category (documents, itinerary sharing, money logistics,","description":"A general pre-trip logistics checklist by category (documents, itinerary sharing, money logistics,\n    health & safety basics, communication plan) — separate from preference alignment, these are the practical\n    things worth confirming before departure. Use for \"what should we sort out before we leave\", \"pre-trip\n    checklist for couples\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"pre_trip_logistics_checklistArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/glossary":{"post":{"operationId":"glossary","summary":"Definitions of travel-planning terms used elsewhere in this connector — slow travel, FOMO travel, home","description":"Definitions of travel-planning terms used elsewhere in this connector — slow travel, FOMO travel, home\n    base, bucket-list item, buffer day, splitting app, anchor booking. Use for \"what's a buffer day\", \"what does\n    slow travel mean\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"term":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"A specific term to look up; omit to list all.","title":"Term"}},"title":"glossaryArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}