{"serverId":"mcp-registry/dev.moradas/moradas","tools":[{"name":"postal_code_info","fixed":{"name":"postal_code_info","description":"Look up a Portuguese postal code (CP7, e.g. '1000-098'): localidade, concelho, distrito and the streets it covers.","inputSchema":{"type":"object","required":["cp7"],"properties":{"cp7":{"type":"string","description":"Postal code NNNN-NNN"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":80,"tokensAfter":80},{"name":"resolve_postal_code","fixed":{"name":"resolve_postal_code","description":"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.","inputSchema":{"type":"object","required":["art_id","numero"],"properties":{"art_id":{"type":"integer","description":"Street id from suggest_address"},"numero":{"type":"string","description":"Door number, e.g. '196' or '27A'"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":151,"tokensAfter":151},{"name":"suggest_address","fixed":{"name":"suggest_address","description":"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)","inputSchema":{"type":"object","required":["q"],"properties":{"q":{"type":"string","description":"Street text (with optional door number) or a 4–7 digit postal code"},"count":{"type":"integer","default":8,"maximum":20,"minimum":1,"description":"Max suggestions"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":225,"tokensAfter":225},{"name":"verify_addresses","fixed":{"name":"verify_addresses","description":"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 (severa","inputSchema":{"type":"object","required":["items"],"properties":{"items":{"type":"array","items":{"type":"object","required":["q"],"properties":{"q":{"type":"string","description":"Address as free text — street, door number, locality — or a postal code"},"id":{"type":["string","number"],"description":"Your identifier for the row (order number, record id); echoed back unchanged"}}},"maxItems":100,"description":"Addresses to check; results come back in this order"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":282,"tokensAfter":282}],"toolsChanged":4,"tokensSaved":0,"todo":[],"note":"Deterministic fixes. Changes marked verify need a human look before shipping (renames, inferred annotations, inferred types, removed text). Parameter descriptions in `todo` need to be written by someone who knows the API."}