{
  "protocolVersion": "0.3.0",
  "name": "Can I enter?",
  "description": "Visa & entry requirements agent. Answers whether a passport holder can enter a destination — visa-free, visa on arrival, e-visa, eTA, or visa required — with allowed stay, official government application portals, and per-field source citations. Free rate-limited tier; pay-per-request via the x402 protocol (USDC on Base), no account or API key. Matrix revision 2026-08-12.",
  "version": "0.1.0",
  "url": "https://api.canienter.com",
  "preferredTransport": "HTTP+JSON",
  "additionalInterfaces": [
    {
      "url": "https://api.canienter.com",
      "protocol": "HTTP+JSON",
      "transport": "HTTP+JSON"
    }
  ],
  "provider": {
    "organization": "CanIEnter",
    "url": "https://canienter.com",
    "contact": "api@canienter.com"
  },
  "iconUrl": "https://canienter.com/apple-touch-icon.png",
  "documentationUrl": "https://api.canienter.com/llms.txt",
  "capabilities": {
    "streaming": false,
    "pushNotifications": false,
    "stateTransitionHistory": false,
    "extensions": [
      {
        "uri": "https://github.com/google-agentic-commerce/ap2/v1",
        "description": "Supports the Agent Payments Protocol (AP2) as a merchant: paid endpoints accept agent-initiated payments backed by signed mandates (x402 / USDC on Base).",
        "required": false,
        "params": {
          "roles": [
            "merchant"
          ]
        }
      }
    ]
  },
  "defaultInputModes": [
    "application/json"
  ],
  "defaultOutputModes": [
    "application/json"
  ],
  "skills": [
    {
      "id": "check-entry-requirements",
      "name": "Check entry requirements",
      "description": "Given a passport and destination (ISO 3166-1 alpha-3), return the entry requirement, allowed stay, official application portal when action is needed, and extended rules (passport validity, onward ticket, yellow fever, transit-without-visa) with source citations. Optional context: transit country, purpose, residence permits and visas held. GET /free/check (free, 5/day per IP) or GET /v1/check ($0.03 via x402).",
      "tags": [
        "visa",
        "travel",
        "entry-requirements",
        "immigration",
        "x402"
      ],
      "examples": [
        "Can a Dutch passport holder enter Japan?",
        "Does a US citizen need a visa for Brazil, transiting through Panama?",
        "GET /free/check?passport=NLD&destination=JPN"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "passport-visa-matrix",
      "name": "Passport visa matrix",
      "description": "Full destination matrix for one passport: the entry requirement for every covered destination in a single response. GET /v1/passport/{iso3} ($0.15 via x402).",
      "tags": [
        "visa",
        "travel",
        "matrix",
        "x402"
      ],
      "examples": [
        "Which countries can an Indian passport holder visit visa-free?",
        "GET /v1/passport/NLD"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "evaluate-trip",
      "name": "Evaluate a full trip",
      "description": "Premium evaluation of a whole itinerary in one request: multiple passports (best option per leg), residence permits and visas held, multi-leg trips with transit legs, per-leg dates and purpose. Every decision includes why[] explanations, conditions[] (passport validity, onward ticket, yellow fever, stay-duration fit), and an explainable verification state. POST /v1/trips/evaluate ($0.10 via x402).",
      "tags": [
        "visa",
        "travel",
        "itinerary",
        "transit",
        "multi-passport",
        "x402"
      ],
      "examples": [
        "I hold Dutch and US passports — evaluate Amsterdam → Doha (transit) → Tokyo for two weeks in October.",
        "POST /v1/trips/evaluate {traveler:{passports:[\"NLD\"]},trip:{legs:[{country:\"JPN\"}]}}"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    }
  ]
}