Server definition
- Hash
- sha256:3fe9cc336ea544c92d8f33ca44f3b45790d11a8e63aa0a185e2e2252d14755ca
- What it is
- What a remote MCP server returned when asked what it offers: 7 tools
The blob, as servednamed by its sha256
{
"instructions": "Bloomy eSIM sells data-only travel eSIMs (no phone number, no SMS) for 200+ countries and regions. Start with recommend_plan (destination + days, plus how they use data if known). Show the options with price and reason, then give the traveler the purchase_url of the one they pick. The traveler pays on that page; this server never takes payment. The QR code is emailed and shown in My Page right after payment. Validity starts when the eSIM first connects at the destination, so they can buy and install before departure. Use get_setup_guide for installation questions. If the traveler pastes an itinerary, extract every country and the total days and call recommend_plan once with destinations.",
"tools": [
{
"description": "Same formula as bloomyesim.com/data-calculator: daily MB per activity x days x Wi-Fi factor x 1.15 safety buffer, rounded up.",
"inputSchema": {
"properties": {
"activities": {
"items": {
"enum": [
"maps",
"messaging",
"web",
"music",
"voice",
"social",
"video_call",
"hotspot_light",
"video",
"hotspot_heavy"
],
"type": "string"
},
"type": "array"
},
"days": {
"maximum": 180,
"minimum": 1,
"type": "integer"
},
"wifi": {
"enum": [
"rarely",
"sometimes",
"often"
],
"type": "string"
}
},
"required": [
"days",
"activities"
],
"type": "object"
},
"name": "estimate_data",
"outputSchema": null
},
{
"description": "Details of one plan: data, validity, network, 5G, top-up, carriers, price and checkout link.",
"inputSchema": {
"properties": {
"days": {
"description": "Trip length (sets the day count and total for daily plans).",
"type": "integer"
},
"lang": {
"description": "Language for names and for the purchase page. Default en.",
"enum": [
"en",
"ja",
"zh-cn",
"zh-tw",
"ko",
"es",
"fr"
],
"type": "string"
},
"plan_id": {
"type": "integer"
}
},
"required": [
"plan_id"
],
"type": "object"
},
"name": "get_plan",
"outputSchema": null
},
{
"description": "Link straight to the final confirmation screen for this plan. The traveler pays there themselves; this tool never takes payment. The QR code is emailed and shown in My Page right after payment.",
"inputSchema": {
"properties": {
"days": {
"description": "Trip length (needed for daily plans).",
"type": "integer"
},
"lang": {
"description": "Language for names and for the purchase page. Default en.",
"enum": [
"en",
"ja",
"zh-cn",
"zh-tw",
"ko",
"es",
"fr"
],
"type": "string"
},
"plan_id": {
"type": "integer"
}
},
"required": [
"plan_id"
],
"type": "object"
},
"name": "get_purchase_link",
"outputSchema": null
},
{
"description": "Short, accurate setup steps (iPhone or Android), what to check before buying, and links to the full guide, the device checker and troubleshooting.",
"inputSchema": {
"properties": {
"device": {
"enum": [
"iphone",
"android"
],
"type": "string"
},
"lang": {
"description": "Language for names and for the purchase page. Default en.",
"enum": [
"en",
"ja",
"zh-cn",
"zh-tw",
"ko",
"es",
"fr"
],
"type": "string"
}
},
"type": "object"
},
"name": "get_setup_guide",
"outputSchema": null
},
{
"description": "Countries with a dedicated plan, with ISO code, localized name, number of plans and the lowest price. Use query to filter.",
"inputSchema": {
"properties": {
"lang": {
"description": "Language for names and for the purchase page. Default en.",
"enum": [
"en",
"ja",
"zh-cn",
"zh-tw",
"ko",
"es",
"fr"
],
"type": "string"
},
"query": {
"description": "Part of a country name or code. Omit to list all.",
"type": "string"
}
},
"type": "object"
},
"name": "list_destinations",
"outputSchema": null
},
{
"description": "Best first call. Give the destination (or all destinations of a multi-country trip) and trip length, plus how the traveler uses data if known. Returns up to 3 options with a reason each: best_fit (cheapest that covers the estimated need), budget (cheaper, below the estimate) and roomier (next size up), each with a link straight to checkout confirmation. If the traveler pastes an itinerary or flight details, extract every country visited and the total days and pass them as destinations + days.",
"inputSchema": {
"properties": {
"activities": {
"description": "Specific uses named by the traveler (e.g. hotspot_light for tethering, video_call, video). Overrides usage. Same categories as bloomyesim.com/data-calculator.",
"items": {
"enum": [
"maps",
"messaging",
"web",
"music",
"voice",
"social",
"video_call",
"hotspot_light",
"video",
"hotspot_heavy"
],
"type": "string"
},
"type": "array"
},
"days": {
"description": "Trip length in days (total for a multi-country trip).",
"maximum": 180,
"minimum": 1,
"type": "integer"
},
"destination": {
"description": "Country name in any of en/ja/zh/ko/es/fr (e.g. \"Turkey\", \"トルコ\", \"Türkiye\") or ISO 3166-1 alpha-2 code (\"TR\"). For one country.",
"type": "string"
},
"destinations": {
"description": "For a trip through several countries: every country visited (names or ISO codes). One eSIM covering all of them is searched. Use instead of destination.",
"items": {
"type": "string"
},
"maxItems": 5,
"type": "array"
},
"lang": {
"description": "Language for names and for the purchase page. Default en.",
"enum": [
"en",
"ja",
"zh-cn",
"zh-tw",
"ko",
"es",
"fr"
],
"type": "string"
},
"min_gb": {
"description": "Use this instead of usage/activities when the traveler already knows the GB they want.",
"type": "number"
},
"usage": {
"description": "light = maps and messaging, normal = maps, messaging, web and social (default), heavy = plus video streaming. Use activities instead when the traveler names specific uses.",
"enum": [
"light",
"normal",
"heavy"
],
"type": "string"
},
"wifi": {
"description": "How often hotel/cafe Wi-Fi is used. Default sometimes.",
"enum": [
"rarely",
"sometimes",
"often"
],
"type": "string"
}
},
"required": [
"days"
],
"type": "object"
},
"name": "recommend_plan",
"outputSchema": null
},
{
"description": "List plans for a destination, cheapest first, single-country plans before multi-country ones. Filter by trip length, minimum GB, and plan type.",
"inputSchema": {
"properties": {
"destination": {
"description": "Country name (any supported language) or ISO alpha-2 code.",
"type": "string"
},
"lang": {
"description": "Language for names and for the purchase page. Default en.",
"enum": [
"en",
"ja",
"zh-cn",
"zh-tw",
"ko",
"es",
"fr"
],
"type": "string"
},
"limit": {
"description": "Default 8.",
"maximum": 20,
"minimum": 1,
"type": "integer"
},
"min_days": {
"description": "Trip length. Fixed-GB plans shorter than this are skipped; daily plans get the trip total.",
"type": "integer"
},
"min_gb": {
"description": "Minimum GB (daily allowance for daily plans).",
"type": "number"
},
"plan_type": {
"description": "\"data\" = fixed GB for the whole period, \"unlimited\" = priced per day.",
"enum": [
"data",
"unlimited"
],
"type": "string"
}
},
"required": [
"destination"
],
"type": "object"
},
"name": "search_plans",
"outputSchema": null
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:3fe9cc336ea544c92d8f33ca44f3b45790d11a8e63aa0a185e2e2252d14755ca | sha256sum