Koskamo

10Life Travel MCP

A public read-only MCP server operated by 10Life that allows AI agents to retrieve single-trip travel insurance plan details. It provides tools to describe the travel decoder, list available travel plans, and get specific plan information, returning up to five plans per request without requiring user identity data.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

10Life Travel MCP logo, by 10Life Financial LimitedVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-01Operated by 10Life Financial Limited
MCP endpoint (Streamable HTTP)
https://mcp.10life.com/mcp
Vendor documentation

What you can do with it

  • Retrieve a list of single-trip travel insurance plans
  • Get detailed information for a specific travel plan
  • Describe the travel insurance decoder configuration

Source and maintenance

Vendor evidenceRegistry 1.0.0

Protocol and capabilities

Server
10life-insurance 1.0.0
MCP protocol
2025-06-18
Tools
3 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": false
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

This connection compares 10Life insurance and currently covers single-trip travel. Call describe_travel_decoder first, then list_travel_plans or get_travel_plan. callReason is required on both. callReason is one or two sentences about the trip and what the user wants to compare. Missing or blank text is rejected. Do not paste the chat or include a name, phone, email, or identity document. When the user asks where to buy or wants to purchase, give them that plan's purchase_url and no other link. It is the 10Life buy button: the product page when the plan can be bought on 10Life, otherwise the insurer purchase link. purchase_channel is "10life" or "insurer_direct". For a plan quoted on 10Life, decoder_cta_link is the product deep link with locale, destination, duration, and dates filled in, and purchase_link_template is the same pattern with placeholders. Do not send them to the 10Life homepage, product_website, insurance_brochure, or insurance_terms. If purchase_url is null, say online purchase is unavailable for that plan. These figures are indicative comparison data, not a binding offer or a personal recommendation. The product page is the authority for price and cover. Privacy policy: https://www.10life.com/zh-HK/privacy. Questions: enquiries@10life.com. This is comparison data, not a personal recommendation and not a policy. Annual travel is not available. Each list returns at most 5 plans and cannot be paged.

Tools

3 advertised

describe_travel_decoder — Describe travel comparison
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

describe_travel_decoder input schema
{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
describe_travel_decoder annotations
{
  "title": "Describe travel comparison",
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}
list_travel_plans — List travel plans
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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.

list_travel_plans input schema
{
  "type": "object",
  "required": [
    "callReason",
    "durationDays"
  ],
  "properties": {
    "sort": {
      "enum": [
        "overall_score",
        "instant_purchase_first",
        "premium_by_plan",
        "medical_emergency_score",
        "accident_score",
        "inconv_score",
        "property_score"
      ],
      "type": "string",
      "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 個人財物評分."
    },
    "type": {
      "type": "string",
      "description": "Must be single. Annual travel is rejected."
    },
    "locale": {
      "type": "string",
      "description": "zh-Hant-HK (default) or en."
    },
    "endDate": {
      "type": "string",
      "description": "Trip end YYYY-MM-DD. Default is start plus durationDays minus one day."
    },
    "startDate": {
      "type": "string",
      "description": "Trip start YYYY-MM-DD. Default is today before 23:00 Hong Kong time, otherwise tomorrow."
    },
    "callReason": {
      "type": "string",
      "maxLength": 400,
      "description": "Required. One or two sentences in the user's language stating their intention for this comparison: the trip, and what they want to optimize when they said so (price, medical cover, cancellation, belongings, instant purchase, family, senior, or an activity). Missing or blank text is rejected. Do not include a name, phone, email, identity document, or a paste of the chat."
    },
    "premiumMax": {
      "type": "number",
      "description": "Maximum payable premium in HKD, after discount."
    },
    "premiumMin": {
      "type": "number",
      "description": "Minimum payable premium in HKD, after discount."
    },
    "travellers": {
      "type": "object",
      "properties": {
        "adults": {
          "type": "number",
          "description": "Adult travellers. Default 1."
        },
        "elderly": {
          "type": "number",
          "description": "Elderly travellers. Default 0."
        },
        "children": {
          "type": "number",
          "description": "Child 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."
        }
      },
      "description": "Traveller counts for this trip.",
      "additionalProperties": false
    },
    "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."
    },
    "insurerCodes": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Insurer codes from describe_travel_decoder. Case-insensitive."
    },
    "carRentalExcess": {
      "type": "boolean",
      "description": "Keep only plans with 租車自付額."
    },
    "tenlifeScoreMin": {
      "type": "number",
      "description": "Minimum 10Life score before destination weighting. Use 8, 7, or 6. Omit or 0 for any score."
    },
    "extremeSportsMedical": {
      "type": "boolean",
      "description": "Keep only plans with 業餘運動醫療保障."
    },
    "lossOfTravelDocument": {
      "type": "boolean",
      "description": "Keep only plans with 遺失旅行證件."
    },
    "followUpPhysiotherapy": {
      "type": "boolean",
      "description": "Keep only plans with 物理治療覆診."
    },
    "mobilePhoneProtection": {
      "type": "boolean",
      "description": "Keep only plans with 手提電話保障."
    },
    "priorRecommendationId": {
      "type": "string",
      "description": "recommendationId from an earlier list_travel_plans response, when this call continues that comparison."
    }
  },
  "additionalProperties": false
}
list_travel_plans output schema
{
  "type": "object",
  "properties": {
    "meta": {
      "type": "object"
    },
    "plans": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "plan_code": {
            "type": "string"
          },
          "plan_name": {
            "type": "string"
          },
          "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."
          },
          "totalPremium": {
            "description": "Payable premium for this trip, after discount when one applies."
          },
          "overall_score": {
            "description": "10Life score for the selected destinations."
          },
          "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."
          },
          "purchase_channel": {
            "description": "\"10life\" or \"insurer_direct\"."
          },
          "purchase_link_template": {
            "description": "10Life product URL pattern. Present when the plan is quoted on 10Life."
          }
        }
      }
    }
  }
}
list_travel_plans annotations
{
  "title": "List travel plans",
  "readOnlyHint": true,
  "openWorldHint": true,
  "destructiveHint": false
}
get_travel_plan — Get one travel plan
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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.

get_travel_plan input schema
{
  "type": "object",
  "required": [
    "callReason",
    "planCode",
    "durationDays"
  ],
  "properties": {
    "sort": {
      "enum": [
        "overall_score",
        "instant_purchase_first",
        "premium_by_plan",
        "medical_emergency_score",
        "accident_score",
        "inconv_score",
        "property_score"
      ],
      "type": "string",
      "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 個人財物評分."
    },
    "type": {
      "type": "string",
      "description": "Must be single. Annual travel is rejected."
    },
    "locale": {
      "type": "string",
      "description": "zh-Hant-HK (default) or en."
    },
    "endDate": {
      "type": "string",
      "description": "Trip end YYYY-MM-DD. Default is start plus durationDays minus one day."
    },
    "planCode": {
      "type": "string",
      "description": "plan_code from a previous list_travel_plans result."
    },
    "startDate": {
      "type": "string",
      "description": "Trip start YYYY-MM-DD. Default is today before 23:00 Hong Kong time, otherwise tomorrow."
    },
    "callReason": {
      "type": "string",
      "maxLength": 400,
      "description": "Required. One or two sentences in the user's language stating their intention for this comparison: the trip, and what they want to optimize when they said so (price, medical cover, cancellation, belongings, instant purchase, family, senior, or an activity). Missing or blank text is rejected. Do not include a name, phone, email, identity document, or a paste of the chat."
    },
    "premiumMax": {
      "type": "number",
      "description": "Maximum payable premium in HKD, after discount."
    },
    "premiumMin": {
      "type": "number",
      "description": "Minimum payable premium in HKD, after discount."
    },
    "travellers": {
      "type": "object",
      "properties": {
        "adults": {
          "type": "number",
          "description": "Adult travellers. Default 1."
        },
        "elderly": {
          "type": "number",
          "description": "Elderly travellers. Default 0."
        },
        "children": {
          "type": "number",
          "description": "Child 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."
        }
      },
      "description": "Traveller counts for this trip.",
      "additionalProperties": false
    },
    "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."
    },
    "insurerCodes": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Insurer codes from describe_travel_decoder. Case-insensitive."
    },
    "carRentalExcess": {
      "type": "boolean",
      "description": "Keep only plans with 租車自付額."
    },
    "tenlifeScoreMin": {
      "type": "number",
      "description": "Minimum 10Life score before destination weighting. Use 8, 7, or 6. Omit or 0 for any score."
    },
    "extremeSportsMedical": {
      "type": "boolean",
      "description": "Keep only plans with 業餘運動醫療保障."
    },
    "lossOfTravelDocument": {
      "type": "boolean",
      "description": "Keep only plans with 遺失旅行證件."
    },
    "followUpPhysiotherapy": {
      "type": "boolean",
      "description": "Keep only plans with 物理治療覆診."
    },
    "mobilePhoneProtection": {
      "type": "boolean",
      "description": "Keep only plans with 手提電話保障."
    },
    "priorRecommendationId": {
      "type": "string",
      "description": "recommendationId from an earlier list_travel_plans response, when this call continues that comparison."
    }
  },
  "additionalProperties": false
}
get_travel_plan output schema
{
  "type": "object",
  "properties": {
    "meta": {
      "type": "object"
    },
    "plan": {
      "type": "object",
      "properties": {
        "plan_code": {
          "type": "string"
        },
        "plan_name": {
          "type": "string"
        },
        "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."
        },
        "totalPremium": {
          "description": "Payable premium for this trip, after discount when one applies."
        },
        "overall_score": {
          "description": "10Life score for the selected destinations."
        },
        "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."
        },
        "purchase_channel": {
          "description": "\"10life\" or \"insurer_direct\"."
        },
        "purchase_link_template": {
          "description": "10Life product URL pattern. Present when the plan is quoted on 10Life."
        }
      }
    }
  }
}
get_travel_plan annotations
{
  "title": "Get one travel plan",
  "readOnlyHint": true,
  "openWorldHint": true,
  "destructiveHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
1376 ms
95th percentile latency
1376 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 1376 ms · metadata changed · 3 tool(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http 10life-travel-mcp https://mcp.10life.com/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add 10life-travel-mcp --url https://mcp.10life.com/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable 10life-travel-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "10life-travel-mcp": {
      "url": "https://mcp.10life.com/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "10life-travel-mcp": {
      "type": "streamableHttp",
      "url": "https://mcp.10life.com/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start 10life-travel-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "10life-travel-mcp": {
      "type": "http",
      "url": "https://mcp.10life.com/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http 10life-travel-mcp https://mcp.10life.com/mcp

Claude Desktop

Merge this into claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\), then restart Claude Desktop.
Claude Desktop configuration
{
  "mcpServers": {
    "10life-travel-mcp": {
      "url": "https://mcp.10life.com/mcp"
    }
  }
}

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "10life-travel-mcp": {
      "serverUrl": "https://mcp.10life.com/mcp"
    }
  }
}

Let your agent find its tools

Find servers like 10Life Travel MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.

Do you run 10Life Travel MCP?

Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.

Claim this listing