Skip to main content
Glama

Server Details

Swiss income tax by municipality, cheaper-town ranking, apartment listings and commute times.

If you are the author of this connector, you can claim ownership with GitHub, an HTTP challenge, or a DNS record. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
98.8% over 23 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A4.2/5.0

Scored across 8 tools

Disambiguation5/5

Each tool targets a distinct resource and purpose: commute time vs. cost, listing search vs. statistical rent benchmark, tax calculation vs. tax comparison vs. tax-optimized municipality ranking. While rent and tax have multiple related tools, their boundaries are clearly stated in the descriptions.

Naming Consistency5/5

All tool names use a consistent snake_case noun_or_action pattern (e.g. commute_cost, listing_search, tax_lookup). No camelCase, no vague verbs like 'run' or 'process', and the naming aligns well with each tool's function.

Tool Count5/5

Eight tools is a well-scoped size for a Swiss relocation/municipality comparison server. Each tool covers a necessary step in the workflow without redundant utilities or bloat.

Completeness4/5

The set covers the main lifecycle of evaluating a municipality: search for it, look up its tax and rent, find listings, assess commuting cost/time, and compare against a current home. Minor gaps exist such as no direct side-by-side municipality comparison or cost-of-living data beyond rent, but agents can complete core workflows with the available tools.

Available Tools

8 tools
commute_costAInspect

Estimates the monthly cost in CHF of commuting between two Swiss places, as a transit-pass estimate priced from Swiss regional fare-zone data. Some pricing regimes are approximations rather than an exact tariff.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoDestination as a place or station name.Zürich HB
fromYesOrigin as a place or station name, e.g. "Feusisberg". Not a postcode on its own.

TDQS

A3.7/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden. It meaningfully discloses that 'Some pricing regimes are approximations rather than an exact tariff', which is an important accuracy limitation for an agent to know. It does not describe output shape or error behavior, but it does surface the key non-obvious trait.

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

Conciseness5/5

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

Two sentences, front-loaded with the core purpose and currency, followed by a concise caveat. Every word earns its place and nothing repeats the input schema.

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

Completeness3/5

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

The description explains what the tool computes, the currency, time horizon, and precision caveat. However, without an output schema or annotations, it leaves the exact return value/format and behavior for invalid or unknown places unspecified, keeping it from being fully complete.

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?

Schema description coverage is 100%, so both from and to are already documented. The description adds the Swiss fare-zone context but does not need to explain parameters further; baseline 3 is appropriate.

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

Purpose4/5

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

The verb 'Estimates' and object 'monthly cost in CHF of commuting between two Swiss places' make the tool's purpose very clear. It reads as the cost counterpart to the sibling commute_time tool, though it does not explicitly name or differentiate itself from any sibling.

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?

The description implies the use case: estimating monthly transit-pass commuting costs between Swiss locations. It gives no explicit guidance on when to choose commute_cost over commute_time or other sibling tools, and no exclusions or alternative suggestions.

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

commute_timeAInspect

Returns the public-transport journey time in minutes between two Swiss places, using the national timetable.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoDestination as a place or station name.Zürich HB
fromYesOrigin as a place or station name, e.g. "Uster". Not a postcode on its own.

TDQS

A4.1/5.0
Behavior3/5

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

With no annotations provided, the description carries the full disclosure burden. It does state the output type ('time in minutes') and the data source ('national timetable'), but omits any edge-case behavior such as how departure time is handled, accuracy, or error conditions. This is a minimum viable disclosure for a read-only lookup.

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

Conciseness5/5

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

The description is a single, information-dense sentence with no filler. It front-loads the core return value and efficiently conveys mode, scope, and data source.

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

Completeness5/5

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

For a simple two-parameter, read-only tool without an output schema, this description is complete: an agent knows exactly what result to expect (minutes), the input restrictions (place/station names), and the scope (Swiss public transport). No critical information is missing.

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?

The input schema already provides 100% parameter coverage, describing both 'from' and 'to' as place/station names and noting the default value for 'to'. The description adds no additional parameter-specific meaning, so it does not need to compensate; the baseline 3 applies.

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 clearly states the tool's function with a specific verb ('returns') and resource ('public-transport journey time in minutes between two Swiss places'), adding the data source ('national timetable'). This strongly differentiates it from the sibling commute_cost, which presumably addresses cost rather than time.

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

Usage Guidelines4/5

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

The description gives clear context about when to use the tool: for public-transport travel times in Switzerland. While it does not explicitly name alternatives or exclusion conditions, the precise scope makes the appropriate use case unambiguous relative to the listed sibling tools.

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

favorable_municipalitiesAInspect

Ranks municipalities that are cheaper than, or within CHF 1000/yr of, a stated current home, by annual tax saving — municipalities near-identical in cost are included deliberately, not filtered out. Answered from cached figures only, so the ranking may be partial; the response states how many candidates were covered. Pass near (a town or station name) and radiusKm to keep only places around where the household lives or works; an unrecognised place is reported, not silently ignored.

ParametersJSON Schema
NameRequiredDescriptionDefault
nearNoTown or station name to search around, e.g. "Winterthur". Not a postcode.
incomeYesGross annual income in CHF.
childrenNoDependent children.
radiusKmNoDistance from `near` in km (default 20). Ignored without `near`.
confessionNoChurch-tax affiliation.none
currentBfsIdYesBFS id of the current home.
currentRoomsNoSize of the current home in rooms, used for the rent comparison.
relationshipNoMarital status.single

TDQS

A4.2/5.0
Behavior5/5

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

With no annotations, the description must carry the behavioral burden, and it does: it discloses cached-only figures, potential partial rankings, the deliberate inclusion of near-identical municipalities, and error reporting for unrecognized places. This is substantial behavioral context beyond the schema.

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

Conciseness5/5

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

The description is compact and front-loaded: ranking criteria first, data caveat second, parameter guidance third. Every sentence contributes a distinct piece of information, with no repetition of schema fields.

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?

For an 8-parameter tool with no annotations and no output schema, the description covers the core decisions: what is ranked, on what basis, with what data limitations, and how errors surface. It does not describe the response shape beyond coverage count, but that is a minor gap given the strength of the rest.

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?

The schema already documents all 8 parameters, so adding param detail in the description is bonus. The description contributes a useful semantic link between `near` and `radiusKm` and the household context, but it does not materially expand parameter meaning beyond the schema's explanations.

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?

States specifically what the tool does: ranks municipalities by annual tax saving against a current home, with a precise inclusion threshold (cheaper or within CHF 1000/yr). This clearly differentiates it from sibling tools like municipality_search or tax_lookup.

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?

The description tells the agent how to scope results via `near` and `radiusKm` and flags unrecognized places, but it never explicitly says when to choose this tool over siblings or what conditions favor alternatives. Usage context is implied by the ranking purpose rather than stated as a routing rule.

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

municipality_detailAInspect

Returns the tax picture for one municipality relative to a stated current home: the annual difference, the tax multiplier, and the multi-year trend where past years are known.

ParametersJSON Schema
NameRequiredDescriptionDefault
bfsIdYesThe municipality to describe.
yearsNoHow many years of history to include.
incomeYesGross annual income in CHF.
childrenNoDependent children.
confessionNoChurch-tax affiliation.none
currentBfsIdYesBFS id of the current home, which every difference is measured against.
relationshipNoMarital status.single

TDQS

A4/5.0
Behavior4/5

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

No annotations are present, so the description carries the burden. It clearly indicates a read-only operation ('Returns'), spells out what the result contains, and discloses a limitation (trend only where past years are known). It stops short of explaining output format or error/not-found behavior, but for a query tool this is sufficiently transparent.

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

Conciseness5/5

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

One focused sentence with front-loaded verb and resource, a colon introducing the output items, and a trailing caveat. No filler, repetition, or wasted words.

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?

With 7 parameters and no output schema, a richer description would normally be expected, but the description names all key outputs and the key limitation. It could define 'tax multiplier' or the sign convention of the annual difference, yet an agent already has enough to select and invoke the tool correctly.

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?

Schema coverage is 100%, so the parameters are fully described in the schema; the description adds only a conceptual link (current home -> currentBsId, trend -> years) without providing new semantics beyond 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?

States a specific verb ('Returns'), a specific resource ('tax picture for one municipality relative to a stated current home'), and enumerates the output components (annual difference, tax multiplier, multi-year trend). The comparative 'relative to' distinguishes it from siblings such as tax_lookup and favorable_municipalities.

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?

The description implies the use case (comparing a candidate municipality to the current home) and includes a caveat about known past years, but it never explicitly tells the agent when to choose this tool over siblings like tax_lookup or favorable_municipalities, nor provides exclusion criteria.

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

rent_benchmarkAInspect

Reports the Swiss Federal Statistical Office's average monthly rent for a municipality, optionally for a given apartment size in rooms. BFS does not publish rent below canton level except for 10 named cities, so the figure may describe the CANTON rather than the municipality itself; the response states which.

ParametersJSON Schema
NameRequiredDescriptionDefault
bfsIdYesMunicipality BFS id, from municipality_search.
roomsNoApartment size in rooms, e.g. 3.5. Omit for the overall average.

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral disclosure burden. It discloses a non-obvious limitation: BFS does not publish rent below canton level except for 10 cities, so results may describe the canton, and it tells the caller that the response identifies which scope applies. This is valuable transparency beyond the schema.

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

Conciseness5/5

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

Two sentences, no filler. The main purpose is front-loaded in the first sentence and the important data-scope caveat occupies the second without redundancy.

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?

For a low-complexity, two-parameter retrieval tool with no output schema, the description covers the operation, the optional parameter, and the key output nuance (whether the figure is municipal or cantonal). It could optionally state units/currency, but that is a minor gap.

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?

Schema description coverage is 100%, including bfsId provenance and rooms examples, so the baseline applies. The description adds only general meaning that rooms are an optional size filter, which is already represented in 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 uses a specific verb ('Reports') and identifies a precise resource: the Swiss Federal Statistical Office's average monthly rent for a municipality, with an optional room-size filter. This distinguishes it from sibling tools like listing_search or tax_lookup because it names the official statistical source and the rent metric.

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?

The description makes the tool's domain clear and implies it should be used when an official BFS average rent figure is needed. However, it never explicitly states when to prefer this tool over siblings such as listing_search or favorable_municipalities, and gives no exclusions.

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

tax_lookupAInspect

Calculates the annual Swiss income tax for one municipality and one household profile, split into federal, cantonal and municipal parts. The figures come from the federal tax administration's calculation for the given gross income.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearNoTax year. Defaults to the year this installation is configured for.
bfsIdYesMunicipality BFS id, from municipality_search.
incomeYesGross annual household income in CHF.
childrenNoNumber of dependent children.
confessionNoChurch-tax affiliation.none
relationshipNoMarital status used for the tariff.single

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the behavioral burden. It usefully discloses the data source and the split output, but it does not mention read-only behavior, error cases, or limitations such as unsupported municipalities or income values.

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

Conciseness5/5

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

Two concise sentences with the main action and scope front-loaded, followed by a useful data-source clarification. Every sentence earns its place and nothing is redundant.

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?

The description covers scope, inputs, and the high-level output split even without an output schema. It could provide more detail about exact return structure and error behavior, but the schema fills most parameter gaps.

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?

The schema already documents all six parameters with names, defaults, enums, and ranges, so the high-coverage baseline applies. The description adds helpful context by mapping 'gross income' and 'household profile' to the schema, but it does not substantially go beyond it.

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?

States a precise operation—calculating annual Swiss income tax—and explicitly scopes it to one municipality and one household profile. The federal/cantonal/municipal split is clearly identified and differentiates it from the sibling municipality and listing tools.

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?

The description implies use when tax figures are needed, and the sibling names hint at alternatives, but it never explicitly states when to prefer this tool over others or when not to use it. No exclusion criteria or alternative routing is provided.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 1 tool update
    • Changedfavorable_municipalities2 fields changed
      • addedInput schema / properties / near
        Added value: +{
        +  "description": "Town or station name to search around, e.g. \"Winterthur\". Not a postcode.",
        +  "maxLength": 80,
        +  "type": "string"
        +}
      • addedInput schema / properties / radiusKm
        Added value: +{
        +  "description": "Distance from `near` in km (default 20). Ignored without `near`.",
        +  "maximum": 100,
        +  "minimum": 1,
        +  "type": "integer"
        +}
  2. 2 tool updates
    • Changedcommute_time1 field changed
      • changedInput schema / properties / from / description
        Previous value: -"Origin as a place or station name, e.g. \"Feusisberg\". Not a postcode on its own."New value: +"Origin as a place or station name, e.g. \"Uster\". Not a postcode on its own."
    • Changedmunicipality_search2 fields changed
      • changedInput schema / properties / q / description
        Previous value: -"Name fragment, e.g. \"Feusisberg\". Case-insensitive."New value: +"Name fragment, e.g. \"Uster\". Case-insensitive."
      • changedInput schema / properties / zip / description
        Previous value: -"Four-digit Swiss postcode, e.g. \"8854\" (which alone spans three Gemeinden)."New value: +"Four-digit Swiss postcode, e.g. \"8308\" (which alone spans three Gemeinden)."
  3. 2 tool updates
    • Addedcommute_cost
    • Addedrent_benchmark
  4. 1 tool update
    • Changedtax_lookup1 field changed
      • changedInput schema / properties / year / maximum
        Previous value: -2100New value: +2025
  5. 6 tool updates
    • First observedcommute_time
    • First observedfavorable_municipalities
    • First observedlisting_search
    • First observedmunicipality_detail
    • First observedmunicipality_search
    • First observedtax_lookup

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Enables AI assistants to calculate Swiss income, wealth, inheritance, capital payment, and corporate taxes for any municipality, compare tax burdens, and find cheapest locations without an API key.
    13
    MIT
  • F
    license
    A
    quality
    C
    maintenance
    MCP server for the Swiss federal tax calculator, providing income, wealth, inheritance, and corporate tax figures for all Swiss municipalities and tax years 2010-2026.
    13
    2
    -
  • A
    license
    B
    quality
    D
    maintenance
    Provides AI assistants access to 1.6 million Swiss health insurance premium records from 55 insurers across 11 years (2016-2026), enabling price comparisons, historical analysis, and finding the cheapest insurance options based on location, age, and coverage preferences.
    4
    18 npm
    1
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources