10Life Travel

Compare 10Life single-trip travel plans. Stateless POST. GET returns 405.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
77%
Naming quality
93%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~2,397Tokens (tool definitions)
~8.5 KBTypical response size
Moderate attention impact (1.87% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "travel": {
      "url": "https://mcp.10life.com/mcp"
    }
  }
}

Remote endpoints

https://mcp.10life.com/mcpstreamable-http

What it can do

Tool inventory

Tools (3)

🟒 Read-only🟑 WriteπŸ”΄ Deleteβšͺ Unknown
🟒describe_travel_decoder

List single-trip destinations, insurers, feature filters, score floors, and sort orders. Call this before list_travel_plans. Plans from later calls include purchase_url for the user who wants to buy. Comparison data is not a personal recommendation or a policy.

Input Schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
🟒list_travel_plans(callReason, priorRecommendationId, regionCodes, durationDays, startDate, ...)

Return at most 5 single-trip travel plans for one destination, trip length, and traveller mix, with scores, cover limits, premium, and purchase_url. There is no next page. Figures are indicative. The product page is the authority for price and cover.

Input Schema

{
  "type": "object",
  "properties": {
    "callReason": {
      "type": "string",
      "maxLength": 400,
      "description": "Why this call is needed, in one or two sentences and in the user's language. Include the trip and what they want to optimize when they said so (price, medical cover, cancellation, belongings, instant purchase, family, senior, or an activity). Do not include the user's name, phone, email, identity document, or a paste of the chat."
    },
    "priorRecommendationId": {
      "type": "string",
      "description": "recommendationId from an earlier list_travel_plans response, when this call continues that comparison."
    },
    "regionCodes": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Destination codes from describe_travel_decoder. Default [\"japan\"]. Same role as geo_region[] on the comparison page."
    },
    "durationDays": {
      "type": "number",
      "description": "Trip length in days. Required when dates are omitted. At least 1."
    },
    "startDate": {
      "type": "string",
      "description": "Trip start YYYY-MM-DD. Default is today before 23:00 Hong Kong time, otherwise tomorrow."
    },
    "endDate": {
      "type": "string",
      "description": "Trip end YYYY-MM-DD. Default is start plus durationDays minus one day."
    },
    "travellers": {
      "type": "object",
      "description": "Traveller counts for this trip.",
      "properties": {
        "adults": {
          "type": "number",
          "description": "Adult travellers. Default 1."
        },
        "children": {
          "type": "number",
          "description": "Child travellers. Default 0."
        },
        "elderly": {
          "type": "number",
          "description": "Elderly travellers. Default 0."
        },
        "elderlyAges": {
          "type": "array",
          "items": {
            "type": "number"
          },
          "description": "One age per elderly traveller, used only to pick a premium band."
        },
        "isFamilyPlan": {
          "type": "boolean",
          "description": "Use a family premium when the plan has one."
        }
      },
      "additionalProperties": false
    },
    "premiumMin": {
      "type": "number",
      "description": "Minimum payable premium in HKD, after discount."
    },
    "premiumMax": {
      "type": "number",
      "description": "Maximum payable premium in HKD, after discount."
    },
    "tenlifeScoreMin": {
      "type": "number",
      "description": "Minimum 10Life score before destination weighting. Use 8, 7, or 6. Omit or 0 for any score."
    },
    "mobilePhoneProtection": {
      "type": "boolean",
      "description": "Keep only plans with ζ‰‹ζι›»θ©±δΏιšœ."
    },
    "followUpPhysiotherapy": {
      "type": "boolean",
      "description": "Keep only plans with 物理治療覆診."
    },
    "carRentalExcess": {
      "type": "boolean",
      "description": "Keep only plans with 租車θ‡ͺ付鑍."
    },
    "extremeSportsMedical": {
      "type": "boolean",
      "description": "Keep only plans with ζ₯­ι€˜ι‹ε‹•ι†«η™‚δΏιšœ."
    },
    "lossOfTravelDocument": {
      "type": "boolean",
      "description": "Keep only plans with ιΊε€±ζ—…θ‘Œθ­‰δ»Ά."
    },
    "insurerCodes": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Insurer codes from describe_travel_decoder. Case-insensitive."
    },
    "sort": {
      "type": "string",
      "enum": [
        "overall_score",
        "instant_purchase_first",
        "premium_by_plan",
        "medical_emergency_score",
        "accident_score",
        "inconv_score",
        "property_score"
      ],
      "description": "Sort order. Default instant_purchase_first (ε³ζ™‚ζŠ•δΏε„ͺε…ˆ). overall_score is 10Lifeθ©•εˆ†. premium_by_plan is 保費 (δ½Žθ‡³ι«˜). medical_emergency_score is ι†«η™‚εŠη·Šζ€₯ζ”―ζ΄θ©•εˆ†. accident_score is ε€‹δΊΊζ„ε€–θ©•εˆ†. inconv_score is ζ—…η¨‹ε—ι˜»θ©•εˆ†. property_score is ε€‹δΊΊθ²‘η‰©θ©•εˆ†."
    },
    "locale": {
      "type": "string",
      "description": "zh-Hant-HK (default) or en."
    },
    "type": {
      "type": "string",
      "description": "Must be single. Annual travel is rejected."
    }
  },
  "required": [
    "callReason",
    "durationDays"
  ],
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "properties": {
    "plans": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "purchase_url": {
            "description": "Link out for the user who wants to buy or read the plan. 10Life product page when the plan can be bought there, otherwise the insurer purchase link. Do not substitute the homepage or product_website."
          },
          "purchase_channel": {
            "description": "\"10life\" or \"insurer_direct\"."
          },
          "purchase_link_template": {
            "description": "10Life product URL pattern. Present when the plan is quoted on 10Life."
          },
          "decoder_cta_link": {
            "description": "Product deep link when the plan is quoted on 10Life. Otherwise the insurer promotion link, or null."
          },
          "instant_purchase": {
            "type": "boolean",
            "description": "True when the plan can be bought immediately on 10Life."
          },
          "plan_code": {
            "type": "string"
          },
          "plan_name": {
            "type": "string"
          },
          "overall_score": {
            "description": "10Life score for the selected destinations."
          },
          "totalPremium": {
            "description": "Payable premium for this trip, after discount when one applies."
          }
        }
      }
    },
    "meta": {
      "type": "object"
    }
  }
}
🟒get_travel_plan(callReason, priorRecommendationId, regionCodes, durationDays, startDate, ...)

Return one single-trip plan under the same filters as list_travel_plans, including purchase_url. A plan that does not match the filters is not found. Figures are indicative.

Input Schema

{
  "type": "object",
  "properties": {
    "callReason": {
      "type": "string",
      "maxLength": 400,
      "description": "Why this call is needed, in one or two sentences and in the user's language. Include the trip and what they want to optimize when they said so (price, medical cover, cancellation, belongings, instant purchase, family, senior, or an activity). Do not include the user's name, phone, email, identity document, or a paste of the chat."
    },
    "priorRecommendationId": {
      "type": "string",
      "description": "recommendationId from an earlier list_travel_plans response, when this call continues that comparison."
    },
    "regionCodes": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Destination codes from describe_travel_decoder. Default [\"japan\"]. Same role as geo_region[] on the comparison page."
    },
    "durationDays": {
      "type": "number",
      "description": "Trip length in days. Required when dates are omitted. At least 1."
    },
    "startDate": {
      "type": "string",
      "description": "Trip start YYYY-MM-DD. Default is today before 23:00 Hong Kong time, otherwise tomorrow."
    },
    "endDate": {
      "type": "string",
      "description": "Trip end YYYY-MM-DD. Default is start plus durationDays minus one day."
    },
    "travellers": {
      "type": "object",
      "description": "Traveller counts for this trip.",
      "properties": {
        "adults": {
          "type": "number",
          "description": "Adult travellers. Default 1."
        },
        "children": {
          "type": "number",
          "description": "Child travellers. Default 0."
        },
        "elderly": {
          "type": "number",
          "description": "Elderly travellers. Default 0."
        },
        "elderlyAges": {
          "type": "array",
          "items": {
            "type": "number"
          },
          "description": "One age per elderly traveller, used only to pick a premium band."
        },
        "isFamilyPlan": {
          "type": "boolean",
          "description": "Use a family premium when the plan has one."
        }
      },
      "additionalProperties": false
    },
    "premiumMin": {
      "type": "number",
      "description": "Minimum payable premium in HKD, after discount."
    },
    "premiumMax": {
      "type": "number",
      "description": "Maximum payable premium in HKD, after discount."
    },
    "tenlifeScoreMin": {
      "type": "number",
      "description": "Minimum 10Life score before destination weighting. Use 8, 7, or 6. Omit or 0 for any score."
    },
    "mobilePhoneProtection": {
      "type": "boolean",
      "description": "Keep only plans with ζ‰‹ζι›»θ©±δΏιšœ."
    },
    "followUpPhysiotherapy": {
      "type": "boolean",
      "description": "Keep only plans with 物理治療覆診."
    },
    "carRentalExcess": {
      "type": "boolean",
      "description": "Keep only plans with 租車θ‡ͺ付鑍."
    },
    "extremeSportsMedical": {
      "type": "boolean",
      "description": "Keep only plans with ζ₯­ι€˜ι‹ε‹•ι†«η™‚δΏιšœ."
    },
    "lossOfTravelDocument": {
      "type": "boolean",
      "description": "Keep only plans with ιΊε€±ζ—…θ‘Œθ­‰δ»Ά."
    },
    "insurerCodes": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Insurer codes from describe_travel_decoder. Case-insensitive."
    },
    "sort": {
      "type": "string",
      "enum": [
        "overall_score",
        "instant_purchase_first",
        "premium_by_plan",
        "medical_emergency_score",
        "accident_score",
        "inconv_score",
        "property_score"
      ],
      "description": "Sort order. Default instant_purchase_first (ε³ζ™‚ζŠ•δΏε„ͺε…ˆ). overall_score is 10Lifeθ©•εˆ†. premium_by_plan is 保費 (δ½Žθ‡³ι«˜). medical_emergency_score is ι†«η™‚εŠη·Šζ€₯ζ”―ζ΄θ©•εˆ†. accident_score is ε€‹δΊΊζ„ε€–θ©•εˆ†. inconv_score is ζ—…η¨‹ε—ι˜»θ©•εˆ†. property_score is ε€‹δΊΊθ²‘η‰©θ©•εˆ†."
    },
    "locale": {
      "type": "string",
      "description": "zh-Hant-HK (default) or en."
    },
    "type": {
      "type": "string",
      "description": "Must be single. Annual travel is rejected."
    },
    "planCode": {
      "type": "string",
      "description": "plan_code from a previous list_travel_plans result."
    }
  },
  "required": [
    "callReason",
    "planCode",
    "durationDays"
  ],
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "properties": {
    "plan": {
      "type": "object",
      "properties": {
        "purchase_url": {
          "description": "Link out for the user who wants to buy or read the plan. 10Life product page when the plan can be bought there, otherwise the insurer purchase link. Do not substitute the homepage or product_website."
        },
        "purchase_channel": {
          "description": "\"10life\" or \"insurer_direct\"."
        },
        "purchase_link_template": {
          "description": "10Life product URL pattern. Present when the plan is quoted on 10Life."
        },
        "decoder_cta_link": {
          "description": "Product deep link when the plan is quoted on 10Life. Otherwise the insurer promotion link, or null."
        },
        "instant_purchase": {
          "type": "boolean",
          "description": "True when the plan can be bought immediately on 10Life."
        },
        "plan_code": {
          "type": "string"
        },
        "plan_name": {
          "type": "string"
        },
        "overall_score": {
          "description": "10Life score for the selected destinations."
        },
        "totalPremium": {
          "description": "Payable premium for this trip, after discount when one applies."
        }
      }
    },
    "meta": {
      "type": "object"
    }
  }
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded3 tools