Skip to main content
Glama

flatin.pt — Portuguese property taxes

Server Details

Portuguese property taxes: IMT on purchase and IMI rates for all 308 municipalities

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
99.8% over 22 days
Last Tested
Transport
Streamable HTTP · MCP 2025-06-18
URL
Server Listing
flatin

TDQS

A3.8/5.0

Scored across 4 tools

Disambiguation4/5

imi_rate (look up a municipality's rate) and imi_annual_cost (compute tax from a VPT) are related but descriptions make the boundary explicit, and imt_calculate and request_consultation are clearly distinct. Only mild risk that an agent reaches for the rate when it actually wants the computed cost.

Naming Consistency4/5

All names are snake_case with a consistent domain prefix (imi_/imt_) plus an action or resource, which reads predictably. The deviation is stylistic: imi_rate and imi_annual_cost are noun phrases while imt_calculate and request_consultation use verbs.

Tool Count4/5

Four tools is lean but each covers a real task (rate lookup, IMI calculation, purchase-cost calculation, agency contact). It is slightly thin for a tax domain, but nothing feels redundant.

Completeness3/5

Covers IMI rate, IMI cost, and IMT/stamp duty at purchase, but has notable gaps: no help obtaining VPT (required by imi_annual_cost), no AIMI, exemptions, rustic properties, or payment deadlines. Agents can work around these but the surface is not full lifecycle.

Available Tools

4 tools
imi_annual_costCalculate the yearly IMI from the taxable valueA
Read-onlyIdempotent
Inspect

Yearly IMI for an urban property (prédio urbano) with a given taxable value (VPT) in one municipality, at the municipality's urban rate. VPT is the tax authority's valuation, not the purchase price: ask the user for it instead of using the price.

ParametersJSON Schema
NameRequiredDescriptionDefault
vptYesValor Patrimonial Tributário — the taxable value of the property in euros. Not the purchase price
municipalityYesMunicipality name in Portuguese (Porto, Lisboa, Vila Nova de Gaia) or its four-digit code (1312)

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already establish read-only, idempotent, non-destructive behavior, so the description's additional clarification that VPT is the tax authority's valuation rather than the purchase price is useful. But it does not disclose return format, rate-source assumptions, or error cases; with the safety profile covered by annotations, this is adequate but not rich.

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

Conciseness4/5

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

The description is two front-loaded sentences with no fluff: the first defines scope and calculation, the second prevents a common input mistake. It loses a point only because the VPT clarification partially repeats the schema's 'Not the purchase price' note.

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 two-parameter calculation with strong annotations, the description covers the main inputs, the property type, the single-municipality limit, and the VPT-vs-price trap. It does not state the return value's format or currency, but 'yearly IMI' makes that largely inferable; no output schema exists, so a bit more return clarity would make it 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 the baseline is 3. The description reinforces that 'vpt' is not the purchase price and tells the agent to ask the user for it, adding slight value, but it offers no format/range details for either parameter that the schema doesn't already provide.

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 description states a specific verb and resource: 'Yearly IMI for an urban property' from a taxable value (VPT) at the municipality's urban rate. It clearly identifies the calculation target and scope, but does not explicitly reference sibling tools such as imi_rate or imt_calculate, so differentiation relies on the agent recognizing 'yearly IMI' vs the other tax 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?

It conveys clear contextual guidance: the tool is for one municipality's urban property and the user should provide VPT rather than the purchase price. However, it never states when to prefer this tool over siblings, nor gives exclusions (e.g., rural properties or multi-municipality cases), leaving when-to-use vs alternatives implicit.

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

imi_rateLook up the IMI rate of a municipalityA
Read-onlyIdempotent
Inspect

The yearly property tax (IMI) rate in one Portuguese municipality, by name or four-digit code. Collected from the Autoridade Tributária portal and checked line by line for all 308 municipalities. Where a municipality sets no single rate (it is set per parish), the answer says so instead of returning zero.

ParametersJSON Schema
NameRequiredDescriptionDefault
municipalityYesMunicipality name in Portuguese (Porto, Lisboa, Vila Nova de Gaia) or its four-digit code (1312)

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive behavior, so the bar is lower. The description adds valuable context: the data source (Autoridade Tributária), quality assurance across all 308 municipalities, and the important behavior of explaining per-parish rates instead of returning zero.

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?

Three sentences, with the core purpose first, followed by data provenance and a key edge-case caveat. Every sentence adds distinct value and there is no filler.

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 single-parameter lookup whose safety profile is fully covered by annotations, the description is nearly complete. It explains accepted inputs and the main exception, though the absence of an output schema means the exact response format is slightly under-specified.

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

Parameters4/5

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

The schema already describes the single parameter at 100% coverage, so the baseline is 3. The description adds concrete accepted formats and examples (Portuguese name or four-digit code), which meaningfully clarifies how to supply the municipality value.

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?

Title and description name a specific verb ('Look up') and resource ('IMI rate of a municipality'), with the input forms (name or four-digit code) made explicit. This clearly distinguishes it from the sibling cost/calculation 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 makes clear what the tool does and when its edge case applies, but it never explicitly tells the agent when to prefer this over imi_annual_cost or imt_calculate. Usage is implied rather than directly guided.

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

imt_calculateCalculate IMT and stamp duty on a home purchaseA
Read-onlyIdempotent
Inspect

What buying a home in Portugal costs on top of the price: IMT (property transfer tax), Imposto do Selo (stamp duty) and the published price of the property registration. Official 2026 tables, including the reduced IMT table and the stamp duty deduction for buyers aged 35 or under. Both taxes are charged on the higher of the contract price and the VPT: pass vpt when it is known. Returns amounts in cents and formatted in euros, with the source of the tables.

ParametersJSON Schema
NameRequiredDescriptionDefault
vptNoOptional. The VPT (valor patrimonial tributário) from the caderneta predial, in euros. IMT and stamp duty are charged on the higher of the price and the VPT (CIMT art. 12.º n.º 1), so pass it when it is known
valueYesPurchase price as written in the contract, in euros, e.g. 250000 or 250000.50
territoryNoMainland Portugal (continente) or the Azores and Madeira (regioes_autonomas). Default: continente
primary_homeNoThe buyer's own permanent home (habitação própria e permanente). Default: true
buyer_is_youngNoThe buyer is 35 or under on the date of the deed, is buying their first own permanent home, is not an IRS dependant and has owned no residential property in the previous three years. Applies the reduced IMT table and the stamp duty deduction (art. 7.º-A Código do Imposto do Selo; not applied above the second band of the young buyers' table). Only applies when primary_home is true. Default: false

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the burden is light. The description adds real value beyond them: output is in cents and formatted euros, tables are official 2026, and it discloses the reduced-table and stamp-duty-deduction logic and the higher-of-price-or-VPT charging rule.

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

Conciseness4/5

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

Front-loads the scope and cost components, then the operative parameter rule, then the return format. Dense and largely waste-free, though the two long sentences pack several distinct facts together.

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 no output schema, the description usefully states the return shape (cents plus formatted euros, plus table sources) and the key tax computation rule. Complete enough to invoke correctly for a read-only calculator; only sibling routing guidance is thin.

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 schema already documents value, vpt, territory, primary_home and buyer_is_young in detail. The description restates the vpt rule and the age-35 condition without adding syntax or edge-case meaning beyond the schema. Baseline 3 is appropriate.

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 (calculate) and resources (IMT, Imposto do Selo, registration price) scoped to a Portuguese home purchase. This distinguishes it cleanly from imi_annual_cost and imi_rate, which cover recurring property tax rather than transaction taxes.

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 by 'what buying a home in Portugal costs on top of the price' and it gives one concrete rule (pass vpt when known), but it never states when to prefer this over the sibling tax tools or what its boundaries are. Adequate context, no explicit alternatives or exclusions.

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

request_consultationGet the consultation form link and consent textA
Read-onlyIdempotent
Inspect

How to put the user in touch with a licensed real estate agency in Portugal: returns the form link and the GDPR (RGPD) consent text in the user's language. The request is submitted by the person, not on their behalf.

ParametersJSON Schema
NameRequiredDescriptionDefault
languageNoThe user's language: pt, en, ru, ua, de, fr, nl (uk is accepted too). Default: en

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already signal read-only, idempotent, non-destructive behavior; the description adds the key behavioral fact that the request is submitted by the person, not on their behalf. This prevents an agent from assuming the tool performs the consultation submission itself.

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?

A single front-loaded sentence covers purpose, output, language handling, and the non-submission caveat. There is no redundant filler or repetition of the title beyond what is necessary.

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 tool with one optional parameter and no output schema, the description names the returned artifacts (form link, consent text) and the critical behavioral caveat. It could mention the link format, but nothing essential is missing for correct invocation.

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 only parameter, language, is fully described in the schema with its allowed values, default, and meaning. The description's 'in the user's language' echoes that schema rather than adding new semantic detail.

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') and resource (consultation form link + RGPD consent text), and frames the tool's role as connecting the user to a licensed Portuguese real estate agency. This clearly separates it from the sibling tax/rate calculators even without naming them.

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 opening 'How to put the user in touch with a licensed real estate agency in Portugal' gives a clear context for when to invoke the tool. It does not explicitly list exclusions or alternative tools, but the purpose statement is enough to route an agent correctly.

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
    • Changedimt_calculate2 fields changed
      • changedInput schema / properties / value / description
        Previous value: -"Property price in euros, e.g. 250000 or 250000.50"New value: +"Purchase price as written in the contract, in euros, e.g. 250000 or 250000.50"
      • addedInput schema / properties / vpt
        Added value: +{
        +  "description": "Optional. The VPT (valor patrimonial tributário) from the caderneta predial, in euros. IMT and stamp duty are charged on the higher of the price and the VPT (CIMT art. 12.º n.º 1), so pass it when it is known",
        +  "type": "string"
        +}
  2. 3 tool updates
    • Changedimi_annual_cost1 field changed
      • changedInput schema / properties / municipality / description
        Previous value: -"Municipality name (Porto, Vila Nova de Gaia) or its four-digit code (1312)"New value: +"Municipality name in Portuguese (Porto, Lisboa, Vila Nova de Gaia) or its four-digit code (1312)"
    • Changedimi_rate1 field changed
      • changedInput schema / properties / municipality / description
        Previous value: -"Municipality name (Porto, Vila Nova de Gaia) or its four-digit code (1312)"New value: +"Municipality name in Portuguese (Porto, Lisboa, Vila Nova de Gaia) or its four-digit code (1312)"
    • Changedimt_calculate1 field changed
      • changedInput schema / properties / buyer_is_young / description
        Previous value: -"The buyer is 35 or under and this is their first home. Only applies when primary_home is true. Default: false"New value: +"The buyer is 35 or under on the date of the deed, is buying their first own permanent home, is not an IRS dependant and has owned no residential property in the previous three years. Applies the reduced IMT table and the stamp duty deduction (art. 7.º-A Código do Imposto do Selo; not applied above the second band of the young buyers' table). Only applies when primary_home is true. Default: false"
  3. 4 tool updates
    • First observedimi_annual_cost
    • First observedimi_rate
    • First observedimt_calculate
    • First observedrequest_consultation

Related MCP Connectors

Related MCP Servers

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources