DaedalMap Reverse Geocoding (coordinates to loc_id)
Server Details
Convert WGS84 coordinates to the latest available administrative loc_id chain.
- Status
- Healthy
- Uptime
- 100.0% over the last 24 hours
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
- Repository
- xyver/daedal-map
- GitHub Stars
- 2
- Server Listing
- daedal-map
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 7 tools
Each tool has a distinct role: catalog/geography metadata inspection, help, and four resolution operations split cleanly by point vs. bbox and shallow vs. deep (second-pass) calls. The main subtlety is understanding the two-pass workflow, since resolve_deep_* require a loc_id from the corresponding shallow tool, and get_catalog vs get_geography overlap slightly in that both surface coverage metadata, but the descriptions make the boundary workable.
All seven tools follow a strict verb_noun convention with two consistent verb families: get_* for metadata (catalog, geography, tool_help) and resolve_* for coordinate resolution, with deep_ and point/bbox modifiers applied systematically. No camelCase or stylistic mixing.
Seven tools is well-scoped for a reverse-geocoding server: metadata/help, plus a 2x2 resolution matrix (point/bbox × shallow/deep) with no redundant entries. Each tool earns its place and nothing feels padded.
The surface covers metadata discovery, help, and shallow/deep resolution for both points and rectangles, including bulk point requests, which is solid lifecycle coverage for reverse geocoding. The notable gap is the absence of any tool to go from a returned loc_id back to geometry/envelope or to traverse the administrative hierarchy, which could strand agents after resolution.
Available Tools
7 toolsget_catalogList Published Packs or GeographiesARead-onlyIdempotentInspect
Choose data or geometry to list published pack IDs or family and scope IDs. The response includes a complete catalog download URL. Use get_pack for data or get_geography for geometry. Current catalog: The same geography tools work worldwide across a cataloged baseline of 252 geographic entities, reaching up to Admin 2. Where additional country releases are available, the same calls automatically return deeper administrative tiers or maintained reference families. Additional detail is currently available for Australia, Brazil, Canada, France, Germany, Mexico, United Kingdom, United States.
| Name | Required | Description | Default |
|---|---|---|---|
| catalog | Yes | Required directory selector. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| packs | No | |
| detail | No | |
| reason | No | |
| scopes | No | |
| catalog | No | |
| families | No | |
| guidance | No | |
| warnings | No | |
| next_step | No | |
| pack_count | No | |
| provenance | No | |
| request_id | No | |
| download_url | No | |
| generated_at | No | |
| clarification | No | |
| result_status | No | |
| tool_families | No | |
| excluded_count | No | |
| resolved_query | No | |
| catalog_version | No | |
| uncertain_count | No | |
| uncertain_packs | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false and destructiveHint=false, so the safety profile is covered. The description's only behavioral addition is that the response carries a catalog download URL, which is already implied by the output schema; the long paragraph about worldwide coverage and per-country releases is scope marketing rather than behavioral disclosure.
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?
The actionable content (what it lists, the download URL, the get_pack/get_geography routing) is front-loaded, but it is then buried under a lengthy 'Current catalog' paragraph listing 252 entities and eight countries that does nothing for tool selection or invocation.
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?
With annotations covering safety and an output schema covering returns, the description only needs to explain the selector and routing, which it mostly does. However, the undefined 'scope IDs' terminology and the routing to a non-sibling tool leave small gaps for an agent deciding between catalog and pack calls.
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 enum values are self-explanatory, so the baseline is 3. The description goes beyond this by mapping each enum value to a distinct return shape ('data' yields pack IDs, 'geometry' yields family and scope IDs), which genuinely adds meaning over the schema.
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?
It names a specific verb ('list') and resource ('published pack IDs or family and scope IDs') and ties the output to the required catalog selector. It is distinguishable from the generic get_data/get_pack siblings, though the phrase 'family and scope IDs' is jargon that is never defined.
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 gives explicit routing: 'Use get_pack for data or get_geography for geometry,' which tells the agent when to pick this tool over an alternative. The weakness is that get_geography is not among the listed siblings, so the routing target is ambiguous for the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_geographyInspect One Geography Family or ScopeARead-onlyIdempotentInspect
Inspect one published geometry family across scopes or one scope across families. Returns coverage and known editions from catalog metadata only. Optional year selects the latest admitted edition no later than that year when the selected catalog has an edition index; an unavailable index is reported explicitly.
| Name | Required | Description | Default |
|---|---|---|---|
| year | No | ||
| scope_id | No | ||
| family_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| reason | No | |
| catalog | No | |
| coverage | No | |
| guidance | No | |
| scope_id | No | |
| warnings | No | |
| family_id | No | |
| next_step | No | |
| provenance | No | |
| request_id | No | |
| admin_spine | No | |
| clarification | No | |
| requested_year | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly, idempotent, closed-world and non-destructive behavior, so the bar is lower. The description still adds real context: results come from catalog metadata only, the optional year resolves to the latest admitted edition no later than that year, and a missing edition index is reported explicitly rather than silently ignored.
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 tight sentences with no filler, and the core operation is front-loaded before the year-selection detail. The phrasing is jargon-dense but each sentence carries information.
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?
With an output schema present, return values need no further explanation, and the annotations cover the safety profile. The description covers the operation and the year behavior adequately; the only real gap is not clarifying the family_id/scope_id distinction and their mutual exclusivity.
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 description coverage is 0%, so the description carries the burden for three parameters. It explains 'year' semantics well (latest admitted edition no later than the year, with explicit reporting when no index exists), but says nothing about the meaning of family_id vs scope_id or the oneOf exclusivity rule that requires exactly one of them.
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 names a specific verb ('Inspect') and resource ('one published geometry family across scopes or one scope across families'), which distinguishes it from siblings like compare_geographies, get_shape, and get_data. It is clear what the tool returns, though the family-vs-scope duality is stated rather densely and its relationship to sibling tools is not explicitly contrasted.
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 phrase 'from catalog metadata only' implicitly signals this is a metadata lookup rather than a data/geometry fetch (vs get_data, get_shape), which gives an agent some routing signal. However, there is no explicit when-to-use, when-not-to-use, or named alternative sibling, so usage must be inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_tool_helpGet Tool HelpARead-onlyIdempotentInspect
Describe one tool visible on this facade, including its exact contract, or return a bounded workflow overview for one supported topic.
| Name | Required | Description | Default |
|---|---|---|---|
| topic | No | Workflow overview. Do not combine with tool_name. | |
| question | No | Optional question used only with a topic overview. | |
| tool_name | No | Exact tool name from tools/list. Do not combine with topic. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | No | |
| error | No | |
| title | No | |
| access | No | |
| reason | No | |
| purpose | No | |
| examples | No | |
| guidance | No | |
| warnings | No | |
| next_step | No | |
| tool_name | No | |
| provenance | No | |
| request_id | No | |
| input_schema | No | |
| clarification | No | |
| recommended_next_calls | No | |
| important_output_fields | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, covering the safety profile. The description adds a bit of behavioral context by mentioning 'exact contract' and 'bounded workflow overview', but it does not disclose potential error conditions or response formats. This is acceptable given the annotations, so a 3 is appropriate.
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?
The description is a single, well-structured sentence that efficiently presents both modes without redundancy. Every phrase adds value, and it is front-loaded with the primary action.
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?
The description is adequate but relies heavily on the schema for constraints (e.g., oneOf logic, enum values, mutual exclusivity). It does not mention optional parameters or edge cases, but given the rich schema and annotations, it covers the essential purpose. A 3 reflects that it is sufficient but not exhaustive.
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 description coverage is 100% and each parameter already has a thorough description (e.g., 'Do not combine with tool_name'). The tool description adds no extra parameter detail beyond the schema, so the baseline of 3 applies.
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 clearly states the tool's purpose: describe a tool (with its exact contract) or return a workflow overview for a supported topic. It uses specific verbs and resources, and the two modes are distinct. This differentiates it from sibling data-fetching tools like get_data and get_catalog.
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 description implies when to use each mode by stating the two options, and the schema enforces mutual exclusivity. However, it does not explicitly name alternatives or state when NOT to use this tool (e.g., for actual data retrieval). Still, the purpose is clear enough for an agent to infer correct usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resolve_bboxResolve Map ViewportBRead-onlyIdempotentInspect
Compare one non-wrapping rectangular WGS84 viewport with the published Global administrative spine through Admin 2. Supply its four corners. Returns the best equal-area overlap plus nearby matches at each level and their shares of the viewport and loc_id. Large views may require zooming in. This tool reads no country deep bank.
| Name | Required | Description | Default |
|---|---|---|---|
| corners | Yes | Four distinct corners of one axis-aligned rectangle; no antimeridian crossing. | |
| request_id | No | Optional caller-supplied tracing ID. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | No | |
| bbox | No | |
| error | No | |
| reason | No | |
| ranking | No | |
| batch_id | No | |
| guidance | No | |
| warnings | No | |
| next_step | No | |
| best_match | No | |
| request_id | No | |
| query_layout | No | |
| admin_1_scope | No | |
| clarification | No | |
| meter_receipt | No | |
| shallow_loc_id | No | |
| geometry_release | No | |
| settlement_receipt | No | |
| matches_by_admin_level | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, closed-world, so safety is covered. The description still adds real behavioral context by disclosing that results come back as a best overlap plus nearby matches at each level with share-of-viewport and share-of-loc_id figures, and by warning that oversized views may need zooming. It does not say what happens to matches outside the viewport or how partial overlaps are ranked, leaving the ranking behavior opaque.
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?
The opening sentences front-load the comparison and the required input efficiently, and the return-shape sentence is informative. The closing line, 'This tool reads no country deep bank,' is unexplained internal jargon that costs space without giving the agent an actionable rule, and 'Large views may require zooming in' is too vague to guide a retry strategy.
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?
With full schema coverage, an output schema, and complete annotations, most of the burden is carried elsewhere, and the description fills in the comparison target and the resolution limits. The notable gap is sibling routing against resolve_deep_bbox and resolve_point, which matters given three similar-sounding resolve tools. Otherwise an agent has enough to call this 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 both corners and request_id are already documented, including the four-distinct-corners and antimeridian constraints. The description mirrors that with 'Supply its four corners' and 'non-wrapping' but adds no format, ordering, or tolerance detail beyond the schema. Baseline 3 is appropriate when the schema carries this much weight.
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 gives a specific verb and resource: compare one non-wrapping rectangular WGS84 viewport against the Global administrative spine through Admin 2, and return best equal-area overlap plus nearby matches. That is far more than a restatement of the name. It stops short of naming a sibling such as resolve_deep_bbox or resolve_point, so the agent must infer the split from the domain wording alone.
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?
Usage is implied by the constraints: supply four corners, views must not cross the antimeridian, and large views may need zooming in. There is no explicit guidance on when to pick this over resolve_deep_bbox or resolve_point, which is the main routing decision an agent faces here. The closing line about the 'country deep bank' gestures at a boundary but does not state a rule the agent can act on.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resolve_deep_bboxResolve Map Viewport (Deep)ARead-onlyIdempotentInspect
Second-pass rectangle overlap within one returned shallow administrative loc_id. Routes to that country's one Admin 1-owned exact partition and compares its Admin 1-6 spine. Supply the original four WGS84 corners; broad views may require zooming in.
| Name | Required | Description | Default |
|---|---|---|---|
| corners | Yes | Four distinct corners of one axis-aligned rectangle; no antimeridian crossing. | |
| request_id | No | Optional caller-supplied tracing ID. | |
| shallow_loc_id | Yes | One canonical Admin 1-3 loc_id from the shallow result; its Admin 1 owner selects one deep partition. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | No | |
| bbox | No | |
| error | No | |
| reason | No | |
| ranking | No | |
| batch_id | No | |
| guidance | No | |
| warnings | No | |
| next_step | No | |
| best_match | No | |
| request_id | No | |
| query_layout | No | |
| admin_1_scope | No | |
| clarification | No | |
| meter_receipt | No | |
| shallow_loc_id | No | |
| geometry_release | No | |
| settlement_receipt | No | |
| matches_by_admin_level | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world behavior, so the bar is lower; the description still adds genuine behavior beyond them by explaining the internal routing to one country-specific partition and disclosing a real failure mode ('broad views may require zooming in'). It does not describe cost, latency, or what happens when the rectangle straddles partitions, but the output schema covers return shape.
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 tight sentences with the routing behavior front-loaded and the input requirement and caveat following — no filler. The density of unexplained internal jargon ('Admin 1-6 spine', 'Admin 1-owned exact partition') costs a point because an unfamiliar agent must decode terms that are never defined.
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 read-only, idempotent resolver with a full input schema and an output schema, the definition covers purpose, precondition, input provenance, and one operational caveat, which is close to sufficient. It is only short of a plain statement of the result (what the deep partition comparison yields) and of how it relates to its named siblings.
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 two constraints not in the schema: the corners must be the 'original' four (i.e., not narrowed from the shallow call) and they are WGS84, which the schema never states. It adds nothing about request_id, which is fine since the schema documents it as an optional tracing ID.
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 names a specific operation (a second-pass rectangle overlap resolved against a single shallow administrative loc_id) and explicitly frames it as the deep counterpart to a first shallow pass, which distinguishes it from resolve_bbox and resolve_deep_point. The wording is domain-dense ('Admin 1-owned exact partition', 'Admin 1-6 spine'), so an agent gets the shape of the operation but not a plain-language statement of what it returns.
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?
'Second-pass' and 'within one returned shallow administrative loc_id' establish that this tool must be called after a shallow lookup and scoped to one of its results, which is real sequencing guidance. However, the prerequisite sibling (resolve_bbox) is never named, and there is no explicit statement of when to skip the deep pass or what to do if the shallow result is absent — the agent must infer the call order.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resolve_deep_pointResolve Point(s) (Deep)ARead-onlyIdempotentInspect
Second-pass containment only after resolve_point. Supply the original WGS84 coordinate or a bounded point array, one shared shallow_loc_id returned by resolve_point, and one canonical family from get_catalog(catalog='geometry'). family defaults to administrative; shape-backed families use direct bbox-to-exact-shape lookup without crosswalks. Single and bulk requests share this scoped contract. Current catalog: The same geography tools work worldwide across a cataloged baseline of 252 geographic entities, reaching up to Admin 2. Where additional country releases are available, the same calls automatically return deeper administrative tiers or maintained reference families. Additional detail is currently available for Australia, Brazil, Canada, France, Germany, Mexico, United Kingdom, United States.
| Name | Required | Description | Default |
|---|---|---|---|
| lat | No | Latitude in WGS84 decimal degrees. | |
| lon | No | Longitude in WGS84 decimal degrees. | |
| family | No | One family selector. Defaults to administrative; use marine for the direct Marine resolver, or a canonical country family such as postal_area, watershed, or land_management_region. | administrative |
| points | No | Points already known to fall within the supplied shallow_loc_id scope. | |
| batch_id | No | Optional caller-supplied batch id echoed for point arrays. | |
| request_id | No | Optional caller-supplied request id for tracing. | |
| shallow_loc_id | Yes | The deepest canonical Admin 1-3 loc_id returned by resolve_point, such as USA-NY-061-009903. | |
| target_admin_level | No | Optional exact Admin 4-6 level. Omit for the deepest available match. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | No | |
| error | No | |
| point | No | |
| stack | No | |
| family | No | |
| reason | No | |
| matched | No | |
| results | No | |
| batch_id | No | |
| guidance | No | |
| warnings | No | |
| join_keys | No | |
| next_step | No | |
| request_id | No | |
| point_count | No | |
| clarification | No | |
| family_result | No | |
| meter_receipt | No | |
| resolved_count | No | |
| shallow_loc_id | No | |
| deeper_available | No | |
| overlap_families | No | |
| unresolved_count | No | |
| settlement_receipt | No | |
| deepest_resolved_family | No | |
| deepest_resolved_loc_id | No | |
| deepest_resolved_admin_level | No | |
| available_deeper_admin_levels | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, and closed-world behavior, so the safety profile is covered. The description adds real behavioral context: the single/bulk requests share the same scoped contract, family defaults to administrative, and shape-backed families bypass crosswalks for a direct bbox-to-exact-shape lookup.
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?
The critical precondition is front-loaded in the first sentence, which is good. However, the trailing "Current catalog" paragraph about 252 entities and country releases is long shared boilerplate that does not help an agent invoke this tool correctly and dilutes the signal.
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?
An output schema exists, so return values need not be explained, and annotations cover the safety profile. The description supplies the upstream dependency, family default, and bulk contract, leaving little an agent needs that 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 description coverage is 100%, so the baseline is 3, but the description adds meaning beyond the schema: the shallow_loc_id must be one shared value returned by resolve_point, family defaults to administrative, and the points array must already fall within the shallow scope. Only target_admin_level is left to the schema.
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 action (second-pass containment resolution) and its required inputs, and explicitly distinguishes itself from the sibling resolve_point by positioning as the follow-up pass. An agent can tell what this does and how it differs from the shallow pass without opening either 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?
"Second-pass containment only after resolve_point" is an explicit precondition and names the required upstream call, and it points to get_catalog(catalog='geometry') for valid family values. It does not spell out negative cases (e.g., when to skip a deep pass), so it falls just short of full when/when-not coverage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resolve_pointResolve Point(s) in One ScopeARead-onlyIdempotentInspect
Resolve WGS84 coordinates in exactly one selected scope and family. GLOBAL administrative finds Admin0; an ISO3 administrative scope finds its shallow country bank. MARINE requires one specific jurisdiction family (for example exclusive_economic_zone or high_seas), or water_body with water_kind=named or zone. The broad marine_jurisdiction category has no point route. No call crosses scopes or opens another family's bank. Discover families with get_catalog(catalog='geometry'). Current catalog: The same geography tools work worldwide across a cataloged baseline of 252 geographic entities, reaching up to Admin 2. Where additional country releases are available, the same calls automatically return deeper administrative tiers or maintained reference families. Additional detail is currently available for Australia, Brazil, Canada, France, Germany, Mexico, United Kingdom, United States.
| Name | Required | Description | Default |
|---|---|---|---|
| lat | No | Latitude in WGS84 decimal degrees. | |
| lon | No | Longitude in WGS84 decimal degrees. | |
| family | No | One exact family within the selected scope. | |
| points | No | Bounded WGS84 point array. Use top-level lat/lon instead for one point. | |
| batch_id | No | Optional caller-supplied batch id echoed for point arrays. | |
| scope_id | No | GLOBAL, MARINE, or one published ISO3 country. No automatic fallback into another scope. | |
| request_id | No | Optional caller-supplied request id for tracing. | |
| water_kind | No | Required only for MARINE water_body: named seas or water zones. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | No | |
| error | No | |
| point | No | |
| stack | No | |
| family | No | |
| reason | No | |
| matched | No | |
| results | No | |
| batch_id | No | |
| guidance | No | |
| warnings | No | |
| join_keys | No | |
| next_step | No | |
| request_id | No | |
| point_count | No | |
| clarification | No | |
| family_result | No | |
| meter_receipt | No | |
| resolved_count | No | |
| shallow_loc_id | No | |
| deeper_available | No | |
| overlap_families | No | |
| unresolved_count | No | |
| settlement_receipt | No | |
| deepest_resolved_family | No | |
| deepest_resolved_loc_id | No | |
| deepest_resolved_admin_level | No | |
| available_deeper_admin_levels | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the description is free to add routing behavior, which it does well: 'No call crosses scopes or opens another family's bank' and the marine_jurisdiction exclusion are non-obvious constraints an agent could not infer from schema. It does not describe batching behavior or result shape, but the output schema covers returns.
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?
The routing rules are front-loaded and dense with value, but the trailing catalog paragraph ('252 geographic entities... Australia, Brazil, Canada...') is long, reads as release-note copy, and could be condensed to one sentence about deeper tiers being available in select countries.
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?
With a full schema, rich annotations, and an output schema, the only missing piece is coverage depth, and the description addresses it via the catalog paragraph. An agent has enough to route a point correctly across GLOBAL/ISO3/MARINE; the only gap is not naming resolve_deep_point for deeper queries.
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 baseline is 3; the description goes further by explaining the conditional relationship between scope_id, family, and water_kind (e.g., water_body requires named or zone), which is semantics the enum alone does not convey. The lat/lon vs points alternation is left to the schema's oneOf.
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: 'Resolve WGS84 coordinates in exactly one selected scope and family,' and enumerates the scope families it handles. An agent can tell it apart from get_geography and compare_geographies, though the sibling resolve_deep_point (the obvious alternative for deeper tiers) is only implicitly gestured at via 'reaching up to Admin 2.'
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 explicit per-scope conditions: GLOBAL finds Admin0, ISO3 finds the shallow country bank, MARINE requires one jurisdiction family or water_body with water_kind, and marine_jurisdiction has no point route. It also points to get_catalog for family discovery. It stops short of naming resolve_deep_point as the tool to use when the shallow bank is insufficient.
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.
2 tool updates
- Added
resolve_bbox - Added
resolve_deep_bbox
1 tool update
- Changed
get_geography5 fields changed- removed
Input schema / anyOfRemoved value: -[ - { - "required": [ - "family_id" - ] - }, - { - "required": [ - "scope_id" - ] - } -] - added
Input schema / oneOfAdded value: +[ + { + "required": [ + "family_id" + ] + }, + { + "required": [ + "scope_id" + ] + } +] - removed
Input schema / properties / include_geometryRemoved value: -{ - "type": "boolean" -} - removed
Input schema / properties / pageRemoved value: -{ - "minimum": 0, - "type": "integer" -} - removed
Input schema / properties / page_sizeRemoved value: -{ - "maximum": 10, - "minimum": 1, - "type": "integer" -}
1 tool update
- Changed
get_geography5 fields changed- added
Input schema / anyOfAdded value: +[ + { + "required": [ + "family_id" + ] + }, + { + "required": [ + "scope_id" + ] + } +] - removed
Input schema / oneOfRemoved value: -[ - { - "required": [ - "family_id" - ] - }, - { - "required": [ - "scope_id" - ] - } -] - added
Input schema / properties / include_geometryAdded value: +{ + "type": "boolean" +} - added
Input schema / properties / pageAdded value: +{ + "minimum": 0, + "type": "integer" +} - added
Input schema / properties / page_sizeAdded value: +{ + "maximum": 10, + "minimum": 1, + "type": "integer" +}
1 tool update
- Changed
resolve_point2 fields changed- changed
Input schema / properties / family / descriptionPrevious value: -"One family within the selected scope."New value: +"One exact family within the selected scope." - changed
Input schema / properties / family / enumPrevious value: -[ - "administrative", - "marine_jurisdiction", - "water_body" -]New value: +[ + "administrative", + "exclusive_economic_zone", + "territorial_seas", + "contiguous_zones", + "extended_continental_shelves", + "internal_waters", + "archipelagic_waters", + "high_seas", + "water_body" +]
1 tool update
- Changed
resolve_point4 fields changed- changed
Input schema / oneOfPrevious value: -[ - { - "not": { - "required": [ - "points" - ] - }, - "required": [ - "lat", - "lon" - ] - }, - { - "not": { - "anyOf": [ - { - "required": [ - "lat" - ] - }, - { - "required": [ - "lon" - ] - } - ] - }, - "required": [ - "points" - ] - } -]New value: +[ + { + "not": { + "required": [ + "points" + ] + }, + "required": [ + "scope_id", + "family", + "lat", + "lon" + ] + }, + { + "not": { + "anyOf": [ + { + "required": [ + "lat" + ] + }, + { + "required": [ + "lon" + ] + } + ] + }, + "required": [ + "scope_id", + "family", + "points" + ] + } +] - added
Input schema / properties / familyAdded value: +{ + "description": "One family within the selected scope.", + "enum": [ + "administrative", + "marine_jurisdiction", + "water_body" + ], + "type": "string" +} - added
Input schema / properties / scope_idAdded value: +{ + "description": "GLOBAL, MARINE, or one published ISO3 country. No automatic fallback into another scope.", + "minLength": 3, + "type": "string" +} - added
Input schema / properties / water_kindAdded value: +{ + "description": "Required only for MARINE water_body: named seas or water zones.", + "enum": [ + "named", + "zone" + ], + "type": "string" +}
4 tool updates
- Changed
get_catalog15 fields changed- removed
Input schema / properties / catalog / defaultRemoved value: -"data" - changed
Input schema / properties / catalog / descriptionPrevious value: -"Catalog family. The geography facade defaults to geometry; other facades default to data."New value: +"Required directory selector." - removed
Input schema / properties / country_scopeRemoved value: -{ - "description": "Optional ISO3 focus for catalog='geometry' with detail='lite'.", - "type": "string" -} - removed
Input schema / properties / detailRemoved value: -{ - "default": "lite", - "description": "Use lite to select a pack, full for expanded metric/query inventories, or download for the complete raw catalog URL.", - "enum": [ - "lite", - "full", - "download" - ], - "type": "string" -} - removed
Input schema / properties / loc_idRemoved value: -{ - "description": "Optional DaedalMap loc_id for catalog='data'. Combine with time_range to discover packs confirmed for both place and time. For place details without pack filtering, use get_loc_id_info.", - "type": "string" -} - removed
Input schema / properties / time_rangeRemoved value: -{ - "additionalProperties": false, - "description": "Optional inclusive discovery window for catalog='data'. At least one bound is required.", - "properties": { - "end": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "integer" - } - ] - }, - "start": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "integer" - } - ] - } - }, - "type": "object" -} - added
Input schema / requiredAdded value: +[ + "catalog" +] - changed
Output schema / anyOfPrevious value: -[ - { - "required": [ - "catalog", - "detail" - ] - }, - { - "required": [ - "error" - ] - } -]New value: +[ + { + "required": [ + "catalog" + ] + }, + { + "required": [ + "error" + ] + } +] - added
Output schema / properties / excluded_countAdded value: +{ + "minimum": 0, + "type": "integer" +} - added
Output schema / properties / familiesAdded value: +{ + "items": { + "type": "object" + }, + "type": "array" +} - added
Output schema / properties / resolved_queryAdded value: +{ + "type": "object" +} - added
Output schema / properties / result_statusAdded value: +{ + "type": "string" +} - added
Output schema / properties / scopesAdded value: +{ + "items": { + "type": "object" + }, + "type": "array" +} - added
Output schema / properties / uncertain_countAdded value: +{ + "minimum": 0, + "type": "integer" +} - added
Output schema / properties / uncertain_packsAdded value: +{ + "items": { + "type": "object" + }, + "type": "array" +}
- Added
get_geography - Removed
get_pack - Changed
resolve_point2 fields changed- removed
Input schema / properties / include_marine_contextRemoved value: -{ - "default": false, - "description": "Opt in to parallel Marine overlaps for land matches. Defaults to false so ordinary administrative resolution stays lightweight. Offshore Marine fallback still applies.", - "type": "boolean" -} - removed
Input schema / properties / target_admin_levelRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "integer" - } - ], - "description": "Optional exact requested level from Admin 0-3. Omit it to return the deepest available shallow level." -}
1 tool update
- Changed
resolve_point2 fields changed- added
Input schema / properties / include_marine_context / defaultAdded value: +false - changed
Input schema / properties / include_marine_context / descriptionPrevious value: -"Include parallel Marine overlaps for land matches. Defaults to true; set false for fast administrative loc_id previews. Offshore Marine fallback still applies."New value: +"Opt in to parallel Marine overlaps for land matches. Defaults to false so ordinary administrative resolution stays lightweight. Offshore Marine fallback still applies."
2 tool updates
- Changed
resolve_deep_point1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": true, + "anyOf": [ + { + "required": [ + "point", + "stack" + ] + }, + { + "required": [ + "point", + "family", + "family_result" + ] + }, + { + "required": [ + "point_count", + "results" + ] + }, + { + "required": [ + "error" + ] + } + ], + "properties": { + "available_deeper_admin_levels": { + "type": "array" + }, + "batch_id": { + "type": [ + "string", + "null" + ] + }, + "clarification": { + "type": "object" + }, + "deeper_available": { + "type": "boolean" + }, + "deepest_resolved_admin_level": { + "type": [ + "string", + "integer", + "null" + ] + }, + "deepest_resolved_family": { + "type": [ + "string", + "null" + ] + }, + "deepest_resolved_loc_id": { + "type": [ + "string", + "null" + ] + }, + "error": { + "additionalProperties": true, + "properties": { + "code": { + "type": "string" + }, + "details": { + "type": "object" + }, + "message": { + "type": "string" + }, + "retry_hint": { + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "family": { + "type": "string" + }, + "family_result": { + "type": "object" + }, + "guidance": { + "type": "object" + }, + "join_keys": { + "type": "object" + }, + "matched": { + "type": [ + "object", + "null" + ] + }, + "meter_receipt": { + "type": "object" + }, + "next_step": { + "additionalProperties": true, + "anyOf": [ + { + "required": [ + "action" + ] + }, + { + "required": [ + "tool" + ] + } + ], + "properties": { + "action": { + "type": "string" + }, + "arguments": { + "type": "object" + }, + "tool": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "type": "object" + }, + "ok": { + "type": "boolean" + }, + "overlap_families": { + "items": { + "type": "object" + }, + "type": "array" + }, + "point": { + "anyOf": [ + { + "additionalProperties": true, + "properties": { + "lat": { + "type": "number" + }, + "lon": { + "type": "number" + } + }, + "required": [ + "lat", + "lon" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "point_count": { + "minimum": 0, + "type": "integer" + }, + "reason": { + "type": "string" + }, + "request_id": { + "type": [ + "string", + "null" + ] + }, + "resolved_count": { + "minimum": 0, + "type": "integer" + }, + "results": { + "items": { + "additionalProperties": true, + "properties": { + "error": { + "additionalProperties": true, + "properties": { + "code": { + "type": "string" + }, + "details": { + "type": "object" + }, + "message": { + "type": "string" + }, + "retry_hint": { + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "id": { + "type": [ + "string", + "integer", + "null" + ] + }, + "ok": { + "type": "boolean" + }, + "row_index": { + "type": [ + "string", + "integer", + "null" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + "settlement_receipt": { + "type": "object" + }, + "shallow_loc_id": { + "type": "string" + }, + "stack": { + "items": { + "type": "object" + }, + "type": "array" + }, + "unresolved_count": { + "minimum": 0, + "type": "integer" + }, + "warnings": { + "items": { + "type": "object" + }, + "type": "array" + } + }, + "type": "object" +}
- Changed
resolve_point1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": true, + "anyOf": [ + { + "required": [ + "point", + "stack" + ] + }, + { + "required": [ + "point", + "family", + "family_result" + ] + }, + { + "required": [ + "point_count", + "results" + ] + }, + { + "required": [ + "error" + ] + } + ], + "properties": { + "available_deeper_admin_levels": { + "type": "array" + }, + "batch_id": { + "type": [ + "string", + "null" + ] + }, + "clarification": { + "type": "object" + }, + "deeper_available": { + "type": "boolean" + }, + "deepest_resolved_admin_level": { + "type": [ + "string", + "integer", + "null" + ] + }, + "deepest_resolved_family": { + "type": [ + "string", + "null" + ] + }, + "deepest_resolved_loc_id": { + "type": [ + "string", + "null" + ] + }, + "error": { + "additionalProperties": true, + "properties": { + "code": { + "type": "string" + }, + "details": { + "type": "object" + }, + "message": { + "type": "string" + }, + "retry_hint": { + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "family": { + "type": "string" + }, + "family_result": { + "type": "object" + }, + "guidance": { + "type": "object" + }, + "join_keys": { + "type": "object" + }, + "matched": { + "type": [ + "object", + "null" + ] + }, + "meter_receipt": { + "type": "object" + }, + "next_step": { + "additionalProperties": true, + "anyOf": [ + { + "required": [ + "action" + ] + }, + { + "required": [ + "tool" + ] + } + ], + "properties": { + "action": { + "type": "string" + }, + "arguments": { + "type": "object" + }, + "tool": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "type": "object" + }, + "ok": { + "type": "boolean" + }, + "overlap_families": { + "items": { + "type": "object" + }, + "type": "array" + }, + "point": { + "anyOf": [ + { + "additionalProperties": true, + "properties": { + "lat": { + "type": "number" + }, + "lon": { + "type": "number" + } + }, + "required": [ + "lat", + "lon" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "point_count": { + "minimum": 0, + "type": "integer" + }, + "reason": { + "type": "string" + }, + "request_id": { + "type": [ + "string", + "null" + ] + }, + "resolved_count": { + "minimum": 0, + "type": "integer" + }, + "results": { + "items": { + "additionalProperties": true, + "properties": { + "error": { + "additionalProperties": true, + "properties": { + "code": { + "type": "string" + }, + "details": { + "type": "object" + }, + "message": { + "type": "string" + }, + "retry_hint": { + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" + }, + "id": { + "type": [ + "string", + "integer", + "null" + ] + }, + "ok": { + "type": "boolean" + }, + "row_index": { + "type": [ + "string", + "integer", + "null" + ] + } + }, + "type": "object" + }, + "type": "array" + }, + "settlement_receipt": { + "type": "object" + }, + "shallow_loc_id": { + "type": "string" + }, + "stack": { + "items": { + "type": "object" + }, + "type": "array" + }, + "unresolved_count": { + "minimum": 0, + "type": "integer" + }, + "warnings": { + "items": { + "type": "object" + }, + "type": "array" + } + }, + "type": "object" +}
1 tool update
- Changed
get_catalog2 fields changed- added
Input schema / properties / loc_idAdded value: +{ + "description": "Optional DaedalMap loc_id for catalog='data'. Combine with time_range to discover packs confirmed for both place and time. For place details without pack filtering, use get_loc_id_info.", + "type": "string" +} - added
Input schema / properties / time_rangeAdded value: +{ + "additionalProperties": false, + "description": "Optional inclusive discovery window for catalog='data'. At least one bound is required.", + "properties": { + "end": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "integer" + } + ] + }, + "start": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "integer" + } + ] + } + }, + "type": "object" +}
7 tool updates
- Changed
get_catalog9 fields changed- added
Input schema / properties / catalogAdded value: +{ + "default": "data", + "description": "Catalog family. The geography facade defaults to geometry; other facades default to data.", + "enum": [ + "data", + "geometry" + ], + "type": "string" +} - added
Input schema / properties / country_scopeAdded value: +{ + "description": "Optional ISO3 focus for catalog='geometry' with detail='lite'.", + "type": "string" +} - added
Input schema / properties / detailAdded value: +{ + "default": "lite", + "description": "Use lite to select a pack, full for expanded metric/query inventories, or download for the complete raw catalog URL.", + "enum": [ + "lite", + "full", + "download" + ], + "type": "string" +} - changed
Output schema / anyOfPrevious value: -[ - { - "required": [ - "packs" - ] - }, - { - "required": [ - "error" - ] - } -]New value: +[ + { + "required": [ + "catalog", + "detail" + ] + }, + { + "required": [ + "error" + ] + } +] - added
Output schema / properties / catalogAdded value: +{ + "enum": [ + "data", + "geometry" + ], + "type": "string" +} - added
Output schema / properties / detailAdded value: +{ + "enum": [ + "lite", + "full", + "download" + ], + "type": "string" +} - added
Output schema / properties / download_urlAdded value: +{ + "type": "string" +} - added
Output schema / properties / next_step / anyOfAdded value: +[ + { + "required": [ + "action" + ] + }, + { + "required": [ + "tool" + ] + } +] - removed
Output schema / properties / next_step / requiredRemoved value: -[ - "action" -]
- Changed
get_pack13 fields changed- added
Input schema / properties / catalogAdded value: +{ + "description": "Metadata family. When omitted, geometry facades default to geometry and known geometry-family ids are inferred; all other calls default to data.", + "enum": [ + "data", + "geometry" + ], + "type": "string" +} - added
Input schema / properties / country_scopeAdded value: +{ + "description": "Optional ISO3 country for a geometry family. Omit it to learn which countries publish the family; provide it for country-specific versions, vintages, levels, and artifacts.", + "pattern": "^[A-Za-z]{3}$", + "type": "string" +} - changed
Input schema / properties / detail / descriptionPrevious value: -"Use lite for normal discovery. Use full only for one selected pack when its complete public metadata is required."New value: +"Use lite to decide and start, full for detailed MCP query metadata, or download for the complete raw metadata file." - changed
Input schema / properties / detail / enumPrevious value: -[ - "lite", - "full" -]New value: +[ + "lite", + "full", + "download" +] - added
Input schema / properties / release_unitAdded value: +{ + "description": "Optional non-country geometry release unit such as GLOBAL or MARINE. Do not combine with country_scope.", + "pattern": "^[A-Za-z0-9_-]+$", + "type": "string" +} - changed
Output schema / anyOfPrevious value: -[ - { - "required": [ - "pack_id" - ] - }, - { - "required": [ - "error" - ] - } -]New value: +[ + { + "required": [ + "catalog", + "pack_id", + "detail" + ] + }, + { + "required": [ + "error" + ] + } +] - added
Output schema / properties / catalogAdded value: +{ + "enum": [ + "data", + "geometry" + ], + "type": "string" +} - added
Output schema / properties / detailAdded value: +{ + "enum": [ + "lite", + "full", + "download" + ], + "type": "string" +} - added
Output schema / properties / download_callAdded value: +{ + "type": "object" +} - added
Output schema / properties / download_urlAdded value: +{ + "type": "string" +} - added
Output schema / properties / full_callAdded value: +{ + "type": "object" +} - added
Output schema / properties / next_step / anyOfAdded value: +[ + { + "required": [ + "action" + ] + }, + { + "required": [ + "tool" + ] + } +] - removed
Output schema / properties / next_step / requiredRemoved value: -[ - "action" -]
- Changed
get_tool_help7 fields changed- added
Input schema / oneOfAdded value: +[ + { + "not": { + "required": [ + "topic" + ] + }, + "required": [ + "tool_name" + ] + }, + { + "not": { + "required": [ + "tool_name" + ] + }, + "required": [ + "topic" + ] + } +] - added
Input schema / properties / questionAdded value: +{ + "description": "Optional question used only with a topic overview.", + "type": "string" +} - changed
Input schema / properties / tool_name / descriptionPrevious value: -"Exact tool name from tools/list."New value: +"Exact tool name from tools/list. Do not combine with topic." - added
Input schema / properties / topicAdded value: +{ + "description": "Workflow overview. Do not combine with tool_name.", + "enum": [ + "overview", + "data", + "disasters", + "custom_data", + "geometry" + ], + "type": "string" +} - removed
Input schema / requiredRemoved value: -[ - "tool_name" -] - added
Output schema / properties / next_step / anyOfAdded value: +[ + { + "required": [ + "action" + ] + }, + { + "required": [ + "tool" + ] + } +] - removed
Output schema / properties / next_step / requiredRemoved value: -[ - "action" -]
- Changed
resolve_deep_point4 fields changed- added
Input schema / oneOfAdded value: +[ + { + "not": { + "required": [ + "points" + ] + }, + "required": [ + "lat", + "lon" + ] + }, + { + "not": { + "anyOf": [ + { + "required": [ + "lat" + ] + }, + { + "required": [ + "lon" + ] + } + ] + }, + "required": [ + "points" + ] + } +] - added
Input schema / properties / batch_idAdded value: +{ + "description": "Optional caller-supplied batch id echoed for point arrays.", + "type": "string" +} - added
Input schema / properties / pointsAdded value: +{ + "description": "Points already known to fall within the supplied shallow_loc_id scope.", + "items": { + "additionalProperties": false, + "properties": { + "id": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] + }, + "lat": { + "maximum": 90, + "minimum": -90, + "type": "number" + }, + "lon": { + "maximum": 180, + "minimum": -180, + "type": "number" + }, + "row_index": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] + } + }, + "required": [ + "lat", + "lon" + ], + "type": "object" + }, + "minItems": 1, + "type": "array" +} - changed
Input schema / requiredPrevious value: -[ - "lat", - "lon", - "shallow_loc_id" -]New value: +[ + "shallow_loc_id" +]
- Removed
resolve_deep_points - Changed
resolve_point4 fields changed- added
Input schema / oneOfAdded value: +[ + { + "not": { + "required": [ + "points" + ] + }, + "required": [ + "lat", + "lon" + ] + }, + { + "not": { + "anyOf": [ + { + "required": [ + "lat" + ] + }, + { + "required": [ + "lon" + ] + } + ] + }, + "required": [ + "points" + ] + } +] - added
Input schema / properties / batch_idAdded value: +{ + "description": "Optional caller-supplied batch id echoed for point arrays.", + "type": "string" +} - added
Input schema / properties / pointsAdded value: +{ + "description": "Bounded WGS84 point array. Use top-level lat/lon instead for one point.", + "items": { + "additionalProperties": false, + "properties": { + "id": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] + }, + "lat": { + "maximum": 90, + "minimum": -90, + "type": "number" + }, + "lon": { + "maximum": 180, + "minimum": -180, + "type": "number" + }, + "row_index": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] + } + }, + "required": [ + "lat", + "lon" + ], + "type": "object" + }, + "minItems": 1, + "type": "array" +} - removed
Input schema / requiredRemoved value: -[ - "lat", - "lon" -]
- Removed
resolve_points
1 tool update
- Changed
get_pack1 field changed- added
Input schema / properties / detailAdded value: +{ + "default": "lite", + "description": "Use lite for normal discovery. Use full only for one selected pack when its complete public metadata is required.", + "enum": [ + "lite", + "full" + ], + "type": "string" +}
Related MCP Connectors
Resolve coordinates and geographic identifiers to loc_id, crosswalks, and bounded shapes.
Resolve coordinates against delivery and coverage polygons (geofences).
Turn coordinates into Japanese municipality names via GSI. Free reverse_geocode tool.
Administrative boundaries for every place on Earth: search, reverse lookup, polygons, areas.
Related MCP Servers
AlicenseAqualityBmaintenanceEnables reverse geocoding of coordinates to country, region, and municipality with ISO 3166 codes, and matching against user-defined geofences.7436 npmMIT- AlicenseNot gradedqualityDmaintenanceConverts Ghana Post GPS addresses into detailed location information including coordinates.1MIT
- AlicenseNot gradedqualityCmaintenanceEnables resolving US latitude/longitude points to Census block, county, and state FIPS codes and names, along with 2020 block population and FCC market-area codes when needed.542 npmMIT
- AlicenseNot gradedqualityCmaintenanceEnables forward and reverse geocoding of US addresses, returning coordinates and the full Census geography stack with GEOIDs, including batch geocoding of up to 100 addresses.305 npmMIT
Glama MCP Gateway
Add one secure layer between your agents and this server.