Skip to main content
Glama

Resolve Point(s) in One Scope

resolve_point
Read-onlyIdempotent

Resolve WGS84 coordinates within one chosen scope and geometry family to identify administrative or marine jurisdiction, or named water body/zone. Supports single points or bounded arrays.

Instructions

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').

Input Schema

NameRequiredDescriptionDefault
latNoLatitude in WGS84 decimal degrees.
lonNoLongitude in WGS84 decimal degrees.
familyNoOne exact family within the selected scope.
pointsNoBounded WGS84 point array. Use top-level lat/lon instead for one point.
batch_idNoOptional caller-supplied batch id echoed for point arrays.
scope_idNoGLOBAL, MARINE, or one published ISO3 country. No automatic fallback into another scope.
request_idNoOptional caller-supplied request id for tracing.
water_kindNoRequired only for MARINE water_body: named seas or water zones.

Output Schema

NameRequiredDescriptionDefault
okNo
errorNo
pointNo
stackNo
familyNo
reasonNo
matchedNo
resultsNo
batch_idNo
guidanceNo
warningsNo
join_keysNo
next_stepNo
request_idNo
point_countNo
clarificationNo
family_resultNo
meter_receiptNo
resolved_countNo
shallow_loc_idNo
deeper_availableNo
overlap_familiesNo
unresolved_countNo
settlement_receiptNo
deepest_resolved_familyNo
deepest_resolved_loc_idNo
deepest_resolved_admin_levelNo
available_deeper_admin_levelsNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed6 schema fields changedv1.0.3
    • changedInput schema / oneOf
      Previous 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"
      +    ]
      +  }
      +]
    • addedInput schema / properties / family
      Added value: +{
      +  "description": "One exact family within the selected scope.",
      +  "enum": [
      +    "administrative",
      +    "exclusive_economic_zone",
      +    "territorial_seas",
      +    "contiguous_zones",
      +    "extended_continental_shelves",
      +    "internal_waters",
      +    "archipelagic_waters",
      +    "high_seas",
      +    "water_body"
      +  ],
      +  "type": "string"
      +}
    • removedInput schema / properties / include_marine_context
      Removed value: -{
      -  "description": "Include parallel Marine overlaps for land matches. Defaults to true; set false for fast administrative loc_id previews. Offshore Marine fallback still applies.",
      -  "type": "boolean"
      -}
    • addedInput schema / properties / scope_id
      Added value: +{
      +  "description": "GLOBAL, MARINE, or one published ISO3 country. No automatic fallback into another scope.",
      +  "minLength": 3,
      +  "type": "string"
      +}
    • removedInput schema / properties / target_admin_level
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "type": "string"
      -    },
      -    {
      -      "type": "integer"
      -    }
      -  ],
      -  "description": "Optional exact requested level from Admin 0-3. Omit it to return the deepest available shallow level."
      -}
    • addedInput schema / properties / water_kind
      Added value: +{
      +  "description": "Required only for MARINE water_body: named seas or water zones.",
      +  "enum": [
      +    "named",
      +    "zone"
      +  ],
      +  "type": "string"
      +}
  2. Changed1 schema field changedv1.0.1
    • changedOutput 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"
      +}
  3. Added

TDQS

A4/5.0
Behavior4/5

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

Annotations already cover readOnly, idempotent, non-destructive, closed-world. The description adds real behavior beyond them: strict scope isolation, no automatic fallback into another scope, and the fact that family banks are never opened across scopes. It stops short of stating batch size limits or failure behavior for invalid combinations.

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?

Purpose is front-loaded and every sentence carries a rule; nothing is filler. The compression is heavy ('an ISO3 administrative scope finds its shallow country bank'), which costs a little readability but not correctness.

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?

With an output schema present, return values needn't be explained, and the 8 parameters are fully schema-described. The remaining gap is that 'Bounded WGS84 point array' never quantifies the bound, which matters for a batching tool.

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 baseline is 3, but the description adds semantics not present per-parameter: the pairing of scope_id with family, the require-one-of single-point vs points shape, and the warning that marine_jurisdiction is not an acceptable family even though it sounds plausible.

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?

States a specific verb and resource ('Resolve WGS84 coordinates') and constrains scope tightly ('in exactly one selected scope and family'). It implicitly separates itself from deep/bank-crossing siblings via 'No call crosses scopes or opens another family's bank' and 'shallow country bank', though it never names resolve_deep_point outright.

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

Usage Guidelines4/5

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

Gives concrete routing rules: GLOBAL for Admin0, ISO3 administrative for the shallow country bank, MARINE requiring a specific family, water_body requiring water_kind. It also warns that the broad marine_jurisdiction category has no point route and points to get_catalog for family discovery. What it lacks is an explicit pointer to resolve_deep_point for deep resolution.

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