Skip to main content
Glama
vietnam-address-mcp

vietnam-address-mcp

by amItuff

Normalize a Vietnamese address to the new administrative units

normalize_address
Read-onlyIdempotent

Convert Vietnamese addresses from old ward-district-province or new ward-province formats into the current 2-level structure, preserving street details and handling diacritics and abbreviations.

Instructions

Takes a free-text, comma-separated Vietnamese address in either the OLD format (ward, district, province - before 1 July 2025) or the NEW format (ward, province) and returns it in the current 2-level structure (34 provinces, no districts), keeping the street part. Handles missing diacritics, abbreviations (P., Q., TP.HCM) and a street glued to the ward. Chuẩn hóa địa chỉ / đổi địa chỉ cũ sang địa chỉ mới sau sáp nhập tỉnh, bỏ cấp huyện. Returns status ok | ambiguous | not_found, a confidence level, alternatives for divided wards, and suggestions for typos.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "address": "<address>"
    },
    "name": "normalize_address"
  }
}

Input Schema

NameRequiredDescriptionDefault
addressYesAddress with components separated by commas, e.g. "12 Lê Lợi, Phường Bến Nghé, Quận 1, TP.HCM".

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A3.7/5.0
Behavior4/5

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

With no output schema, the description carries the return-value burden and does so: it discloses the status enum (ok | ambiguous | not_found), a confidence level, alternatives for divided wards and suggestions for typos. The annotations already cover read-only, idempotent, non-destructive and closed-world, and the description adds genuine behavioral context (diacritic and abbreviation tolerance, street-glued-to-ward handling) rather than repeating them.

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 English portion is dense, front-loaded and every clause carries information an agent needs (accepted formats, tolerated noise, return statuses). The trailing Vietnamese keyword line restates the same purpose for search/locale matching and is redundant for tool selection, which keeps this just short of a 5.

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 one-parameter, closed-world, read-only tool with no output schema, the definition covers the essentials: input variability, normalization scope, and the shape and semantics of the response. Minor gaps remain around handling of ambiguous results and the 500-character limit, but nothing critical for a correct invocation is missing.

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% and the single parameter is well documented with an example, so the baseline of 3 applies. The description does add some value by clarifying that the address may be in either old or new format and may be comma-separated free text, but it stops short of stating ordering rules, which component is required, or what happens with a partial address.

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 gives a specific verb+resource (normalize a free-text Vietnamese address) and states exactly which input formats are accepted (old ward/district/province pre-1 July 2025, or new ward/province) and what the output structure is (2-level, 34 provinces, no districts, street preserved). It never names or distinguishes the siblings convert_legacy_address or normalize_addresses, so an agent must infer whether this is the single-address or batch converter.

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 clearly by the format discussion: use this when you have an address in either legacy or post-merger form. However, there is no explicit when-not guidance and no pointer to alternatives such as a bulk variant or a raw unit lookup, so the agent has no stated route for multi-address input or for looking up an administrative unit directly.

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