Skip to main content
Glama

Business taxes: compare legal forms and tax systems

compare_business_forms
Read-onlyIdempotent

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.

Tool call template

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

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "country": "<country>",
      "revenue": "<revenue>",
      "expenses": "<expenses>",
      "currency": "<currency>"
    },
    "name": "compare_business_forms"
  }
}

Input Schema

NameRequiredDescriptionDefault
countryYesISO code of the country of residence.
revenueYesAnnual revenue, in the currency given by "currency".
versionNoLanguage of the texts (version id). Default: en.
activityNoSector: 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.
currencyYesCurrency 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).
expensesYesAnnual deductible business expenses (not more than revenue), in the same currency.
distributeNoFor 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).

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / country / enum
      Previous value: -[
      -  "AT",
      -  "BD",
      -  "CA",
      -  "CH",
      -  "CN",
      -  "CZ",
      -  "DE",
      -  "ES",
      -  "FR",
      -  "GB",
      -  "HU",
      -  "IN",
      -  "IT",
      -  "JP",
      -  "NL",
      -  "PK",
      -  "PL",
      -  "RO",
      -  "TR",
      -  "UA",
      -  "US"
      -]New value: +[
      +  "AR",
      +  "AT",
      +  "BD",
      +  "BR",
      +  "CA",
      +  "CH",
      +  "CN",
      +  "CZ",
      +  "DE",
      +  "ES",
      +  "FR",
      +  "GB",
      +  "HU",
      +  "IN",
      +  "IT",
      +  "JP",
      +  "MY",
      +  "NL",
      +  "PK",
      +  "PL",
      +  "RO",
      +  "SE",
      +  "SG",
      +  "TR",
      +  "TW",
      +  "UA",
      +  "US"
      +]
  2. Changed1 schema field changed
    • changedInput schema / properties / version / enum
      Previous value: -[
      -  "uk",
      -  "en",
      -  "pl",
      -  "cs",
      -  "ro",
      -  "hu",
      -  "tr",
      -  "zh",
      -  "in",
      -  "ja",
      -  "bn",
      -  "pk",
      -  "de",
      -  "at",
      -  "fr",
      -  "es",
      -  "pt",
      -  "it"
      -]New value: +[
      +  "uk",
      +  "en",
      +  "pl",
      +  "cs",
      +  "ro",
      +  "hu",
      +  "tr",
      +  "zh",
      +  "in",
      +  "ja",
      +  "bn",
      +  "pk",
      +  "de",
      +  "at",
      +  "fr",
      +  "es",
      +  "pt",
      +  "it",
      +  "my",
      +  "sg",
      +  "tw",
      +  "se",
      +  "br",
      +  "ar"
      +]
  3. Changed1 schema field changed
    • changedInput schema / properties / country / enum
      Previous value: -[
      -  "AT",
      -  "BD",
      -  "CA",
      -  "CH",
      -  "CN",
      -  "CZ",
      -  "DE",
      -  "ES",
      -  "GB",
      -  "HU",
      -  "IN",
      -  "IT",
      -  "JP",
      -  "NL",
      -  "PK",
      -  "PL",
      -  "RO",
      -  "TR",
      -  "UA",
      -  "US"
      -]New value: +[
      +  "AT",
      +  "BD",
      +  "CA",
      +  "CH",
      +  "CN",
      +  "CZ",
      +  "DE",
      +  "ES",
      +  "FR",
      +  "GB",
      +  "HU",
      +  "IN",
      +  "IT",
      +  "JP",
      +  "NL",
      +  "PK",
      +  "PL",
      +  "RO",
      +  "TR",
      +  "UA",
      +  "US"
      +]
  4. Changed1 schema field changed
    • changedInput schema / properties / version / enum
      Previous value: -[
      -  "uk",
      -  "en",
      -  "pl",
      -  "cs",
      -  "ro",
      -  "hu",
      -  "tr",
      -  "zh",
      -  "in",
      -  "ja",
      -  "bn",
      -  "pk"
      -]New value: +[
      +  "uk",
      +  "en",
      +  "pl",
      +  "cs",
      +  "ro",
      +  "hu",
      +  "tr",
      +  "zh",
      +  "in",
      +  "ja",
      +  "bn",
      +  "pk",
      +  "de",
      +  "at",
      +  "fr",
      +  "es",
      +  "pt",
      +  "it"
      +]
  5. Changed1 schema field changed
    • addedInput schema / properties / activity
      Added value: +{
      +  "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.",
      +  "enum": [
      +    "it",
      +    "services",
      +    "consumer",
      +    "trade",
      +    "production"
      +  ],
      +  "type": "string"
      +}
  6. Added

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already cover read-only, idempotent, non-destructive, closed-world behavior, so the bar is lower. The description still adds real value beyond them: it discloses the output surface (total tax and contributions, what remains, rate, line items, unavailability reasons), the ranking behavior, and the estimate/not-tax-advice framing.

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

Conciseness3/5

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

The purpose is front-loaded, but the body is a single sprawling semicolon-chained sentence enumerating output fields, conditions, norms, assumptions, and sources. It is dense and readable but not efficiently structured or scannable.

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

Completeness4/5

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

There is no output schema, so the description must carry return-value information, and it does: it enumerates totals, remaining income, rates, line items, unavailability reasons, requirements, assumptions, and sources. The only gap is that it does not describe result structure or units in any detail.

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

Parameters3/5

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

With 100% schema description coverage, the schema already documents every parameter, including the activity sector definitions and the distribute flag's ranking consequence. The description only adds that country means country of residence, which is marginal over the schema.

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

Purpose5/5

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

The description opens with a specific verb and resource ("Business tax calculator") and pins the scope precisely: one country of residence, one sector, every legal form under every available tax system. That scope distinguishes it from siblings like tax_burden or regime_search without needing to name them.

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

Usage Guidelines3/5

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

Usage is implied (compare legal forms and tax systems for a given country/sector), and the "estimate, not tax advice" caveat plus the doubletaxation.app parity note set expectations. However, it never states when to prefer this over tax_burden or exit_tax_check, and there are no explicit prerequisites or exclusions.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources