Skip to main content
Glama

flatin.pt — Portuguese homes: taxes, construction, new-builds

Get one new-build project: prices, cost, nearby

get_newbuild
Read-onlyIdempotent

Use this when one new-build project in Portugal is needed in detail, by slug (from search_newbuilds) 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. Do not use it to search (search_newbuilds) or for taxes at another price or for a non-resident (imt_calculate). The purchase cost is at the cheapest available unit or the developer's from-price, for a buyer tax resident in Portugal. 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.

Input Schema

NameRequiredDescriptionDefault
slugYesThe project's slug from search_newbuilds (field slug), or its flatin.pt page URL
languageNoLanguage of the page URLs and of the labels (stage, typology, nearby places); the text summary shows the typology labels in it. Field names stay English. uk is accepted as ua.en
primary_homeNoFor the purchase cost only: the buyer's own permanent home (habitação própria e permanente)
buyer_is_youngNoFor the purchase cost only: buyer aged 35 or under, first own home (reduced IMT and stamp duty relief); applies only with primary_home

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / anyOf
      Previous value: -[
      -  {
      -    "properties": {
      -      "area": {
      -        "type": [
      -          "object",
      -          "null"
      -        ]
      -      },
      -      "attribution": {
      -        "type": "object"
      -      },
      -      "checked_on": {
      -        "description": "Date, YYYY-MM-DD",
      -        "type": "string"
      -      },
      -      "delivery": {
      -        "type": "object"
      -      },
      -      "developer": {
      -        "type": "object"
      -      },
      -      "image": {
      -        "description": "Absolute URL or null",
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "language": {
      -        "type": "string"
      -      },
      -      "location": {
      -        "type": [
      -          "object",
      -          "null"
      -        ]
      -      },
      -      "location_precision": {
      -        "type": "string"
      -      },
      -      "municipality": {
      -        "type": "object"
      -      },
      -      "name": {
      -        "type": "string"
      -      },
      -      "nearby": {
      -        "type": [
      -          "object",
      -          "null"
      -        ]
      -      },
      -      "parish": {
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "permits": {
      -        "items": {
      -          "type": "object"
      -        },
      -        "type": "array"
      -      },
      -      "price": {
      -        "type": "object"
      -      },
      -      "purchase_cost": {
      -        "type": [
      -          "object",
      -          "null"
      -        ]
      -      },
      -      "slug": {
      -        "type": "string"
      -      },
      -      "stage": {
      -        "type": "object"
      -      },
      -      "summary": {
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "typologies": {
      -        "items": {
      -          "type": "object"
      -        },
      -        "type": "array"
      -      },
      -      "updated_on": {
      -        "description": "Date, YYYY-MM-DD",
      -        "type": "string"
      -      },
      -      "url": {
      -        "description": "Absolute URL",
      -        "type": "string"
      -      },
      -      "urls": {
      -        "type": "object"
      -      }
      -    },
      -    "required": [
      -      "slug",
      -      "name",
      -      "url",
      -      "urls",
      -      "language",
      -      "summary",
      -      "developer",
      -      "municipality",
      -      "parish",
      -      "stage",
      -      "delivery",
      -      "price",
      -      "typologies",
      -      "purchase_cost",
      -      "permits",
      -      "location",
      -      "location_precision",
      -      "area",
      -      "nearby",
      -      "image",
      -      "checked_on",
      -      "updated_on",
      -      "attribution"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "properties": {
      -      "error": {
      -        "type": "string"
      -      },
      -      "field": {
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "message": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "error",
      -      "message"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "properties": {
      +      "area": {
      +        "type": [
      +          "object",
      +          "null"
      +        ]
      +      },
      +      "attribution": {
      +        "type": "object"
      +      },
      +      "checked_on": {
      +        "description": "Date, YYYY-MM-DD",
      +        "type": "string"
      +      },
      +      "delivery": {
      +        "type": "object"
      +      },
      +      "developer": {
      +        "description": "null when the developer is not confirmed",
      +        "type": [
      +          "object",
      +          "null"
      +        ]
      +      },
      +      "image": {
      +        "description": "Absolute URL or null",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "language": {
      +        "type": "string"
      +      },
      +      "location": {
      +        "type": [
      +          "object",
      +          "null"
      +        ]
      +      },
      +      "location_precision": {
      +        "type": "string"
      +      },
      +      "municipality": {
      +        "type": "object"
      +      },
      +      "name": {
      +        "type": "string"
      +      },
      +      "nearby": {
      +        "type": [
      +          "object",
      +          "null"
      +        ]
      +      },
      +      "parish": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "permits": {
      +        "items": {
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "price": {
      +        "type": "object"
      +      },
      +      "purchase_cost": {
      +        "type": [
      +          "object",
      +          "null"
      +        ]
      +      },
      +      "slug": {
      +        "type": "string"
      +      },
      +      "stage": {
      +        "type": "object"
      +      },
      +      "summary": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "typologies": {
      +        "items": {
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "updated_on": {
      +        "description": "Date, YYYY-MM-DD",
      +        "type": "string"
      +      },
      +      "url": {
      +        "description": "Absolute URL",
      +        "type": "string"
      +      },
      +      "urls": {
      +        "type": "object"
      +      }
      +    },
      +    "required": [
      +      "slug",
      +      "name",
      +      "url",
      +      "urls",
      +      "language",
      +      "summary",
      +      "developer",
      +      "municipality",
      +      "parish",
      +      "stage",
      +      "delivery",
      +      "price",
      +      "typologies",
      +      "purchase_cost",
      +      "permits",
      +      "location",
      +      "location_precision",
      +      "area",
      +      "nearby",
      +      "image",
      +      "checked_on",
      +      "updated_on",
      +      "attribution"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "error": {
      +        "type": "string"
      +      },
      +      "field": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "message": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "error",
      +      "message"
      +    ],
      +    "type": "object"
      +  }
      +]
  2. Changed9 schema fields changed
    • addedInput schema / properties / buyer_is_young / default
      Added value: +false
    • changedInput schema / properties / buyer_is_young / description
      Previous value: -"For the purchase cost: buyer aged 35 or under, first own home (reduced IMT and stamp duty relief). Default false"New value: +"For the purchase cost only: buyer aged 35 or under, first own home (reduced IMT and stamp duty relief); applies only with primary_home"
    • addedInput schema / properties / language / default
      Added value: +"en"
    • changedInput schema / properties / language / description
      Previous value: -"Language of the page URLs and labels: pt, en, ru, ua, de, fr, nl. Default en"New value: +"Language of the page URLs and of the labels (stage, typology, nearby places); the text summary shows the typology labels in it. Field names stay English. uk is accepted as ua."
    • changedInput schema / properties / language / enum
      Previous value: -[
      -  "pt",
      -  "en",
      -  "ru",
      -  "ua",
      -  "de",
      -  "fr",
      -  "nl"
      -]New value: +[
      +  "pt",
      +  "en",
      +  "ru",
      +  "ua",
      +  "de",
      +  "fr",
      +  "nl",
      +  "uk"
      +]
    • addedInput schema / properties / primary_home / default
      Added value: +true
    • changedInput schema / properties / primary_home / description
      Previous value: -"For the purchase cost: the buyer's own permanent home (habitação própria e permanente). Default true"New value: +"For the purchase cost only: the buyer's own permanent home (habitação própria e permanente)"
    • addedInput schema / properties / slug / minLength
      Added value: +1
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "anyOf": [
      +    {
      +      "properties": {
      +        "area": {
      +          "type": [
      +            "object",
      +            "null"
      +          ]
      +        },
      +        "attribution": {
      +          "type": "object"
      +        },
      +        "checked_on": {
      +          "description": "Date, YYYY-MM-DD",
      +          "type": "string"
      +        },
      +        "delivery": {
      +          "type": "object"
      +        },
      +        "developer": {
      +          "type": "object"
      +        },
      +        "image": {
      +          "description": "Absolute URL or null",
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "language": {
      +          "type": "string"
      +        },
      +        "location": {
      +          "type": [
      +            "object",
      +            "null"
      +          ]
      +        },
      +        "location_precision": {
      +          "type": "string"
      +        },
      +        "municipality": {
      +          "type": "object"
      +        },
      +        "name": {
      +          "type": "string"
      +        },
      +        "nearby": {
      +          "type": [
      +            "object",
      +            "null"
      +          ]
      +        },
      +        "parish": {
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "permits": {
      +          "items": {
      +            "type": "object"
      +          },
      +          "type": "array"
      +        },
      +        "price": {
      +          "type": "object"
      +        },
      +        "purchase_cost": {
      +          "type": [
      +            "object",
      +            "null"
      +          ]
      +        },
      +        "slug": {
      +          "type": "string"
      +        },
      +        "stage": {
      +          "type": "object"
      +        },
      +        "summary": {
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "typologies": {
      +          "items": {
      +            "type": "object"
      +          },
      +          "type": "array"
      +        },
      +        "updated_on": {
      +          "description": "Date, YYYY-MM-DD",
      +          "type": "string"
      +        },
      +        "url": {
      +          "description": "Absolute URL",
      +          "type": "string"
      +        },
      +        "urls": {
      +          "type": "object"
      +        }
      +      },
      +      "required": [
      +        "slug",
      +        "name",
      +        "url",
      +        "urls",
      +        "language",
      +        "summary",
      +        "developer",
      +        "municipality",
      +        "parish",
      +        "stage",
      +        "delivery",
      +        "price",
      +        "typologies",
      +        "purchase_cost",
      +        "permits",
      +        "location",
      +        "location_precision",
      +        "area",
      +        "nearby",
      +        "image",
      +        "checked_on",
      +        "updated_on",
      +        "attribution"
      +      ],
      +      "type": "object"
      +    },
      +    {
      +      "properties": {
      +        "error": {
      +          "type": "string"
      +        },
      +        "field": {
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "message": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "error",
      +        "message"
      +      ],
      +      "type": "object"
      +    }
      +  ],
      +  "description": "Success, or a refusal with an error code. Units: *_cents euro cents, *_eur euros, *_eur_m2 euros per m², *_pct and percent in percent.",
      +  "type": "object"
      +}
  3. Added

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare read-only, idempotent, non-destructive, closed-world behavior, so the bar is lower; the description still adds real context: an unknown slug is refused with not_found, URLs are returned in seven site languages, and the purchase cost is scoped to the cheapest available unit or developer from-price for a tax-resident buyer. This discloses error behavior and calculation assumptions that annotations cannot carry.

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 front-loaded with the primary use case and the slug/URL lookup, then proceeds through payload, exclusions, and assumptions without filler. It is dense but every clause carries signal; only minor tightening is possible around the repeated search_newbuilds reference.

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?

With four parameters, an output schema, and full schema coverage, the description provides everything an agent needs to select and invoke the tool: lookup key, returned content categories, exclusion routing, error behavior, and calculation assumptions. Nothing essential is missing.

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?

Schema coverage is 100%, so the baseline is 3; the description goes beyond by explaining that primary_home and buyer_is_young affect only the purchase cost and that the cost baseline assumes Portuguese tax residency. It also clarifies why language matters (page URLs and labels), though much of that is already 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 states a specific verb and resource ('one new-build project in Portugal ... in detail'), names the lookup key (slug from search_newbuilds or page URL), and enumerates the returned payload (units, prices, history, permits, developer, purchase cost, nearby). It is clearly distinguishable from search_newbuilds and imt_calculate by naming both as out-of-scope.

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

Usage Guidelines5/5

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

It explicitly says when to use it (single project needed in detail) and when not to (searching, taxes at another price, non-resident calculation), routing the agent to search_newbuilds and imt_calculate. The assumption that the cost is for a Portuguese tax resident is stated as a usage condition, not left implicit.

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