Skip to main content
Glama

DaedalMap Geography Tools (loc_id)

Choose Geography Columns From a Dataset

identify_dataset_geography
Read-onlyIdempotent

Fast structural column selector: pass bounded named columns to find recognized geography headers or latitude/longitude pairs. It does not infer a country, level, or identifier system, open country indexes, or validate values. If more than one column is plausible, select one; then call identify_reference_system with the selected identifier column and one country_scope. No payment required.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
columnsYesStructurally filtered columns with deterministic representative scalar values. Do not pre-label their geographic system.
request_idNo
country_scopeNoOptional caller-declared ISO3 country, passed through to the selected column.
dataset_contextNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
okNo
errorNo
limitNo
reasonNo
statusNo
batch_idNo
guidanceNo
warningsNo
next_stepNo
candidatesNo
request_idNo
column_countNo
clarificationNo
meter_receiptNo
review_requiredNo
identifier_countNo
coordinate_bindingNo
settlement_receiptNo
recommended_bindingNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / country_scope / description
      Previous value: -"Optional caller-declared ISO3 hint. Omit when unknown."New value: +"Optional caller-declared ISO3 country, passed through to the selected column."
  2. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "https://json-schema.org/draft/2020-12/schema",
      +  "additionalProperties": true,
      +  "anyOf": [
      +    {
      +      "required": [
      +        "ok",
      +        "status",
      +        "candidates"
      +      ]
      +    },
      +    {
      +      "required": [
      +        "error"
      +      ]
      +    }
      +  ],
      +  "properties": {
      +    "batch_id": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "candidates": {
      +      "items": {
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "clarification": {
      +      "type": "object"
      +    },
      +    "column_count": {
      +      "minimum": 0,
      +      "type": "integer"
      +    },
      +    "coordinate_binding": {
      +      "type": [
      +        "object",
      +        "null"
      +      ]
      +    },
      +    "error": {
      +      "additionalProperties": true,
      +      "properties": {
      +        "code": {
      +          "type": "string"
      +        },
      +        "details": {
      +          "type": "object"
      +        },
      +        "message": {
      +          "type": "string"
      +        },
      +        "retry_hint": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "code",
      +        "message"
      +      ],
      +      "type": "object"
      +    },
      +    "guidance": {
      +      "type": "object"
      +    },
      +    "identifier_count": {
      +      "minimum": 0,
      +      "type": "integer"
      +    },
      +    "limit": {
      +      "minimum": 0,
      +      "type": "integer"
      +    },
      +    "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"
      +    },
      +    "reason": {
      +      "type": "string"
      +    },
      +    "recommended_binding": {
      +      "type": [
      +        "object",
      +        "null"
      +      ]
      +    },
      +    "request_id": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "review_required": {
      +      "type": "boolean"
      +    },
      +    "settlement_receipt": {
      +      "type": "object"
      +    },
      +    "status": {
      +      "type": "string"
      +    },
      +    "warnings": {
      +      "items": {
      +        "type": "object"
      +      },
      +      "type": "array"
      +    }
      +  },
      +  "type": "object"
      +}
  3. Added

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, but the description still adds non-obvious behavior: no validation of values, no opening of country indexes, deterministic bounded input, and 'No payment required'. That is real added context beyond the structured fields, though return/pagination behavior is left to the output schema.

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?

Four tight sentences with the core purpose ('Fast structural column selector') front-loaded, followed by exclusions, then workflow routing. Dense but every sentence carries information; minor packing of several distinct constraints into one sentence costs it a point.

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 read-only, output-schema-backed selector, the description covers purpose, boundary conditions, and the follow-up call, so an agent can invoke it correctly without guessing. The remaining gap is that request_id and dataset_context are never explained, and with only 50% schema description coverage those params are undocumented anywhere.

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 50%, and the schema already documents the columns array shape (maxItems, per-value limits) and country_scope as an ISO3 pass-through. The description adds that columns must be 'bounded named columns' and that country_scope is forwarded to the selected column, but does not clarify request_id or dataset_context. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('structural column selector' that finds recognized geography headers or latitude/longitude pairs) and immediately bounds the scope by naming what it does NOT do ('does not infer a country, level, or identifier system'). This lets an agent distinguish it from identify_reference_system, which the description positions as the next step.

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

Usage Guidelines5/5

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

Explicit when-to-use ('pass bounded named columns'), explicit when-not ('does not infer a country, level, or identifier system... or validate values'), and explicit routing to the alternative ('then call identify_reference_system with the selected identifier column and one country_scope'). Even the tie-break case is covered ('If more than one column is plausible, select one').

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.