flatin.pt — Portuguese homes: new-builds, places, taxes
by flatin.pt · remote · no sign-in to list tools · v2.1.0 · published by pt.flatin
Portugal home buying: new-build search, where-to-live guides, municipality data, IMT/IMI taxes
12 tools: 7 change things and 5 only read.
Scanned Oct 21, 2026
- Deletes or cancels0Claude Code: deny
- Can't be undone0Claude Code: ask
- Changes things7Claude Code: ask: see these tools
- Only reads5Claude Code: allow: see these tools
No check matched anything in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http property-taxes https://flatin.pt/mcpTools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
12 tools
Changes things 7Claude Code: ask
construction_barometerReports how much is being built in Portuguese municipalities.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Reports how much is being built in Portuguese municipalities. It gives flatin.pt's monthly count of building-works cases entering licensing, for the municipalities we collect, and INE's yearly licensed buildings and new dwellings for any of the 308. Use it for building activity; for a municipality's other figures use `municipality_stats`, and for new-build projects with prices `search_newbuilds`. Without `municipality` it returns every municipality we collect and the fixed-panel index. `measure` and `granularity` change only our own series. A case is not a licence granted and not a building.
Annotations the server declares
- title: Construction activity by municipality (barometer)
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
imi_annual_costCalculates the yearly IMI on an urban property (prédio urbano) from its taxable value (VPT) and the urban rate of its municipality.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Calculates the yearly IMI on an urban property (prédio urbano) from its taxable value (VPT) and the urban rate of its municipality. Use it for the yearly amount; for the rate alone use `imi_rate`, and for the one-off purchase taxes `imt_calculate`. The VPT is the Tax Authority's valuation on the caderneta predial, not the purchase price: ask the user for it rather than using the price. Only the urban rate is applied; rural property, AIMI and surcharges on vacant homes are not calculated. A municipality whose rate is set per parish is refused (rate_by_freguesia).
Annotations the server declares
- title: Calculate the yearly IMI from the taxable value
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
imi_rateLooks up the yearly IMI (municipal property tax) rate of one Portuguese municipality, by name or four-digit code, with its history by year.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Looks up the yearly IMI (municipal property tax) rate of one Portuguese municipality, by name or four-digit code, with its history by year. Use it when only the rate is needed; for the yearly amount on a given VPT use `imi_annual_cost`, and for several municipalities side by side `compare_municipalities`. Rates come from the Autoridade Tributária portal, checked for all 308 municipalities. Where the rate is set per parish, the answer says so instead of giving a number.
Annotations the server declares
- title: Look up the IMI rate of a municipality
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
imt_calculateCalculates the one-off taxes of buying a home in Portugal: IMT, stamp duty and the Casa Pronta registration price, by the official 2026 tables.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Calculates the one-off taxes of buying a home in Portugal: IMT, stamp duty and the Casa Pronta registration price, by the official 2026 tables. Use it for the cost on top of the price; for the yearly property tax use `imi_annual_cost`, and to explain a term such as VPT `glossary_lookup`. Both taxes are charged on the higher of `value` and `vpt`: pass the VPT when known. `tax_haven_company` takes precedence over `non_resident`. `buyer_is_young` applies only when `primary_home` is true. For a non-resident buyer the answer says what the Tax Authority annuls later on request.
Annotations the server declares
- title: Calculate IMT and stamp duty on a home purchase
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
request_consultationPasses the person's request to buy or sell a home in Portugal to a licensed real estate agency (AMI), only with their explicit consent.No findings
Why it is in this group
- The name "request_consultation" says "request": a word for a change.
Description, as the server wrote it Passes the person's request to buy or sell a home in Portugal to a licensed real estate agency (AMI), only with their explicit consent. Use it when the person wants a specialist to contact them; for emails about new projects use `subscribe_digest`. mode=link only returns the form link and the consent text. mode=prepare checks the details and returns a summary, the GDPR (RGPD) consent text and a confirmation_token; neither sends anything. Show the person the summary and the consent text word for word; only if they explicitly agree, call mode=submit with the same details, the token, consent=true and consent_text_version. Never set consent=true on your own. Changed details, a token younger than 5 seconds or older than 30 minutes, or an outdated consent version are refused. A submit that goes through returns status received.
Annotations the server declares
- title: Send a request to a licensed real estate agency
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
subscribe_digestSubscribes the person's email to new-build projects matching a filter (daily) or to new construction licensed in one municipality (weekly), by double opt-in.No findings
Why it is in this group
- The name "subscribe_digest" says "subscribe": a word for a change.
Description, as the server wrote it Subscribes the person's email to new-build projects matching a filter (daily) or to new construction licensed in one municipality (weekly), by double opt-in. Use it when the person asks to be told about new projects; to have an agency contact them use `request_consultation`, and to see what is on sale now `search_newbuilds`. Ask the person first: it only sends a confirmation email, and nothing is active until they click its link. `city` is required for construction and `parish` works only there; `typology`, the prices and `on_sale` work only with new_developments. The answer is the same whether or not the address was already subscribed: never tell the person they were.
Annotations the server declares
- title: Subscribe an email to new developments or construction
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
where_to_liveGives a flatin.pt city guide's verdict on where to live, area by area, with the reason, who each area suits and the sources.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Gives a flatin.pt city guide's verdict on where to live, area by area, with the reason, who each area suits and the sources. Use it to choose a neighbourhood; for one municipality's figures use `municipality_stats`, and for new homes there `search_newbuilds`. Without `city` it lists the cities and regions that have a guide. `profile` narrows the areas but never hides the ones we advise against. Noise and safety come as dated, sourced facts: a place's reputation, never a claim about its people. Show the guide's link to the user.
Annotations the server declares
- title: Where to live in a Portuguese city, area by area
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
Only reads 5Claude Code: allow
compare_municipalitiesCompares two to five Portuguese municipalities side by side, with the same figures for each as `municipality_stats`.No findings
Why it is in this group
- The name "compare_municipalities" says "compare": a word for reading.
Description, as the server wrote it Compares two to five Portuguese municipalities side by side, with the same figures for each as `municipality_stats`. Use it when choosing between places; for a single municipality use `municipality_stats`, and for the areas inside one city `where_to_live`. Names that point at the same municipality count once, and fewer than two distinct ones are refused (bad_count). One unknown or ambiguous name refuses the whole comparison.
Annotations the server declares
- title: Compare 2 to 5 Portuguese municipalities
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_newbuildReturns one new-build project in Portugal by slug or page URL.No findings
Why it is in this group
- The name "get_newbuild" says "get": a word for reading.
Description, as the server wrote it Returns one new-build project in Portugal by slug or page URL. It gives units and prices per typology, price history, delivery promises and how often they moved, building permits, the developer, the purchase cost and what is nearby. Use it after `search_newbuilds`, which gives the slug. The purchase cost is at the cheapest available unit or the developer's from-price, for a buyer tax resident in Portugal; for a non-resident or another price use `imt_calculate`. `primary_home` and `buyer_is_young` change only the purchase cost. An unknown slug is refused (not_found). Cite the page URL, given in all seven site languages.
Annotations the server declares
- title: Get one new-build project: prices, cost, nearby
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
glossary_lookupExplains a Portuguese home-buying or tax term (CPCV, escritura, VPT…) from the flatin.pt glossary.No findings
Why it is in this group
- The name "glossary_lookup" says "lookup": a word for reading.
Description, as the server wrote it Explains a Portuguese home-buying or tax term (CPCV, escritura, VPT…) from the flatin.pt glossary. It gives what the term means, where it comes up when buying, and the article of law with a link to the official text. Use it to define a term; it calculates nothing: for purchase taxes use `imt_calculate`, for the yearly tax `imi_annual_cost`. Without `term` it lists all terms. A term without a translation comes in English; an unknown one is refused with close spellings, if any.
Annotations the server declares
- title: Explain a Portuguese home-buying term
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
municipality_statsReturns the key figures of one of Portugal's 308 municipalities, with the source and date of each official figure.No findings
Why it is in this group
- The description's first verb is "return": a word for reading.
Description, as the server wrote it Returns the key figures of one of Portugal's 308 municipalities, with the source and date of each official figure. They are the IMI rate and history, INE median sale price per m² (actual sales, not asking prices), purchasing power, population, licensed new dwellings, building-works cases and our new-build count. Use it for one municipality; to compare two to five use `compare_municipalities`, for areas inside a city `where_to_live`, and for building activity by month `construction_barometer`. A figure that is not published is null, not estimated. A name matching two municipalities is refused with candidates.
Annotations the server declares
- title: Key figures for one Portuguese municipality
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
search_newbuildsSearches the published new-build projects (empreendimentos) in Portugal on flatin.pt.No findings
Why it is in this group
- The name "search_newbuilds" says "search": a word for reading.
Description, as the server wrote it Searches the published new-build projects (empreendimentos) in Portugal on flatin.pt. Use it to find projects; for one project's units, purchase cost and surroundings use `get_newbuild` with its slug, and for how much is being built in a municipality `construction_barometer`. With `typology`, the budget applies to those typologies' prices; projects without a published price drop out when a budget is given. Pass next_offset as `offset` for the next page. A misspelt filter is refused, not ignored. Prices are as checked on developers' pages or agency listings, with the date.
Annotations the server declares
- title: Search new-build projects in Portugal
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 2.1.0. Values in angle brackets are yours to fill in.
claude mcp add --transport http property-taxes https://flatin.pt/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__property-taxes__municipality_stats",
"mcp__property-taxes__compare_municipalities",
"mcp__property-taxes__glossary_lookup",
"mcp__property-taxes__search_newbuilds",
"mcp__property-taxes__get_newbuild"
],
"ask": [
"mcp__property-taxes__imt_calculate",
"mcp__property-taxes__imi_rate",
"mcp__property-taxes__imi_annual_cost",
"mcp__property-taxes__request_consultation",
"mcp__property-taxes__subscribe_digest",
"mcp__property-taxes__where_to_live",
"mcp__property-taxes__construction_barometer"
],
"deny": []
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as property-taxes. Review it before you use it.