Skip to main content
Glama

Match visas

transita_match_visas
Read-onlyIdempotent

Find the visa routes a person qualifies for from their profile. Returns the top matches ranked by estimated eligibility, with timeline, cost, official sources and a link to track the chosen route on transita.app. EU citizens see freedom-of-movement options first. Read-only: nothing is stored. Scores are estimates, not legal advice or a decision.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "citizenship": "<citizenship>"
    },
    "name": "transita_match_visas"
  }
}

Input Schema

NameRequiredDescriptionDefault
ageNoAge in years, e.g. 31.
goalNoMain reason for moving, e.g. 'work_tech'.
timelineNoWhen the person wants to move, e.g. '1year'.
wants_prNoTrue to keep only routes that lead to permanent residency, e.g. true.
educationNoHighest completed education, e.g. 'master'.
income_usdNoGross yearly income in US dollars, e.g. 85000.
work_fieldNoMain field of work, e.g. 'software engineering' or 'nursing'.
work_yearsNoTotal years of full-time work experience, e.g. 5.
citizenshipYesNationality as a word or country name, e.g. 'Indian' or 'India'.
language_testNoEnglish test result in that test's own scale, e.g. {test: 'ielts', listening: 8, reading: 7.5, writing: 7, speaking: 7}. Sharpens routes with a language bar.
current_countryNoCountry the person lives in now, e.g. 'United Arab Emirates'.
target_countriesNoDestination country codes to focus on, e.g. ['de', 'nl']. Leave out to search all.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed14 schema fields changed
    • addedInput schema / additionalProperties
      Added value: +false
    • addedInput schema / properties / age / description
      Added value: +"Age in years, e.g. 31."
    • addedInput schema / properties / citizenship / description
      Added value: +"Nationality as a word or country name, e.g. 'Indian' or 'India'."
    • addedInput schema / properties / current_country / description
      Added value: +"Country the person lives in now, e.g. 'United Arab Emirates'."
    • addedInput schema / properties / education / description
      Added value: +"Highest completed education, e.g. 'master'."
    • addedInput schema / properties / goal / description
      Added value: +"Main reason for moving, e.g. 'work_tech'."
    • addedInput schema / properties / income_usd / description
      Added value: +"Gross yearly income in US dollars, e.g. 85000."
    • removedInput schema / properties / income_usd / maximum
      Removed value: -9007199254740991
    • addedInput schema / properties / language_test
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "English test result in that test's own scale, e.g. {test: 'ielts', listening: 8, reading: 7.5, writing: 7, speaking: 7}. Sharpens routes with a language bar.",
      +  "properties": {
      +    "listening": {
      +      "minimum": 0,
      +      "type": "number"
      +    },
      +    "reading": {
      +      "minimum": 0,
      +      "type": "number"
      +    },
      +    "speaking": {
      +      "minimum": 0,
      +      "type": "number"
      +    },
      +    "test": {
      +      "enum": [
      +        "ielts",
      +        "celpip",
      +        "pte",
      +        "toefl",
      +        "none"
      +      ],
      +      "type": "string"
      +    },
      +    "writing": {
      +      "minimum": 0,
      +      "type": "number"
      +    }
      +  },
      +  "required": [
      +    "test"
      +  ],
      +  "type": "object"
      +}
    • addedInput schema / properties / target_countries / description
      Added value: +"Destination country codes to focus on, e.g. ['de', 'nl']. Leave out to search all."
    • addedInput schema / properties / timeline / description
      Added value: +"When the person wants to move, e.g. '1year'."
    • addedInput schema / properties / wants_pr
      Added value: +{
      +  "description": "True to keep only routes that lead to permanent residency, e.g. true.",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / work_field / description
      Added value: +"Main field of work, e.g. 'software engineering' or 'nursing'."
    • addedInput schema / properties / work_years / description
      Added value: +"Total years of full-time work experience, e.g. 5."
  2. First observed

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds real behavior beyond annotations: results are ranked by estimated eligibility, ordering favors EU freedom-of-movement routes, and scores are explicitly estimates rather than legal advice or a decision. 'Read-only: nothing is stored' largely restates readOnlyHint, but the ranking caveat and EU ordering rule are genuine additions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short sentences, front-loaded with the core action and followed by returns, ordering, and the read-only caveat. The 'Read-only: nothing is stored' clause overlaps with the annotation and slightly dilutes density, but nothing is padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 12-parameter, nested-schema tool with no output schema, the description covers what comes back (timeline, cost, sources, tracking link), which is the main missing structured information. Remaining gaps are routing guidance toward siblings and any statement of how much optional inputs improve match quality.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 12 parameters including the nested language_test and enum values. The description only refers vaguely to 'their profile' and adds no syntax, defaults, or precedence guidance beyond that baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Find the visa routes') plus the distinguishing scope: personalized to a person's profile and ranked by estimated eligibility. An agent can tell this apart from list_visas, compare_visas, or visa_details without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: the tool takes a person's profile, so an agent infers it should be used once profile attributes are known. The description never names an alternative (list_visas, compare_visas, points_calculator) or states when not to use this tool instead.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.