{"openapi":"3.1.0","info":{"title":"Packlist API","version":"0.1.0","description":"A fully local travel packing-list generator and airline baggage-rule reference: trip-type packing lists, hand-verified baggage allowances for 24 airlines, a liquids-rule checker, a weight estimator, climate guidance, a document checklist, a packing-cube organizer, carry-on essentials and a glossary.\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://packlist.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"hr@unifydynamics.com","url":"https://connectorbay.com/packlist/docs"},"termsOfService":"https://connectorbay.com/packlist/terms"},"servers":[{"url":"https://packlist.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/packlist/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/generate_packing_list":{"post":{"operationId":"generate_packing_list","summary":"A categorized packing list (clothing, toiletries, electronics, documents, health, plus activity-specific","description":"A categorized packing list (clothing, toiletries, electronics, documents, health, plus activity-specific\n    gear) for a trip type, duration and climate. Clothing quantities are scaled sensibly by duration (capped, with\n    a laundry-assumption note for longer trips) rather than one item per day. Use for \"help me pack for a 10-day\n    hiking trip in a cold climate\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"trip_type":{"description":"business | leisure_beach | hiking_outdoor | winter_sports | backpacking | city_break | cruise","title":"Trip Type","type":"string"},"duration_days":{"description":"Trip length in days.","maximum":180,"minimum":1,"title":"Duration Days","type":"integer"},"climate":{"description":"hot | cold | temperate | tropical | variable","title":"Climate","type":"string"},"activities":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"default":null,"description":"Optional activities, e.g. [\"swimming\", \"hiking\"].","title":"Activities"}},"required":["trip_type","duration_days","climate"],"title":"generate_packing_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/airline_baggage_rules":{"post":{"operationId":"airline_baggage_rules","summary":"Hand-verified checked and carry-on baggage size/weight allowances for one of 24 major airlines (North","description":"Hand-verified checked and carry-on baggage size/weight allowances for one of 24 major airlines (North\n    America, Europe, the Middle East, Asia, India, Brazil). Use for \"what's the checked bag limit on United\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"airline":{"description":"Airline name or IATA code.","examples":["Delta","DL","Ryanair","Air India"],"title":"Airline","type":"string"}},"required":["airline"],"title":"airline_baggage_rulesArguments","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_baggage_allowance":{"post":{"operationId":"compare_baggage_allowance","summary":"Side-by-side checked and carry-on baggage allowances for two airlines. Use for \"compare Ryanair and","description":"Side-by-side checked and carry-on baggage allowances for two airlines. Use for \"compare Ryanair and\n    easyJet baggage rules\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"airline_a":{"description":"First airline name or IATA code.","title":"Airline A","type":"string"},"airline_b":{"description":"Second airline name or IATA code.","title":"Airline B","type":"string"}},"required":["airline_a","airline_b"],"title":"compare_baggage_allowanceArguments","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/liquids_rule_check":{"post":{"operationId":"liquids_rule_check","summary":"Checks one carry-on liquid/gel/aerosol item against the common international 3-1-1-style rule (each","description":"Checks one carry-on liquid/gel/aerosol item against the common international 3-1-1-style rule (each\n    container ≤100ml/3.4oz, all containers fitting in one 1L/1-quart bag). Use for \"can I bring a 150ml\n    bottle of sunscreen in my carry-on\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"item_name":{"description":"What the liquid/gel/aerosol item is.","examples":["sunscreen","shampoo"],"title":"Item Name","type":"string"},"volume_ml":{"anyOf":[{"minimum":0,"type":"number"},{"type":"null"}],"default":null,"description":"Container volume in millilitres, if known.","title":"Volume Ml"}},"required":["item_name"],"title":"liquids_rule_checkArguments","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/weight_estimator":{"post":{"operationId":"weight_estimator","summary":"Sums a list of packed items' estimated weights and, given an airline or an explicit limit, flags whether","description":"Sums a list of packed items' estimated weights and, given an airline or an explicit limit, flags whether\n    the total is likely to exceed the checked-bag weight limit. Use for \"will my bag be overweight for Delta\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"items":{"description":"Packed items, each {\"name\": str, \"weight_kg\": number} (or \"weight_g\").","items":{"additionalProperties":true,"type":"object"},"title":"Items","type":"array"},"airline":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Optional airline name/code to check against its checked-bag limit.","title":"Airline"},"checked_limit_kg":{"anyOf":[{"exclusiveMinimum":0,"type":"number"},{"type":"null"}],"default":null,"description":"Optional explicit checked-bag weight limit in kg, overrides airline lookup.","title":"Checked Limit Kg"}},"required":["items"],"title":"weight_estimatorArguments","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/climate_pack_adjustments":{"post":{"operationId":"climate_pack_adjustments","summary":"Clothing-layer guidance for a climate and season combination (e.g. what to actually pack for a temperate","description":"Clothing-layer guidance for a climate and season combination (e.g. what to actually pack for a temperate\n    destination in autumn). Use for \"what should I pack for a cold climate in winter\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"destination_climate":{"description":"hot | cold | temperate | tropical | variable","title":"Destination Climate","type":"string"},"season":{"description":"spring | summer | autumn | winter","title":"Season","type":"string"}},"required":["destination_climate","season"],"title":"climate_pack_adjustmentsArguments","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/document_checklist":{"post":{"operationId":"document_checklist","summary":"A general checklist of documents commonly needed for a trip (passport, visa reminder, travel insurance,","description":"A general checklist of documents commonly needed for a trip (passport, visa reminder, travel insurance,\n    vaccination card, driver's license/IDP, booking confirmations) — generic guidance, not destination-specific\n    visa or entry rules, which change too often and vary too much by nationality to hardcode safely. Use for \"what\n    documents do I need for an international business trip\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"trip_type":{"description":"business | leisure_beach | hiking_outdoor | winter_sports | backpacking | city_break | cruise","title":"Trip Type","type":"string"},"international":{"default":false,"description":"Whether this is international travel.","title":"International","type":"boolean"}},"required":["trip_type"],"title":"document_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/packing_cube_organizer":{"post":{"operationId":"packing_cube_organizer","summary":"Groups a packed-item list into num_cubes packing cubes using an LPT load-balancing algorithm (items are","description":"Groups a packed-item list into num_cubes packing cubes using an LPT load-balancing algorithm (items are\n    size-scored by category and greedily assigned to the currently-lightest cube), so cubes come out evenly\n    loaded rather than randomly split. Use for \"organize my packing list into 3 cubes\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"items":{"description":"Flat list of packed item names.","items":{"type":"string"},"minItems":1,"title":"Items","type":"array"},"num_cubes":{"default":3,"description":"How many packing cubes/pouches to organize into.","maximum":10,"minimum":1,"title":"Num Cubes","type":"integer"}},"required":["items"],"title":"packing_cube_organizerArguments","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/carry_on_essentials":{"post":{"operationId":"carry_on_essentials","summary":"A 'just in case checked luggage is lost or delayed' carry-on essentials list: medication, a change of","description":"A 'just in case checked luggage is lost or delayed' carry-on essentials list: medication, a change of\n    clothes, chargers, valuables and documents. Use for \"what should I keep in my carry-on in case my bag is\n    lost\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"trip_duration_days":{"description":"Trip length in days.","maximum":180,"minimum":1,"title":"Trip Duration Days","type":"integer"}},"required":["trip_duration_days"],"title":"carry_on_essentialsArguments","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/packing_glossary":{"post":{"operationId":"packing_glossary","summary":"Definitions of common packing terms (packing cube, compression bag, TSA lock, personal item vs carry-on,","description":"Definitions of common packing terms (packing cube, compression bag, TSA lock, personal item vs carry-on,\n    layering, the 3-1-1 liquids rule, capsule wardrobe, ...). Use for \"what's a packing cube\", \"what does TSA lock\n    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":"packing_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}}}}