Moradas — Portuguese addresses & postal codes
Server Details
Portuguese address autocomplete, postal codes, list checks; typo-tolerant, municipality-first; free.
- Status
- Healthy
- Uptime
- 100.0% over 39 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
TDQS
Scored across 4 tools
The four tools have mostly distinct purposes: lookup postal-code metadata, resolve an exact CP7 from a street/door number, autocomplete addresses, and batch-verify addresses. However, suggest_address can also accept postal codes, which slightly overlaps with postal_code_info for postal-code lookup.
All names use consistent snake_case, and three follow a clear verb_noun pattern (resolve_postal_code, suggest_address, verify_addresses). postal_code_info is the minor deviation, using a noun-oriented form rather than a verb.
Four tools are well-scoped for a specialized Portuguese address and postal-code service. Each tool has a clear role: metadata lookup, exact resolution, autocomplete, and batch verification.
The toolset covers the domain's core workflows: looking up postal-code details, resolving an exact CP7 from an address fragment, suggesting addresses interactively, and validating many addresses at once. No obvious operational gap is apparent for the stated purpose.
Available Tools
4 toolspostal_code_infoAInspect
Look up a Portuguese postal code (CP7, e.g. '1000-098'): localidade, concelho, distrito and the streets it covers.
| Name | Required | Description | Default |
|---|---|---|---|
| cp7 | Yes | Postal code NNNN-NNN |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of disclosing behavior. It makes the read-only nature clear through 'Look up' and enumerates the returned fields, including that street coverage is part of the result. It doesn't cover invalid input behavior or response shape, but for a simple lookup the core behavior is transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence front-loads the verb and resource, gives a concrete example, and lists the output fields. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read-only lookup with no output schema, the description covers input format (with example) and output contents (place hierarchy and streets). The only gaps are lack of explicit differentiation from resolve_postal_code and any error/edge-case information, but the tool is otherwise self-explanatory.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single cp7 parameter is already documented as 'Postal code NNNN-NNN'. The description adds only a concrete example and the CP7 term, which is helpful but does not substantially extend the schema's meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb ('Look up') and names the resource (Portuguese postal code CP7 with an example), then lists the returned information (localidade, concelho, distrito, streets). It is clear and concrete, though it does not explicitly differentiate itself from the sibling resolve_postal_code.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The intended use is implied: use this when you have a CP7 like '1000-098' and want locality/district/street information. However, it gives no explicit when-to-use guidance, no prerequisites, and no comparison to resolve_postal_code or suggest_address.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resolve_postal_codeAInspect
Resolve the exact 7-digit postal code (CP7) for a street and door number. art_id comes from suggest_address (art_id 0 is a whole locality or municipality and cannot be resolved). Returns resolved address (or null) and the list of postal-code segments of that street.
| Name | Required | Description | Default |
|---|---|---|---|
| art_id | Yes | Street id from suggest_address | |
| numero | Yes | Door number, e.g. '196' or '27A' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description does the work: it discloses the return shape (resolved address or null, plus the street's postal-code segments) and the input precondition that makes resolution possible. Auth/rate-limit behavior is unstated, but for a read-only resolution call the key behavioral facts are covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, no filler: purpose first, then the key parameter constraint, then the return contract. Every clause carries information an agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Although there is no output schema, the description spells out the return values including the null case and the auxiliary postal-code segments list, and documents how to obtain valid input. Nothing needed to call this 2-parameter read tool correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% so the baseline is 3, and the description earns an increment by adding provenance and validity info for art_id (must come from suggest_address, 0 is unresolvable) that the schema's terse 'Street id from suggest_address' does not fully convey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (resolve) and resource (7-digit postal code / CP7) scoped to a street + door number, which is clearly distinct from suggest_address (id lookup) and postal_code_info. The parenthetical 'CP7' pins down the exact artifact, so an agent knows what it gets back.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains the prerequisite chain explicitly: art_id must come from suggest_address, and art_id 0 (a locality/municipality) cannot be resolved, which is an effective implicit exclusion. It does not name an alternative when the user already has a postal code, but the sequencing guidance is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suggest_addressAInspect
Autocomplete a Portuguese address or postal code. Pass free text (street, optionally locality and door number, e.g. 'av liberdade lisboa 196') or a postal code (e.g. '1000-098'). Returns suggestions with street, localidade (postal locality), concelho, distrito and cp7. When cp7 is null the street spans several postal codes: call resolve_postal_code with art_id and the door number. The beginning of a municipality or large locality name ('lisb', 'carcav') returns that place itself first (art_id 0). A suggestion found after correcting a typo in q carries corrected: true.
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | Street text (with optional door number) or a 4–7 digit postal code | |
| count | No | Max suggestions |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and delivers well: it enumerates the returned fields, explains the meaning of a null cp7, notes that a lowercase municipality prefix returns the place itself first (art_id 0), and surfaces the corrected:true flag. It stops short of error conditions, permissions or rate limits, so it is strong but not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four dense sentences, front-loaded with the purpose and input format before moving to return shape and cross-tool workflow. Every sentence carries information, though the packing of multiple edge cases into single sentences makes it slightly run-on rather than crisply structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema and no annotations, so the description must cover return values and it does, listing each returned field and its edge-case semantics. Combined with the input format guidance and the follow-up workflow to resolve_postal_code, an agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds genuine meaning: it explains what 'q' accepts in prose and examples, and explains the otherwise opaque art_id returned when there is no street-level match. The count parameter is left to the schema, which is adequate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource ('Autocomplete a Portuguese address or postal code') and immediately distinguishes itself from resolve_postal_code by naming the condition under which that sibling should be used instead. An agent knows exactly what this tool returns (street, localidade, concelho, distrito, cp7) without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states accepted input forms with concrete examples ('av liberdade lisboa 196', '1000-098') and explicitly routes to the alternative tool: 'When cp7 is null ... call resolve_postal_code with art_id and the door number.' It also describes behavior for municipality prefixes and typo correction, leaving little to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verify_addressesAInspect
Check a list of Portuguese addresses in one call: a column from a CRM or spreadsheet, an order import, a customer base before shipping or mailing. Each item is checked like suggest_address (a door number in the text picks the exact postal code; a postal code is looked up as such). Results come back in input order, one per item: id exactly as sent (null when not sent), q, status, cp7 and suggestion. status 'ok' — the postal code was determined and is in cp7; 'ambiguous' — no single answer (several candidates with nothing to tell them apart, a street with several postal codes and no door number, or just a locality): cp7 is null and suggestion is the best candidate for a person to confirm; 'not_found' — nothing matched: suggestion is null. suggestion has the same shape as a suggest_address suggestion. Up to 100 items per call; a call with N items counts as N requests against the rate limit (about 50 per 10 seconds per IP), so send up to 50 at a time. For a single address use suggest_address.
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes | Addresses to check; results come back in this order |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so: it discloses per-item resolution behavior, rate limiting (~50 per 10 seconds per IP, N items = N requests), result ordering, and the full status taxonomy with the exact meaning of ok/ambiguous/not_found and their cp7/suggestion values.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose and alternative routing, then progressively details statuses and limits. Dense and mostly waste-free, though the status enumeration is long enough that a reader must work through several clauses to extract the core contract.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, yet the description fully specifies the return shape (id, q, status, cp7, suggestion), ordering, and status-dependent null values. Combined with the batch and rate-limit rules, an agent has everything needed to call and interpret this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% so the baseline is 3, but the description adds meaning beyond the schema: how each q is interpreted (door number picks exact postal code, postal code looked up as such), the echo behavior of id including null when omitted, and the returned result fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Check a list of Portuguese addresses in one call') and immediately scopes it as bulk-oriented. It explicitly contrasts with suggest_address for single addresses, so an agent can distinguish it from siblings without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete use cases (CRM column, order import, customer base before shipping/mailing) and an explicit alternative with its trigger condition: 'For a single address use suggest_address.' Batching guidance (up to 100 items, send ~50) further directs correct invocation.
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 tool update
- Added
verify_addresses
3 tool updates
- First observed
postal_code_info - First observed
resolve_postal_code - First observed
suggest_address
Related MCP Connectors
Portugal PDM zoning with official sources. One free query per account; no purchases.
Hungarian postcode lookup + validation - 3,484 codes, sub-10ms lookups, bulk address endpoint.
Address validation & geocoding for AI agents: 240+ countries, UK PAF, free US/CA enrichment
Correios: CEP, official-source lookup. Platform-hosted, pay per query with prepaid credit.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables users to look up Brazilian postal codes and standardized Correios addresses from a given address through natural language, with read-only access and no credentials required.MIT
- AlicenseAqualityDmaintenanceGlobal postal code lookups, validation, and city search for 240+ countries with timezone, admin region, and elevation metadata. Sub-10ms responses at $0.000028/query with 1,000 free queries on signup.41MIT
- FlicenseNot gradedqualityDmaintenanceProvides French address data from DVF, Géorisques, and SSMSI sources, including property prices, risks, and crime statistics.-

Acuris Geo MCP Serverofficial
AlicenseNot gradedqualityDmaintenanceProvides address validation and geocoding for 240+ countries, including UK Royal Mail PAF and US/Canada census enrichment. Enables batch validation, forward/reverse geocoding, UK postcode expansion, and automatic refunds for failed lookups.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.