Geo-Parity
What this MCP does
Compares global living costs, wages, healthcare, banking, taxes and connectivity while checking visa, Schengen and tax-residency constraints.
Tools
Input schema
{'type': 'object', 'examples': [{'passport': 'US', 'destination': 'GB'}], 'required': ['passport', 'destination'], 'properties': {'income': {'type': 'number', 'minimum': 0, 'description': "Monthly remote income in USD. Optional; enables housing's income-relative view but is not needed for the arrival total."}, 'passport': {'type': 'string', 'description': "ISO alpha-2 of the traveller's passport, e.g. 'US'. Determines the entry route and therefore the fee."}, 'destination': {'type': 'string', 'description': 'ISO alpha-2 of the destination. Must be in the PPP country registry; some countries with a verified nomad-visa fee (e.g. BB) are not and appear only in find_nomad_visas.'}, 'depositMonths': {'type': 'number', 'maximum': 12, 'minimum': 0, 'description': "Months of rent held as a deposit. Defaults to the site's stated assumption of 1; override it if you know the market."}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'properties': {'ok': {'type': 'boolean'}, 'rows': {'type': 'array', 'items': {'type': 'object', 'properties': {'name': {'type': 'string'}, 'rank': {'type': 'number'}, 'years': {'type': 'object'}, 'country': {'type': 'string'}, 'metrics': {'type': 'object', 'properties': {'mortgageRatePct': {'type': 'number'}, 'housingPriceLevelEu': {'type': 'number'}, 'priceToRentVsLongRun': {'type': 'number'}, 'priceToIncomeVsLongRun': {'type': 'number'}}}, 'rentBasis': {'enum': ['measured', 'modelled'], 'type': 'string'}, 'arbitrageGap': {'type': 'number', 'description': 'Percentage points by which rent sits lighter on you than on a local.'}, 'measuredCities': {'type': 'number'}, 'rentMonthlyUsd': {'type': 'number'}, 'rentPctOfYourIncome': {'type': 'number'}, 'rentPctOfLocalMedian': {'type': 'number'}}}}, 'focus': {'type': 'object'}, 'updated': {'type': 'string'}, 'excluded': {'type': 'number'}, 'attribution': {'type': 'object'}}}
Input schema
{'type': 'object', 'examples': [{'country': 'PT'}], 'properties': {'sort': {'enum': ['highest', 'lowest'], 'type': 'string', 'description': 'Defaults to highest, or lowest for instantPaymentsSince (longest-running first).'}, 'limit': {'type': 'number', 'minimum': 1, 'description': 'Maximum rows in a ranking.'}, 'access': {'enum': ['yes', 'restricted', 'no'], 'type': 'string', 'description': 'Narrow a ranking to one non-resident access rule.'}, 'metric': {'enum': ['depositGuaranteeUsd', 'instantPaymentsSince'], 'type': 'string', 'default': 'depositGuaranteeUsd', 'description': 'Ranking metric when no country is given.'}, 'country': {'type': 'string', 'description': 'ISO alpha-2 code for a single country, e.g. PT.'}, 'countries': {'type': 'string', 'description': 'Comma-separated ISO alpha-2 codes, at least two, e.g. GB,TH,NG.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'properties': {'ok': {'type': 'boolean'}, 'rows': {'type': 'array'}, 'caveats': {'type': 'array'}, 'excluded': {'type': 'array'}, 'attribution': {'type': 'object'}, 'internationalOptions': {'type': 'array'}}}
Input schema
{'type': 'object', 'examples': [{'country': 'DE', 'seniority': 'senior', 'occupation': 'professionals'}], 'required': ['country'], 'properties': {'country': {'type': 'string', 'description': 'ISO 3166-1 alpha-2 country code (case-insensitive).'}, 'seniority': {'enum': ['entry', 'mid', 'senior', 'lead'], 'type': 'string', 'description': "Defaults to 'mid'. An unrecognised value is rejected."}, 'occupation': {'enum': ['total', 'armed-forces', 'managers', 'professionals', 'technicians', 'clerical', 'services-sales', 'agricultural', 'craft', 'operators', 'elementary'], 'type': 'string', 'description': "ISCO-08 major group. Defaults to 'total' (all occupations). An unrecognised value is rejected, never widened to the default."}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'properties': {'ok': {'type': 'boolean'}, 'year': {'type': 'number'}, 'basis': {'type': 'string', 'description': "'measured' or 'modelled' — never blurred."}, 'floor': {'type': 'object', 'properties': {'annualUsd': {'type': 'number'}, 'monthlyUsd': {'type': 'number'}, 'percentile': {'type': 'number'}}}, 'caveats': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Always present. Reproduce these with any quoted figure.'}, 'ceiling': {'type': 'object', 'properties': {'annualUsd': {'type': 'number'}, 'monthlyUsd': {'type': 'number'}, 'percentile': {'type': 'number'}}}, 'country': {'type': 'object', 'properties': {'code': {'type': 'string'}, 'name': {'type': 'string'}}}, 'midpoint': {'type': 'object', 'properties': {'annualUsd': {'type': 'number'}, 'monthlyUsd': {'type': 'number'}, 'percentile': {'type': 'number'}}}, 'seniority': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'label': {'type': 'string'}}}, 'occupation': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'label': {'type': 'string'}}}, 'genderGapPct': {'type': 'number'}, 'occupationMedianMonthlyUsd': {'type': 'number'}}}
Input schema
{'type': 'object', 'examples': [{'income': 100000, 'target': 'TH'}], 'required': ['income', 'target'], 'properties': {'city': {'type': 'string', 'description': "Optional city slug (e.g. 'london', 'san-francisco') for a sub-national Capital-to-Rural adjustment: multiplies the national price level by a per-city factor (curated overrides / US-metro BEA RPP / population-tier heuristic). Unknown slug = national figure."}, 'income': {'type': 'number', 'minimum': 0, 'description': 'Nominal annual income, denominated against the US baseline.'}, 'source': {'enum': ['consensus', 'worldbank', 'imf', 'oecd', 'pwt', 'worldbank-cons', 'bigmac', 'factbook'], 'type': 'string', 'default': 'consensus', 'description': "PPP dataset to draw figures from. 'consensus' = per-country median across the GDP-based providers (recommended default); 'worldbank' = World Bank GDP price level; 'imf' = IMF WEO implied PPP; 'oecd' = OECD PPP-for-GDP (members + key partners only); 'pwt' = Penn World Table; 'worldbank-cons' = World Bank household-consumption price level; 'bigmac' = The Economist Big Mac index (single-good consumer PPP, ~40 countries); 'factbook' = CIA World Factbook derived price level for ~100 micro-states/territories the macro sources ignore (coarse). Defaults to 'consensus' if omitted."}, 'target': {'enum': ['US', 'AR', 'AU', 'BR', 'CA', 'CL', 'CN', 'CO', 'CZ', 'DK', 'EG', 'FR', 'DE', 'GR', 'HU', 'IN', 'ID', 'IE', 'IT', 'JP', 'KR', 'MY', 'MX', 'NL', 'NZ', 'NG', 'NO', 'PH', 'PL', 'PT', 'SA', 'SG', 'ZA', 'ES', 'SE', 'CH', 'TH', 'TR', 'AE', 'GB', 'VN'], 'type': 'string', 'description': 'ISO 3166-1 alpha-2 target country code (case-insensitive). Available codes depend on the chosen source.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'properties': {'ok': {'type': 'boolean'}, 'source': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'label': {'type': 'string'}}}, 'target': {'type': 'object', 'properties': {'code': {'type': 'string'}, 'name': {'type': 'string'}, 'currency': {'type': 'string'}, 'pppIndex': {'type': 'number'}}}, 'metrics': {'type': 'object', 'properties': {'purchasingPowerRatio': {'type': 'number'}, 'effectivePurchasingPower': {'type': 'number'}, 'lifestyleEquilibriumCost': {'type': 'number'}}}}}
Input schema
{'type': 'object', 'examples': [{'burn': 3000, 'home': 'GB', 'fixed': 800, 'savings': 20000, 'targets': 'TH:chiang-mai,GE', 'currency': 'GBP'}], 'required': ['savings', 'burn', 'targets'], 'properties': {'burn': {'type': 'number', 'description': 'Total current monthly burn at home (in `currency`).'}, 'home': {'type': 'string', 'description': 'Home country alpha-2 code. Default US.'}, 'fixed': {'type': 'number', 'description': "Location-independent slice of burn (0…burn) that won't fall when you move."}, 'savings': {'type': 'number', 'description': 'Total savings (in `currency`).'}, 'targets': {'type': 'string', 'description': '1–3 hubs, comma-separated: COUNTRY or COUNTRY:citySlug (e.g. TH:chiang-mai,AR:buenos-aires,GE).'}, 'currency': {'type': 'string', 'description': 'ISO code for the money inputs (e.g. GBP). Default USD.'}, 'homeCity': {'type': 'string', 'description': 'Optional curated home-city slug.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'properties': {'ok': {'type': 'boolean'}, 'home': {'type': 'object', 'properties': {'runsOut': {'type': 'string'}, 'runwayMonths': {'type': 'number'}}}, 'hubs': {'type': 'array', 'items': {'type': 'object'}, 'description': 'Sorted by extra months; each has runwayMonths, extraMonths, multiplier, monthlyBurnUsd, runsOut, priceRatio and a coverage note when approximate.'}, 'fixedFloorMonths': {'type': ['number', 'null'], 'description': 'Runway cap even at zero local cost (savings ÷ fixed burn).'}}}
Input schema
{'type': 'object', 'examples': [{'country': 'PL', 'percentile': 90}], 'required': ['country'], 'properties': {'salary': {'type': 'number', 'minimum': 0, 'description': 'Your salary to locate on the distribution. Values over 20000 are read as annual (÷12), else monthly.'}, 'country': {'type': 'string', 'description': 'ISO 3166-1 alpha-2 country code (case-insensitive).'}, 'percentile': {'type': 'number', 'maximum': 100, 'minimum': 0, 'description': 'Return the exact wage threshold at this percentile (e.g. 90 for the top-10% floor).'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'properties': {'ok': {'type': 'boolean'}, 'bands': {'type': 'object', 'properties': {'top1': {'type': 'object'}, 'top10': {'type': 'object'}, 'median': {'type': 'object'}, 'minimum': {'type': ['object', 'null']}, 'survival': {'type': 'object'}, 'comfortable': {'type': 'object'}}}, 'model': {'type': 'object', 'properties': {'gini': {'type': 'number'}, 'sigma': {'type': 'number'}, 'meanMonthly': {'type': 'number'}}}, 'country': {'type': 'object', 'properties': {'code': {'type': 'string'}, 'name': {'type': 'string'}}}, 'standing': {'type': 'object', 'properties': {'label': {'type': 'string'}, 'percentile': {'type': 'number'}}}, 'atPercentile': {'type': 'object'}}}
Input schema
{'type': 'object', 'examples': [{'stays': [{'exit': '2026-04-02', 'entry': '2026-01-10', 'country': 'PT'}]}], 'required': ['stays'], 'properties': {'stays': {'type': 'array', 'items': {'type': 'object', 'required': ['country', 'entry', 'exit'], 'properties': {'exit': {'type': 'string', 'format': 'date'}, 'entry': {'type': 'string', 'format': 'date'}, 'country': {'type': 'string', 'description': 'ISO 3166-1 alpha-2 country code.'}}, 'additionalProperties': False}, 'minItems': 1}, 'referenceDate': {'type': 'string', 'format': 'date', 'description': "Optional 'as of' date. Defaults to today (UTC)."}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'properties': {'ok': {'type': 'boolean'}, 'countries': {'type': 'array', 'items': {'type': 'object', 'properties': {'country': {'type': 'string'}, 'rule183': {'type': 'object', 'properties': {'remaining': {'type': 'number'}, 'triggered': {'type': 'boolean'}}}, 'daysThisYear': {'type': 'number'}}}}}}
Input schema
{'type': 'object', 'examples': [{'trips': [{'exit': '2025-03-01', 'entry': '2025-01-01'}]}], 'required': ['trips'], 'properties': {'trips': {'type': 'array', 'items': {'type': 'object', 'required': ['entry', 'exit'], 'properties': {'exit': {'type': 'string', 'format': 'date', 'description': 'Exit date, ISO YYYY-MM-DD (>= entry).'}, 'entry': {'type': 'string', 'format': 'date', 'description': 'Entry date, ISO YYYY-MM-DD.'}}, 'additionalProperties': False}, 'minItems': 1, 'description': 'List of Schengen stays.'}, 'plannedEntry': {'type': 'string', 'format': 'date', 'description': 'Optional planned entry date. When set, the response adds plan: { maxStay, latestExit, fullResetDate } — the longest compliant stay starting on that date.'}, 'referenceDate': {'type': 'string', 'format': 'date', 'description': "Optional 'as of' date (ISO YYYY-MM-DD). Defaults to today (UTC)."}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'properties': {'ok': {'type': 'boolean'}, 'daysUsed': {'type': 'number'}, 'compliant': {'type': 'boolean'}, 'windowStart': {'type': 'string'}, 'daysRemaining': {'type': 'number'}, 'referenceDate': {'type': 'string'}, 'maxDaysInWindow': {'type': 'number'}, 'firstOverstayDate': {'type': ['string', 'null']}}}
Input schema
{'type': 'object', 'examples': [{'days': 120, 'income': 80000, 'country': 'ES'}], 'required': ['country', 'days', 'income'], 'properties': {'days': {'type': 'number', 'maximum': 366, 'minimum': 0, 'description': 'Days of presence in the relevant counting period.'}, 'income': {'type': 'number', 'minimum': 0, 'description': 'Gross annual income (USD) the residency cliff would expose.'}, 'arrival': {'type': 'string', 'format': 'date', 'description': 'Optional arrival date — adds leaveBy and residencyDate to the response.'}, 'country': {'type': 'string', 'description': 'ISO 3166-1 alpha-2 country code (case-insensitive).'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'properties': {'ok': {'type': 'boolean'}, 'risk': {'enum': ['safe', 'warning', 'triggered'], 'type': 'string'}, 'dates': {'type': 'object', 'properties': {'leaveBy': {'type': 'string'}, 'residencyDate': {'type': 'string'}}}, 'projection': {'type': 'object', 'properties': {'regime': {'type': 'object', 'properties': {'name': {'type': 'string'}, 'note': {'type': 'string'}, 'taxUsd': {'type': 'number'}, 'savingUsd': {'type': 'number'}}}, 'cheapest': {'type': 'string'}, 'standard': {'type': 'object', 'properties': {'taxUsd': {'type': 'number'}, 'effectiveRate': {'type': 'number'}}}}}, 'daysRemaining': {'type': 'number'}, 'thresholdDays': {'type': 'number'}, 'pctOfThreshold': {'type': 'number'}, 'schengenWarning': {'type': 'string'}}}
Input schema
{'type': 'object', 'examples': [{'stays': [{'exit': '2026-07-28', 'entry': '2026-01-10', 'country': 'ES'}], 'income': 120000}], 'required': ['stays'], 'properties': {'stays': {'type': 'array', 'items': {'type': 'object', 'required': ['country', 'entry', 'exit'], 'properties': {'exit': {'type': 'string', 'format': 'date'}, 'entry': {'type': 'string', 'format': 'date'}, 'country': {'type': 'string', 'description': 'ISO 3166-1 alpha-2 country code.'}}, 'additionalProperties': False}, 'minItems': 1}, 'income': {'type': 'number', 'description': 'Optional gross annual income (USD) — enables the tax-cost projection for at-risk countries.'}, 'referenceDate': {'type': 'string', 'format': 'date', 'description': "Optional 'as of' date. Defaults to today (UTC)."}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'properties': {'ok': {'type': 'boolean'}, 'summary': {'type': 'object', 'properties': {'worstRisk': {'type': 'string'}, 'triggeredCount': {'type': 'number'}, 'schengenBreached': {'type': 'boolean'}}}, 'schengen': {'type': ['object', 'null'], 'description': '90/180 status when any Schengen stay exists: daysUsed, daysRemaining, compliant, firstOverstayDate, maxStayFromRef.'}, 'countries': {'type': 'array', 'items': {'type': 'object', 'properties': {'risk': {'enum': ['safe', 'warning', 'triggered'], 'type': 'string'}, 'country': {'type': 'string'}, 'daysUsed': {'type': 'number'}, 'secondary': {'type': 'object', 'description': 'Conditional lower rule (e.g. Cyprus-60) with conditionMet/triggered.'}, 'ukTaxYear': {'type': 'object'}, 'safeDaysLeft': {'type': 'number'}, 'taxProjection': {'type': 'object', 'description': 'Standard vs regime tax cost when income was supplied.'}, 'thresholdDays': {'type': 'number'}, 'usSubstantialPresence': {'type': 'object'}}}}, 'referenceDate': {'type': 'string'}}}
Input schema
{'type': 'object', 'examples': [{'countries': 'GB,NG,IN'}], 'properties': {'sort': {'enum': ['highest', 'lowest'], 'type': 'string', 'default': 'highest', 'description': 'Ranking direction. Ignored when `countries` is given.'}, 'limit': {'type': 'number', 'minimum': 1, 'description': 'Return at most this many countries in a ranking.'}, 'metric': {'enum': ['account', 'remittancesReceived'], 'type': 'string', 'default': 'account', 'description': 'Ranking metric. Ignored when `countries` is given.'}, 'countries': {'type': 'string', 'description': 'Comma-separated ISO alpha-2 codes, two or more (e.g. "GB,NG,IN"). Omit to get a ranking instead.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'properties': {'ok': {'type': 'boolean'}, 'rows': {'type': 'array', 'items': {'type': 'object'}}, 'metric': {'type': 'string'}, 'caveats': {'type': 'array', 'items': {'type': 'string'}}, 'attribution': {'type': 'object'}}}
Input schema
{'type': 'object', 'examples': [{'country': 'PT'}], 'properties': {'sort': {'enum': ['lowest', 'highest'], 'type': 'string', 'description': 'Default lowest for days and cost, highest for density.'}, 'limit': {'type': 'number', 'minimum': 1}, 'metric': {'enum': ['daysDomestic', 'costDomesticUsd', 'daysForeign', 'costForeignUsd', 'density'], 'type': 'string', 'default': 'daysDomestic'}, 'country': {'type': 'string', 'description': 'One ISO alpha-2 code.'}, 'countries': {'type': 'string', 'description': 'Comma-separated ISO alpha-2 codes, two or more.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'properties': {'ok': {'type': 'boolean'}, 'rows': {'type': 'array', 'items': {'type': 'object'}}, 'entry': {'type': 'object'}, 'metric': {'type': 'string'}, 'caveats': {'type': 'array', 'items': {'type': 'string'}}, 'activity': {'type': 'object'}, 'attribution': {'type': 'object'}}}
Input schema
{'type': 'object', 'examples': [{'country': 'GB'}], 'properties': {'sort': {'enum': ['lowest', 'highest'], 'type': 'string', 'default': 'lowest'}, 'unit': {'enum': ['pctDisposableIncome', 'pctAverageWage'], 'type': 'string', 'default': 'pctDisposableIncome'}, 'limit': {'type': 'number', 'minimum': 1, 'description': 'Return at most this many countries.'}, 'country': {'type': 'string', 'description': 'One ISO alpha-2 code.'}, 'countries': {'type': 'string', 'description': 'Comma-separated ISO alpha-2 codes, two or more, for a side-by-side.'}, 'household': {'enum': ['couple', 'singleParent'], 'type': 'string', 'default': 'couple'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'properties': {'ok': {'type': 'boolean'}, 'rows': {'type': 'array', 'items': {'type': 'object'}}, 'year': {'type': 'number'}, 'couple': {'type': 'object'}, 'caveats': {'type': 'array', 'items': {'type': 'string'}}, 'attribution': {'type': 'object'}, 'singleParent': {'type': 'object'}}}
Input schema
{'type': 'object', 'examples': [{'limit': 15, 'month': 1}], 'properties': {'city': {'type': 'string', 'description': 'City slug (e.g. "lisbon"). Returns that city\'s twelve months.'}, 'limit': {'type': 'number', 'minimum': 1, 'description': 'Return at most this many cities.'}, 'month': {'type': 'number', 'maximum': 12, 'minimum': 1, 'description': 'Rank a single month. Omit to rank on the whole year.'}, 'country': {'type': 'string', 'description': "ISO alpha-2. Returns the representative city's months, naming which city."}, 'minComfortDays': {'type': 'number', 'minimum': 0, 'description': 'Filter: minimum comfortable days in the ranked window.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'properties': {'ok': {'type': 'boolean'}, 'city': {'type': 'object'}, 'rows': {'type': 'array', 'items': {'type': 'object'}}, 'month': {'type': ['number', 'null']}, 'updated': {'type': 'string'}}}
Input schema
{'type': 'object', 'examples': [{'sort': 'latency', 'maxLatency': 100}], 'properties': {'sort': {'enum': ['download', 'upload', 'latency', 'jitter'], 'type': 'string', 'default': 'download', 'description': 'Metric to rank by. Bandwidth sorts high-to-low; latency and jitter sort low-to-high, because “better” runs in opposite directions.'}, 'limit': {'type': 'number', 'minimum': 1, 'description': 'Return at most this many countries.'}, 'maxLatency': {'type': 'number', 'minimum': 0, 'description': 'Filter: maximum median idle latency, ms (e.g. 100).'}, 'minDownload': {'type': 'number', 'minimum': 0, 'description': 'Filter: minimum median download, Mbps (e.g. 50).'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'properties': {'ok': {'type': 'boolean'}, 'rows': {'type': 'array', 'items': {'type': 'object', 'properties': {'name': {'type': 'string'}, 'rank': {'type': 'number'}, 'country': {'type': 'string'}, 'quality': {'enum': ['excellent', 'good', 'usable', 'poor', 'unknown'], 'type': 'string'}, 'jitterMs': {'type': 'number'}, 'latencyMs': {'type': 'number'}, 'uploadMbps': {'type': 'number'}, 'downloadMbps': {'type': 'number'}}}}, 'sort': {'type': 'string'}, 'updated': {'type': 'string'}}}
Input schema
{'type': 'object', 'examples': [{'country': 'US', 'employeeRate': 70, 'contractorRate': 100}], 'required': ['contractorRate', 'employeeRate'], 'properties': {'hours': {'type': 'number', 'description': 'Hours per week (default 40).'}, 'ctRate': {'type': 'number', 'description': 'Override contractor effective tax rate, percent (e.g. 32).'}, 'health': {'type': 'number', 'description': 'Annual self-paid health insurance (USD); defaults to the country preset.'}, 'country': {'enum': ['US', 'GB', 'DE', 'FR', 'ES', 'NL', 'PT', 'EE', 'CA', 'AU', 'IN', 'AE', 'IT', 'GR', 'IE', 'DK', 'SE', 'NO', 'CH', 'CZ', 'PL', 'HU', 'TR', 'JP', 'KR', 'CN', 'SG', 'MY', 'TH', 'VN', 'ID', 'PH', 'NZ', 'SA', 'EG', 'ZA', 'NG', 'MX', 'BR', 'AR', 'CL', 'CO'], 'type': 'string', 'default': 'US', 'description': 'Country code for tax presets.'}, 'empRate': {'type': 'number', 'description': 'Override employee effective tax rate, percent (e.g. 24).'}, 'taxMode': {'enum': ['flat', 'brackets'], 'type': 'string', 'description': "'brackets' uses progressive 2025 schedules (US and GB only; falls back to flat elsewhere — response echoes the mode)."}, 'expenses': {'type': 'number', 'description': 'Annual business expenses (USD, default 0).'}, 'employeeRate': {'type': 'number', 'minimum': 0, 'description': 'Employee/W2/EOR hourly rate (USD).'}, 'employeeWeeks': {'type': 'number', 'description': 'Employee paid weeks (default 52).'}, 'contractorRate': {'type': 'number', 'minimum': 0, 'description': 'Self-employed hourly rate (USD).'}, 'contractorWeeks': {'type': 'number', 'description': 'Contractor paid/billable weeks (default 48).'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'properties': {'ok': {'type': 'boolean'}, 'employee': {'type': 'object', 'properties': {'net': {'type': 'number'}, 'tax': {'type': 'number'}, 'gross': {'type': 'number'}}}, 'contractor': {'type': 'object', 'properties': {'net': {'type': 'number'}, 'tax': {'type': 'number'}, 'gross': {'type': 'number'}}}, 'breakevenRate': {'type': 'number'}, 'netDifference': {'type': 'number'}, 'contractorProfitable': {'type': 'boolean'}}}
Input schema
{'type': 'object', 'examples': [{'a': 'DE', 'b': 'TH'}], 'required': ['a', 'b'], 'properties': {'a': {'type': 'string', 'description': 'First ISO 3166-1 alpha-2 country code (case-insensitive).'}, 'b': {'type': 'string', 'description': 'Second ISO 3166-1 alpha-2 country code (must differ from a).'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'properties': {'ok': {'type': 'boolean'}, 'ratioAtoB': {'type': 'number'}, 'salary100k': {'type': 'object', 'properties': {'aToB': {'type': 'number'}, 'bToA': {'type': 'number'}}}, 'pctDifference': {'type': 'number'}}}
Input schema
{'type': 'object', 'examples': [{'limit': 20, 'maxRisk': 3}], 'properties': {'sort': {'enum': ['risk', 'hazard', 'vulnerability', 'copingCapacity'], 'type': 'string', 'default': 'risk', 'description': 'Dimension to sort by. maxRisk always filters on the composite.'}, 'limit': {'type': 'number', 'minimum': 1, 'description': 'Return at most this many countries.'}, 'country': {'type': 'string', 'description': "ISO alpha-2 for a single country's scores."}, 'maxRisk': {'type': 'number', 'maximum': 10, 'minimum': 0, 'description': 'Keep only countries at or below this composite score.'}, 'descending': {'type': 'boolean', 'default': False, 'description': 'True lists the most dangerous first.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'properties': {'ok': {'type': 'boolean'}, 'rows': {'type': 'array', 'items': {'type': 'object'}}, 'entry': {'type': 'object'}, 'release': {'type': 'string'}, 'updated': {'type': 'string'}}}
Input schema
{'type': 'object', 'examples': [{'country': 'DE'}], 'properties': {'sort': {'enum': ['lowest', 'highest'], 'type': 'string', 'default': 'lowest'}, 'limit': {'type': 'number', 'minimum': 1, 'description': 'Return at most this many countries.'}, 'metric': {'enum': ['eatr', 'emtr', 'costOfCapital', 'gap'], 'type': 'string', 'default': 'eatr', 'description': 'Ranking metric when neither `country` nor `countries` is given.'}, 'country': {'type': 'string', 'description': 'One ISO alpha-2 code.'}, 'countries': {'type': 'string', 'description': 'Comma-separated ISO alpha-2 codes, two or more, for a side-by-side.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'properties': {'ok': {'type': 'boolean'}, 'rows': {'type': 'array', 'items': {'type': 'object'}}, 'gapPct': {'type': 'number'}, 'metric': {'type': 'string'}, 'caveats': {'type': 'array', 'items': {'type': 'string'}}, 'effective': {'type': 'object'}, 'attribution': {'type': 'object'}, 'statutoryCombinedPct': {'type': 'number'}}}
Input schema
{'type': 'object', 'examples': [{'country': 'KR'}], 'properties': {'sort': {'enum': ['lowest', 'highest'], 'type': 'string', 'default': 'highest'}, 'index': {'enum': ['egdi', 'osi', 'tii', 'hci'], 'type': 'string', 'default': 'egdi'}, 'limit': {'type': 'number', 'minimum': 1, 'description': 'Return at most this many countries.'}, 'country': {'type': 'string', 'description': 'One ISO alpha-2 code.'}, 'countries': {'type': 'string', 'description': 'Comma-separated ISO alpha-2 codes, two or more, for a side-by-side.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'properties': {'ok': {'type': 'boolean'}, 'hci': {'type': 'number'}, 'osi': {'type': 'number'}, 'tii': {'type': 'number'}, 'egdi': {'type': 'number'}, 'rows': {'type': 'array', 'items': {'type': 'object'}}, 'year': {'type': 'number'}, 'index': {'type': 'string'}, 'caveats': {'type': 'array', 'items': {'type': 'string'}}, 'attribution': {'type': 'object'}}}
Input schema
{'type': 'object', 'examples': [{'country': 'TH'}], 'properties': {'sort': {'enum': ['lowest', 'highest'], 'type': 'string', 'default': 'lowest'}, 'limit': {'type': 'number', 'minimum': 1, 'description': 'Maximum rows in a ranking.'}, 'metric': {'enum': ['dailyUsd', 'unaffordablePct'], 'type': 'string', 'default': 'dailyUsd'}, 'country': {'type': 'string', 'description': 'One ISO alpha-2 code.'}, 'countries': {'type': 'string', 'description': 'Comma-separated ISO alpha-2 codes, two or more, for a side-by-side.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'properties': {'ok': {'type': 'boolean'}, 'rows': {'type': 'array', 'items': {'type': 'object'}}, 'caveats': {'type': 'array', 'items': {'type': 'string'}}, 'dailyUsd': {'type': 'number'}, 'excluded': {'type': 'array'}, 'dailyLocal': {'type': 'number'}, 'modelError': {'type': 'number'}, 'attribution': {'type': 'object'}, 'modelErrorSummary': {'type': 'object'}}}
Input schema
{'type': 'object', 'examples': [{'country': 'DE'}], 'properties': {'sort': {'enum': ['lowest', 'highest'], 'type': 'string', 'default': 'highest'}, 'limit': {'type': 'number', 'minimum': 1, 'description': 'Return at most this many countries.'}, 'metric': {'enum': ['doctors', 'nurses', 'beds'], 'type': 'string', 'default': 'doctors'}, 'country': {'type': 'string', 'description': 'One ISO alpha-2 code.'}, 'countries': {'type': 'string', 'description': 'Comma-separated ISO alpha-2 codes, two or more, for a side-by-side.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'properties': {'ok': {'type': 'boolean'}, 'rows': {'type': 'array', 'items': {'type': 'object'}}, 'metric': {'type': 'string'}, 'caveats': {'type': 'array', 'items': {'type': 'string'}}, 'uhcIndex': {'type': 'number'}, 'bedsPer10k': {'type': 'object'}, 'attribution': {'type': 'object'}, 'nursesPer10k': {'type': 'object'}, 'doctorsPer10k': {'type': 'object'}}}
Input schema
{'type': 'object', 'examples': [{'sort': 'outOfPocket', 'country': 'TH'}], 'required': [], 'properties': {'sort': {'enum': ['outOfPocket', 'spend', 'exposure', 'doctors', 'dentists'], 'type': 'string', 'default': 'outOfPocket', 'description': "Metric to rank by. 'outOfPocket' = out-of-pocket spend per person per year (default, the figure a person actually pays); 'spend' = total health spend per capita; 'exposure' = out-of-pocket as a share of health spending; 'doctors' = physicians per 1,000 (ranked best-first); 'dentists' = dentists per 10,000 (best-first)."}, 'country': {'type': 'string', 'description': "Optional ISO 3166-1 alpha-2 country code (case-insensitive). Echoes that country's row and its rank under the active sort."}, 'maxOutOfPocketPct': {'type': 'number', 'minimum': 0, 'description': 'Optional filter: keep only countries where households pay at most this percentage of health spending directly.'}, 'minPhysiciansPer1000': {'type': 'number', 'minimum': 0, 'description': 'Optional filter: keep only countries with at least this many physicians per 1,000 people.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'properties': {'ok': {'type': 'boolean'}, 'rows': {'type': 'array', 'items': {'type': 'object', 'properties': {'rank': {'type': 'number'}, 'vsUs': {'type': 'number', 'description': 'Out-of-pocket spend relative to the US, 0-1.'}, 'entry': {'type': 'object', 'properties': {'name': {'type': 'string'}, 'years': {'type': 'object', 'description': 'Reference year per metric; vintages differ.'}, 'country': {'type': 'string'}, 'metrics': {'type': 'object', 'properties': {'outOfPocketPct': {'type': 'number'}, 'dentistsPer10000': {'type': 'number'}, 'physiciansPer1000': {'type': 'number'}, 'spendPerCapitaPpp': {'type': 'number'}, 'governmentSharePct': {'type': 'number'}, 'outOfPocketPerCapitaUsd': {'type': 'number'}}}}}}}, 'description': 'Countries under the active sort, best first.'}, 'focus': {'type': 'object', 'description': "The requested country's row, when `country` was given."}, 'updated': {'type': 'string', 'description': 'ISO date the underlying data was last refreshed.'}, 'excluded': {'type': 'number', 'description': 'Countries removed by filters or missing the sorted metric.'}, 'attribution': {'type': 'object', 'description': 'Sources, a quotable citation and a permalink.'}}}
Input schema
{'type': 'object', 'examples': [{'sort': 'affordability', 'remoteIncome': 6000}], 'required': [], 'properties': {'sort': {'enum': ['affordability', 'rent', 'localBurden', 'priceToIncome'], 'type': 'string', 'default': 'affordability', 'description': "'affordability' = rent as a share of your remote income, lowest first (falls back to raw rent when no income given); 'rent' = monthly rent; 'localBurden' = rent as a share of the local median wage; 'priceToIncome' = price-to-income vs long-run average."}, 'flatM2': {'type': 'number', 'minimum': 0, 'description': 'Flat size in m² used to convert measured per-m² rents. Default 70; echoed back so the assumption is visible.'}, 'country': {'type': 'string', 'description': "Optional ISO 3166-1 alpha-2 code; echoes that country's row and rank."}, 'remoteIncome': {'type': 'number', 'minimum': 0, 'description': 'Your monthly income in USD, earned remotely. Enables rentPctOfYourIncome and arbitrageGap; omit for the local-only view.'}, 'maxRentPctOfIncome': {'type': 'number', 'minimum': 0, 'description': 'Optional filter: keep only countries where rent is at most this percentage of your remote income. Requires remoteIncome.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'properties': {'ok': {'type': 'boolean'}, 'rows': {'type': 'array', 'items': {'type': 'object', 'properties': {'name': {'type': 'string'}, 'rank': {'type': 'number'}, 'years': {'type': 'object'}, 'country': {'type': 'string'}, 'metrics': {'type': 'object', 'properties': {'mortgageRatePct': {'type': 'number'}, 'housingPriceLevelEu': {'type': 'number'}, 'priceToRentVsLongRun': {'type': 'number'}, 'priceToIncomeVsLongRun': {'type': 'number'}}}, 'rentBasis': {'enum': ['measured', 'modelled'], 'type': 'string'}, 'arbitrageGap': {'type': 'number', 'description': 'Percentage points by which rent sits lighter on you than on a local.'}, 'measuredCities': {'type': 'number'}, 'rentMonthlyUsd': {'type': 'number'}, 'rentPctOfYourIncome': {'type': 'number'}, 'rentPctOfLocalMedian': {'type': 'number'}}}}, 'focus': {'type': 'object'}, 'updated': {'type': 'string'}, 'excluded': {'type': 'number'}, 'attribution': {'type': 'object'}}}
Input schema
{'type': 'object', 'examples': [{'countries': 'GB,DE,TR'}], 'properties': {'sort': {'enum': ['highest', 'lowest'], 'type': 'string', 'default': 'highest', 'description': 'Ranking direction. Ignored when `countries` is given.'}, 'limit': {'type': 'number', 'minimum': 1, 'description': 'Return at most this many countries in a ranking.'}, 'metric': {'enum': ['inflation', 'policyRate', 'depositRate', 'lendingRate', 'realDepositRate', 'realPolicyRate'], 'type': 'string', 'default': 'inflation', 'description': 'Ranking metric. Ignored when `countries` is given.'}, 'countries': {'type': 'string', 'description': 'Comma-separated ISO alpha-2 codes, two or more (e.g. "GB,DE,TR"). Omit to get a ranking instead.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'properties': {'ok': {'type': 'boolean'}, 'rows': {'type': 'array', 'items': {'type': 'object'}}, 'metric': {'type': 'string'}, 'caveats': {'type': 'array', 'items': {'type': 'string'}}, 'attribution': {'type': 'object'}}}
Input schema
{'type': 'object', 'examples': [{'country': 'GB', 'occupation': 'professionals'}], 'required': ['country'], 'properties': {'country': {'type': 'string', 'description': 'ISO 3166-1 alpha-2 country code (case-insensitive).'}, 'occupation': {'enum': ['total', 'armed-forces', 'managers', 'professionals', 'technicians', 'clerical', 'services-sales', 'agricultural', 'craft', 'operators', 'elementary'], 'type': 'string', 'description': 'Narrow the response to one ISCO-08 major group. Omit for the whole table.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'properties': {'ok': {'type': 'boolean'}, 'rows': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'label': {'type': 'string'}, 'gapPct': {'type': 'number'}, 'meanMonthlyUsd': {'type': 'number'}, 'medianMonthlyPpp': {'type': 'number'}, 'medianMonthlyUsd': {'type': 'number'}, 'modelledPercentile': {'type': 'number'}}}}, 'year': {'type': 'number', 'description': 'ILO reference year — one year across every occupation in the country.'}, 'basis': {'type': 'string', 'description': "Always 'measured' on success."}, 'country': {'type': 'object', 'properties': {'code': {'type': 'string'}, 'name': {'type': 'string'}}}, 'modelRatio': {'type': 'number', 'description': 'measured / modelled for the country. Above 1: the model understates local pay.'}, 'measuredMedianMonthlyUsd': {'type': 'number'}, 'modelledMedianMonthlyUsd': {'type': 'number'}}}
Input schema
{'type': 'object', 'examples': [{'country': 'DE'}], 'properties': {'sort': {'enum': ['highest', 'lowest'], 'type': 'string', 'default': 'highest', 'description': 'Ranking direction. Ignored otherwise.'}, 'limit': {'type': 'number', 'minimum': 1, 'description': 'Return at most this many countries in a ranking.'}, 'metric': {'enum': ['retirementAgeMen', 'retirementAgeWomen', 'futureRetirementAgeMen', 'netReplacement100', 'grossReplacement100', 'yearsAfterExit', 'oldAgePoverty', 'lifeExpectancy', 'over65Pct'], 'type': 'string', 'default': 'netReplacement100', 'description': 'Ranking metric when neither `country` nor `countries` is given.'}, 'country': {'type': 'string', 'description': 'One ISO alpha-2 code for the full profile (e.g. "DE").'}, 'countries': {'type': 'string', 'description': 'Comma-separated ISO alpha-2 codes, two or more, for a side-by-side. Ignored when `country` is given.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'properties': {'ok': {'type': 'boolean'}, 'rows': {'type': 'array', 'items': {'type': 'object'}}, 'metric': {'type': 'string'}, 'caveats': {'type': 'array', 'items': {'type': 'string'}}, 'attribution': {'type': 'object'}, 'replacement': {'type': 'object'}, 'retirementAge': {'type': 'object'}, 'statutoryRetirementAge': {'type': 'object'}}}
Input schema
{'type': 'object', 'examples': [{'countries': 'GB,JP'}], 'properties': {'sort': {'enum': ['most', 'fewest'], 'type': 'string', 'default': 'most', 'description': 'Ranking direction. Ignored when `countries` is given.'}, 'year': {'type': 'number', 'description': 'Calendar year. Defaults to the first year in the dataset.'}, 'limit': {'type': 'number', 'minimum': 1, 'description': 'Return at most this many countries in a ranking.'}, 'countries': {'type': 'string', 'description': 'Comma-separated ISO alpha-2 codes, two or more (e.g. "GB,JP"). Omit to get a ranking instead of an overlap.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'properties': {'ok': {'type': 'boolean'}, 'rows': {'type': 'array', 'items': {'type': 'object'}}, 'year': {'type': 'number'}, 'lostDays': {'type': 'number'}, 'weekdays': {'type': 'number'}, 'countries': {'type': 'array', 'items': {'type': 'object'}}, 'lostDates': {'type': 'array', 'items': {'type': 'string'}}, 'sharedWorkingDays': {'type': 'number'}}}
Input schema
{'type': 'object', 'examples': [{'countries': 'DE,BR,ZA'}], 'properties': {'sort': {'enum': ['lowest', 'highest'], 'type': 'string', 'default': 'lowest', 'description': 'Ranking direction. Ignored when `countries` is given.'}, 'limit': {'type': 'number', 'minimum': 1, 'description': 'Return at most this many countries in a ranking.'}, 'metric': {'enum': ['homicide', 'pm25'], 'type': 'string', 'default': 'homicide', 'description': 'Ranking metric. Ignored when `countries` is given.'}, 'countries': {'type': 'string', 'description': 'Comma-separated ISO alpha-2 codes, two or more (e.g. "DE,BR,ZA"). Omit to get a ranking instead.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'properties': {'ok': {'type': 'boolean'}, 'rows': {'type': 'array', 'items': {'type': 'object'}}, 'metric': {'type': 'string'}, 'caveats': {'type': 'array', 'items': {'type': 'string'}}, 'attribution': {'type': 'object'}}}
Input schema
{'type': 'object', 'examples': [{'country': 'PT'}], 'properties': {'sort': {'enum': ['lowest', 'highest'], 'type': 'string', 'default': 'lowest'}, 'limit': {'type': 'number', 'minimum': 1, 'description': 'Return at most this many countries.'}, 'metric': {'enum': ['complianceHours', 'vatRefundWeeks', 'auditWeeks', 'reportedEffectiveRatePct'], 'type': 'string', 'default': 'complianceHours'}, 'country': {'type': 'string', 'description': 'One ISO alpha-2 code.'}, 'countries': {'type': 'string', 'description': 'Comma-separated ISO alpha-2 codes, two or more, for a side-by-side.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'properties': {'ok': {'type': 'boolean'}, 'rows': {'type': 'array', 'items': {'type': 'object'}}, 'metric': {'type': 'string'}, 'caveats': {'type': 'array', 'items': {'type': 'string'}}, 'attribution': {'type': 'object'}, 'vatRefundWeeks': {'type': 'number'}, 'complianceHours': {'type': 'number'}, 'reportedEffectiveRatePct': {'type': 'number'}}}
Input schema
{'type': 'object', 'examples': [{'countries': 'DE,IE,TH'}], 'properties': {'sort': {'enum': ['highest', 'lowest'], 'type': 'string', 'default': 'highest', 'description': 'Ranking direction. Ignored when `countries` is given.'}, 'limit': {'type': 'number', 'minimum': 1, 'description': 'Return at most this many countries in a ranking.'}, 'metric': {'enum': ['corporateCombined', 'corporateCentral', 'smallBusiness', 'pitTop', 'pitThreshold', 'pitMarginalAtThreshold'], 'type': 'string', 'default': 'corporateCombined', 'description': 'Ranking metric. Ignored when `countries` is given.'}, 'countries': {'type': 'string', 'description': 'Comma-separated ISO alpha-2 codes, two or more (e.g. "DE,IE,TH"). Omit to get a ranking instead.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'properties': {'ok': {'type': 'boolean'}, 'rows': {'type': 'array', 'items': {'type': 'object'}}, 'metric': {'type': 'string'}, 'caveats': {'type': 'array', 'items': {'type': 'string'}}, 'attribution': {'type': 'object'}}}
Input schema
{'type': 'object', 'examples': [{'sort': 'remaining', 'income': 6000}], 'required': ['income'], 'properties': {'sort': {'enum': ['total', 'remaining', 'rent', 'tax', 'share'], 'type': 'string', 'default': 'total', 'description': "Ranking. 'remaining' = most left over first; 'share' = smallest share of your income."}, 'income': {'type': 'number', 'description': 'Monthly income in USD. Required — the tool is a subtraction.'}, 'country': {'type': 'string', 'description': "ISO 3166-1 alpha-2; echoes that country's row and rank as `focus`."}, 'maxPctOfIncome': {'type': 'number', 'description': 'Keep only countries whose total is at or below this share of income (%).'}}}
Input schema
{'type': 'object', 'examples': [{'country': 'PT'}], 'properties': {'sort': {'enum': ['lowest', 'highest'], 'type': 'string', 'default': 'lowest'}, 'limit': {'type': 'number', 'minimum': 1, 'description': 'Return at most this many countries.'}, 'metric': {'enum': ['importDays', 'exportDays', 'importCostPct', 'exportCostPct'], 'type': 'string', 'default': 'importDays'}, 'country': {'type': 'string', 'description': 'One ISO alpha-2 code.'}, 'countries': {'type': 'string', 'description': 'Comma-separated ISO alpha-2 codes, two or more, for a side-by-side.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'properties': {'ok': {'type': 'boolean'}, 'rows': {'type': 'array', 'items': {'type': 'object'}}, 'metric': {'type': 'string'}, 'caveats': {'type': 'array', 'items': {'type': 'string'}}, 'exportDays': {'type': 'number'}, 'importDays': {'type': 'number'}, 'attribution': {'type': 'object'}, 'exportCostPct': {'type': 'number'}, 'importCostPct': {'type': 'number'}}}
Input schema
{'type': 'object', 'examples': [{'countries': 'GB,US,DE'}], 'properties': {'sort': {'enum': ['highest', 'lowest'], 'type': 'string', 'default': 'lowest', 'description': 'Ranking direction. Ignored when `countries` is given.'}, 'limit': {'type': 'number', 'minimum': 1, 'description': 'Return at most this many countries in a ranking.'}, 'countries': {'type': 'string', 'description': 'Comma-separated ISO alpha-2 codes, two or more (e.g. "GB,US,DE"). Omit to get a ranking instead.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'properties': {'ok': {'type': 'boolean'}, 'rows': {'type': 'array', 'items': {'type': 'object'}}, 'caveats': {'type': 'array', 'items': {'type': 'string'}}, 'excluded': {'type': 'array', 'items': {'type': 'string'}}, 'attribution': {'type': 'object'}}}
Input schema
{'type': 'object', 'examples': [{'countries': 'DE,US,TH'}], 'properties': {'sort': {'enum': ['most', 'fewest'], 'type': 'string', 'default': 'most', 'description': 'Ranking direction. Ignored when `countries` is given.'}, 'limit': {'type': 'number', 'minimum': 1, 'description': 'Return at most this many countries in a ranking.'}, 'metric': {'enum': ['weeklyHours', 'annualHours', 'maternityDays', 'paternityDays'], 'type': 'string', 'default': 'weeklyHours', 'description': 'Ranking metric. Ignored when `countries` is given.'}, 'countries': {'type': 'string', 'description': 'Comma-separated ISO alpha-2 codes, two or more (e.g. "DE,US,TH"). Omit to get a ranking instead.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'properties': {'ok': {'type': 'boolean'}, 'rows': {'type': 'array', 'items': {'type': 'object'}}, 'metric': {'type': 'string'}, 'caveats': {'type': 'array', 'items': {'type': 'string'}}, 'attribution': {'type': 'object'}}}
Input schema
{'type': 'object', 'examples': [{'income': 5000, 'country': 'PT'}], 'required': ['country'], 'properties': {'income': {'type': 'number', 'minimum': 1, 'description': 'Gross monthly income in USD. Optional; unlocks the total-cost figures.'}, 'country': {'type': 'string', 'description': 'ISO alpha-2 code (e.g. "PT").'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'properties': {'ok': {'type': 'boolean'}, 'tools': {'type': 'object'}, 'country': {'type': 'object'}, 'sources': {'type': 'array', 'items': {'type': 'object'}}, 'updated': {'type': 'string'}, 'sections': {'type': 'object'}, 'attribution': {'type': 'object'}}}
Input schema
{'type': 'object', 'examples': [{'country': 'FR'}], 'properties': {'sort': {'enum': ['highest', 'lowest'], 'type': 'string', 'description': 'Highest first (default) or lowest first.'}, 'limit': {'type': 'number', 'minimum': 1, 'description': 'Return at most this many countries.'}, 'metric': {'enum': ['speedMotorway', 'speedUrban', 'speedRural', 'bacLimitPct'], 'type': 'string', 'description': 'Ranking metric when neither country nor countries is given.'}, 'country': {'type': 'string', 'description': 'One ISO alpha-2 code.'}, 'drivesOn': {'enum': ['left', 'right'], 'type': 'string', 'description': 'Restrict the ranking to one side of the road.'}, 'countries': {'type': 'string', 'description': 'Comma-separated ISO alpha-2 codes, two or more, for a side-by-side.'}, 'idpRequired': {'enum': ['true', 'false'], 'type': 'string', 'description': 'Restrict the ranking by whether an International Driving Permit is needed.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'properties': {'ok': {'type': 'boolean'}, 'rows': {'type': 'array', 'items': {'type': 'object'}}, 'source': {'type': 'string'}, 'caveats': {'type': 'array', 'items': {'type': 'string'}}, 'drivesOn': {'type': 'string'}, 'excluded': {'type': 'array', 'items': {'type': 'string'}}, 'checkedOn': {'type': 'string'}, 'speedUnit': {'type': 'string'}, 'speedRural': {'type': 'number'}, 'speedUrban': {'type': 'number'}, 'attribution': {'type': 'object'}, 'bacLimitPct': {'type': 'number'}, 'idpRequired': {'type': 'boolean'}, 'speedMotorway': {'type': 'number'}, 'requiredEquipment': {'type': 'array', 'items': {'type': 'string'}}}}
Input schema
{'type': 'object', 'examples': [{'country': 'DE'}], 'properties': {'sort': {'enum': ['most', 'fewest'], 'type': 'string', 'description': 'Most first (default) or fewest first.'}, 'limit': {'type': 'number', 'minimum': 1, 'description': 'Return at most this many countries.'}, 'metric': {'enum': ['minAnnualLeaveDays', 'noticeEmployerMinWeeks', 'probationMaxMonths', 'maxWeeklyHours'], 'type': 'string', 'description': 'Ranking metric when neither country nor countries is given.'}, 'country': {'type': 'string', 'description': 'One ISO alpha-2 code.'}, 'countries': {'type': 'string', 'description': 'Comma-separated ISO alpha-2 codes, two or more, for a side-by-side.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'properties': {'ok': {'type': 'boolean'}, 'rows': {'type': 'array', 'items': {'type': 'object'}}, 'basis': {'type': 'string'}, 'source': {'type': 'string'}, 'caveats': {'type': 'array', 'items': {'type': 'string'}}, 'excluded': {'type': 'array', 'items': {'type': 'string'}}, 'checkedOn': {'type': 'string'}, 'attribution': {'type': 'object'}, 'maxWeeklyHours': {'type': 'number'}, 'minAnnualLeaveDays': {'type': 'number'}, 'probationMaxMonths': {'type': 'number'}, 'noticeEmployeeMinWeeks': {'type': 'number'}, 'noticeEmployerMinWeeks': {'type': 'number'}}}
Input schema
{'type': 'object', 'examples': [{'gross': 60000, 'country': 'DE'}], 'properties': {'sort': {'enum': ['highest', 'lowest'], 'type': 'string', 'default': 'highest', 'description': 'Ranking direction. Ignored when `country` is given.'}, 'gross': {'type': 'number', 'minimum': 1, 'description': 'Gross annual wage in USD. When omitted, the pay-range midpoint is used.'}, 'limit': {'type': 'number', 'minimum': 1, 'description': 'Return at most this many countries in a ranking.'}, 'country': {'type': 'string', 'description': 'ISO alpha-2 code (e.g. "DE"). Omit for a ranking.'}, 'seniority': {'enum': ['entry', 'mid', 'senior', 'lead'], 'type': 'string', 'description': 'Seniority for the default wage (default `mid`). Ignored when `gross` is given.'}, 'occupation': {'type': 'string', 'description': 'ISCO-08 major group id for the default wage (default `total`). Ignored when `gross` is given.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'properties': {'ok': {'type': 'boolean'}, 'oecd': {'type': 'object'}, 'rows': {'type': 'array', 'items': {'type': 'object'}}, 'wage': {'type': 'object'}, 'caveats': {'type': 'array', 'items': {'type': 'string'}}, 'country': {'type': 'object'}, 'employee': {'type': 'object'}, 'employer': {'type': 'object'}, 'taxWedge': {'type': 'number'}, 'attribution': {'type': 'object'}}}
Input schema
{'type': 'object', 'examples': [{'base': 'GB', 'target': 'TH'}], 'required': ['base', 'target'], 'properties': {'base': {'type': 'string', 'description': 'ISO 3166-1 alpha-2 country code to compare FROM (case-insensitive).'}, 'source': {'enum': ['consensus', 'worldbank', 'imf', 'oecd', 'pwt', 'worldbank-cons', 'bigmac', 'factbook'], 'type': 'string', 'description': 'Optional dataset override. Defaults to the consumption basket (worldbank-cons) when it covers both countries, else consensus; the response echoes the source used.'}, 'target': {'type': 'string', 'description': 'ISO 3166-1 alpha-2 country code to compare TO (must differ from base).'}, 'baseCity': {'type': 'string', 'description': "Optional city slug for the base side (sub-national cost adjustment, e.g. 'london'). Enables intra-country city comparisons like London vs Hull."}, 'targetCity': {'type': 'string', 'description': "Optional city slug for the target side (e.g. 'hull')."}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'properties': {'ok': {'type': 'boolean'}, 'items': {'type': 'array', 'items': {'type': 'object', 'properties': {'base': {'type': 'object', 'properties': {'usd': {'type': 'number'}}}, 'item': {'type': 'object'}, 'target': {'type': 'object', 'properties': {'usd': {'type': 'number'}}}, 'pctDiff': {'type': 'number'}}}}, 'source': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'auto': {'type': 'boolean'}}}, 'monthlyBudget': {'type': 'object', 'properties': {'base': {'type': 'number'}, 'target': {'type': 'number'}, 'pctDiff': {'type': 'number'}}}, 'categoryTotals': {'type': 'array', 'items': {'type': 'object'}}}}
Input schema
{'type': 'object', 'examples': [{'cost': 6, 'budget': 2500, 'safety': 9, 'healthcare': 8}], 'properties': {'air': {'type': 'number', 'maximum': 10, 'minimum': 0, 'description': 'Weight 0–10 for air (default 5).'}, 'cost': {'type': 'number', 'maximum': 10, 'minimum': 0, 'description': 'Weight 0–10 for cost (default 5).'}, 'limit': {'type': 'number', 'minimum': 1, 'description': 'Maximum rows (default 10).'}, 'budget': {'type': 'number', 'default': 3000, 'minimum': 1, 'description': 'Monthly budget in USD.'}, 'region': {'enum': ['East Asia & Pacific', 'Europe & Central Asia', 'Latin America & Caribbean', 'Middle East, North Africa, Afghanistan & Pakistan', 'North America', 'South Asia', 'Sub-Saharan Africa'], 'type': 'string', 'description': 'Keep only countries in this World Bank region.'}, 'safety': {'type': 'number', 'maximum': 10, 'minimum': 0, 'description': 'Weight 0–10 for safety (default 5).'}, 'english': {'type': 'number', 'maximum': 10, 'minimum': 0, 'description': 'Weight 0–10 for english (default 5).'}, 'internet': {'type': 'number', 'maximum': 10, 'minimum': 0, 'description': 'Weight 0–10 for internet (default 5).'}, 'needsVisa': {'type': 'boolean', 'description': 'Keep only countries with a digital nomad visa the budget meets.'}, 'healthcare': {'type': 'number', 'maximum': 10, 'minimum': 0, 'description': 'Weight 0–10 for healthcare (default 5).'}, 'withinBudget': {'type': 'boolean', 'default': True, 'description': 'Keep only countries whose modelled essentials fit inside the budget.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'properties': {'ok': {'type': 'boolean'}, 'rows': {'type': 'array', 'items': {'type': 'object'}}, 'inputs': {'type': 'object'}, 'caveats': {'type': 'array', 'items': {'type': 'string'}}, 'excluded': {'type': 'object'}, 'attribution': {'type': 'object'}}}
Input schema
{'type': 'object', 'examples': [{'swr': 0.04, 'portfolio': 400000}], 'required': ['portfolio'], 'properties': {'swr': {'type': 'number', 'default': 0.04, 'description': 'Safe withdrawal rate as fraction (0.04) or percent (4). Default 0.04.'}, 'coast': {'enum': ['1'], 'type': 'string', 'description': 'Set to 1 for Coast-FIRE mode (project growth with zero further savings).'}, 'return': {'type': 'number', 'description': 'Expected real annual return, fraction (0.05) or percent (5). Default 0.05.'}, 'source': {'enum': ['consensus', 'worldbank', 'imf', 'oecd', 'pwt', 'worldbank-cons', 'bigmac', 'factbook'], 'type': 'string', 'default': 'consensus'}, 'savings': {'type': 'number', 'description': 'Monthly savings (USD) — enables the years-to-FIRE planner.'}, 'portfolio': {'type': 'number', 'minimum': 0, 'description': 'Total investable portfolio (USD).'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'properties': {'ok': {'type': 'boolean'}, 'rows': {'type': 'array', 'items': {'type': 'object', 'properties': {'visa': {'type': 'object'}, 'coverage': {'type': 'number'}, 'tierCosts': {'type': 'object'}, 'fireNumbers': {'type': 'object'}, 'yearsToTier': {'type': 'object'}, 'achievedTier': {'enum': ['lean', 'comfortable', 'upper', 'luxury', None], 'type': ['string', 'null']}}}}, 'sensitivity': {'type': 'array', 'items': {'type': 'object'}}, 'annualIncome': {'type': 'number'}, 'monthlyIncome': {'type': 'number'}}}
Input schema
{'type': 'object', 'examples': [{'funds': 50000, 'currency': 'GBP'}], 'properties': {'funds': {'type': 'number', 'minimum': 1, 'description': 'Funds available to commit, in `currency`.'}, 'country': {'type': 'string', 'description': 'One ISO alpha-2 code for a single entry.'}, 'currency': {'type': 'string', 'default': 'USD', 'description': 'ISO 4217 code of `funds` (e.g. "GBP").'}, 'countries': {'type': 'string', 'description': 'Comma-separated ISO alpha-2 codes, two or more, for a side-by-side.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'properties': {'ok': {'type': 'boolean'}, 'kind': {'type': 'string'}, 'none': {'type': 'array', 'items': {'type': 'string'}}, 'rows': {'type': 'array', 'items': {'type': 'object'}}, 'caveats': {'type': 'array', 'items': {'type': 'string'}}, 'qualify': {'type': 'array', 'items': {'type': 'object'}}, 'nearMiss': {'type': 'array', 'items': {'type': 'object'}}, 'attribution': {'type': 'object'}, 'fundingRaised': {'type': 'array', 'items': {'type': 'object'}}}}
Input schema
{'type': 'object', 'examples': [{'zones': ['Europe/London', 'America/New_York', 'Australia/Sydney']}], 'required': ['zones'], 'properties': {'end': {'type': 'number', 'default': 1080, 'description': 'Default working-window end, minutes from local midnight (default 1080 = 18:00).'}, 'date': {'type': 'string', 'format': 'date', 'description': 'Reference date (ISO YYYY-MM-DD) for DST. Defaults to today (UTC).'}, 'hours': {'type': 'string', 'description': "Optional per-zone overrides aligned to `zones`, e.g. '540-1080;420-720'."}, 'start': {'type': 'number', 'default': 540, 'description': 'Default working-window start, minutes from local midnight (default 540 = 09:00).'}, 'zones': {'type': 'array', 'items': {'type': 'string'}, 'minItems': 1, 'description': "IANA timezone identifiers, e.g. 'Europe/London'."}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'properties': {'ok': {'type': 'boolean'}, 'overlap': {'type': ['object', 'null'], 'properties': {'local': {'type': 'array', 'items': {'type': 'object', 'properties': {'end': {'type': 'string'}, 'label': {'type': 'string'}, 'start': {'type': 'string'}, 'offset': {'type': 'number'}, 'timeZone': {'type': 'string'}}}}, 'endUtc': {'type': 'number'}, 'startUtc': {'type': 'number'}, 'endUtcLabel': {'type': 'string'}, 'startUtcLabel': {'type': 'string'}, 'durationMinutes': {'type': 'number'}}}, 'friction': {'type': 'object', 'properties': {'grade': {'enum': ['Effortless', 'Manageable', 'Strained', 'Broken'], 'type': 'string'}, 'score': {'type': 'number', 'description': '0–100; higher is less friction.'}, 'coverage': {'type': 'object', 'properties': {'of': {'type': 'number'}, 'simultaneous': {'type': 'number'}}}, 'loneWolf': {'type': 'object', 'properties': {'label': {'type': 'string'}, 'timeZone': {'type': 'string'}, 'gainMinutes': {'type': 'number'}}, 'description': 'Present when N≥3 and dropping one member frees ≥2h of overlap.'}, 'overlapMinutes': {'type': 'number'}, 'dailyOverlapHours': {'type': 'number'}}}, 'referenceDate': {'type': 'string'}, 'bestPartialCount': {'type': 'number'}}}
Input schema
{'type': 'object', 'examples': [{'income': 4000, 'children': 1, 'currency': 'EUR', 'partners': 1}], 'properties': {'income': {'type': 'number', 'description': 'Your gross monthly income (in `currency`, default USD).'}, 'children': {'type': 'number', 'description': "Number of dependent children (each adds the program's child uplift)."}, 'currency': {'type': 'string', 'description': 'ISO currency code for `income` (e.g. EUR, GBP, INR). Defaults to USD.'}, 'partners': {'enum': [0, 1], 'type': 'number', 'description': "1 if bringing a partner (raises each program's threshold by its partner uplift)."}, 'renewable': {'enum': ['1'], 'type': 'string', 'description': 'Set to 1 to require renewable programs.'}, 'residency': {'enum': ['1'], 'type': 'string', 'description': 'Set to 1 to require a path to permanent residency.'}, 'minDuration': {'type': 'number', 'description': 'Minimum program duration in months.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'properties': {'ok': {'type': 'boolean'}, 'total': {'type': 'number'}, 'matches': {'type': 'array', 'items': {'type': 'object'}, 'description': 'Programs you qualify for; each carries requiredUsd (household threshold) and shortfallUsd (≤0).'}, 'updated': {'type': 'string'}, 'household': {'type': 'object', 'properties': {'children': {'type': 'number'}, 'partners': {'type': 'number'}}}, 'incomeUsd': {'type': 'number', 'description': 'Your income converted to USD, used for matching.'}, 'nearMisses': {'type': 'array', 'items': {'type': 'object'}, 'description': 'Programs within ~$1,000/mo of qualifying, closest first.'}}}
Input schema
{'type': 'object', 'examples': [{'age': 62, 'income': 1500, 'currency': 'GBP'}], 'properties': {'age': {'type': 'number', 'maximum': 120, 'minimum': 18, 'description': 'Applicant age; routes with a higher minimum are excluded.'}, 'income': {'type': 'number', 'minimum': 1, 'description': 'Monthly income to match, in `currency`.'}, 'country': {'type': 'string', 'description': 'One ISO alpha-2 code for a single entry.'}, 'savings': {'type': 'number', 'minimum': 0, 'description': 'Lump sum available, in `currency`; unlocks deposit routes.'}, 'currency': {'type': 'string', 'default': 'USD', 'description': 'ISO 4217 code of `income` and `savings` (e.g. "GBP").'}, 'countries': {'type': 'string', 'description': 'Comma-separated ISO alpha-2 codes, two or more, for a side-by-side.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'properties': {'ok': {'type': 'boolean'}, 'kind': {'type': 'string'}, 'none': {'type': 'array', 'items': {'type': 'string'}}, 'rows': {'type': 'array', 'items': {'type': 'object'}}, 'caveats': {'type': 'array', 'items': {'type': 'string'}}, 'qualify': {'type': 'array', 'items': {'type': 'object'}}, 'nearMiss': {'type': 'array', 'items': {'type': 'object'}}, 'attribution': {'type': 'object'}, 'depositRoutes': {'type': 'array', 'items': {'type': 'object'}}}}
Input schema
{'type': 'object', 'examples': [{'funds': 20000, 'currency': 'GBP'}], 'properties': {'per': {'enum': ['year', 'month'], 'type': 'string', 'default': 'year'}, 'funds': {'type': 'number', 'minimum': 1, 'description': 'Living funds the student can show, in `currency`, for `per`.'}, 'country': {'type': 'string', 'description': 'One ISO alpha-2 code.'}, 'currency': {'type': 'string', 'default': 'USD'}, 'countries': {'type': 'string', 'description': 'Comma-separated ISO alpha-2 codes, two or more, for a side-by-side.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'properties': {'ok': {'type': 'boolean'}, 'kind': {'type': 'string'}, 'none': {'type': 'array', 'items': {'type': 'string'}}, 'rows': {'type': 'array', 'items': {'type': 'object'}}, 'caveats': {'type': 'array', 'items': {'type': 'string'}}, 'qualify': {'type': 'array', 'items': {'type': 'object'}}, 'nearMiss': {'type': 'array', 'items': {'type': 'object'}}, 'attribution': {'type': 'object'}, 'unpublished': {'type': 'array', 'items': {'type': 'object'}}}}
Input schema
{'type': 'object', 'examples': [{'country': 'BR'}], 'properties': {'country': {'type': 'string', 'description': 'One ISO alpha-2 code (e.g. "BR").'}, 'countries': {'type': 'string', 'description': 'Comma-separated ISO alpha-2 codes, two or more. Ignored when `country` is given.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'properties': {'ok': {'type': 'boolean'}, 'rows': {'type': 'array', 'items': {'type': 'object'}}, 'caveats': {'type': 'array', 'items': {'type': 'string'}}, 'malaria': {'type': 'boolean'}, 'attribution': {'type': 'object'}, 'vaccinesMost': {'type': 'array', 'items': {'type': 'string'}}, 'vaccinesSome': {'type': 'array', 'items': {'type': 'string'}}, 'yellowFeverCertificate': {'type': 'string'}}}
Input schema
{'type': 'object', 'examples': [{'country': 'SA'}], 'properties': {'sort': {'enum': ['highest', 'lowest'], 'type': 'string', 'default': 'highest', 'description': 'Ranking direction. Ignored when `countries` is given.'}, 'limit': {'type': 'number', 'minimum': 1, 'description': 'Return at most this many countries in a ranking.'}, 'metric': {'enum': ['index', 'mobility', 'workplace', 'pay', 'marriage', 'parenthood', 'entrepreneurship', 'assets', 'pension', 'retirementAgeMen', 'retirementAgeWomen'], 'type': 'string', 'default': 'index', 'description': 'Ranking metric when neither `country` nor `countries` is given.'}, 'country': {'type': 'string', 'description': 'One ISO alpha-2 code for the full profile (e.g. "SA").'}, 'countries': {'type': 'string', 'description': 'Comma-separated ISO alpha-2 codes, two or more, for a side-by-side comparison. Ignored when `country` is given.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'properties': {'ok': {'type': 'boolean'}, 'law': {'type': 'object'}, 'rows': {'type': 'array', 'items': {'type': 'object'}}, 'index': {'type': 'number'}, 'topics': {'type': 'object'}, 'caveats': {'type': 'array', 'items': {'type': 'string'}}, 'edition': {'type': 'number'}, 'retirement': {'type': 'object'}, 'attribution': {'type': 'object'}}}
Input schema
{'type': 'object', 'examples': [{'since': '2026-09-01'}], 'properties': {'since': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'Return only datasets changed strictly after this date (YYYY-MM-DD). Omit for all.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'properties': {'ok': {'type': 'boolean'}, 'count': {'type': 'number'}, 'since': {'type': ['string', 'null']}, 'newest': {'type': ['string', 'null']}, 'changed': {'type': 'array', 'items': {'type': 'object'}}, 'datasets': {'type': 'array', 'items': {'type': 'object'}}, 'changedCount': {'type': 'number'}}}
Input schema
{'type': 'object', 'examples': [{'base': 150000, 'home': 'US', 'source': 'consensus', 'target': 'ES'}], 'required': ['base', 'home'], 'properties': {'base': {'type': 'number', 'minimum': 0, 'description': 'Base annual salary in the home country (USD-denominated).'}, 'home': {'type': 'string', 'description': 'ISO 3166-1 alpha-2 home country code the base salary is expressed in (case-insensitive).'}, 'source': {'enum': ['consensus', 'worldbank', 'imf', 'oecd', 'pwt', 'worldbank-cons', 'bigmac', 'factbook'], 'type': 'string', 'default': 'consensus', 'description': "PPP dataset to draw figures from. Defaults to 'consensus' if omitted."}, 'target': {'type': 'string', 'description': 'Optional ISO 3166-1 alpha-2 target country code. Omit to localize across all countries in the source.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'properties': {'ok': {'type': 'boolean'}, 'home': {'type': 'object', 'properties': {'code': {'type': 'string'}, 'name': {'type': 'string'}, 'pppIndex': {'type': 'number'}}}, 'input': {'type': 'object', 'properties': {'baseSalary': {'type': 'number'}}}, 'source': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'label': {'type': 'string'}}}, 'results': {'type': 'array', 'items': {'type': 'object', 'properties': {'local': {'type': 'object', 'properties': {'amount': {'type': 'number'}, 'fxRate': {'type': 'number'}, 'fxYear': {'type': 'number'}, 'currency': {'type': 'string'}}, 'description': "The figure in the target's local currency at market FX (omitted when no rate is known or target is USD)."}, 'ratio': {'type': 'number'}, 'target': {'type': 'object', 'properties': {'code': {'type': 'string'}, 'name': {'type': 'string'}, 'currency': {'type': 'string'}, 'pppIndex': {'type': 'number'}}}, 'localEquivalent': {'type': 'number'}}}}}}
Input schema
{'type': 'object', 'examples': [{'country': 'SG'}], 'properties': {'country': {'type': 'string', 'description': 'Passport country alpha-2 code (e.g. US, GB, SG). Omit for the full league table.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'properties': {'ok': {'type': 'boolean'}, 'passport': {'type': 'object', 'properties': {'code': {'type': 'string'}, 'name': {'type': 'string'}, 'rank': {'type': 'number'}, 'counts': {'type': 'object'}, 'destinations': {'type': 'object'}, 'mobilityScore': {'type': 'number'}}}, 'resolved': {'type': 'object'}, 'percentile': {'type': 'number'}, 'totalPassports': {'type': 'number'}}}
Input schema
{'type': 'object', 'examples': [{'to': 'PT', 'from': 'GB', 'years': 10, 'amount': 1000, 'currency': 'GBP'}], 'required': ['from', 'to'], 'properties': {'to': {'type': 'string', 'description': 'Country it will be spent in, ISO alpha-2 (e.g. "PT").'}, 'from': {'type': 'string', 'description': 'Country the pension is paid from, ISO alpha-2 (e.g. "GB").'}, 'years': {'type': 'number', 'maximum': 40, 'minimum': 1, 'description': 'Years to project (whole number, default 10).'}, 'amount': {'type': 'number', 'minimum': 1, 'description': "Monthly pension in `currency`. Omit for the origin's typical state pension."}, 'currency': {'type': 'string', 'description': 'ISO 4217 code of `amount` (default USD).'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'properties': {'ok': {'type': 'boolean'}, 'to': {'type': 'object'}, 'from': {'type': 'object'}, 'years': {'type': 'number'}, 'caveats': {'type': 'array', 'items': {'type': 'string'}}, 'pension': {'type': 'object'}, 'erosionPct': {'type': 'number'}, 'attribution': {'type': 'object'}, 'inflationPct': {'type': 'number'}, 'worthTodayUsd': {'type': 'number'}, 'worthTodayLocal': {'type': 'number'}, 'worthAfterYearsUsd': {'type': 'number'}, 'worthAfterYearsLocal': {'type': 'number'}}}
Input schema
{'type': 'object', 'examples': [{'members': 'GB,DE,US'}], 'required': ['members'], 'properties': {'end': {'type': 'number', 'description': 'Default local working-window end, minutes from midnight (default 1080 = 18:00).'}, 'year': {'type': 'number', 'description': 'Calendar year for the holiday calendar. Defaults to the first year in the dataset.'}, 'hours': {'type': 'string', 'description': 'Per-member `start-end` overrides, semicolon-separated and aligned with `members`; leave a slot empty to keep the default (e.g. "540-1080;;420-720").'}, 'start': {'type': 'number', 'description': 'Default local working-window start for every member, minutes from midnight (default 540 = 09:00).'}, 'members': {'type': 'string', 'description': 'Comma-separated ISO alpha-2 codes, two or more, each optionally `CC@IANA/Zone` (e.g. "GB,JP,US@America/Chicago").'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'properties': {'ok': {'type': 'boolean'}, 'days': {'type': 'object'}, 'year': {'type': 'number'}, 'hours': {'type': 'object'}, 'caveats': {'type': 'array', 'items': {'type': 'string'}}, 'members': {'type': 'array', 'items': {'type': 'object'}}, 'attribution': {'type': 'object'}, 'sharedWorkingHoursPerYear': {'type': 'number'}}}
Input schema
{'type': 'object', 'examples': [{'country': 'TH'}], 'properties': {'band': {'enum': ['free', 'restricted', 'leasehold-only', 'prohibited'], 'type': 'string', 'description': 'Restrict the ranking to one ownership band.'}, 'limit': {'type': 'number', 'minimum': 1, 'description': 'Return at most this many countries.'}, 'country': {'type': 'string', 'description': 'One ISO alpha-2 code.'}, 'countries': {'type': 'string', 'description': 'Comma-separated ISO alpha-2 codes, two or more, for a side-by-side.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'properties': {'ok': {'type': 'boolean'}, 'rows': {'type': 'array', 'items': {'type': 'object'}}, 'source': {'type': 'string'}, 'caveats': {'type': 'array', 'items': {'type': 'string'}}, 'checkedOn': {'type': 'string'}, 'attribution': {'type': 'object'}, 'restrictions': {'type': 'string'}, 'transferTaxPct': {'type': 'number'}, 'foreignOwnership': {'type': 'string'}}}
Input schema
{'type': 'object', 'examples': [{'maxBudget': 3000, 'minInternet': 80}], 'properties': {'budget': {'type': 'number', 'default': 3000, 'minimum': 0, 'description': 'Monthly budget (USD) — drives lifestyle labels and visa eligibility.'}, 'weights': {'type': 'string', 'description': 'Five comma-separated 0–10 weights: internet,safety,healthcare,air,english (default 5,5,5,5,5).'}, 'maxBudget': {'type': 'number', 'minimum': 0, 'description': 'Filter: keep countries whose monthly essentials cost ≤ this (USD).'}, 'minSafety': {'type': 'number', 'maximum': 100, 'minimum': 0, 'description': 'Filter: minimum safety score, 0–100.'}, 'minInternet': {'type': 'number', 'minimum': 0, 'description': 'Filter: minimum median broadband, Mbps (e.g. 80).'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'properties': {'ok': {'type': 'boolean'}, 'rows': {'type': 'array', 'items': {'type': 'object', 'properties': {'visa': {'type': 'object'}, 'entry': {'type': 'object'}, 'composite': {'type': 'number'}, 'lifestyle': {'enum': ['out of budget', 'comfortable', 'very comfortable', 'like royalty'], 'type': 'string'}, 'valueScore': {'type': 'number'}, 'essentialsUsd': {'type': 'number'}, 'taxThresholdDays': {'type': 'number'}}}}, 'excluded': {'type': 'number'}}}
Input schema
{'type': 'object', 'examples': [{'to': 'IN', 'from': 'GB', 'amount': 500}], 'properties': {'to': {'type': 'string', 'description': 'Receiving country, ISO alpha-2 (e.g. "IN").'}, 'from': {'type': 'string', 'description': 'Sending country, ISO alpha-2 (e.g. "GB").'}, 'sort': {'enum': ['lowest', 'highest'], 'type': 'string', 'default': 'lowest', 'description': 'Ranking direction when only one of `from`/`to` is given.'}, 'limit': {'type': 'number', 'minimum': 1, 'description': 'Return at most this many corridors in a ranking.'}, 'amount': {'type': 'number', 'minimum': 1, 'description': "Amount to send, USD. Optional; without it the corridor's survey figures are returned unquoted."}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'properties': {'ok': {'type': 'boolean'}, 'rows': {'type': 'array', 'items': {'type': 'object'}}, 'quote': {'type': 'object'}, 'period': {'type': 'string'}, 'caveats': {'type': 'array', 'items': {'type': 'string'}}, 'corridor': {'type': 'object'}, 'providers': {'type': 'number'}, 'attribution': {'type': 'object'}, 'avgCost200Pct': {'type': 'number'}, 'avgCost500Pct': {'type': 'number'}, 'cheapestCost200Pct': {'type': 'number'}}}
Input schema
{'type': 'object', 'examples': [{'country': 'US', 'weeksOff': 6, 'desiredNet': 100000, 'utilization': 0.7}], 'required': ['desiredNet'], 'properties': {'hours': {'type': 'number', 'description': 'Hours per week (default 40).'}, 'health': {'type': 'number', 'description': 'Annual self-paid health insurance (USD); defaults to the country preset.'}, 'country': {'enum': ['US', 'GB', 'DE', 'FR', 'ES', 'NL', 'PT', 'EE', 'CA', 'AU', 'IN', 'AE', 'IT', 'GR', 'IE', 'DK', 'SE', 'NO', 'CH', 'CZ', 'PL', 'HU', 'TR', 'JP', 'KR', 'CN', 'SG', 'MY', 'TH', 'VN', 'ID', 'PH', 'NZ', 'SA', 'EG', 'ZA', 'NG', 'MX', 'BR', 'AR', 'CL', 'CO'], 'type': 'string', 'default': 'US'}, 'taxRate': {'type': 'number', 'description': 'Override effective tax rate, percent (e.g. 32).'}, 'expenses': {'type': 'number', 'description': 'Annual business expenses (USD, default 0).'}, 'weeksOff': {'type': 'number', 'description': 'Unpaid weeks off per year (default 4).'}, 'desiredNet': {'type': 'number', 'minimum': 1, 'description': 'Desired annual net take-home (USD).'}, 'utilization': {'type': 'number', 'description': 'Billable share of working hours, 0–1 (default 0.75).'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'properties': {'ok': {'type': 'boolean'}, 'dayRate': {'type': 'number'}, 'hourlyRate': {'type': 'number'}, 'billableHours': {'type': 'number'}, 'requiredGross': {'type': 'number'}}}
Input schema
{'type': 'object', 'examples': [{'amount': 1500, 'currency': 'GBP'}], 'properties': {'limit': {'type': 'number', 'minimum': 1, 'description': 'Return at most this many countries.'}, 'amount': {'type': 'number', 'default': 1500, 'minimum': 1, 'description': 'Monthly pension, in `currency`.'}, 'currency': {'type': 'string', 'default': 'GBP', 'description': 'ISO 4217 code of `amount`.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'properties': {'ok': {'type': 'boolean'}, 'rows': {'type': 'array', 'items': {'type': 'object'}}, 'caveats': {'type': 'array', 'items': {'type': 'string'}}, 'pension': {'type': 'object'}, 'attribution': {'type': 'object'}}}
Input schema
{'type': 'object', 'examples': [{'users': 'US-East:40,UK:30,Germany:30'}], 'required': ['users'], 'properties': {'hosts': {'type': 'string', 'description': "Optional comma-separated host region ids to restrict candidates (e.g. 'us-east-1,eu-west-2')."}, 'users': {'type': 'string', 'description': "Comma-separated region:percent pairs (percentages auto-normalize), e.g. 'US-East:40,UK:30,Germany:30'. Region ids: US-East, US-West, Canada, Brazil, UK, Germany, France, Spain, Nigeria, South-Africa, UAE, India, Singapore, China, Japan, Australia."}, 'provider': {'enum': ['AWS', 'GCP', 'Azure'], 'type': 'string', 'description': 'Optional cloud provider filter, applied before the hosts whitelist.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'properties': {'ok': {'type': 'boolean'}, 'best': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'city': {'type': 'string'}, 'provider': {'type': 'string'}, 'weightedMs': {'type': 'number'}}}, 'split': {'type': 'object', 'properties': {'hostsUsed': {'type': 'array', 'items': {'type': 'string'}}, 'weightedMs': {'type': 'number'}, 'improvementMs': {'type': 'number'}}}, 'ranking': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'weightedMs': {'type': 'number'}}}}}}
Input schema
{'type': 'object', 'examples': [{'country': 'TH'}], 'properties': {'sort': {'enum': ['lowest', 'highest'], 'type': 'string', 'default': 'lowest', 'description': 'Ranking direction when neither `country` nor `countries` is given: lowest = least restricted first.'}, 'limit': {'type': 'number', 'minimum': 1, 'description': 'Return at most this many countries in a ranking.'}, 'country': {'type': 'string', 'description': 'One ISO alpha-2 code for the full advice (e.g. "TH").'}, 'countries': {'type': 'string', 'description': 'Comma-separated ISO alpha-2 codes, two or more, for a side-by-side. Ignored when `country` is given.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'properties': {'ok': {'type': 'boolean'}, 'us': {'type': 'object'}, 'fcdo': {'type': 'object'}, 'rows': {'type': 'array', 'items': {'type': 'object'}}, 'caveats': {'type': 'array', 'items': {'type': 'string'}}, 'excluded': {'type': 'array', 'items': {'type': 'string'}}, 'attribution': {'type': 'object'}}}
Input schema
{'type': 'object', 'examples': [{'to': 'GB', 'from': 'TH'}], 'properties': {'to': {'type': 'string', 'description': "ISO alpha-2 code of the recipient's country; unlocks the treaty rate."}, 'from': {'type': 'string', 'description': "ISO alpha-2 code of the paying company's country."}, 'sort': {'enum': ['lowest', 'highest'], 'type': 'string', 'default': 'lowest'}, 'type': {'enum': ['dividends', 'interest', 'royalties', 'technicalFees'], 'type': 'string', 'default': 'dividends', 'description': 'Income type to rank by when `from` is not given.'}, 'limit': {'type': 'number', 'minimum': 1}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'properties': {'ok': {'type': 'boolean'}, 'to': {'type': 'object'}, 'rows': {'type': 'array', 'items': {'type': 'object'}}, 'lines': {'type': 'array', 'items': {'type': 'object'}}, 'treaty': {'type': 'object'}, 'caveats': {'type': 'array', 'items': {'type': 'string'}}, 'standard': {'type': 'object'}, 'attribution': {'type': 'object'}}}
Recent tool changes
Similar MCP servers
mcp-server
Provides immigration, citizenship and residency programme research alongside tax, wealth structuring, banking, visa, treaty and c…
AI 代理人任務中樞
Aggregates Taiwan-focused tools for AI service comparisons, cryptocurrency data, game information, health guidance, and other con…
Good Turn Studio (all tools)
Offers consumer utilities for insurance claim appeals, subscription cancellation, flight fare research, financial recovery resour…
FalaZuki Finance BR
Provides Brazil-focused financial calculations and rules for investments, credit, taxes, payroll, labor costs, debt, budgeting, a…
XBOSS
Accesses Korean tax, social insurance, payroll, cash receipt, e-tax invoice, and certificate filing services.
Sirenic
Provides European company registry, financial, procurement, sanctions, regulatory, insolvency, ownership, and ongoing due-diligen…
taxsort-mcp
Classifies personal tax transactions, applies user-defined rules, manages tax-year sessions, and provides account, usage, and cre…
mcp
Analyzes medical bills and insurance denials, estimates healthcare costs, identifies assistance options, and supports appeals and…