Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
ESTV_MCP_NO_CACHENoDisable caching when set to 1
ESTV_MCP_CACHE_DIRNoOverride the cache directory (default ~/.cache/estv-mcp)
ESTV_MCP_CACHE_TTLNoOverride cache TTL in seconds (default 604800 for one week)

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
find_locationA

Resolve a place name or postal code to an ESTV tax location id.

Municipal tax multipliers differ inside a canton and sometimes inside a postal code, so every calculation is anchored on a tax_location_id.

list_deductionsA

Show the deduction/budget sheet ESTV derives for a household.

Returns every line item with the value ESTV assumes by default. Lines marked editable can be overridden through the deductions argument of calculate_tax (keyed by id), e.g. PRAEMIEN3A for pillar 3a contributions or SCHULDZINSEN for mortgage interest. Non-editable lines (gross salary, AHV/ALV/BVG contributions) are computed by the model.

calculate_taxA

Compute federal, cantonal, municipal and church tax for a household.

Uses ESTV's detailed model: it derives social-insurance contributions and standard deductions from the gross figures, so you only need income, wealth and family situation. Call list_deductions first if you want to supply pillar 3a, mortgage interest or other real deductions.

calculate_tax_from_taxable_amountsA

Apply the tax scales to amounts already known to be taxable.

Use this when the user reads figures off a tax assessment or return (steuerbares Einkommen / revenu imposable) instead of a gross salary. Note that cantonal and federal taxable income usually differ.

compare_locationsA

Rank municipalities by total tax burden for one and the same household.

Answers "where would I pay the least?". Scanning all of Switzerland covers ~2100 municipalities, so only the extremes plus summary statistics are returned; narrow with scope or only_cantons to see a specific region.

calculate_capital_payment_taxA

Tax on a lump-sum payout from pillar 2 or pillar 3a.

Capital withdrawals are taxed separately from ordinary income at a reduced rate, and the rate varies a lot between cantons. Pass a canton code, 'capitals' or 'switzerland' as location to rank places instead of computing a single figure.

get_tax_yearsA

Report which tax years each ESTV calculator currently covers.

find_cheapest_nearbyA

Rank municipalities within a radius of a point by tax burden.

The relocation question people actually ask: given that I have to stay within commuting distance of somewhere, where is the cheapest place to live? Pass the coordinates of the office or station and a radius.

plan_capital_withdrawalsA

Find the cheapest way to split a lump-sum withdrawal across tax years.

Capital payouts are taxed on a steeply progressive separate scale, so spreading a pension pot over several calendar years can save a large amount. Splitting within one year saves nothing: all payouts received in the same calendar year are added together before the rate is applied, and this tool models that. Read the caveats in the result before acting.

deduction_valueA

Measure what a deduction is actually worth to this household.

Sweeps a budget line (pillar 3a by default) and reports the tax saved at each level, plus the saving on each additional franc. Because rates are progressive the last franc of a deduction is worth more than the first, and the return flattens once a bracket boundary is crossed.

calculate_inheritance_taxA

Inheritance and gift tax, which is cantonal and varies enormously.

Spouses and direct descendants are exempt in most cantons while unrelated beneficiaries and unmarried partners can pay a quarter of the estate, so the beneficiary relationship matters more than the amount. Omit beneficiary to see every relationship for one place, or pass a canton code, 'capitals' or 'switzerland' to rank places for one relationship.

calculate_company_taxA

Profit and capital tax for a company (GmbH, AG or similar).

Pass a canton code, 'capitals' or 'switzerland' as location to rank places, which is the usual reason to ask: cantonal profit tax rates for legal entities differ by a factor of roughly two across Switzerland.

explain_tax_bracketsA

Show the statutory rate ladder and where an income sits in it.

Explains the number rather than just producing it: which bracket the household is in, the marginal rate there, and how far the next threshold is. The cantonal figure is the simple tax (einfache Staatssteuer), which the canton and municipality then multiply by their own rates.

The tax amount always comes from ESTV itself. The ladder is rebuilt from the published scale, which a few cantons express as a formula rather than a table; there the amount is still exact and ladder is simply absent.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A4/5.0

Scored across 13 tools

Disambiguation5/5

Each tool targets a distinct tax calculation or query scenario. While `calculate_tax` and `calculate_tax_from_taxable_amounts` both compute tax, they differ in input types (gross vs taxable amounts). Similarly, `compare_locations` and `find_cheapest_nearby` both rank municipalities but one is global with optional filtering and the other is radius-based. Overall, descriptions clearly differentiate purposes, minimizing confusion.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern using lowercase with underscores (e.g., `find_location`, `calculate_tax`, `explain_tax_brackets`). The verbs are action-oriented (find, list, calculate, compare, get, plan, explain) and the nouns describe the domain entity. No mixing of conventions, making the pattern predictable.

Tool Count5/5

With 13 tools, the server covers the core Swiss tax calculation domain comprehensively without being bloated. Each tool serves a distinct purpose: location resolution, deduction listing, multiple tax computations (income, capital, inheritance, company), comparison utilities, planning, and bracket explanation. The count feels well-scoped for the complexity of the domain.

Completeness5/5

The tool set covers the full lifecycle of typical Swiss tax queries: resolving locations, understanding deductions, computing taxes from various inputs, comparing municipalities, optimizing capital withdrawals, and explaining brackets. Missing aspects like tax form filing or historical data are outside the server's stated purpose. The surface is complete for calculation and planning tasks.

Maintenance

ActivitySlowing
ResponsivenessNo issues