Skip to main content
Glama

Query Knowledge Graph

query_graph
Read-only

RELATIONAL query over the investment-migration KNOWLEDGE GRAPH (programme entities · countries · blocs · investment thresholds · authorities · legal sources). Two modes: (1) pass id to get a single entity + its neighbours (e.g. id:"programme:dominica-cbi" or "country:GR" or "bloc:EU"); (2) pass filters to find PROGRAMMES matching constraints — type (CBI|RBI), cc, status (e.g. operational), leads_to (citizenship|residence), bloc (EU|GCC|CARICOM), max_investment_usd / min_investment_usd (FX-normalised, best-effort) — each returned with its country, options, authority and official legal source. Answers queries the flat tools cannot, e.g. "open CBI programmes leading to citizenship under $200k with their governing source". Investment figures are best-effort USD; cite the programme official_source for the authoritative amount. Information, not advice.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
ccNoISO 3166-1 alpha-2 country code, uppercase (e.g. "PT" Portugal, "AE" United Arab Emirates, "KN" St Kitts and Nevis).
idNoentity id for neighbours mode (programme:<id> | country:<CC> | bloc:<NAME> | authority:<slug> | source:<host>)
blocNoPolitical/economic bloc filter (e.g. "EU", "Schengen", "CARICOM", "GCC").
typeNoCBI or RBI
limitNoMaximum number of items to return. Responses can be large; use this to keep the answer small.
statusNoProgramme status filter: "operational" (accepting applications), "emerging" (new but operating), "announced" (legislated or proclaimed but NOT in force — no applications), "closed", "paused".
leads_toNoDesired outcome: "citizenship" (a passport) or "residence" (a permit).
max_investment_usdNoUpper bound on the headline minimum investment, in USD.
min_investment_usdNoLower bound on the headline minimum investment, in USD.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
errorNoPresent only when the request could not be fulfilled.
termsNoAcceptable-use and information-not-advice terms.
sourceNoAttribution for the data.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.
book_a_consultationNoURL to book a Mirabello consultation.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed14 schema fields changed
    • addedInput schema / properties / bloc / description
      Added value: +"Political/economic bloc filter (e.g. \"EU\", \"Schengen\", \"CARICOM\", \"GCC\")."
    • addedInput schema / properties / bloc / examples
      Added value: +[
      +  "Schengen"
      +]
    • addedInput schema / properties / cc / description
      Added value: +"ISO 3166-1 alpha-2 country code, uppercase (e.g. \"PT\" Portugal, \"AE\" United Arab Emirates, \"KN\" St Kitts and Nevis)."
    • addedInput schema / properties / cc / examples
      Added value: +[
      +  "PT",
      +  "AE"
      +]
    • addedInput schema / properties / leads_to / description
      Added value: +"Desired outcome: \"citizenship\" (a passport) or \"residence\" (a permit)."
    • addedInput schema / properties / leads_to / examples
      Added value: +[
      +  "citizenship"
      +]
    • addedInput schema / properties / limit / description
      Added value: +"Maximum number of items to return. Responses can be large; use this to keep the answer small."
    • addedInput schema / properties / limit / examples
      Added value: +[
      +  10
      +]
    • addedInput schema / properties / max_investment_usd / description
      Added value: +"Upper bound on the headline minimum investment, in USD."
    • addedInput schema / properties / max_investment_usd / examples
      Added value: +[
      +  500000
      +]
    • addedInput schema / properties / min_investment_usd / description
      Added value: +"Lower bound on the headline minimum investment, in USD."
    • addedInput schema / properties / min_investment_usd / examples
      Added value: +[
      +  100000
      +]
    • addedInput schema / properties / status / description
      Added value: +"Programme status filter: \"operational\" (accepting applications), \"emerging\" (new but operating), \"announced\" (legislated or proclaimed but NOT in force — no applications), \"closed\", \"paused\"."
    • addedInput schema / properties / status / examples
      Added value: +[
      +  "operational"
      +]
  2. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "additionalProperties": true,
      +  "description": "Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present.",
      +  "properties": {
      +    "book_a_consultation": {
      +      "description": "URL to book a Mirabello consultation.",
      +      "type": "string"
      +    },
      +    "data_updated": {
      +      "description": "Date the underlying dataset was last updated.",
      +      "type": "string"
      +    },
      +    "disclaimer": {
      +      "description": "Information, not legal/tax/financial/immigration advice; figures indicative.",
      +      "type": "string"
      +    },
      +    "error": {
      +      "description": "Present only when the request could not be fulfilled.",
      +      "type": "string"
      +    },
      +    "provider": {
      +      "description": "Always \"Mirabello Consultancy\".",
      +      "type": "string"
      +    },
      +    "source": {
      +      "description": "Attribution for the data.",
      +      "type": "string"
      +    },
      +    "terms": {
      +      "description": "Acceptable-use and information-not-advice terms.",
      +      "type": "string"
      +    }
      +  },
      +  "type": "object"
      +}
  3. Added

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds valuable behavioral context: investment figures are FX-normalised and best-effort, the official_source is authoritative, and the tool returns entities with their neighbours. It also warns that responses can be large and that limit should be used. This goes beyond the annotations without contradicting them.

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?

The description is dense but well-structured: it opens with the resource, then the two modes, then the example, then the caveat. Every sentence earns its place. It is slightly long, but the length is justified by the tool's complexity (two modes, 9 parameters, relational semantics). The front-loading of the resource and modes is effective.

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

Completeness5/5

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

Given the tool's complexity (9 params, two modes, relational graph), the description is complete: it explains both modes, the filter semantics, the best-effort nature of investment figures, the authoritative source, and the size warning. The output schema exists, so return values need not be described. An agent has everything needed to select and invoke this tool correctly.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds meaning by grouping parameters into two modes (id vs filters) and explaining the semantics of max_investment_usd/min_investment_usd as 'FX-normalised, best-effort' and 'headline minimum investment'. It also clarifies that filters find PROGRAMMES, which is not obvious from the schema alone. This is a meaningful addition over the schema.

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?

The description states a specific verb ('query') and resource (the investment-migration knowledge graph), and explicitly distinguishes two modes: id-based neighbour lookup and filter-based programme search. It also names the sibling tools it complements ('flat tools'), so an agent can tell it apart from get_programme, list_programmes, and recommend_programmes without opening schemas.

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

Usage Guidelines5/5

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

The description gives explicit when-to-use guidance: it answers relational queries the flat tools cannot, and provides a concrete example query ('open CBI programmes leading to citizenship under $200k with their governing source'). It also tells the agent to cite the official_source for authoritative amounts, which is a clear usage directive. It does not explicitly name alternatives, but the sibling list and 'flat tools' reference make the intended use clear.

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.