variotrip route eSIM configurator

One travel eSIM for up to 8 countries: live quotes by route, GB, days and networks, plus a buy link.

我該用這個嗎

品質與安全性

A
說明品質
100%
結構描述完整度
97%
命名品質
91%
汙染風險
100%
權限相符程度
100%
協定合規性
100%

根據工具定義與協定合規性的自動化分析。

上下文成本

~3,632Token(工具定義)
~4.9 KB典型回應大小
顯著的注意力影響(128k 上下文的 2.84%)

這是每次將伺服器的工具載入模型上下文時所消耗的約略 token 數量。數量越高,可用於其他工作的注意力就越少。

安裝

一鍵安裝

將以下內容加入你的 `claude_desktop_config.json` 檔案:

{
  "mcpServers": {
    "esim-catalog": {
      "url": "https://variotrip.com/wp-json/variotrip/mcp"
    }
  }
}

遠端端點

https://variotrip.com/wp-json/variotrip/mcpstreamable-http

它能做什麼

工具清單

工具(7)

🟢 唯讀🟡 寫入🔴 刪除⚪ 未知
🟢get_shop_facts(language, bucket)

What variotrip is and how it works, in the shop’s own words: one mobile-data eSIM for the whole route, one shared data pool, the trip length, ranges, delivery, payment, hotspot, activation, top-ups (data, days or a country), router activation, e-mails, support. Use for any question that is not a price.

輸入結構描述

{
  "type": "object",
  "properties": {
    "language": {
      "type": "string",
      "description": "ISO language of the conversation, e.g. en, de, ja. Localizes country names and sets the language/currency of links and prices."
    },
    "bucket": {
      "type": "string",
      "description": "Optional language-region bucket the customer shops in, e.g. en-gb, de-de (sets currency and link locale). Defaults from language."
    }
  }
}
🟢list_destinations(language, bucket, currency)

Every country variotrip can put on a route, with the number of selectable networks and the starting price of a one-country route (1 GB · 7 days · cheapest network). Use to check coverage or to see which countries of a trip are available.

輸入結構描述

{
  "type": "object",
  "properties": {
    "language": {
      "type": "string",
      "description": "ISO language of the conversation, e.g. en, de, ja. Localizes country names and sets the language/currency of links and prices."
    },
    "bucket": {
      "type": "string",
      "description": "Optional language-region bucket the customer shops in, e.g. en-gb, de-de (sets currency and link locale). Defaults from language."
    },
    "currency": {
      "type": "string",
      "description": "Optional ISO 4217 override for prices."
    }
  }
}
🟢get_networks(destination, language, bucket, currency)

The mobile networks the customer can tick for one country (operator name, 4G/5G) with the price of a reference one-country route on each network alone (1 GB · 7 days), so you can say which network is the cheapest and what the others add.

輸入結構描述

{
  "type": "object",
  "properties": {
    "destination": {
      "type": "string",
      "description": "Country in ANY language or its ISO code, e.g. \"Japan\", \"Japon\", \"jp\". Map a city to its country first."
    },
    "language": {
      "type": "string",
      "description": "ISO language of the conversation, e.g. en, de, ja. Localizes country names and sets the language/currency of links and prices."
    },
    "bucket": {
      "type": "string",
      "description": "Optional language-region bucket the customer shops in, e.g. en-gb, de-de (sets currency and link locale). Defaults from language."
    },
    "currency": {
      "type": "string",
      "description": "Optional ISO 4217 override for prices."
    }
  },
  "required": [
    "destination"
  ]
}
🟢quote_route(route, gb, days, language, bucket, ...)

Use while the customer is still deciding — "how much is …?": the exact price of ONE eSIM for the whole route — the countries in travel order (1–8) with their networks, ONE data pool in GB for all of them and the trip length — the server price the customer would pay. A single country is a route of one. Quote it as returned, never compute, add up or scale it yourself. The result carries a buy_url for reference; when the customer says they want to buy, call start_checkout.

輸入結構描述

{
  "type": "object",
  "properties": {
    "route": {
      "type": "array",
      "minItems": 1,
      "maxItems": 8,
      "description": "The countries of the trip in travel order (1–8, each once).",
      "items": {
        "type": "object",
        "properties": {
          "destination": {
            "type": "string",
            "description": "Country in ANY language or its ISO code, e.g. \"Vietnam\", \"Viêt Nam\", \"vn\". Map a city to its country first."
          },
          "networks": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Optional: operator names (or codes) from get_networks for this country. Omit = its cheapest network."
          }
        },
        "required": [
          "destination"
        ]
      }
    },
    "gb": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100,
      "description": "The data pool for the WHOLE route in whole GB (1–100), shared by every country. Omit = sized for normal use (1.5 GB × days). Not sure? Call recommend_config."
    },
    "days": {
      "type": "integer",
      "minimum": 1,
      "maximum": 90,
      "description": "Trip length in days (1–90) for the whole route, counted from the first connection anywhere on the route."
    },
    "language": {
      "type": "string",
      "description": "ISO language of the conversation, e.g. en, de, ja. Localizes country names and sets the language/currency of links and prices."
    },
    "bucket": {
      "type": "string",
      "description": "Optional language-region bucket the customer shops in, e.g. en-gb, de-de (sets currency and link locale). Defaults from language."
    },
    "currency": {
      "type": "string",
      "description": "Optional ISO 4217 override for prices."
    }
  },
  "required": [
    "route",
    "days"
  ]
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "route": {
      "type": "array",
      "description": "The countries on the eSIM in travel order with the networks of each.",
      "items": {
        "type": "object",
        "additionalProperties": true,
        "properties": {
          "destination": {
            "type": "string",
            "description": "Country name (localized)."
          },
          "iso": {
            "type": "string",
            "description": "ISO 3166-1 alpha-2, lower case."
          },
          "networks": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Operator names included for this country."
          },
          "networks_unmatched": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Requested names this country does not have."
          }
        }
      }
    },
    "countries": {
      "type": "integer"
    },
    "data_gb": {
      "type": "integer",
      "description": "ONE data pool for every country on the route (whole GB), used wherever the customer is."
    },
    "days": {
      "type": "integer",
      "description": "Trip length, counted from the first connection anywhere on the route."
    },
    "price": {
      "type": "number",
      "description": "FULL price of this route in currency — the amount paid. Not per day, per GB or per country."
    },
    "currency": {
      "type": "string"
    },
    "price_basis": {
      "type": "string",
      "enum": [
        "total"
      ]
    },
    "price_is_final": {
      "type": "boolean"
    },
    "hotspot": {
      "type": "boolean"
    },
    "activation_trigger": {
      "type": "string",
      "description": "first_connection (anywhere on the route)"
    },
    "topup": {
      "type": "object",
      "additionalProperties": true,
      "properties": {
        "kind": {
          "type": "string",
          "enum": [
            "route"
          ]
        },
        "how": {
          "type": "string"
        }
      },
      "description": "How the customer adds data, days or a country later (not through the tools)."
    },
    "not_available": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Requested countries variotrip cannot add (left out of the quote)."
    },
    "note": {
      "type": "string",
      "description": "Present when something about the request had to be adjusted — read it to the customer."
    },
    "buy_url": {
      "type": "string",
      "description": "The route builder pre-set to exactly this route. Use verbatim."
    }
  },
  "additionalProperties": true
}
🟢recommend_config(route, days, usage, gb_per_day, budget, ...)

Use when the customer describes a trip instead of a size: the countries (with the days in each, when known) and how they use data (usage light / normal / heavy, or gb_per_day). Sizes the shared pool from the trip length and returns three server-quoted routes — exact, comfortable (×1.5) and generous (×2) — each with the pool in GB, the full price, a one-line reason and its buy_url, plus an optional budget check. Same prices as quote_route.

輸入結構描述

{
  "type": "object",
  "properties": {
    "route": {
      "type": "array",
      "minItems": 1,
      "maxItems": 8,
      "description": "The countries of the trip in travel order (1–8, each once).",
      "items": {
        "type": "object",
        "properties": {
          "destination": {
            "type": "string",
            "description": "Country in ANY language or its ISO code, e.g. \"Vietnam\", \"Viêt Nam\", \"vn\". Map a city to its country first."
          },
          "networks": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Optional: operator names (or codes) from get_networks for this country. Omit = its cheapest network."
          },
          "days_in_country": {
            "type": "integer",
            "minimum": 1,
            "maximum": 90,
            "description": "Days the customer spends in this country. Without days, the trip length is the sum of the days_in_country given; with neither, the call fails with invalid_argument and asks for days."
          }
        },
        "required": [
          "destination"
        ]
      }
    },
    "days": {
      "type": "integer",
      "minimum": 1,
      "maximum": 90,
      "description": "Trip length in days (1–90). Give days, or days_in_country on the countries (then the trip length is their sum). With neither, the call fails with invalid_argument asking for days."
    },
    "usage": {
      "type": "string",
      "enum": [
        "light",
        "normal",
        "heavy"
      ],
      "description": "light ≈ 0.5 GB/day, normal ≈ 1.5 GB/day (default), heavy ≈ 4 GB/day."
    },
    "gb_per_day": {
      "type": "number",
      "minimum": 0.1,
      "maximum": 100,
      "description": "Optional: the customer's own estimate in GB per day (wins over usage)."
    },
    "budget": {
      "type": "number",
      "description": "Optional budget for the whole route in the quoted currency; options above it are marked."
    },
    "language": {
      "type": "string",
      "description": "ISO language of the conversation, e.g. en, de, ja. Localizes country names and sets the language/currency of links and prices."
    },
    "bucket": {
      "type": "string",
      "description": "Optional language-region bucket the customer shops in, e.g. en-gb, de-de (sets currency and link locale). Defaults from language."
    },
    "currency": {
      "type": "string",
      "description": "Optional ISO 4217 override for prices."
    }
  },
  "required": [
    "route"
  ]
}
🟢price_grid(route, days, gb, language, bucket, ...)

The same route priced for several trip lengths (days, max 8) and several pool sizes (gb, max 6), in one call — e.g. to compare with other providers or to find the best fit. Same server prices as quote_route; each cell has its own buy_url.

輸入結構描述

{
  "type": "object",
  "properties": {
    "route": {
      "type": "array",
      "minItems": 1,
      "maxItems": 8,
      "description": "The countries of the trip in travel order (1–8, each once).",
      "items": {
        "type": "object",
        "properties": {
          "destination": {
            "type": "string",
            "description": "Country in ANY language or its ISO code, e.g. \"Vietnam\", \"Viêt Nam\", \"vn\". Map a city to its country first."
          },
          "networks": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Optional: operator names (or codes) from get_networks for this country. Omit = its cheapest network."
          }
        },
        "required": [
          "destination"
        ]
      }
    },
    "days": {
      "type": "array",
      "items": {
        "type": "integer",
        "minimum": 1,
        "maximum": 90
      },
      "minItems": 1,
      "maxItems": 8,
      "description": "Up to 8 trip lengths, e.g. [7,14,21,30]."
    },
    "gb": {
      "type": "array",
      "items": {
        "type": "integer",
        "minimum": 1,
        "maximum": 100
      },
      "maxItems": 6,
      "description": "Optional: up to 6 pool sizes for the whole route in whole GB, e.g. [5,10,20]. Omit = sized for normal use from each trip length."
    },
    "language": {
      "type": "string",
      "description": "ISO language of the conversation, e.g. en, de, ja. Localizes country names and sets the language/currency of links and prices."
    },
    "bucket": {
      "type": "string",
      "description": "Optional language-region bucket the customer shops in, e.g. en-gb, de-de (sets currency and link locale). Defaults from language."
    },
    "currency": {
      "type": "string",
      "description": "Optional ISO 4217 override for prices."
    }
  },
  "required": [
    "route",
    "days"
  ]
}
🟢start_checkout(route, gb, days, language, bucket, ...)

Use only once the customer has decided to buy ("I'll take it", "how do I buy?"): the checkout handoff for one route (same input as quote_route). Returns the buy_url to give the customer, the final price and a ready-to-send checkout block (next_step, payment_methods, delivery) — on the page the route builder shows exactly this route; they press "Get it" and pay securely. No account needed; the eSIM is delivered on screen and by e-mail right after payment. No in-chat order tracking, no discount codes. For prices while the customer is still comparing, use quote_route.

輸入結構描述

{
  "type": "object",
  "properties": {
    "route": {
      "type": "array",
      "minItems": 1,
      "maxItems": 8,
      "description": "The countries of the trip in travel order (1–8, each once).",
      "items": {
        "type": "object",
        "properties": {
          "destination": {
            "type": "string",
            "description": "Country in ANY language or its ISO code, e.g. \"Vietnam\", \"Viêt Nam\", \"vn\". Map a city to its country first."
          },
          "networks": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Optional: operator names (or codes) from get_networks for this country. Omit = its cheapest network."
          }
        },
        "required": [
          "destination"
        ]
      }
    },
    "gb": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100,
      "description": "The data pool for the WHOLE route in whole GB (1–100), shared by every country. Omit = sized for normal use (1.5 GB × days). Not sure? Call recommend_config."
    },
    "days": {
      "type": "integer",
      "minimum": 1,
      "maximum": 90,
      "description": "Trip length in days (1–90) for the whole route, counted from the first connection anywhere on the route."
    },
    "language": {
      "type": "string",
      "description": "ISO language of the conversation, e.g. en, de, ja. Localizes country names and sets the language/currency of links and prices."
    },
    "bucket": {
      "type": "string",
      "description": "Optional language-region bucket the customer shops in, e.g. en-gb, de-de (sets currency and link locale). Defaults from language."
    },
    "currency": {
      "type": "string",
      "description": "Optional ISO 4217 override for prices."
    }
  },
  "required": [
    "route",
    "days"
  ]
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "route": {
      "type": "array",
      "description": "The countries on the eSIM in travel order with the networks of each.",
      "items": {
        "type": "object",
        "additionalProperties": true,
        "properties": {
          "destination": {
            "type": "string",
            "description": "Country name (localized)."
          },
          "iso": {
            "type": "string",
            "description": "ISO 3166-1 alpha-2, lower case."
          },
          "networks": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Operator names included for this country."
          },
          "networks_unmatched": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Requested names this country does not have."
          }
        }
      }
    },
    "countries": {
      "type": "integer"
    },
    "data_gb": {
      "type": "integer",
      "description": "ONE data pool for every country on the route (whole GB), used wherever the customer is."
    },
    "days": {
      "type": "integer",
      "description": "Trip length, counted from the first connection anywhere on the route."
    },
    "price": {
      "type": "number",
      "description": "FULL price of this route in currency — the amount paid. Not per day, per GB or per country."
    },
    "currency": {
      "type": "string"
    },
    "price_basis": {
      "type": "string",
      "enum": [
        "total"
      ]
    },
    "price_is_final": {
      "type": "boolean"
    },
    "hotspot": {
      "type": "boolean"
    },
    "activation_trigger": {
      "type": "string",
      "description": "first_connection (anywhere on the route)"
    },
    "topup": {
      "type": "object",
      "additionalProperties": true,
      "properties": {
        "kind": {
          "type": "string",
          "enum": [
            "route"
          ]
        },
        "how": {
          "type": "string"
        }
      },
      "description": "How the customer adds data, days or a country later (not through the tools)."
    },
    "not_available": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Requested countries variotrip cannot add (left out of the quote)."
    },
    "note": {
      "type": "string",
      "description": "Present when something about the request had to be adjusted — read it to the customer."
    },
    "buy_url": {
      "type": "string",
      "description": "The route builder pre-set to exactly this route. Use verbatim."
    },
    "next_step": {
      "type": "string",
      "description": "What the customer does now: open buy_url, press \"Get it\", pay."
    },
    "payment_methods": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "delivery": {
      "type": "string",
      "description": "How and when the eSIM arrives."
    },
    "message": {
      "type": "string",
      "description": "A ready-to-send line for the customer."
    }
  },
  "required": [
    "buy_url",
    "price",
    "currency",
    "next_step"
  ],
  "additionalProperties": true
}

社群

為此伺服器評分

證據

近期觀測

已驗證未記錄版本7 個工具