EN
DoubleTaxation.tax residence check for U.S. taxpayers abroad

DoubleTaxation MCP server

Connect DoubleTaxation to Claude or another AI assistant. The assistant can then check a person's tax residence between two countries, explain where and which taxes apply with the legal basis, and show the tax burden on salaries. The result is computed by the same rules engine as this website.

Server URL: https://doubletaxation.app/api/mcp
Sign-in: none · Tools: read-only · Price: free

Connect

Claude (web, desktop, mobile)

  1. Open Settings → Connectors and choose Add custom connector.
  2. Name: DoubleTaxation; URL: https://doubletaxation.app/api/mcp. Authentication: No sign-in.
  3. In a chat, ask, for example: “Am I a tax resident of Ukraine or Poland? I'm a Ukrainian citizen living in Warsaw since March.”

Claude Code

claude mcp add --transport http doubletaxation https://doubletaxation.app/api/mcp

Other MCP clients

Any client that supports remote MCP servers over Streamable HTTP can use the same URL without credentials.

Example prompts

How a residence check works

  1. The assistant picks the version for the user's home country (list_versions) and the other country (list_countries).
  2. It calls check_residency without answers. The server returns "status": "needs_answer" and the next question: its id, text, hint and options.
  3. The assistant asks the user and calls again with all answers so far, e.g. "answers": { "home.UA": "yes", "days.OTHER": 200 }. Only the questions needed for this person are asked.
  4. When the answers are complete, the server returns "status": "done". The result contains the conclusion and reliability score, how each country's law treats the person, the treaty tie-breaker, where and which taxes apply, the legal basis with links, court practice, optional per-income rules, the disclaimer and result_link. The link opens the same result on this website, where it can be saved as a PDF.

Texts are in the language of the version. The assistant presents them in the user's language.

Versions

Each version is written for taxpayers of one home country and compares it with 20 other countries.

versionHome countryWebsite
ukУкраїна (UA)doubletaxation.app/
enUnited States (US)doubletaxation.app/en/
plPolska (PL)doubletaxation.app/pl/
csČesko (CZ)doubletaxation.app/cs/
roRomânia (RO)doubletaxation.app/ro/
huMagyarország (HU)doubletaxation.app/hu/
trTürkiye (TR)doubletaxation.app/tr/
zh中国 (CN)doubletaxation.app/zh/
inIndia (IN)doubletaxation.app/in/
ja日本 (JP)doubletaxation.app/ja/
bnবাংলাদেশ (BD)doubletaxation.app/bn/
pkPakistan (PK)doubletaxation.app/pk/

Tools

list_versions — List language versions

Lists the 12 versions of DoubleTaxation. Each version is written for taxpayers of one home state (in its language) and compares it with 20 other countries. Call this first if you are not sure which version fits the user.

No parameters.

list_countries — List countries of a version

Lists the countries that can be checked against the home state of a version: whether a tax treaty is in force (title, dates, link), whether per-income treaty rules and tax burden data exist, plus the allowed citizenship options and years for check_residency.

ParameterTypeDescription
version *string (one of 12 values)Version id from list_versions.

check_residency — Check tax residence

Determines the person's tax residence between the version's home state and another country, step by step. Without all answers it returns status "needs_answer" and the next question (id, text, options); ask the user and call again with all answers collected so far. When complete it returns status "done": the conclusion with reliability %, how each law treats the person, the treaty tie-breaker, where and which taxes apply, the legal basis (norms with links) and court practice, optional per-income-type rules, the disclaimer and a link to the same result on doubletaxation.app. Texts are in the language of the version.

ParameterTypeDescription
version *string (one of 12 values)Version id (home state), see list_versions.
country *string (one of 21 values)ISO code of the other country (where the person lives or stays). Must be one of list_countries for this version.
yearintegerTax year: the current year or one of the two previous years. Default: current year.
citizenshipstringCitizenship option value from list_countries.citizenship_options, e.g. "UA", "UA+OTHER" (dual), "NONUS". Default: the first option (citizen of the home state only).
answersobjectAnswers so far: { "<question id>": value }. Choice questions take an option value (e.g. "yes", "no", "unknown"); number questions take a whole number (days) or "unknown" if allowed.
incomearray of objectsOptional: the person's income, one item per category, to get the treaty's special rules (who may tax it, rate limits, relief method, example calculation if amount is given).

Each item of income:

ParameterTypeDescription
category *string (one of 14 values)
source *stringISO code of the state of source: where the work is done, the property is, the payer or company is resident, the performance takes place. Must be the home state or the other country.
amountnumberOptional annual gross amount (any currency, used for an illustrative calculation).
daysintegeremployment: days in the state of work within the treaty period.
employer_resident_of_source"yes" | "no" | "unknown"employment: is the employer resident in the state of work?
borne_by_pe"yes" | "no" | "unknown"employment: is the salary borne by a permanent establishment of the employer in the state of work?
fixed_place"yes" | "no" | "unknown"business / technical_fees: fixed place of business (permanent establishment) in the state of source?
service_daysintegerbusiness / technical_fees: days of providing services in the state of source.
service_statestringgovernment: state where the government service is performed (ISO code).
pension_kind"social" | "government" | "private"pension: state social pension, pension for government service, or private/occupational pension.
asset"immovable" | "property_rich_shares" | "other"capital_gains: what is sold.
study_statestringstudents: state where the person studies (ISO code).
student"yes" | "no" | "unknown"students: came to the state of study for education, and the payments come from abroad?

tax_burden — Tax burden on salary

Income tax and social contributions on an annual salary in one or more countries (OECD Taxing Wages method: single person, no children, full-year employee). Returns net pay, personal rate, tax wedge and marginal rate, sorted from lowest to highest personal rate. For up to 3 countries also the line-by-line breakdown, special tax regimes for individuals (e.g. for newcomers), assumptions and official sources.

ParameterTypeDescription
countriesarray of string (one of 21 values)ISO codes; default: all available countries.
gross_eurnumberAnnual gross salary in EUR. Default 60,000 (reference profiles: 30,000 / 60,000 / 120,000).
gross_localnumberAnnual gross salary in the country's own currency (only with exactly one country).
versionstring (one of 12 values)Language of the texts (version id). Default: en.

Protocol

Privacy

The answers that the assistant sends are processed in memory while the request is handled. They are not stored, logged or used for statistics. The only statistic is a daily count of requests, with the assistant's name taken from the user-agent. Details are in the privacy policy. What users write to the assistant is processed by its provider under its own terms.

Disclaimer

The result is for information only and is not tax or legal advice. Tax authorities and courts may interpret the rules differently, including because of circumstances not covered here, and the law changes. Consult a qualified adviser before making decisions.

Support

Questions and corrections: support@doubletaxation.app or the feedback form.

DoubleTaxation (English)