{
  "name": "NexaEsim MCP Commerce",
  "title": "NexaEsim public retail travel eSIM MCP",
  "description": "Search retail travel eSIM packages, create a cart, and generate a secure NexaEsim checkout URL.",
  "protocol": {
    "name": "Model Context Protocol",
    "version": "2025-06-18"
  },
  "endpoint": "https://nexaesim.com/mcp",
  "transport": "streamable-http",
  "authentication": "none",
  "language": "en",
  "currency": "USD",
  "pricing": "retail",
  "capabilities": {
    "tools": true
  },
  "manifest": "https://nexaesim.com/.well-known/mcp.json",
  "serverCard": "https://nexaesim.com/.well-known/mcp/server.json",
  "documentation": "https://nexaesim.com/llms-full.txt",
  "tools": [
    {
      "name": "search_countries",
      "title": "Search Countries",
      "description": "Resolve a supported destination before searching plans. Accepts an English country name, ISO 3166-1 alpha-2, or ISO 3166-1 alpha-3 code. Exact ISO matches rank first.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "English country name, ISO2, or ISO3."
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 50,
            "default": 20
          }
        },
        "required": [
          "query"
        ],
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "search_esim",
      "title": "Search Esim",
      "description": "Search active NexaEsim retail eSIM plans. Resolve ambiguous destinations with search_countries first. Results are English, prices are final current retail prices in USD, and package_id is the stable value to pass to add_to_cart.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "country": {
            "type": "string",
            "description": "English country name, ISO2, or ISO3."
          },
          "duration_days": {
            "type": "integer",
            "minimum": 1,
            "maximum": 365
          },
          "data_gb": {
            "type": "number",
            "description": "Minimum total data in GB, or -1 for unlimited."
          },
          "page": {
            "type": "integer",
            "minimum": 1,
            "default": 1
          },
          "page_size": {
            "type": "integer",
            "minimum": 1,
            "maximum": 50,
            "default": 20
          }
        },
        "required": [
          "country"
        ],
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "create_cart",
      "title": "Create Cart",
      "description": "Create an empty USD retail cart that expires after two hours. Create the cart only after the customer asks to continue with a purchase.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "currency": {
            "type": "string",
            "enum": [
              "USD"
            ],
            "default": "USD"
          },
          "customer_email": {
            "type": "string",
            "format": "email"
          }
        },
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": false
      }
    },
    {
      "name": "add_to_cart",
      "title": "Add To Cart",
      "description": "Add the customer's selected package to an MCP cart. Use only a package_id returned by search_esim. NexaEsim recalculates availability and retail pricing server-side and ignores agent-supplied prices.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "cart_id": {
            "type": "string",
            "format": "uuid"
          },
          "package_id": {
            "type": "integer",
            "minimum": 1
          },
          "quantity": {
            "type": "integer",
            "minimum": 1,
            "maximum": 10,
            "default": 1
          }
        },
        "required": [
          "cart_id",
          "package_id"
        ],
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": false
      }
    },
    {
      "name": "get_cart",
      "title": "Get Cart",
      "description": "Read the current items and authoritative retail total for an MCP cart before checkout.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "cart_id": {
            "type": "string",
            "format": "uuid"
          }
        },
        "required": [
          "cart_id"
        ],
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "set_cart_item_quantity",
      "title": "Set Cart Item Quantity",
      "description": "Change the quantity of a package already in the cart. Set quantity to 0 to remove it. Confirm the requested change with the customer before calling.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "cart_id": {
            "type": "string",
            "format": "uuid"
          },
          "package_id": {
            "type": "integer",
            "minimum": 1
          },
          "quantity": {
            "type": "integer",
            "minimum": 0,
            "maximum": 10
          }
        },
        "required": [
          "cart_id",
          "package_id",
          "quantity"
        ],
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": false
      }
    },
    {
      "name": "generate_checkout_url",
      "title": "Generate Checkout Url",
      "description": "Create a 30-minute NexaEsim checkout link after the customer confirms the cart and email. Link previews are safe; the link is finalized when an order is submitted. Never collect payment credentials; the customer enters them only on NexaEsim checkout.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "cart_id": {
            "type": "string",
            "format": "uuid"
          },
          "customer_email": {
            "type": "string",
            "format": "email"
          }
        },
        "required": [
          "cart_id",
          "customer_email"
        ],
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": false
      }
    }
  ]
}