Koskamo

DoubleTaxation MCP

An MCP server that allows AI assistants to determine tax residence status between countries, calculate tax burdens, check exit taxes, and compare business forms using legal norms and treaties. It supports 12 language versions and operates without user authentication.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

DoubleTaxation MCP logo, by Yevhen MarynchakVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-06Operated by Yevhen Marynchak
MCP endpoint (Streamable HTTP)
https://doubletaxation.app/api/mcp
Vendor documentation

What its tools do

9 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.

9 of 9 have a description · 9 of 9 declare behavior hints · 8 of 8 with parameters document them all

Checks and signals

Each line is separate evidence, not a trust score.

  • Passed Endpoint answered the live check ·
  • Passed Official MCP Registry namespace is tied to doubletaxation.app ·
  • Passed Endpoint is on the registry namespace domain ·
  • Availability 1 of 1 checks passed in 30 days

What you can do with it

  • Determine tax residence status between two countries
  • Calculate tax burden on salaries and income
  • Check exit tax obligations and next steps
  • Compare tax systems for different business forms

Source and maintenance

Vendor evidenceRegistry 1.2.0

Protocol and capabilities

Server
doubletaxation 1.3.0
MCP protocol negotiated in check
2025-11-25
Tools
9 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": false
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

DoubleTaxation (doubletaxation.app) determines an individual's tax residence between two countries and explains where and which taxes apply, with the legal basis: domestic law of both states, the tax treaty tie-breaker (Art. 4), court practice, and the treaty's special rules per type of income. It also shows the tax burden on salaries (OECD Taxing Wages method), special tax regimes for individuals, exit taxes, and compares business forms (sole proprietor vs. own company). How to use: 1. Pick the version for the user's home state (list_versions). Versions: uk = Ukraine, en = United States, pl = Poland, cs = Czechia, ro = Romania, hu = Hungary, tr = Türkiye, zh = China, in = India, ja = Japan, bn = Bangladesh, pk = Pakistan. 2. Call check_residency with version, the other country, year and citizenship, and no answers. It returns one question at a time. Ask the user that question, never guess an answer, and call again with all answers so far. Repeat until status is "done". 3. Optionally pass "income" to get the per-income-type treaty rules, and "move" if the person moved this year. 4. Present the result with its sources, the next steps (certificate of residence, filing obligations, steps when leaving), the disclaimer and result_link (opens the same result on the site). To count days of stay, call count_days with the trips the user gives you (country, from, to): it returns days per country under each country's own counting rule, the day threshold and when it is reached, and Schengen 90/180. Trips are not stored. Other read-only tools: next_steps (what to do once the residence is known: certificate, obligations, leaving, year of the move), exit_tax_check (exit tax on individuals by country), regime_search (special tax regimes: newcomers, employees, self-employed, investors, pensioners), compare_business_forms (tax on a business profit per legal form in one country). The conclusion is computed by the rules engine, not by you: do not change it. This is general information, not legal advice.

Tools

9 advertised

list_versions — List language versions
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

list_versions input schema
{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
list_versions annotations
{
  "title": "List language versions",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
list_countries — List countries of a version
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

list_countries input schema
{
  "type": "object",
  "required": [
    "version"
  ],
  "properties": {
    "version": {
      "enum": [
        "uk",
        "en",
        "pl",
        "cs",
        "ro",
        "hu",
        "tr",
        "zh",
        "in",
        "ja",
        "bn",
        "pk"
      ],
      "type": "string",
      "description": "Version id from list_versions."
    }
  },
  "additionalProperties": false
}
list_countries annotations
{
  "title": "List countries of a version",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
check_residency — Check tax residence
Advertised by the server during the last successful anonymous check.
Advertised read-only

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, next steps (certificate of residence, resident / non-resident obligations, steps when leaving), exit tax and the year of the move (with "move"), what the result does not cover, 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.

check_residency input schema
{
  "type": "object",
  "required": [
    "version",
    "country"
  ],
  "properties": {
    "move": {
      "type": "object",
      "required": [
        "kind",
        "date"
      ],
      "properties": {
        "date": {
          "type": "string",
          "description": "Date of the move, YYYY-MM-DD."
        },
        "kind": {
          "enum": [
            "depart",
            "arrive"
          ],
          "type": "string"
        }
      },
      "description": "Optional: the person moved this tax year. kind \"depart\" = left the version's home state for the other country; \"arrive\" = moved to the home state from the other country. date YYYY-MM-DD within the tax year. Adds how each state treats the year of the move, the steps when leaving and the exit tax of the state left.",
      "additionalProperties": false
    },
    "year": {
      "type": "integer",
      "description": "Tax year: the current year or one of the two previous years. Default: current year."
    },
    "income": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "category",
          "source"
        ],
        "properties": {
          "days": {
            "type": "integer",
            "description": "employment: days in the state of work within the treaty period."
          },
          "asset": {
            "enum": [
              "immovable",
              "property_rich_shares",
              "other"
            ],
            "type": "string",
            "description": "capital_gains: what is sold."
          },
          "amount": {
            "type": "number",
            "description": "Optional annual gross amount (any currency, used for an illustrative calculation)."
          },
          "source": {
            "type": "string",
            "description": "ISO 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."
          },
          "student": {
            "enum": [
              "yes",
              "no",
              "unknown"
            ],
            "type": "string",
            "description": "students: came to the state of study for education, and the payments come from abroad?"
          },
          "category": {
            "enum": [
              "employment",
              "business",
              "technical_fees",
              "government",
              "pension",
              "immovable",
              "dividends",
              "interest",
              "royalties",
              "capital_gains",
              "directors",
              "artistes",
              "students",
              "other"
            ],
            "type": "string"
          },
          "borne_by_pe": {
            "enum": [
              "yes",
              "no",
              "unknown"
            ],
            "type": "string",
            "description": "employment: is the salary borne by a permanent establishment of the employer in the state of work?"
          },
          "fixed_place": {
            "enum": [
              "yes",
              "no",
              "unknown"
            ],
            "type": "string",
            "description": "business / technical_fees: fixed place of business (permanent establishment) in the state of source?"
          },
          "study_state": {
            "type": "string",
            "description": "students: state where the person studies (ISO code)."
          },
          "pension_kind": {
            "enum": [
              "social",
              "government",
              "private"
            ],
            "type": "string",
            "description": "pension: state social pension, pension for government service, or private/occupational pension."
          },
          "service_days": {
            "type": "integer",
            "description": "business / technical_fees: days of providing services in the state of source."
          },
          "service_state": {
            "type": "string",
            "description": "government: state where the government service is performed (ISO code)."
          },
          "employer_resident_of_source": {
            "enum": [
              "yes",
              "no",
              "unknown"
            ],
            "type": "string",
            "description": "employment: is the employer resident in the state of work?"
          }
        },
        "additionalProperties": false
      },
      "description": "Optional: 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)."
    },
    "answers": {
      "type": "object",
      "description": "Answers 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.",
      "additionalProperties": {
        "type": [
          "string",
          "integer"
        ]
      }
    },
    "country": {
      "enum": [
        "AT",
        "BD",
        "CA",
        "CH",
        "CN",
        "CZ",
        "DE",
        "ES",
        "FR",
        "GB",
        "HU",
        "IN",
        "IT",
        "JP",
        "NL",
        "PK",
        "PL",
        "RO",
        "TR",
        "UA",
        "US"
      ],
      "type": "string",
      "description": "ISO code of the other country (where the person lives or stays). Must be one of list_countries for this version."
    },
    "version": {
      "enum": [
        "uk",
        "en",
        "pl",
        "cs",
        "ro",
        "hu",
        "tr",
        "zh",
        "in",
        "ja",
        "bn",
        "pk"
      ],
      "type": "string",
      "description": "Version id (home state), see list_versions."
    },
    "citizenship": {
      "type": "string",
      "description": "Citizenship option value from list_countries.citizenship_options, e.g. \"UA\", \"UA+OTHER\" (dual), \"NONUS\". Default: the first option (citizen of the home state only)."
    }
  },
  "additionalProperties": false
}
check_residency annotations
{
  "title": "Check tax residence",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
tax_burden — Tax burden on salary
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

tax_burden input schema
{
  "type": "object",
  "properties": {
    "version": {
      "enum": [
        "uk",
        "en",
        "pl",
        "cs",
        "ro",
        "hu",
        "tr",
        "zh",
        "in",
        "ja",
        "bn",
        "pk"
      ],
      "type": "string",
      "description": "Language of the texts (version id). Default: en."
    },
    "countries": {
      "type": "array",
      "items": {
        "enum": [
          "AT",
          "BD",
          "CA",
          "CH",
          "CN",
          "CZ",
          "DE",
          "ES",
          "FR",
          "GB",
          "HU",
          "IN",
          "IT",
          "JP",
          "NL",
          "PK",
          "PL",
          "RO",
          "TR",
          "UA",
          "US"
        ],
        "type": "string"
      },
      "description": "ISO codes; default: all available countries."
    },
    "gross_eur": {
      "type": "number",
      "description": "Annual gross salary in EUR. Default 60,000 (reference profiles: 30,000 / 60,000 / 120,000)."
    },
    "gross_local": {
      "type": "number",
      "description": "Annual gross salary in the country's own currency (only with exactly one country)."
    }
  },
  "additionalProperties": false
}
tax_burden annotations
{
  "title": "Tax burden on salary",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
count_days — Count days of stay
Advertised by the server during the last successful anonymous check.
Advertised read-only

Counts days of stay per country from the trips the user provides (country, from, to) under each country's own counting rule (calendar year, tax year, any 12 months, US substantial presence test, continuous stay): days in the counting period, the day threshold for tax residence and its legal source, the date it was reached or how many more days are needed, and Schengen 90/180 days used. The day of arrival and departure counts in both countries. It does not track anyone: it only counts the trips passed in, and they are not stored.

count_days input schema
{
  "type": "object",
  "required": [
    "trips"
  ],
  "properties": {
    "as_of": {
      "type": "string",
      "description": "Date to count up to, YYYY-MM-DD. Default: today. Later trips count as planned."
    },
    "trips": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "country",
          "from"
        ],
        "properties": {
          "to": {
            "type": "string",
            "description": "Departure date, YYYY-MM-DD. Omit if the person is still there (counted up to as_of)."
          },
          "from": {
            "type": "string",
            "description": "Arrival date, YYYY-MM-DD."
          },
          "country": {
            "type": "string",
            "description": "ISO 3166-1 alpha-2 code, e.g. \"PL\"."
          }
        },
        "additionalProperties": false
      },
      "description": "Stays, one item per stay."
    },
    "version": {
      "enum": [
        "uk",
        "en",
        "pl",
        "cs",
        "ro",
        "hu",
        "tr",
        "zh",
        "in",
        "ja",
        "bn",
        "pk"
      ],
      "type": "string",
      "description": "Language of the texts (version id). Default: en."
    }
  },
  "additionalProperties": false
}
count_days annotations
{
  "title": "Count days of stay",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
next_steps — Next steps after the residence conclusion
Advertised by the server during the last successful anonymous check.
Advertised read-only

What to do once the tax residence is known (the same blocks as under the result on doubletaxation.app and in check_residency "done"): how to get a certificate of residence, obligations of a resident (returns, deadlines), obligations and options of a non-resident with income from the other state (treaty relief forms, refunds), U.S. citizen obligations, steps when leaving the state, the exit tax, how each state treats the year of the move, and what the conclusion does not cover. Each step has the authority, form, link and legal norm. Texts are in the language of the version.

next_steps input schema
{
  "type": "object",
  "required": [
    "version",
    "residence"
  ],
  "properties": {
    "move": {
      "type": "object",
      "required": [
        "kind",
        "date"
      ],
      "properties": {
        "date": {
          "type": "string",
          "description": "Date of the move, YYYY-MM-DD."
        },
        "kind": {
          "enum": [
            "depart",
            "arrive"
          ],
          "type": "string"
        }
      },
      "description": "Optional: the person moved this tax year. kind \"depart\" = left the version's home state for the other country; \"arrive\" = moved to the home state from the other country. date YYYY-MM-DD within the tax year.",
      "additionalProperties": false
    },
    "year": {
      "type": "integer",
      "description": "Tax year of the move (current or one of the two previous). Optional; used to check move.date."
    },
    "other": {
      "enum": [
        "AT",
        "BD",
        "CA",
        "CH",
        "CN",
        "CZ",
        "DE",
        "ES",
        "FR",
        "GB",
        "HU",
        "IN",
        "IT",
        "JP",
        "NL",
        "PK",
        "PL",
        "RO",
        "TR",
        "UA",
        "US"
      ],
      "type": "string",
      "description": "The other country of the pair (ISO code). Optional when residence is a country other than the home state (then it is that country); needed for BOTH, MAP, NONE, UNDETERMINED and for move kind \"arrive\"."
    },
    "version": {
      "enum": [
        "uk",
        "en",
        "pl",
        "cs",
        "ro",
        "hu",
        "tr",
        "zh",
        "in",
        "ja",
        "bn",
        "pk"
      ],
      "type": "string",
      "description": "Version id (home state), see list_versions."
    },
    "residence": {
      "type": "string",
      "description": "State of tax residence: the version's home state or one of its other countries (ISO code), or \"BOTH\", \"MAP\", \"NONE\", \"UNDETERMINED\" (conclusion.residence from check_residency)."
    },
    "citizenship": {
      "type": "string",
      "description": "Citizenship option value from list_countries.citizenship_options (e.g. \"US\", \"US+OTHER\", \"NONUS\"). Default: the first option. Matters for U.S. citizens (taxed on worldwide income wherever they live)."
    }
  },
  "additionalProperties": false
}
next_steps annotations
{
  "title": "Next steps after the residence conclusion",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
exit_tax_check — Exit tax on individuals
Advertised by the server during the last successful anonymous check.
Advertised read-only

Whether a country levies an exit (departure) tax on individuals who give up tax residence: who pays and on what (assets, thresholds, prior residence period), deferral or relief (e.g. moving within the EU/EEA), the legal norm with a link and the date checked.

exit_tax_check input schema
{
  "type": "object",
  "properties": {
    "version": {
      "enum": [
        "uk",
        "en",
        "pl",
        "cs",
        "ro",
        "hu",
        "tr",
        "zh",
        "in",
        "ja",
        "bn",
        "pk"
      ],
      "type": "string",
      "description": "Language of the texts (version id). Default: en."
    },
    "countries": {
      "type": "array",
      "items": {
        "enum": [
          "AT",
          "BD",
          "CA",
          "CH",
          "CN",
          "CZ",
          "DE",
          "ES",
          "FR",
          "GB",
          "HU",
          "IN",
          "IT",
          "JP",
          "NL",
          "PK",
          "PL",
          "RO",
          "TR",
          "UA",
          "US"
        ],
        "type": "string"
      },
      "maxItems": 30,
      "description": "ISO codes; default: all available countries."
    }
  },
  "additionalProperties": false
}
exit_tax_check annotations
{
  "title": "Exit tax on individuals",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
regime_search — Search special tax regimes
Advertised by the server during the last successful anonymous check.
Advertised read-only

Special and preferential tax regimes for individuals (newcomers / impatriates, employees, self-employed, investors, pensioners) in 21 countries. Filter by country, kind, status and free text. Returns per regime: official name, who it is for, the benefit, duration, how to apply, limits and risks, status (open, closed to new entrants, only for existing participants, starts later), the legal norm with a link and the date checked.

regime_search input schema
{
  "type": "object",
  "properties": {
    "kind": {
      "type": "array",
      "items": {
        "enum": [
          "newcomer",
          "employee",
          "self_employed",
          "investor",
          "pensioner",
          "other"
        ],
        "type": "string"
      },
      "maxItems": 6,
      "description": "Who the regime is for; default: all."
    },
    "limit": {
      "type": "integer",
      "maximum": 50,
      "minimum": 1,
      "description": "Maximum regimes returned. Default 20."
    },
    "query": {
      "type": "string",
      "maxLength": 100,
      "description": "Free text; all words must match (name, who, benefit, conditions; in the version's language or English), e.g. \"foreign income flat\"."
    },
    "status": {
      "type": "array",
      "items": {
        "enum": [
          "open",
          "closed",
          "grandfathered",
          "announced"
        ],
        "type": "string"
      },
      "maxItems": 4,
      "description": "open = can be entered now; closed = closed to new entrants; grandfathered = only for existing participants; announced = starts later. Default: all."
    },
    "version": {
      "enum": [
        "uk",
        "en",
        "pl",
        "cs",
        "ro",
        "hu",
        "tr",
        "zh",
        "in",
        "ja",
        "bn",
        "pk"
      ],
      "type": "string",
      "description": "Language of the texts (version id). Default: en."
    },
    "countries": {
      "type": "array",
      "items": {
        "enum": [
          "AT",
          "BD",
          "CA",
          "CH",
          "CN",
          "CZ",
          "DE",
          "ES",
          "FR",
          "GB",
          "HU",
          "IN",
          "IT",
          "JP",
          "NL",
          "PK",
          "PL",
          "RO",
          "TR",
          "UA",
          "US"
        ],
        "type": "string"
      },
      "maxItems": 30,
      "description": "ISO codes; default: all countries."
    }
  },
  "additionalProperties": false
}
regime_search annotations
{
  "title": "Search special tax regimes",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
compare_business_forms — Business taxes: compare legal forms and tax systems
Advertised by the server during the last successful anonymous check.
Advertised read-only

Business tax calculator for a resident of one country and one sector (activity): every legal form (sole proprietor, own company) under every available tax system — total tax and contributions, what remains, rate, line items, why a system is unavailable for the sector or amount, conditions, legal norms; requirements for each legal form and the sector's tax features; assumptions and sources. Same calculation and ranking as doubletaxation.app (section "Business taxes"); an estimate, not tax advice.

compare_business_forms input schema
{
  "type": "object",
  "required": [
    "country",
    "revenue",
    "expenses",
    "currency"
  ],
  "properties": {
    "country": {
      "enum": [
        "AT",
        "BD",
        "CA",
        "CH",
        "CN",
        "CZ",
        "DE",
        "ES",
        "GB",
        "HU",
        "IN",
        "IT",
        "JP",
        "NL",
        "PK",
        "PL",
        "RO",
        "TR",
        "UA",
        "US"
      ],
      "type": "string",
      "description": "ISO code of the country of residence."
    },
    "revenue": {
      "type": "number",
      "minimum": 0,
      "description": "Annual revenue, in the currency given by \"currency\"."
    },
    "version": {
      "enum": [
        "uk",
        "en",
        "pl",
        "cs",
        "ro",
        "hu",
        "tr",
        "zh",
        "in",
        "ja",
        "bn",
        "pk"
      ],
      "type": "string",
      "description": "Language of the texts (version id). Default: en."
    },
    "activity": {
      "enum": [
        "it",
        "services",
        "consumer",
        "trade",
        "production"
      ],
      "type": "string",
      "description": "Sector: it = IT and consulting for businesses (default); services = other professional services to companies (marketing, design, translation, engineering, bookkeeping); consumer = services to individuals (household services, repairs, beauty, tutoring); trade = trade in goods, retail or wholesale, incl. online shop (no excise goods); production = making and selling own products."
    },
    "currency": {
      "type": "string",
      "description": "Currency of revenue and expenses: \"EUR\" or the country's own currency code (e.g. \"PLN\"). EUR amounts are converted at the site's rate (fx.per_eur in the result)."
    },
    "expenses": {
      "type": "number",
      "minimum": 0,
      "description": "Annual deductible business expenses (not more than revenue), in the same currency."
    },
    "distribute": {
      "type": "boolean",
      "description": "For companies: the whole profit after tax is paid to the owner as dividends (true, default) or stays in the company (false; companies are then not ranked against sole proprietors)."
    }
  },
  "additionalProperties": false
}
compare_business_forms annotations
{
  "title": "Business taxes: compare legal forms and tax systems",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

90-day uptime

A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.

Too few checks for a percentage yet (1 of 1 answered).

  1. 2026-11-07: 1 of 1 checks answered

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
831 ms
95th percentile latency
831 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 831 ms · metadata changed · 9 tool(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http doubletaxation-mcp https://doubletaxation.app/api/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add doubletaxation-mcp --url https://doubletaxation.app/api/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable doubletaxation-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "doubletaxation-mcp": {
      "url": "https://doubletaxation.app/api/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "doubletaxation-mcp": {
      "type": "streamableHttp",
      "url": "https://doubletaxation.app/api/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start doubletaxation-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "doubletaxation-mcp": {
      "type": "http",
      "url": "https://doubletaxation.app/api/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http doubletaxation-mcp https://doubletaxation.app/api/mcp

Claude Desktop

Open Claude Settings > Connectors > Add custom connector, enter this server URL and enable it for the conversation. This is a manual remote-connector handoff, not a desktop JSON configuration.
Claude Desktop configuration
https://doubletaxation.app/api/mcp

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "doubletaxation-mcp": {
      "serverUrl": "https://doubletaxation.app/api/mcp"
    }
  }
}

Let your agent find its tools

Find servers like DoubleTaxation MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.

Do you run DoubleTaxation MCP?

Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.

Claim this listing