DaedalMap Disaster and Geospatial Data
Server Details
Geospatial MCP server for earthquake, tsunami, volcano, disaster, and FX data queries.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
- Repository
- xyver/daedal-map
- GitHub Stars
- 2
- Server Listing
- daedal-map
Available Tools
30 toolscheck_geometryCheck loc_id Geometry AvailabilityARead-onlyInspect
Fast shape-only preflight for one loc_id or a bounded loc_id list. Reports whether each exact identity has reusable geometry and its geometry vintage. Historical geometry remains the primary result; an evidenced current successor is only an explicit follow-up choice. It does not resolve points or explain other identity relationships. Use before get_geometry or an export. No payment required.
| Name | Required | Description | Default |
|---|---|---|---|
| loc_id | No | DaedalMap loc_id to check for available geometry. | |
| loc_ids | No | DaedalMap loc_ids to check for available geometry. Default public cap is deployment-configurable. | |
| batch_id | No | Optional caller-supplied batch id for tracing. | |
| request_id | No | Optional caller-supplied request id for tracing. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already signals a safe read, and the description adds substantive behavioral detail beyond that: it is fast, shape-only, reports vintage, treats historical geometry as primary, treats successor geometry as an explicit follow-up, and requires no payment. This is rich, non-obvious context that helps an agent understand side effects and expectations.
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 compact, front-loaded with the core purpose, and every sentence adds distinct value: scope, output type, historical vs successor behavior, exclusions, usage timing, and payment. There is no filler or repetition.
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 preflight tool with no output schema, the description covers what an agent needs to select and invoke it: what it reports, when to call it, what it intentionally does not do, and cost implications. It does not specify the exact output structure, but the semantic output is clear enough for a tool of this simplicity.
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?
The input schema has 100% coverage for its parameters, so the schema already documents loc_id, loc_ids, batch_id, and request_id. The description adds a useful 'bounded loc_id list' constraint and clarifies 'exact identity,' but it does not meaningfully expand parameter meaning beyond the schema baseline.
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 states a clear action ('check') on a specific resource ('geometry availability for loc_id(s)') and immediately distinguishes itself from siblings: it is a shape-only preflight that does not resolve points or explain identity relationships. The title and description align, so an agent can reliably tell this from get_geometry and resolve_point.
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 explicitly says to use this before get_geometry or an export, giving concrete timing guidance. It also states exclusions ('does not resolve points or explain other identity relationships'), which prevents misuse when resolving points or tracing identity is the goal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_geographiesCompare Geographic IdentitiesARead-onlyInspect
Detailed relationship tool for two geographic identities. Returns temporal validity, N-way successor context, topology, geodesic intersection area, and directional overlap shares when approved geometry exists. Use this after a compact point lookup when the caller asks whether two tiers/releases really contain or overlap one another. A point-chain seam is not proof of strict parentage. Use resolve_reference first for names or outside identifiers. No payment required.
| Name | Required | Description | Default |
|---|---|---|---|
| as_of | No | ISO date or year applied to both identities. | |
| items | No | Bounded geography pairs to compare in one call. | |
| batch_id | No | Optional caller-supplied batch id for tracing. | |
| left_as_of | No | Optional ISO date or year for the left identity; overrides as_of. | |
| request_id | No | Optional caller-supplied request id for tracing. | |
| left_loc_id | No | First DaedalMap loc_id. | |
| right_as_of | No | Optional ISO date or year for the right identity; overrides as_of. | |
| right_loc_id | No | Second DaedalMap loc_id. | |
| include_successors | No | Include direct successors and present-day descendants for maintained historical identities. Default true. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations include readOnlyHint=true, and the description adds conditional behavior ('when approved geometry exists') and the caveat about point-chain seams. It does not contradict annotations and provides useful context beyond the read-only hint.
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?
Four sentences, front-loaded with the core purpose. The inclusion of 'No payment required' is slightly extraneous but does not significantly harm clarity.
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 complex tool with 9 parameters and no output schema, the description covers key return values and usage context. It lacks explicit mention of batch usage via the 'items' parameter, but the schema covers that. It is otherwise quite complete.
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 schema already documents all parameters. The description adds no additional parameter-level detail; baseline 3 is appropriate.
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 function: 'Detailed relationship tool for two geographic identities' and lists specific outputs (temporal validity, successor context, topology, geodesic intersection area, overlap shares). This distinguishes it from sibling tools like get_geometry or resolve_point.
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?
Provides explicit usage context: 'Use this after a compact point lookup' and directs to 'Use resolve_reference first for names or outside identifiers.' Also gives a critical caveat: 'A point-chain seam is not proof of strict parentage.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
convert_referenceConvert Geographic ReferenceARead-onlyInspect
Free geography utility. Converts one reference, or a bounded list of references, from one geographic reference system into another by resolving through DaedalMap loc_id: X -> loc_id -> Y. Use this for workflows like ZIP/ZCTA to NWS fire zones, NWS zone to counties, county to overlapping ZCTAs, or any future catalog-backed crosswalk. No payment required.
| Name | Required | Description | Default |
|---|---|---|---|
| iso3 | No | Country hint for crosswalk artifacts. Default USA. | |
| items | No | Reference conversions to run in one call. Default public cap is deployment-configurable. | |
| limit | No | Maximum ranked output references to return. Default 10. | |
| value | No | Identifier or name in the input system. | |
| batch_id | No | Optional caller-supplied batch id for tracing. | |
| min_share | No | Optional minimum overlap share threshold. | |
| to_system | No | Output reference system, such as loc_id, zcta, nws_fire, overlay_nws_public_zone, overlay_tribal, admin_local, or admin_geometry. | |
| request_id | No | Optional caller-supplied request id for tracing. | |
| from_system | No | Input reference system, such as zip, overlay_zcta, nws_fire, tribal, admin_boundary, or loc_id. | |
| target_admin_level | No | Admin level used as the intermediate crosswalk target. Default admin_2. | |
| relationship_vintage | No | Optional source relationship vintage to require. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds useful behavioral context: it is a 'Free geography utility' with 'No payment required', and it handles a 'bounded list' of references, implying rate/volume limits. It also explains the internal resolution chain (loc_id). This adds value beyond the annotation, though it does not disclose error handling, pagination, or exact output format, which are not required given the annotation coverage.
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 two sentences with no wasted words. The core action is front-loaded, followed by mechanisms and examples. The final sentence about payment is a brief differentiator. It is tight, informative, and well-structured.
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?
Given the tool's complexity (11 parameters, batch mode) and lack of an output schema, the description is reasonably complete. It explains the purpose and typical workflows, which is enough for an agent to invoke it correctly. However, it does not specify return format or error/edge-case behavior, but the extensive schema descriptions cover parameter semantics. Given that the tool is read-only and the schema is detailed, the description suffices.
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. The description adds meaning by clarifying the single vs. batch modes ('one reference, or a bounded list of references') and giving examples of valid from/to systems within workflows. It also implies the 'limit' and 'min_share' parameters refer to ranked output, aligning with the schema. This is modest extra context that complements the thorough schema descriptions.
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 states a specific verb ('Converts'), a clear resource ('geographic reference system'), and the scope (one reference or a bounded list). It explicitly explains the mechanism (resolving through DaedalMap loc_id: X -> loc_id -> Y) and provides concrete workflow examples (ZIP/ZCTA to NWS fire zones, NWS zone to counties, county to overlapping ZCTAs). This clearly distinguishes it from sibling tools like resolve_reference, which likely handles single-reference resolution.
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 gives explicit use cases: 'Use this for workflows like ZIP/ZCTA to NWS fire zones, NWS zone to counties, county to overlapping ZCTAs, or any future catalog-backed crosswalk.' This tells an agent when to apply the tool. However, it does not explicitly say when not to use it or name alternative tools, relying on the workflow context to implicitly separate it from siblings. So it is clear but lacks explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_conversion_jobCreate loc_id Conversion JobCInspect
Creates a synchronous v0 user-data conversion job with preserved scalar fields and JSON rows, CSV, JSON Lines, or Parquet output. Hosted service default: 7,500 rows, tuned around a 10-20 second response budget. A direct local-runtime loopback caller has no service item cap; local machine resources are the boundary. Identifier deduplication keeps repeated geography keys efficient.
| Name | Required | Description | Default |
|---|---|---|---|
| iso3 | No | ||
| items | Yes | Rows to convert; row-level fields may override top-level defaults. | |
| limit | No | ||
| quote_id | No | Quote id returned by estimate_conversion_job, when available. | |
| min_share | No | ||
| to_system | No | Optional output reference system. Omit to normalize to loc_id. | |
| request_id | No | Optional caller-supplied request id for tracing. | |
| from_system | No | ||
| output_name | No | ||
| output_format | No | ||
| geography_binding | No | ||
| target_admin_level | No | ||
| relationship_vintage | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With only readOnlyHint=false in annotations, the description carries most of the behavioral burden. It usefully discloses synchronous execution, a 7,500-row hosted default, a 10–20 second response budget, and identifier deduplication. However, it does not describe output shape, failure behavior, side effects, or any permissions requirements, leaving the picture incomplete.
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 compact: three sentences with the core operation front-loaded and the scaling constraints after. There is minimal filler, though jargon like 'v0' and 'loopback' slightly reduces accessibility.
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 tool with 13 parameters, nested objects, an anyOf requirement, and no output schema, the description is far from complete. It does not explain the required items structure, the from_system versus geography_binding choice, row-level overrides, or what the synchronous job returns. An agent would still need substantial schema inference and sibling exploration to call it 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 description coverage is only 31%, so the description must compensate, but it names no parameters directly. It alludes to output formats and the row cap, and 'preserved scalar fields' hints at the data parameter, but from_system, geography_binding, to_system, target_admin_level, min_share, quote_id, and others remain unexplained. The description adds little beyond what the schema already exposes.
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 states a specific verb and resource: 'Creates a synchronous v0 user-data conversion job' and enumerates supported output formats, so the operation is identifiable. It is clear but does not explicitly differentiate itself from siblings like estimate_conversion_job or convert_reference; the 'user-data' and 'synchronous' qualifiers only imply a distinction.
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?
There is no guidance about when to use this tool versus alternatives such as estimate_conversion_job or convert_reference. The hosted/local loopback contrast is behavioral scaling context, not a use-case selector. Prerequisites, sequencing, or exclusion conditions are absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_geometry_exportCreate Geometry ExportAInspect
Creates a synchronous v0 geometry export from exact loc_ids or one strict scope as real GeoJSON, gzipped GeoJSON, or zipped GeoJSON. Hosted service default: 250 selected loc_ids, sized around a 10-20 second response budget and configurable by deployment. A direct local-runtime loopback caller has no service item cap. Use estimate_geometry_package or get_tool_help for the effective access lane.
| Name | Required | Description | Default |
|---|---|---|---|
| scope | No | ||
| format | No | ||
| loc_id | No | ||
| loc_ids | No | Selected loc_ids. The default synchronous limit is 250; larger calls return a typed operational-limit response. | |
| quote_id | No | Quote id returned by estimate_geometry_package, when available. | |
| request_id | No | Optional caller-supplied request id for tracing. | |
| output_name | No | ||
| include_polygon | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only provide readOnlyHint=false, leaving the description to carry the burden. It discloses synchrony, response budget, service-item caps, and environment-dependent behavior (hosted vs local loopback). This is substantial behavioral context beyond what annotations offer.
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?
Two sentences, front-loaded with the core action, then scaling limits and redirection. Every sentence contributes value without repetition or filler.
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 create/export tool with no output schema, it covers purpose, limits, access lane, and formats. The only notable omission is the return value or response structure, which is a minor gap given the tool's nature.
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 only 38% (3 of 8 params described). The description compensates by clarifying that loc_ids are an exact list with a default cap of 250, scope must be a single strict scope, format maps directly to the enum, and quote_id originates from estimate_geometry_package. Some optional params like include_polygon and output_name remain unexplained, but the core selection params gain meaningful context.
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 it 'Creates a synchronous v0 geometry export' from 'exact loc_ids or one strict scope', with explicit format options (GeoJSON, gzipped GeoJSON, zipped GeoJSON). This specific verb-resource pair distinguishes it from sibling tools like get_geometry (retrieval) and create_conversion_job (asynchronous conversion).
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?
Provides clear operational guidance: hosted service default of 250 loc_ids, 10-20 second response budget, and direct local-loopback exception. It explicitly directs users to estimate_geometry_package or get_tool_help for the effective access lane. However, it doesn't explicitly contrast with async alternatives like create_conversion_job, so not a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
estimate_conversion_jobEstimate loc_id Conversion JobARead-onlyInspect
Free dry-run quote for uploaded or pasted user data conversion. Estimates rows, sample resolvability, output bytes, errors, and charge units before execution.
| Name | Required | Description | Default |
|---|---|---|---|
| iso3 | No | ||
| items | No | Sample or full rows; row-level fields may override top-level defaults. | |
| limit | No | ||
| min_share | No | ||
| row_count | No | Expected total row count when only a sample or artifact pointer is provided. | |
| to_system | No | Optional output reference system. Omit to normalize to loc_id. | |
| request_id | No | Optional caller-supplied request id for tracing. | |
| from_system | No | Input reference system for rows. | |
| output_name | No | Optional safe base filename. | |
| output_format | No | Enriched-row output format. CSV is spreadsheet-friendly; Parquet is compact and typed; JSON Lines is stream-friendly. | |
| geography_binding | No | Known dataset-geography declaration. The estimate verifies it against distinct identifiers and avoids point containment. | |
| target_admin_level | No | ||
| relationship_vintage | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already signals a safe, non-mutating operation. The description adds meaningful behavioral context by stating this is a free dry-run that estimates rows, sample resolvability, output bytes, errors, and charge units without executing the conversion. No contradiction with annotations.
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?
A single, dense sentence that front-loads the core value proposition ('Free dry-run quote') and then lists the estimated outputs. Every word earns its place; there is no fluff or redundant restating of the tool name.
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 estimation tool, the description covers the essential inputs (uploaded or pasted data) and outputs (rows, resolvability, bytes, errors, charge units). Given the absence of an output schema, this is helpful. The complex schema still carries most parameter-level context, but the description is complete enough for tool selection and initial invocation.
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?
With 13 parameters and only 62% schema description coverage, the description needed to compensate, but it adds little parameter-specific meaning. It references 'uploaded or pasted user data' and 'sample resolvability,' but does not clarify the anyOf input modes, geography_binding, or from_system semantics. Most parameter understanding must come from 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?
The description uses a specific verb ('Estimates') and resource ('conversion job'), and clearly frames it as a free dry-run quote rather than actual conversion. The phrase 'before execution' distinguishes it from create_conversion_job, and the listed estimate outputs clarify what the tool produces.
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 communicates the key usage context: use this tool to get a pre-execution estimate for uploaded or pasted user data conversion. It implies this is the preview step before create_conversion_job, though it does not explicitly name alternative tools or state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
estimate_geometry_packageEstimate Geometry PackageARead-onlyInspect
Dry-run estimate for a selected geometry export: exact loc_id count, shape/vintage availability, bytes, delivery mode, citation requirements, and charge units. This estimates an export artifact, not a canonical DaedalMap geometry release bundle.
| Name | Required | Description | Default |
|---|---|---|---|
| scope | No | ||
| format | No | Implemented delivery format. Unsupported format names are rejected rather than silently returning another representation. | |
| loc_id | No | Single loc_id to package. | |
| loc_ids | No | Explicit loc_ids to package. | |
| request_id | No | Optional caller-supplied request id for tracing. | |
| output_name | No | Optional safe base filename for the export. | |
| include_polygon | No | Estimate full shapes when true; metadata-only when false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already establishes this as a safe read operation. The description adds meaningful context by specifying what the estimate covers and clarifying that it is not a canonical release bundle, which helps the agent understand the tool's non-destructive estimation behavior.
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 two sentences, immediately states the tool's purpose, and wastes no words. It is front-loaded with the key action and outcome, then a short clarifying distinction.
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?
Given the complex schema and no output schema, the description compensates by listing the key return elements (count, availability, bytes, etc.). It does not explicitly state the requirement to provide loc_id, loc_ids, or scope, but the schema's anyOf enforces that, and the description is otherwise complete for an estimate tool.
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 86%, so the schema already handles most parameter meaning. The description does not add significant parameter-level details beyond saying 'selected geometry export,' but the high schema coverage justifies the baseline score.
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 begins with 'Dry-run estimate for a selected geometry export,' using a specific verb and resource. It enumerates the exact output dimensions (loc_id count, shape/vintage availability, bytes, delivery mode, citation requirements, charge units) and explicitly differentiates from a canonical release bundle, making the purpose unmistakable.
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 clearly frames the tool as an estimator for export artifacts and excludes canonical bundles, implying use before or instead of actual export creation. However, it does not explicitly reference sibling tools like create_geometry_export or state 'use this before creating an export,' so the guidance is clear but not fully explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_catalogGet CatalogARead-onlyInspect
Free discovery. Returns the list of live agent-ready data packs available on DaedalMap.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, so the description does not need to repeat that. The description adds 'live agent-ready data packs' which provides additional behavioral context about the nature of the data, but it does not disclose any other traits (e.g., rate limits, freshness of data).
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?
Two sentences with no wasted words. The essential information is front-loaded. Every word earns its place.
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?
Given no parameters, no output schema, and readOnlyHint annotation, the description provides enough context for an agent to understand what the tool returns. It could mention that it is a safe, read-only operation, but annotations already cover that. The description is complete for the simplicity of this tool.
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?
There are no parameters, and schema description coverage is 100%. The description does not need to explain parameters, and it adds no extraneous information. Baseline for zero parameters is 4.
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?
Description clearly states the tool returns 'the list of live agent-ready data packs available on DaedalMap', which is a specific resource. The phrase 'Free discovery' adds some ambiguity but the core purpose is clear. It distinguishes from sibling tools like 'get_pack' by focusing on the catalog rather than individual packs.
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?
No explicit guidance on when to use this tool versus alternatives such as 'get_pack' or other data retrieval tools. There is no mention of when not to use it or any context about prerequisites or limitations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_disaster_link_chainGet Disaster Link ChainARead-onlyInspect
Free linked-disaster helper. Expands one exact disaster event id into a bounded related-event chain. Use this only when you already have an exact event id from a supported pack such as earthquakes, tsunamis, volcanoes, or wildfires.
| Name | Required | Description | Default |
|---|---|---|---|
| depth | No | Maximum link-chain depth to traverse. Default 1. | |
| pack_id | No | Optional pack id hint when the event id is ambiguous. Supported exact-event link packs are earthquakes, tsunamis, volcanoes, and wildfires. | |
| event_id | Yes | Exact disaster event id from a supported pack row, such as 'NOAA-SIG-2' or 'USA-CA-FIRE-215'. | |
| request_id | No | Optional caller-supplied request id for tracing. | |
| cross_type_only | No | When true, only return cross-hazard links. Default true. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true; description adds 'free linked-disaster helper' and 'bounded' chain but no deeper behavioral detail like rate limits or return structure. Not contradictory.
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?
Two sentences, no filler, front-loaded with key purpose. Every word serves a purpose.
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?
Covers purpose, usage, and supported packs adequately for a read-only tool with no output schema. Could describe output format but still complete enough for most use cases.
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 3. Description adds value by listing supported packs in the pack_id and event_id descriptions, but does not add major new semantics beyond 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?
The description clearly states the tool expands an exact disaster event ID into a bounded related-event chain, with specific verbs and resource. It distinguishes from siblings like search_disaster_links and get_disaster_links_for_event.
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?
Explicitly states when to use (only with exact event id from supported pack). Lists supported packs, giving context. Does not explicitly exclude alternatives but implies exclusive use for exact ID expansion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_disaster_links_for_eventGet Disaster Links For EventARead-onlyInspect
Free linked-disaster helper. Resolves one exact disaster event id into its published related-disaster links. Use this only when you already have an exact event id from a supported pack such as earthquakes, tsunamis, volcanoes, or wildfires.
| Name | Required | Description | Default |
|---|---|---|---|
| pack_id | No | Optional pack id hint when the event id is ambiguous. Supported exact-event link packs are earthquakes, tsunamis, volcanoes, and wildfires. | |
| event_id | Yes | Exact disaster event id from a supported pack row, such as 'NOAA-SIG-2' or 'USA-CA-FIRE-215'. | |
| request_id | No | Optional caller-supplied request id for tracing. | |
| cross_type_only | No | When true, only return cross-hazard links. Default true. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already indicates the tool is read-only. The description adds that it resolves to 'published related-disaster links', but does not disclose other behavioral traits like error handling, pagination, or rate limits. It adds moderate value beyond the annotation.
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 only two sentences, with the key information in the second sentence. The first sentence ('Free linked-disaster helper') is slightly vague but not harmful. Overall efficient and front-loaded.
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?
Given the lack of an output schema, the description could explain return format or behavior for missing IDs. It does not mention optional parameters (pack_id, cross_type_only) or their defaults. The description is adequate but leaves gaps.
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 descriptions cover 100% of parameters, so the baseline is 3. The tool description does not elaborate on parameter meanings or provide examples beyond what the schema already contains, so no added value.
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 that the tool resolves one exact disaster event ID into published related-disaster links, specifying the verb 'resolves' and the resource 'event id' to 'links'. It implicitly distinguishes from sibling tools like search_disaster_links by requiring an exact ID, but does not explicitly compare.
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 explicitly advises to use this tool only when an exact event ID from a supported pack is available, providing clear context. It does not list alternative tools or exclusions, but the guidance is sufficient for basic use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_earthquake_eventsGet Earthquake EventsARead-onlyInspect
Paid x402 canonical tool. Queries the published earthquakes_events lane. Use this first for earthquake questions because it is the enriched DaedalMap history lane with stable loc_id geography, not the preliminary upstream wrapper. Call without payment first - the server returns HTTP 402 with the exact USDC price before any charge. Small queries stay cheap; broad scans cost more or need narrower filters.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | Optional sort instructions for row-returning queries. | |
| limit | No | Maximum number of rows to return. For top-N requests, include a narrow time range or region_ids before sorting. | |
| output | No | Optional output controls such as response format hints. | |
| filters | Yes | Structured filters including time ranges, region_ids, and compare clauses. | |
| metrics | Yes | Metric ids to return, such as 'event_count' or event attributes like 'magnitude'. | |
| request_id | No | Optional caller-supplied request id for tracing and idempotency. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses paid nature with HTTP 402 behavior and pricing sensitivity, which goes beyond the readOnlyHint annotation, adding crucial behavioral context.
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?
Concise four-sentence paragraph with front-loaded purpose and no fluff, though it could benefit from structural separation of usage and payment details.
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?
Provides adequate context for a moderately complex tool with 6 params and no output schema, covering payment flow and lane distinction, but lacks hints about response structure.
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 description adds minimal parameter detail beyond existing schema. It mentions query breadth cost implications but does not explain parameter formats or relationships.
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?
Description clearly states it queries earthquake events from the enriched DaedalMap history lane, distinguishing it from the preliminary upstream wrapper and sibling tools like get_live_earthquake_events.
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?
Explicitly advises to use this first for earthquake questions and describes the 402 payment flow and filter optimization, though it does not explicitly state when not to use it or name alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_fx_ratesGet FX RatesARead-onlyInspect
Free tool. Queries the currency pack using filters.region_ids plus filters.time.granularity to return daily, weekly, or monthly FX data.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | Optional sort instructions for row-returning queries. | |
| limit | No | Maximum number of rows to return for the requested granularity and time span. | |
| output | No | Optional output controls such as response format hints. | |
| filters | Yes | Structured filters including region_ids with loc_id country codes, time range, and granularity. | |
| metrics | No | Optional metric ids. Defaults to 'local_per_usd' for FX rate queries. | |
| request_id | No | Optional caller-supplied request id for tracing and idempotency. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the description adds value by explaining query mechanics (region_ids, time granularity) and output granularity (daily/weekly/monthly). There is no contradiction, and the description enriches beyond the annotation.
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?
Two sentences efficiently deliver purpose and key usage details. 'Free tool' is front-loaded, and the second sentence packs essential information without superfluous text.
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?
Given the tool's complexity (6 params, nested objects, no output schema) and annotations, the description adequately covers the core query behavior and granularity options. It does not explain sort, limit, or output, but the schema covers those, making the description sufficiently complete.
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%, but the description adds meaning by specifying that 'filters.region_ids plus filters.time.granularity' determine daily/weekly/monthly returns. This goes beyond the schema's generic description, providing actionable parameter semantics.
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 'Queries the currency pack using filters.region_ids plus filters.time.granularity to return daily, weekly, or monthly FX data.' It specifies the resource (currency pack), action (queries), key parameters, and output granularity, distinguishing it from sibling tools like 'query_dataset' or 'get_pack'.
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 opens with 'Free tool,' hinting at no cost, but does not explicitly state when to use this tool versus alternatives like 'query_dataset' or 'get_catalog.' Usage is implied for FX rate queries only, with no guidance on exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_geometryGet loc_id GeometryARead-onlyInspect
Shape retrieval for exact loc_ids, including loc_ids from any level of a resolve_point chain. Returns the requested geometry metadata, vintage, centroid, bounding box, and optional GeoJSON polygon. Historical geometry is returned first; an evidenced successor appears only as a separate question and is never substituted or fetched automatically. It does not explain hierarchy or crosswalks; use loc_id_info for those details. Prefer bbox/centroid unless exact rendering or clipping requires the polygon. No payment required.
| Name | Required | Description | Default |
|---|---|---|---|
| loc_id | No | DaedalMap loc_id, such as USA-CA-037, USA-Z-00601, USA-NWSFZ-AKZ317, EEZ-USA, or IHO1953-240001002. | |
| loc_ids | No | DaedalMap loc_ids to fetch in one call. Default public cap is deployment-configurable and lower when include_polygon is true. | |
| batch_id | No | Optional caller-supplied batch id for tracing. | |
| request_id | No | Optional caller-supplied request id for tracing. | |
| include_polygon | No | When true, include the full GeoJSON geometry. Default false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=true, and the description adds meaningful behavioral context: historical geometry is returned first, an evidenced successor appears only as a separate question and is never fetched automatically, and the response includes metadata, vintage, centroid, bounding box, and optional GeoJSON polygon. This goes well beyond the annotation and describes the tool's actual behavior.
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 concise and front-loaded: it states the core purpose first, then return content, then behavior, then alternatives, then usage preference. Every sentence earns its place, and there is no redundant restatement of the tool name or title.
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?
Even without an output schema, the description explains the return values (metadata, vintage, centroid, bounding box, optional polygon), key behavioral edge cases (historical first, no successor substitution), exclusions (hierarchy/crosswalks), and usage preference (bbox/centroid over polygon). With a fully documented input schema, this is complete enough for an agent to invoke the tool 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 description coverage is 100%, so the schema already documents the parameters. The description adds useful semantic context by explaining that loc_ids can come from any level of a resolve_point chain and that the polygon is optional, reinforcing the include_polygon parameter's role. It does not deeply elaborate every parameter, but it meaningfully supplements 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?
The description uses a specific verb and resource: "Shape retrieval for exact loc_ids," including loc_ids from any level of a resolve_point chain. It also distinguishes itself from loc_id_info by explicitly stating what it does not explain, so an agent can tell it apart from nearby siblings.
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 gives explicit guidance on when to use it: prefer bbox/centroid unless exact rendering or clipping requires the polygon, and use loc_id_info for hierarchy or crosswalk details. It also clarifies that successors are never substituted automatically, which prevents incorrect invocation assumptions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_job_statusGet Geometry Job StatusARead-onlyInspect
Retrieves a completed bounded v0 geometry export or conversion job by job_id. The current public contract creates completed inline jobs only; durable queued jobs and downloadable artifact links remain a future Custom Data Builder capability.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes | Job id returned by create_geometry_export or create_conversion_job. | |
| request_id | No | Optional caller-supplied request id for tracing. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, and the description adds useful behavioral context by specifying that only completed inline jobs are retrievable under the current public contract, while durable queued jobs and downloadable artifacts remain unsupported. This enriches the annotation without contradicting it.
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 two sentences: the first states the core action with precision, the second provides a clear contract limitation. No unnecessary words or redundancy.
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 simple read-only status tool with full schema coverage and a read-only annotation, the description is largely sufficient. It covers purpose and contract limitations, but the lack of an output schema means a brief note on return value would be useful, and the term 'bounded v0' is somewhat cryptic.
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%, setting a baseline of 3, but the description adds meaning by requiring job_id to be a completed 'bounded v0' job, which goes beyond the schema's simple origin reference and clarifies expected job state. request_id is already well-documented in 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?
The description uses the specific verb 'Retrieves' and clearly identifies the resource as 'completed bounded v0 geometry export or conversion job' accessed 'by job_id'. This distinguishes it from sibling creation/estimation tools such as create_geometry_export and create_conversion_job.
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 usage for retrieving completed inline jobs and explicitly notes that durable queued jobs and artifact links are future capabilities, which sets expectations. The schema also references create_geometry_export and create_conversion_job as job_id origin points, but the description itself does not explicitly state when to use or avoid this tool relative to alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_live_earthquake_eventsGet Live Earthquake EventsARead-onlyInspect
Free live wrapper. Calls the USGS FDSN API for recent preliminary earthquake events normalized to DaedalMap event fields. Use this only when the caller explicitly wants live/preliminary upstream results or needs a very recent window not yet present in the published canonical earthquake lane. This is not the enriched canonical history lane.
| Name | Required | Description | Default |
|---|---|---|---|
| hours | No | Recent lookback window in hours. Ignored when start_time is provided. | |
| limit | No | Maximum live rows to return. | |
| orderby | No | USGS result ordering. | |
| end_time | No | Optional exclusive-ish ISO-8601 end datetime. Defaults to now. | |
| request_id | No | Optional caller-supplied request id for tracing. | |
| start_time | No | Optional inclusive ISO-8601 start datetime. | |
| max_latitude | No | Optional bounding box maximum latitude. | |
| min_latitude | No | Optional bounding box minimum latitude. | |
| max_longitude | No | Optional bounding box maximum longitude. | |
| min_longitude | No | Optional bounding box minimum longitude. | |
| min_magnitude | No | Minimum earthquake magnitude. Defaults to 2.5. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true. The description adds that it calls the USGS API and normalizes to DaedalMap event fields. This is useful context but does not significantly expand beyond what the annotation already conveys. No contradictions.
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 three sentences, front-loaded with the main purpose, and every sentence serves a clear role. It is concise and well-structured.
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, combined with the schema and annotations, provides sufficient context for a read-only tool with 11 well-described parameters. It explains the source and normalization, and the usage guidance is clear. Lacks details on output format, but that may be covered by the DaedalMap event field standard.
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. The description does not add any additional parameter information beyond what is already in the schema; it relies on the schema's descriptions.
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 that this tool retrieves live/preliminary earthquake events from the USGS FDSN API and normalizes them. It explicitly distinguishes itself from the canonical earthquake lane, making the purpose specific and unambiguous.
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 explicitly tells when to use this tool (when live/preliminary results are needed or for a very recent window) and what it is not (the enriched canonical history lane). Although it does not name the alternative, the sibling tool get_earthquake_events is implied as the canonical one.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_live_volcano_eventsGet Live Volcano EventsARead-onlyInspect
Free live wrapper. Calls the Smithsonian/GVP WFS for recent preliminary volcanic eruption updates normalized to DaedalMap event fields. This is not the enriched canonical history lane.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Recent lookback window in days. Ignored when start_time is provided. | |
| limit | No | Maximum live rows to return. | |
| min_vei | No | Optional minimum Volcanic Explosivity Index. | |
| orderby | No | Result ordering. | |
| end_time | No | Optional inclusive ISO-8601 end datetime or date. Defaults to now. | |
| request_id | No | Optional caller-supplied request id for tracing. | |
| start_time | No | Optional inclusive ISO-8601 start datetime or date. | |
| ongoing_only | No | When true, only return eruptions marked continuing by GVP. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, and the description adds that it calls an external WFS service, returns preliminary data, and is not canonical. This provides extra behavioral context beyond annotations.
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 two sentences: the first explains the action and source, the second clarifies its scope. It is front-loaded with the core purpose and uses no unnecessary words.
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 explains the data source and nature (live, preliminary) but does not describe the returned fields or structure. With no output schema and 8 optional parameters, more detail on the response would improve completeness.
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?
The input schema has 100% description coverage with clear parameter descriptions. The tool description does not add additional meaning beyond what the schema provides, so baseline score of 3 is appropriate.
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 it is a live wrapper for volcanic eruption updates from the Smithsonian/GVP WFS, specified to be preliminary and not the enriched canonical history lane. This effectively distinguishes it from sibling tools like get_volcanic_activity.
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 this is for live, preliminary data by stating it's a 'free live wrapper' and 'not the enriched canonical history lane,' but it does not explicitly name alternatives or provide when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_packGet PackARead-onlyInspect
Free discovery. Returns detailed metadata, coverage, freshness, preferred canonical tool guidance, and first-query examples for one pack. Call this before querying a new pack so you can see time shape, coverage limits, and the paste-ready first query.
| Name | Required | Description | Default |
|---|---|---|---|
| pack_id | Yes | Pack identifier from get_catalog. Newly catalog-admitted packs require no MCP schema change. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so safety is covered. The description adds meaningful behavioral context by enumerating what the tool exposes (metadata, coverage, freshness, canonical tool guidance, first-query examples) and the practical benefit ('time shape, coverage limits, and the paste-ready first query'). This explains the output's role without contradicting the read-only annotation.
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?
Two sentences with zero redundancy. The first sentence front-loads the purpose and output contents; the second delivers actionable usage guidance. Every word earns its place.
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 single-parameter, read-only discovery tool with no output schema, the description fully specifies what the agent receives (the enumerated output elements) and when to call it. Nothing an agent needs to invoke it correctly 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?
The schema already documents pack_id completely with 100% coverage, including its source (get_catalog) and a note about catalog-admitted packs. The description does not add any additional meaning about the parameter itself, so per the baseline for high schema coverage, a score of 3 is appropriate.
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 states a specific action ('Returns detailed metadata, coverage, freshness, preferred canonical tool guidance, and first-query examples') targeting a distinct resource ('one pack'). It explicitly frames this as 'Free discovery,' which clearly distinguishes it from sibling tools like query_dataset or get_catalog by its discovery-oriented purpose.
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 provides an explicit when-to-use instruction: 'Call this before querying a new pack.' This is a clear situational trigger. It does not mention when not to use it or name specific alternatives, but the guidance is unambiguous and actionable for an agent.
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-onlyInspect
Free blind-caller guidance for one tool visible on this MCP facade. Returns when to use it, what it refuses, a working example, effective access limits, important outputs, provenance fields, recommended next calls, and the shared natural-language-to-strict-JSON interaction contract. Use tools/list to discover names, then call this before an unfamiliar tool.
| Name | Required | Description | Default |
|---|---|---|---|
| tool_name | Yes | Exact tool name from tools/list. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already indicates a safe read operation. The description adds useful behavioral context by stating it returns guidance content and references a shared interaction contract, without contradicting the annotation.
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 concise and mostly front-loaded, but contains some dense jargon like 'blind-caller' and 'natural-language-to-strict-JSON interaction contract.' It earns its place with practical guidance and a clear call-to-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?
Without an output schema, the description thoroughly covers what the tool returns, including usage context, example, access limits, outputs, provenance fields, recommended next calls, and the interaction contract. It also provides a clear invocation workflow.
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% with a clear parameter description ('Exact tool name from tools/list'). The description reinforces the need to use tools/list but does not add substantial semantic meaning beyond 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?
The description clearly states that this tool provides guidance for another tool on the MCP facade, listing the specific types of information returned. It distinguishes itself from the many domain-specific sibling tools by being a meta-tool for unfamiliar-tool assistance.
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 gives explicit guidance: use tools/list to discover names, then call this before an unfamiliar tool. This clearly states when to use the tool and implies it is not needed for familiar tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_tsunami_eventsGet Tsunami EventsARead-onlyInspect
Paid x402 canonical tool. Queries tsunamis_events for historical tsunami records and water-height/runup metrics. Best for event counts, max water height thresholds, and top-event lookups. Region filters may use ISO3 country ids or reviewed named-water loc_ids such as IHO1953-240001002 for the Mediterranean Sea; XOO is deprecated. Call without payment first - the server returns HTTP 402 with the exact USDC price before any charge.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | Optional sort instructions for row-returning queries. | |
| limit | No | Maximum number of rows to return. For largest-wave or latest-event requests, include a narrow time range or region_ids before sorting. | |
| output | No | Optional output controls such as response format hints. | |
| filters | Yes | Structured filters including time ranges, region_ids, and compare clauses. Tsunami queries commonly use year-style windows and may use geometry-backed ocean/sea ids such as XSM. | |
| metrics | Yes | Metric ids to return, such as 'event_count', 'max_water_height_m', or event attributes. | |
| request_id | No | Optional caller-supplied request id for tracing and idempotency. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Disclosure of payment mechanism (HTTP 402 with price before charge), region filter specifics (ISO3, water loc_ids, deprecated XOO), and guidance on limit usage. All beyond readOnlyHint annotation.
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 sentences cover purpose, usage, and important details. Efficient but slightly dense; could be more structured. Still concise.
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?
Covers payment, filter usage, limit advice, and metric examples. No output schema, but description implies return values. Adequate for correct invocation.
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?
Adds valuable context to parameters: region filters with examples, limit usage with sorting advice, and metric examples. Schema coverage is 100%, so baseline is 3, but description significantly enhances understanding.
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?
Clearly states it queries tsunami events for historical records and water-height/runup metrics. Specifies use cases: event counts, max water height thresholds, top-event lookups. Distinguishes itself from sibling tools by focusing on tsunamis.
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?
Provides explicit when-to-use scenarios and mentions payment requirement. Does not explicitly state when not to use or list alternatives, but context is clear given sibling tool names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_volcanic_activityGet Volcanic ActivityBRead-onlyInspect
Free canonical tool. Queries volcanoes_events for historical eruption records and volcanic activity metrics. Best for eruption counts, VEI thresholds, and top-event lookups. Volcano queries normally use year-style time filters rather than ISO date strings.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | Optional sort instructions for row-returning queries. | |
| limit | No | Maximum number of rows to return. For top-N VEI or latest-eruption requests, include a narrow year range or region_ids before sorting. | |
| output | No | Optional output controls such as response format hints. | |
| filters | Yes | Structured filters including year-based time ranges, region_ids, and compare clauses. For most volcano queries, pass numeric years or time.value. | |
| metrics | Yes | Metric ids to return, such as 'event_count', 'VEI', or eruption attributes. | |
| request_id | No | Optional caller-supplied request id for tracing and idempotency. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true. The description adds 'Free canonical tool' and 'Queries' but does not disclose any behavioral traits beyond what the annotations provide (e.g., no mention of rate limits, data freshness, or pagination). Minimal added value.
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?
Four short sentences, each contributing unique information: tool classification, resource queried, use cases, and filter hint. No redundancy or wordiness. Front-loaded with key purpose.
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?
Despite good purpose and usage guidance, the description lacks information about return format or output structure, which is critical given no output schema. Also does not mention pagination, data limits, or error conditions for a tool with nested objects and required parameters.
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?
The input schema has 100% description coverage, so baseline is 3. The description adds a usage hint about year-style time filters, but this aligns with the schema parameter descriptions (which already mention year-based time ranges). No significant added meaning beyond 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?
The description clearly states it queries historical eruption records and volcanic activity metrics, with specific use cases like eruption counts and VEI thresholds. However, it does not explicitly distinguish itself from the sibling 'get_live_volcano_events', missing a clear differentiator.
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?
Provides guidance on when to use (best for eruption counts, VEI thresholds, top-event lookups) and a specific filter hint (year-style time filters). Lacks explicit exclusion of live events or alternatives, but the guidance is useful.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
how_geometry_worksHow Geometry MCP WorksARead-onlyInspect
Free starting guide for the DaedalMap geography/geometry MCP. Call this first to learn the durable loc_id, administrative-spine, reference-family, discovery, point-lookup, and bounded-shape concepts. Then read the live geometry catalog for country-specific depths, families, and query guidance, and use get_tool_help for one exact tool. 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 |
|---|---|---|---|
| question | No | Optional natural-language question about how to use the geometry tool family. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already establishes that this is a safe, non-mutating operation. The description adds useful context beyond that: it reveals the tool teaches durable concepts, provides current catalog coverage, and explains how behavior scales across countries. No contradiction with annotations exists.
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 rich but not bloated; it front-loads the tool's purpose and sequencing, then provides concrete catalog data that helps an agent decide whether to call it. It earns its length by communicating scope, coverage, and next steps efficiently.
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?
Given that this tool has only one optional parameter, no output schema, and read-only annotations, the description is complete for selection and invocation. It explains what concepts will be learned, which countries have extra depth, and what to do after calling this tool. Nothing essential for an agent 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%, since the optional 'question' parameter is fully described in the schema as a natural-language question about the geometry tool family. The tool description adds no additional parameter-level detail, so the baseline score of 3 is appropriate.
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 identifies the tool as a starting guide for the geography/geometry MCP and explicitly instructs the agent to call it first. It distinguishes itself from sibling tools by positioning itself as the conceptual entry point before read_geometry_catalog or get_tool_help.
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 gives explicit sequencing: call this first, then read the live geometry catalog for country-specific details, then use get_tool_help for one exact tool. This provides clear usage context and names alternatives, leaving little ambiguity about when this tool should be invoked.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
identify_reference_systemIdentify Geographic Reference SystemARead-onlyInspect
Free geography utility. Checks a bounded sample of identifiers against maintained reference indexes and geometry banks. LLM clients must extract identifier values from the user's natural-language request and pass them as strings; do not put the prose question in the arguments, and preserve leading zeros. Use it when a caller has geography keys but is unsure which system, level, or bank they belong to, or wants to verify a declaration such as 2020 US Census tract GEOIDs. Returns ranked candidates, deterministic warnings, machine-readable clarification questions when evidence is incomplete or ambiguous, exact match and shape-availability counts, and a recommended geography_binding for estimate_conversion_job. It does not convert the full dataset or return polygons. No payment required.
| Name | Required | Description | Default |
|---|---|---|---|
| expected | No | ||
| identifier | No | One geography identifier to inspect. | |
| request_id | No | Optional caller-supplied request id for tracing. | |
| identifiers | No | A bounded representative identifier sample. Duplicate values are checked once. Values must be strings so leading zeros are preserved. | |
| country_scope | No | Optional ISO3 country hint used to narrow candidate banks. | |
| validation_scope | No | Describes whether the supplied identifiers are a sample or the complete distinct-key set. The tool validates every supplied identifier. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint annotation, it discloses input-handling requirements (preserve leading zeros, no prose in arguments), bounded sample behavior, and the full set of outputs including ranked candidates, deterministic warnings, clarification questions, and recommended geography_binding. It also notes cost ('Free... No payment required') and limitations.
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 well-structured and front-loaded, but contains a minor redundancy: 'Free geography utility' and 'No payment required' say the same thing. All other sentences earn their place, covering purpose, usage, output, and exclusions.
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?
Given no output schema, the description thoroughly covers return behavior (ranked candidates, warnings, clarification questions, counts, recommended binding), scope limits, and cost. It is complete for a complex identification tool with 6 parameters and nested objects.
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 high (83%), so baseline is 3; the description adds actionable parameter guidance not in the schema: LLM clients must extract identifiers from natural-language and pass them as strings, preserve leading zeros, and not put prose in arguments. This complements the schema's existing field descriptions.
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?
Clearly states it 'Checks a bounded sample of identifiers against maintained reference indexes and geometry banks,' with a specific use case ('unsure which system, level, or bank they belong to') and explicit exclusions ('does not convert the full dataset or return polygons'), distinguishing it from conversion and geometry tools.
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 when-to-use guidance ('Use it when a caller has geography keys but is unsure...') and when-not ('It does not convert the full dataset or return polygons'). It also provides concrete LLM client instructions for extracting identifier strings, which is valuable operational guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_reference_systemsList Geographic Reference SystemsARead-onlyInspect
Free geography utility. Reads the canonical crosswalk registry and lists published, callable geographic reference systems, direct crosswalk artifacts, row counts, vintages, target levels, and source license metadata. Pass country_scope whenever the country is known. Call this first to learn whether ZIP/ZCTA, postal, census, electoral, watershed, health, tribal, marine, or other identifiers can be exchanged through loc_id. Public calls never expose WIP or relationship-only records. No payment required.
| Name | Required | Description | Default |
|---|---|---|---|
| read_wip | No | Local loopback MCP only. Include staged or non-callable preprocessing records for operator review. Default false. | |
| request_id | No | Optional caller-supplied request id for tracing. | |
| country_scope | No | Optional ISO3 country filter. Use this for a focused country capability answer. | |
| include_crosswalks | No | Include actionable source-to-target crosswalk records. Default true. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint=true, so the description doesn't need to emphasize read-only. The description adds behavioral context: it mentions 'Free geography utility' (no payment), 'Public calls never expose WIP or relationship-only records' (privacy/filtering), and that read_wip is for operator review. This adds non-obvious details beyond the annotations, such as the concept of WIP records and the loopback-only restriction. However, it doesn't specify pagination or response structure, which could be useful but the annotation covers safety.
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 three sentences, information-dense, and front-loads the core purpose. It lists many specific data attributes (row counts, vintages, target levels) which adds length but is relevant. It could be slightly more concise by trimming some enumerations, but it remains efficient and readable.
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?
Given the tool is a read-only listing/directory function with annotations covering safety, the description provides a complete picture: what it returns, what filters to use, what it excludes, and when to call it. There is no output schema, so the description must convey the return concept, which it does by listing the kinds of artifacts. The description covers the essential guidance an agent needs to invoke 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 description coverage is 100%, so each parameter is described in the schema. The description adds practical guidance: 'Pass country_scope whenever the country is known' and explains read_wip is for operator review. It doesn't heavily elaborate on parameters but provides context that helps the agent decide how to use them, such as country_scope for focused answers and include_crosswalks default. Since the schema already covers semantics, the extra guidance pushes it above baseline 3.
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 reads a 'canonical crosswalk registry' and lists published, callable geographic reference systems, crosswalk artifacts, row counts, vintages, etc. It explicitly mentions the types of identifiers (ZIP/ZCTA, postal, census, etc.) and states its purpose: to learn whether identifiers can be exchanged through loc_id. This is specific and distinct from siblings like identify_reference_system or loc_id_info.
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 explicitly says 'Pass country_scope whenever the country is known' and 'Call this first to learn whether...' providing clear when-to-use guidance. It also notes public calls never expose WIP or relationship-only records, which implies usage restrictions. It does not name specific sibling alternatives but provides enough context to distinguish this as an initial discovery tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
loc_id_infoGet loc_id / Chain DetailsARead-onlyInspect
The drill-down tool for loc_ids returned by resolve_point and other geography calls. Pass one loc_id, or pass the point result's stack loc_ids together, to retrieve metadata, strict stored parentage, shape status, vintage/lifecycle fields, and child counts. Historical records are returned as requested; when an evidenced successor exists, supersession separately asks whether the caller wants it and never substitutes or fetches it automatically. Set include_hierarchy for the strict same-release ancestor chain and include_references for external or side-chain crosswalks. This is where detailed chain explanation belongs; resolve_point intentionally stays compact. For exact polygons use get_geometry, and for overlap or successor analysis use compare_geographies. No payment required.
| Name | Required | Description | Default |
|---|---|---|---|
| iso3 | No | Optional country hint for crosswalk artifacts. Defaults to the loc_id country when possible. | |
| loc_id | No | DaedalMap loc_id, e.g. 'USA-CA'. | |
| loc_ids | No | DaedalMap loc_ids to inspect together, including every loc_id from a resolve_point stack. Default public cap is deployment-configurable. | |
| systems | No | Optional reference systems to include when include_references is true, such as zcta, nws_fire, overlay_tribal, or overlay_nws_public_zone. | |
| batch_id | No | Optional caller-supplied batch id for tracing. | |
| min_share | No | Optional minimum target-area share for reverse overlap references. | |
| request_id | No | Optional caller-supplied request id for tracing. | |
| limit_per_system | No | Maximum overlap references to return per bridge/system. Default 10. | |
| include_hierarchy | No | When true, include strict stored parent and ancestor data. This never invents a parent edge across mixed releases. Default false. | |
| include_references | No | When true, include known external or side-chain references attached to each loc_id. Default false. | |
| target_admin_level | No | Admin level for crosswalk-backed reverse reference lookup. Inferred when omitted. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only provide readOnlyHint=true, but the description enriches the behavioral picture considerably: supersession is never automatically substituted, historical records are only returned as requested, and parent edges are never invented across mixed releases. It also discloses the 'No payment required' policy, which is useful operational context beyond the annotation.
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 dense yet well-structured: it opens with the tool's role, then input modes, then output contents, then flag semantics, then sibling differentiation and alternatives. Every sentence contributes distinct information, and the text stays readable despite covering a complex 11-parameter tool.
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?
Given 11 parameters and no output schema, the description covers the essential context: how to supply inputs, what the key flags do, what output categories to expect, and when to use sibling tools. The behavioral constraints around supersession and mixed releases are also included. Nothing critical for a correct first call appears to be 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 coverage is 100%, so the baseline is 3, but the description adds semantic depth beyond individual property docs. It explains the relationship between loc_id and loc_ids, clarifies that include_hierarchy returns the 'strict same-release ancestor chain', and ties include_references to external crosswalks. This helps an agent understand parameter intent, not just types.
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 uses a specific verb and resource: a 'drill-down tool for loc_ids' that retrieves metadata, parentage, shape status, vintage/lifecycle fields, and child counts. It further distinguishes itself from siblings by noting 'resolve_point intentionally stays compact' and naming get_geometry and compare_geographies as alternatives. The purpose is unambiguous and clearly differentiated.
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 explicitly states when to use the tool: pass one loc_id or the stack loc_ids from resolve_point, and enables hierarchy/references via flags. It also gives clear exclusion guidance: 'For exact polygons use get_geometry, and for overlap or successor analysis use compare_geographies.' This leaves no ambiguity about when to select this tool versus alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query_datasetQuery DatasetARead-onlyInspect
Generic structured query for direct source_id or pack_id access using the same contract as POST /api/v1/query/dataset. Free packs: currency, distributed_manufacturing, floods, nri, owid, un_sdg, un_wpp, volcanoes, world_bank_wdi. Paid packs: earthquakes, hurricanes, tornadoes, tsunamis, wildfires, world_factbook, worldpop (x402 Base USDC).
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | Optional sort instructions for row-returning queries. | |
| limit | No | Maximum number of rows to return for the requested source or pack. | |
| output | No | Optional output controls such as response format hints. | |
| filters | No | Structured filters including time, region_ids, and compare clauses. | |
| metrics | No | Metric ids to return. Use event_count for aggregate counts when supported. | |
| pack_id | No | Pack identifier from get_catalog. Newly catalog-admitted packs require no MCP schema change. | |
| source_id | No | Concrete source id such as 'earthquakes_events', 'volcanoes_events', 'hurricanes_events', or 'un_sdg/01'. | |
| request_id | No | Optional caller-supplied request id for tracing and idempotency. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the operation as read-only (readOnlyHint: true), and the description aligns by calling it a 'query'. It adds useful context beyond annotations by distinguishing free versus paid packs and mentioning the payment token (x402 Base USDC), which is a behavioral nuance about access costs, not just read-only safety.
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 relatively long due to the enumerated pack list, but every sentence carries useful information: the purpose, the API contract, and the available free/paid packs. The main purpose is front-loaded, and the pack list serves as a quick reference, making the length justified.
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?
Given 8 parameters and no output schema, the description provides valuable context by listing all pack identifiers, which is essential for using pack_id. However, it does not describe the response format or any constraints of the 'same contract' beyond the mention, leaving the agent to infer return behavior. This is a notable gap given no output schema.
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 schema already documents all parameters with descriptions. The description adds minor context by emphasizing the source_id/pack_id dichotomy, but it does not deepen parameter meaning beyond what's in the schema, so a baseline 3 is appropriate.
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 is a 'generic structured query' for 'direct source_id or pack_id access', which is a specific verb and resource. It distinguishes itself from the many specific sibling tools (e.g., get_earthquake_events) by being the generic query pathway, and even references the API contract for precision.
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 usage when you have a source_id or pack_id, and provides a list of valid packs, which gives context. However, it does not explicitly state when to prefer this over sibling tools or when not to use it, leaving some inference to the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_geometry_catalogRead Geometry CatalogARead-onlyInspect
Free geography discovery. Reads the published DaedalMap geometry catalog projection by default, excluding staged and candidate work. Use view='capabilities' first for the global baseline and enhanced countries; use focused inventory views for families, banks, crosswalk products, and named objects. A local loopback MCP may set read_wip=true for internal review. No payment required. 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 |
|---|---|---|---|
| view | No | Catalog view to return. Use capabilities for the concise first-user coverage model. Default summary for compatibility. | |
| limit | No | Maximum named reference objects to return. Default 50. | |
| read_wip | No | Local loopback MCP only. When true, reads the internal geometry catalog projection, including staged and in-progress records. Hosted/public MCP requests are denied. Default false. | |
| request_id | No | Optional caller-supplied request id for tracing. | |
| country_scope | No | Optional ISO3 country code for view='capabilities'. Returns the selected country's baseline, active depth, families, and query guidance. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, and the description aligns with that, adding that it is read-only and free. It discloses the default behavior (excluding staged/candidate work) and the read_wip restriction (denied for hosted/public). This is useful context beyond the annotation, though it doesn't describe error behavior or response structure.
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 moderately long, with a clear opening sentence and useful guidance. However, the 'Current catalog' paragraph includes promotional details (e.g., 'The same geography tools work worldwide...') that are not essential for invocation and could be trimmed. The information is front-loaded reasonably well.
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?
Given the tool is read-only and has no output schema, the description provides sufficient context for an agent to invoke it correctly: it explains the default scope, available view categories, the read_wip limitation, and examples of enhanced country coverage. It doesn't specify exact output format, but for a catalog listing that may be acceptable. The limit parameter is mentioned in schema, and the description gives enough to call it.
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 parameter semantics baseline is 3. The description adds value by explaining the intended order of views (capabilities first), the purpose of read_wip, and implicitly linking country_scope to the capabilities view. It does not redefine parameter types, but it gives usage guidance that the schema does not fully convey.
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 reads the published DaedalMap geometry catalog projection by default, excluding staged and candidate work. It distinguishes from geometry-specific operations by emphasizing 'discovery' and 'catalog', though it does not explicitly name sibling alternatives like get_geometry or get_catalog. The purpose is specific and actionable.
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 provides explicit usage strategy: 'Use view='capabilities' first for the global baseline and enhanced countries; use focused inventory views for families, banks, crosswalk products, and named objects.' It also gives a constraint (read_wip only for local loopback MCP) and notes no payment required. It does not explicitly mention when to choose this over siblings, but the intended selection criteria are clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resolve_loc_id_scopeResolve loc_id ScopeARead-onlyInspect
Strict hierarchy traversal. Given one stored parent loc_id and target admin level, returns descendants from that coherent parent chain. This is not the mixed-vintage latest-per-depth point resolver and must not bridge release seams. Use it before shape exports such as every county in a selected parent scope. No natural-language decoding is performed.
| Name | Required | Description | Default |
|---|---|---|---|
| bbox | No | Optional minLon,minLat,maxLon,maxLat filter. | |
| limit | No | Maximum rows to return inline. Counts are returned even when rows are truncated. | |
| scope | No | ||
| offset | No | Offset for preview paging. | |
| count_only | No | When true, return counts without loc_id rows. | |
| request_id | No | Optional caller-supplied request id for tracing. | |
| admin_level | No | Target level, such as admin_2, 2, county, or state. | |
| parent_loc_id | No | Parent DaedalMap loc_id, such as USA or CAN-BC. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint annotation, the description adds behavioral constraints: 'strict hierarchy traversal', 'coherent parent chain', and 'must not bridge release seams.' It also clarifies that 'No natural-language decoding is performed,' which is valuable context for callers. These details significantly enrich the safety and usage profile.
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?
Four sentences, each earning its place: function, non-goals, use case, and a behavioral caveat. No redundant or promotional language. The description is front-loaded with the core purpose and immediately gives actionable context.
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 tool has nested scope objects and 8 parameters, but the schema already documents them well. The description explains the core use case and exclusion behavior. It could optionally mention output structure, but the schema's mention of 'rows', 'counts', and 'limit' covers that. Slightly more could be said about when the scope object is preferred, but overall sufficient.
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 high (88%) with informative descriptions for parent_loc_id, admin_level, limit, count_only, etc. The description reinforces the key parameters by naming them ('parent loc_id and target admin level') and adds the no-NL note, which clarifies that admin_level expects structured values. This is a slight value-add 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?
The description states a specific verb and resource: 'returns descendants from that coherent parent chain' given a parent loc_id and target admin level. It distinguishes itself from the 'mixed-vintage latest-per-depth point resolver' (likely resolve_point), making its purpose unique among siblings.
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?
Explicitly states when to use: 'Use it before shape exports such as every county in a selected parent scope.' Also states what it is not: 'not the mixed-vintage latest-per-depth point resolver' and 'must not bridge release seams.' This gives clear guidance on alternatives and placement in workflows.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resolve_pointResolve Point to loc_idARead-onlyInspect
Compact reverse geocoding. Converts one WGS84 point, or a bounded point list, into the latest-available administrative loc_id chain. Each chain row is intentionally small: loc_id, name, admin level, and vintage when available. This tool does not return polygons, hierarchy analysis, references, overlap percentages, lifecycle, provenance, or release-conversion detail. Pass the returned stack loc_ids to loc_id_info for details; use get_geometry for shapes and compare_geographies for relationships. Small exploratory calls may omit scope and resolve through the deepest served tier. Batches above the 25-point preview must declare exactly one country_scope and one target_admin_level; split multi-country input into one call per country. Cross-country admin-0/admin-1 batches may instead use bulk_preset. Anonymous callers pay above 25, while verified accounts receive included bulk throughput through 10,000 points. 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. | |
| points | No | Points to resolve. Up to 25 may be exploratory. Above 25, country_scope and target_admin_level are required. Anonymous callers receive a payment challenge; verified accounts have included throughput through 10,000 points. | |
| batch_id | No | Optional caller-supplied batch id echoed in the result. | |
| request_id | No | Optional caller-supplied request id for tracing. | |
| bulk_preset | No | Cross-country fast path that fixes the result level to admin_0 or admin_1. Use instead of country_scope; target_admin_level may be omitted. | |
| country_hint | No | Alias for country_scope for clients that already use hint terminology. | |
| country_scope | No | ISO3/admin_0 loc_id scope such as USA or CAN. Optional for up to 100 exploratory points and required for larger batches; every point must belong to this one country. | |
| target_admin_level | No | Stopping level such as admin_0 through admin_5. Optional for up to 100 exploratory points and required for larger batches. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite readOnlyHint=true already covering safety, the description adds meaningful behavior: row contents, exclusions, small-vs-bulk limits, anonymous vs verified throughput, and automatic depth by catalog coverage. I deduct a point because the stated 25-point cutoff conflicts with the schema's 100-point exploratory allowance, weakening trust in the behavioral contract.
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?
Front-loaded with the core action and output, then organized into exclusions, sibling routing, batching rules, and catalog context. Long, but each block earns its place and the catalog paragraph gives necessary context for expected admin depth.
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?
This is a complex 9-parameter tool with no output schema, and the description explains return-row fields as loc_id, name, admin level, and vintage. However, it omits the exact response structure/ordering and contains the 25-vs-100 inconsistency, so an agent does not yet have everything needed to invoke it with certainty.
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. The description does add practical context around country_scope/target_admin_level and bulk_preset, but its threshold rule conflicts with the schema ('above 25' vs 'up to 100 exploratory points'), so it does not reliably clarify parameter behavior beyond 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?
Opens with 'Compact reverse geocoding' and states it converts one WGS84 point or a bounded point list into a latest-available administrative loc_id chain. It differentiates itself by explicitly listing what it does not return (polygons, hierarchy analysis, references, etc.) and pointing to sibling tools that cover those needs.
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 routing: pass stack loc_ids to loc_id_info, use get_geometry for shapes, compare_geographies for relationships, and bulk_preset for cross-country admin-0/admin-1 batches. It also states the batching rule and the need to split multi-country input per country.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resolve_referenceResolve Reference to loc_idARead-onlyInspect
Free geography utility. Converts one value, or a bounded list of values, from an external or adjacent geographic reference system into the DaedalMap loc_id universe. Examples: from_system='zip' value='00601'; from_system='nws_fire' value='AKZ317'; from_system='admin_boundary' value='Fairfax County'. Returns ranked loc_id matches with bridge vintage, overlap weights, and provenance where applicable. Historical references are returned as requested; an evidenced successor is a separate optional question and is never substituted automatically. No payment required.
| Name | Required | Description | Default |
|---|---|---|---|
| iso3 | No | Country hint for system-specific crosswalks. Default USA. | |
| as_of | No | ISO date or year used to select a time-bounded identity assertion, especially for historical names and codes. | |
| items | No | Reference values to resolve in one call. Default public cap is deployment-configurable. | |
| limit | No | Maximum ranked matches to return. Default 10. | |
| value | No | Identifier or name in the input system. Examples: 00601, USA-Z-00601, AKZ317, USA-NWSFZ-AKZ317, Fairfax County, Mediterranean Sea. | |
| batch_id | No | Optional caller-supplied batch id for tracing. | |
| min_share | No | Optional minimum area-share threshold for overlap matches. | |
| request_id | No | Optional caller-supplied request id for tracing. | |
| from_system | No | Input reference system, such as loc_id, census_geoid/us_census_geoid, admin_boundary, zip, zcta, overlay_zcta, nws_zone, nws_fire, overlay_nws_fire_weather_zone, tribal, water_body, marine_eez, nuts, historical_country/iso3166_3, or a catalog family id. | |
| country_hint | No | Optional country hint for admin/name resolution. | |
| admin_level_hint | No | Optional admin-level hint for admin/name resolution. | |
| target_admin_level | No | Admin target level for crosswalk-backed resolution. Default admin_2. Accepts admin_0..admin_5, 0..5, or names such as country, state, county, tract, block_group, or block. | |
| relationship_vintage | No | Optional relationship vintage to require, such as usa_geometry_current or census_2020_relationship_files. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already indicates a safe read operation, so the bar is lower. The description adds useful behavior: output includes ranked loc_id matches with bridge vintage, overlap weights, and provenance, and historical values are not automatically replaced by successors. This goes beyond what annotations provide.
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 core purpose is front-loaded and the examples are compact and useful. There is minor redundancy: 'Free geography utility' and 'No payment required' convey nearly the same information, and the historical-reference sentence could be tighter, but overall the description is well structured.
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?
Given the readOnlyHint annotation and a 100%-covered schema with 13 parameters, the description covers the essential behavioral context: it explains the conversion, gives examples, and describes the return fields (ranked matches, bridge vintage, overlap weights, provenance). It does not describe pagination or response structure, but the schema and annotation carry much of the needed load.
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 baseline is 3. The examples in the description (from_system='zip' value='00601', from_system='nws_fire' value='AKZ317') largely repeat examples already present in the schema, so the description adds only minimal parameter-level meaning beyond the input 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?
The description states a specific action (converts one value or a bounded list into the DaedalMap loc_id universe) and names the exact resource and outcome. The concrete examples for zip, nws_fire, and admin_boundary clearly distinguish this from siblings like convert_reference or identify_reference_system.
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 gives clear context for when to use the tool: resolving external or adjacent geographic values into loc_id. It also notes that historical references are returned as requested and that an evidenced successor is never substituted automatically, which is an implicit when-not. However, it does not explicitly name sibling tools or state when to prefer them over this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_disaster_linksSearch Disaster LinksARead-onlyInspect
Free linked-disaster discovery helper. Searches published cross-disaster link families by event-type direction, optional via-event type, and optional year window. Use this when you want to discover whether a relationship family exists before you have an exact event id.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of matching chains to return. Default 10. | |
| year_end | No | Optional inclusive ending year filter. | |
| request_id | No | Optional caller-supplied request id for tracing. | |
| year_start | No | Optional inclusive starting year filter. | |
| end_event_type | No | Optional ending event type such as tsunami, flood, tornado, or earthquake. | |
| via_event_type | No | Optional intermediate event type for bounded chain discovery. | |
| start_event_type | No | Optional starting event type such as earthquake, hurricane, volcano, wildfire, flood, tornado, or tsunami. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true. The description adds 'Free linked-disaster discovery helper' and mentions searching published families, but does not detail search algorithm or output format. With annotations, this is adequate; no additional behavioral disclosure needed.
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?
Two sentences front-loading purpose and usage. No redundant or extra words. Every sentence adds value.
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?
Despite no output schema, the description is sufficient for a discovery tool with 7 optional parameters. It covers purpose and usage context. Slightly incomplete regarding output nature, but acceptable given the tool's simplicity and annotations.
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 parameters are fully documented in the schema. The description mentions 'event-type direction, optional via-event type, and optional year window,' which maps to start_event_type, end_event_type, via_event_type, year_start, year_end, but adds no new meaning beyond the schema. Baseline score of 3 is appropriate.
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?
Description clearly states the tool's function: 'Searches published cross-disaster link families' with specific parameters (event-type direction, optional via-event type, year window). It distinguishes from siblings like 'get_disaster_link_chain' (which requires an exact event ID) by focusing on discovery before having an exact ID.
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?
Explicit guidance: 'Use this when you want to discover whether a relationship family exists before you have an exact event id.' This indicates the usage context and implies alternatives (e.g., get_disaster_link_chain for known IDs), but lacks explicit exclusions.
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. Dates show when Glama detected each change.
8 tool updates
- Changed
convert_reference6 fields changed- removed
Input schema / properties / bridge_vintageRemoved value: -{ - "description": "Optional source bridge vintage to require.", - "type": "string" -} - changed
Input schema / properties / iso3 / descriptionPrevious value: -"Country hint for bridge artifacts. Default USA."New value: +"Country hint for crosswalk artifacts. Default USA." - removed
Input schema / properties / items / items / properties / bridge_vintageRemoved value: -{ - "description": "Optional bridge vintage for this row.", - "type": "string" -} - added
Input schema / properties / items / items / properties / relationship_vintageAdded value: +{ + "description": "Optional relationship vintage for this row.", + "type": "string" +} - added
Input schema / properties / relationship_vintageAdded value: +{ + "description": "Optional source relationship vintage to require.", + "type": "string" +} - changed
Input schema / properties / target_admin_level / descriptionPrevious value: -"Admin level used as the intermediate bridge target. Default admin_2."New value: +"Admin level used as the intermediate crosswalk target. Default admin_2."
- Changed
create_conversion_job4 fields changed- removed
Input schema / properties / bridge_vintageRemoved value: -{ - "type": "string" -} - removed
Input schema / properties / items / items / properties / bridge_vintageRemoved value: -{ - "type": "string" -} - added
Input schema / properties / items / items / properties / relationship_vintageAdded value: +{ + "type": "string" +} - added
Input schema / properties / relationship_vintageAdded value: +{ + "type": "string" +}
- Changed
estimate_conversion_job4 fields changed- removed
Input schema / properties / bridge_vintageRemoved value: -{ - "type": "string" -} - removed
Input schema / properties / items / items / properties / bridge_vintageRemoved value: -{ - "type": "string" -} - added
Input schema / properties / items / items / properties / relationship_vintageAdded value: +{ + "type": "string" +} - added
Input schema / properties / relationship_vintageAdded value: +{ + "type": "string" +}
- Changed
list_reference_systems3 fields changed- added
Input schema / properties / country_scopeAdded value: +{ + "description": "Optional ISO3 country filter. Use this for a focused country capability answer.", + "type": "string" +} - added
Input schema / properties / include_crosswalksAdded value: +{ + "description": "Include actionable source-to-target crosswalk records. Default true.", + "type": "boolean" +} - added
Input schema / properties / read_wipAdded value: +{ + "description": "Local loopback MCP only. Include staged or non-callable preprocessing records for operator review. Default false.", + "type": "boolean" +}
- Changed
loc_id_info2 fields changed- changed
Input schema / properties / iso3 / descriptionPrevious value: -"Optional country hint for bridge artifacts. Defaults to the loc_id country when possible."New value: +"Optional country hint for crosswalk artifacts. Defaults to the loc_id country when possible." - changed
Input schema / properties / target_admin_level / descriptionPrevious value: -"Admin level for bridge-backed reverse reference lookup. Inferred when omitted."New value: +"Admin level for crosswalk-backed reverse reference lookup. Inferred when omitted."
- Changed
read_geometry_catalog1 field changed- changed
Input schema / properties / view / enumPrevious value: -[ - "capabilities", - "summary", - "countries", - "admin_coverage", - "bridges", - "products", - "named_reference_objects", - "full" -]New value: +[ + "capabilities", + "summary", + "countries", + "admin_coverage", + "crosswalk_artifacts", + "crosswalks", + "products", + "named_reference_objects", + "full" +]
- Changed
resolve_point2 fields changed- changed
Input schema / properties / country_scope / descriptionPrevious value: -"ISO3/admin_0 loc_id scope such as USA or CAN. Optional for up to 25 exploratory points and required for larger batches; every point must belong to this one country."New value: +"ISO3/admin_0 loc_id scope such as USA or CAN. Optional for up to 100 exploratory points and required for larger batches; every point must belong to this one country." - changed
Input schema / properties / target_admin_level / descriptionPrevious value: -"Stopping level such as admin_0 through admin_5. Optional for up to 25 exploratory points and required for larger batches."New value: +"Stopping level such as admin_0 through admin_5. Optional for up to 100 exploratory points and required for larger batches."
- Changed
resolve_reference6 fields changed- removed
Input schema / properties / bridge_vintageRemoved value: -{ - "description": "Optional bridge vintage to require, such as usa_geometry_current or census_2020_relationship_files.", - "type": "string" -} - changed
Input schema / properties / iso3 / descriptionPrevious value: -"Country hint for system-specific bridges. Default USA."New value: +"Country hint for system-specific crosswalks. Default USA." - removed
Input schema / properties / items / items / properties / bridge_vintageRemoved value: -{ - "description": "Optional bridge vintage for this row.", - "type": "string" -} - added
Input schema / properties / items / items / properties / relationship_vintageAdded value: +{ + "description": "Optional relationship vintage for this row.", + "type": "string" +} - added
Input schema / properties / relationship_vintageAdded value: +{ + "description": "Optional relationship vintage to require, such as usa_geometry_current or census_2020_relationship_files.", + "type": "string" +} - changed
Input schema / properties / target_admin_level / descriptionPrevious value: -"Admin target level for bridge-backed resolution. Default admin_2. Accepts admin_0..admin_5, 0..5, or names such as country, state, county, tract, block_group, or block."New value: +"Admin target level for crosswalk-backed resolution. Default admin_2. Accepts admin_0..admin_5, 0..5, or names such as country, state, county, tract, block_group, or block."
3 tool updates
- Changed
get_pack1 field changed- changed
Input schema / properties / pack_id / descriptionPrevious value: -"Pack identifier such as 'currency', 'earthquakes', 'floods', 'hurricanes', 'tornadoes', 'tsunamis', 'un_sdg', 'volcanoes', 'world_factbook', or 'worldpop'."New value: +"Pack identifier from get_catalog. Newly catalog-admitted packs require no MCP schema change."
- Changed
query_dataset1 field changed- changed
Input schema / properties / pack_id / descriptionPrevious value: -"Pack identifier such as 'currency', 'earthquakes', 'floods', 'hurricanes', 'tornadoes', 'tsunamis', 'un_sdg', 'volcanoes', 'world_factbook', or 'worldpop'."New value: +"Pack identifier from get_catalog. Newly catalog-admitted packs require no MCP schema change."
- Changed
read_geometry_catalog3 fields changed- added
Input schema / properties / country_scopeAdded value: +{ + "description": "Optional ISO3 country code for view='capabilities'. Returns the selected country's baseline, active depth, families, and query guidance.", + "type": "string" +} - added
Input schema / properties / read_wipAdded value: +{ + "description": "Local loopback MCP only. When true, reads the internal geometry catalog projection, including staged and in-progress records. Hosted/public MCP requests are denied. Default false.", + "type": "boolean" +} - changed
Input schema / properties / view / enumPrevious value: -[ - "capabilities", - "summary", - "admin_coverage", - "bridges", - "products", - "named_reference_objects", - "full" -]New value: +[ + "capabilities", + "summary", + "countries", + "admin_coverage", + "bridges", + "products", + "named_reference_objects", + "full" +]
1 tool update
- Changed
read_geometry_catalog2 fields changed- changed
Input schema / properties / view / descriptionPrevious value: -"Catalog view to return. Default summary."New value: +"Catalog view to return. Use capabilities for the concise first-user coverage model. Default summary for compatibility." - changed
Input schema / properties / view / enumPrevious value: -[ - "summary", - "admin_coverage", - "bridges", - "products", - "named_reference_objects", - "full" -]New value: +[ + "capabilities", + "summary", + "admin_coverage", + "bridges", + "products", + "named_reference_objects", + "full" +]
7 tool updates
- Changed
create_conversion_job14 fields changed- changed
Input schema / additionalPropertiesPrevious value: -trueNew value: +false - added
Input schema / anyOfAdded value: +[ + { + "required": [ + "from_system" + ] + }, + { + "required": [ + "geography_binding" + ] + } +] - added
Input schema / properties / bridge_vintageAdded value: +{ + "type": "string" +} - added
Input schema / properties / geography_bindingAdded value: +{ + "additionalProperties": false, + "properties": { + "country_scope": { + "type": "string" + }, + "geo_level": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "integer" + } + ] + }, + "id_column": { + "type": "string" + }, + "mode": { + "enum": [ + "reference", + "loc_id" + ], + "type": "string" + }, + "system": { + "type": "string" + }, + "vintage": { + "type": "string" + } + }, + "required": [ + "system" + ], + "type": "object" +} - added
Input schema / properties / iso3Added value: +{ + "type": "string" +} - changed
Input schema / properties / items / descriptionPrevious value: -"Rows to convert; each row needs value and may include row_index."New value: +"Rows to convert; row-level fields may override top-level defaults." - added
Input schema / properties / items / items / additionalPropertiesAdded value: +false - added
Input schema / properties / items / items / propertiesAdded value: +{ + "bridge_vintage": { + "type": "string" + }, + "data": { + "additionalProperties": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "number" + }, + { + "type": "integer" + }, + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "description": "Original spreadsheet columns to preserve. Column names beginning daedalmap_ are reserved for generated output fields.", + "maxProperties": 200, + "type": "object" + }, + "from_system": { + "type": "string" + }, + "id": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] + }, + "iso3": { + "type": "string" + }, + "limit": { + "maximum": 100, + "minimum": 1, + "type": "integer" + }, + "min_share": { + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "row_index": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] + }, + "target_admin_level": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "integer" + } + ] + }, + "to_system": { + "type": "string" + }, + "value": { + "description": "Identifier value; keep as a string to preserve leading zeros.", + "type": "string" + } +} - added
Input schema / properties / items / items / requiredAdded value: +[ + "value" +] - added
Input schema / properties / limitAdded value: +{ + "maximum": 100, + "minimum": 1, + "type": "integer" +} - added
Input schema / properties / min_shareAdded value: +{ + "maximum": 1, + "minimum": 0, + "type": "number" +} - added
Input schema / properties / output_formatAdded value: +{ + "enum": [ + "json_rows", + "csv", + "jsonl", + "parquet" + ], + "type": "string" +} - added
Input schema / properties / output_nameAdded value: +{ + "maxLength": 80, + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "from_system", - "items" -]New value: +[ + "items" +]
- Changed
create_geometry_export3 fields changed- added
Input schema / properties / format / enumAdded value: +[ + "geojson", + "geojson_gzip", + "zip" +] - added
Input schema / properties / loc_ids / descriptionAdded value: +"Selected loc_ids. The default synchronous limit is 250; larger calls return a typed operational-limit response." - added
Input schema / properties / output_nameAdded value: +{ + "maxLength": 80, + "type": "string" +}
- Changed
estimate_conversion_job13 fields changed- changed
Input schema / additionalPropertiesPrevious value: -trueNew value: +false - changed
Input schema / anyOfPrevious value: -[ - { - "required": [ - "from_system", - "items" - ] - }, - { - "required": [ - "from_system", - "row_count" - ] - } -]New value: +[ + { + "required": [ + "from_system", + "items" + ] + }, + { + "required": [ + "from_system", + "row_count" + ] + }, + { + "required": [ + "geography_binding", + "items" + ] + }, + { + "required": [ + "geography_binding", + "row_count" + ] + } +] - added
Input schema / properties / bridge_vintageAdded value: +{ + "type": "string" +} - added
Input schema / properties / geography_bindingAdded value: +{ + "additionalProperties": false, + "description": "Known dataset-geography declaration. The estimate verifies it against distinct identifiers and avoids point containment.", + "properties": { + "country_scope": { + "type": "string" + }, + "geo_level": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "integer" + } + ] + }, + "id_column": { + "description": "Identifier-column name for future artifact inputs; inline items continue to use value.", + "type": "string" + }, + "mode": { + "enum": [ + "reference", + "loc_id" + ], + "type": "string" + }, + "system": { + "description": "Declared identifier system. Used when from_system is omitted.", + "type": "string" + }, + "vintage": { + "type": "string" + } + }, + "required": [ + "system" + ], + "type": "object" +} - added
Input schema / properties / iso3Added value: +{ + "type": "string" +} - changed
Input schema / properties / items / descriptionPrevious value: -"Sample or full rows with at least value; row-level systems may override top-level systems."New value: +"Sample or full rows; row-level fields may override top-level defaults." - added
Input schema / properties / items / items / additionalPropertiesAdded value: +false - added
Input schema / properties / items / items / propertiesAdded value: +{ + "bridge_vintage": { + "type": "string" + }, + "data": { + "additionalProperties": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "number" + }, + { + "type": "integer" + }, + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "description": "Original spreadsheet columns to preserve. Column names beginning daedalmap_ are reserved for generated output fields.", + "maxProperties": 200, + "type": "object" + }, + "from_system": { + "type": "string" + }, + "id": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] + }, + "iso3": { + "type": "string" + }, + "limit": { + "maximum": 100, + "minimum": 1, + "type": "integer" + }, + "min_share": { + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "row_index": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] + }, + "target_admin_level": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "integer" + } + ] + }, + "to_system": { + "type": "string" + }, + "value": { + "description": "Identifier value; keep as a string to preserve leading zeros.", + "type": "string" + } +} - added
Input schema / properties / items / items / requiredAdded value: +[ + "value" +] - added
Input schema / properties / limitAdded value: +{ + "maximum": 100, + "minimum": 1, + "type": "integer" +} - added
Input schema / properties / min_shareAdded value: +{ + "maximum": 1, + "minimum": 0, + "type": "number" +} - added
Input schema / properties / output_formatAdded value: +{ + "description": "Enriched-row output format. CSV is spreadsheet-friendly; Parquet is compact and typed; JSON Lines is stream-friendly.", + "enum": [ + "json_rows", + "csv", + "jsonl", + "parquet" + ], + "type": "string" +} - added
Input schema / properties / output_nameAdded value: +{ + "description": "Optional safe base filename.", + "maxLength": 80, + "type": "string" +}
- Changed
estimate_geometry_package3 fields changed- changed
Input schema / properties / format / descriptionPrevious value: -"Requested delivery format: geojson, geojson_gzip, zip, geoparquet, flatgeobuf, or pmtiles."New value: +"Implemented delivery format. Unsupported format names are rejected rather than silently returning another representation." - added
Input schema / properties / format / enumAdded value: +[ + "geojson", + "geojson_gzip", + "zip" +] - added
Input schema / properties / output_nameAdded value: +{ + "description": "Optional safe base filename for the export.", + "maxLength": 80, + "type": "string" +}
- Added
how_geometry_works - Added
identify_reference_system - Changed
resolve_reference1 field changed- changed
Input schema / properties / from_system / descriptionPrevious value: -"Input reference system, such as loc_id, admin_boundary, zip, zcta, overlay_zcta, nws_zone, nws_fire, overlay_nws_fire_weather_zone, tribal, water_body, marine_eez, nuts, historical_country/iso3166_3, or a catalog family id."New value: +"Input reference system, such as loc_id, census_geoid/us_census_geoid, admin_boundary, zip, zcta, overlay_zcta, nws_zone, nws_fire, overlay_nws_fire_weather_zone, tribal, water_body, marine_eez, nuts, historical_country/iso3166_3, or a catalog family id."
1 tool update
- Changed
resolve_point4 fields changed- added
Input schema / properties / bulk_presetAdded value: +{ + "description": "Cross-country fast path that fixes the result level to admin_0 or admin_1. Use instead of country_scope; target_admin_level may be omitted.", + "enum": [ + "global_admin_0", + "global_admin_1" + ], + "type": "string" +} - changed
Input schema / properties / country_scope / descriptionPrevious value: -"Optional ISO3/admin_0 loc_id scope such as USA or CAN. Use only when every point in the request should be resolved inside that one country; this lets the runtime skip global country detection and use one country geometry bank."New value: +"ISO3/admin_0 loc_id scope such as USA or CAN. Optional for up to 25 exploratory points and required for larger batches; every point must belong to this one country." - changed
Input schema / properties / points / descriptionPrevious value: -"Points to resolve. Hosted default free preview is 25 points; larger valid batches return a payment-required quote instead of executing for free."New value: +"Points to resolve. Up to 25 may be exploratory. Above 25, country_scope and target_admin_level are required. Anonymous callers receive a payment challenge; verified accounts have included throughput through 10,000 points." - changed
Input schema / properties / target_admin_level / descriptionPrevious value: -"Optional stopping level such as admin_0 through admin_5. Omit for the normal complete chain through the deepest currently served tier."New value: +"Stopping level such as admin_0 through admin_5. Optional for up to 25 exploratory points and required for larger batches."
1 tool update
- Added
get_tool_help
6 tool updates
- Added
compare_geographies - Changed
get_geometry1 field changed- removed
Input schema / properties / include_infoRemoved value: -{ - "description": "When true for loc_ids batch mode, include heavier loc_id_info enrichment for each result. Default false for lean bulk geometry responses.", - "type": "boolean" -}
- Changed
loc_id_info2 fields changed- changed
Input schema / properties / include_hierarchy / descriptionPrevious value: -"When true, include parent and full ancestor chain. Default false."New value: +"When true, include strict stored parent and ancestor data. This never invents a parent edge across mixed releases. Default false." - changed
Input schema / properties / loc_ids / descriptionPrevious value: -"DaedalMap loc_ids to inspect in one call. Default public cap is deployment-configurable."New value: +"DaedalMap loc_ids to inspect together, including every loc_id from a resolve_point stack. Default public cap is deployment-configurable."
- Changed
read_geometry_catalog2 fields changed- changed
Input schema / properties / limit / descriptionPrevious value: -"Maximum named geometries to return when view='named_geometries'. Default 50."New value: +"Maximum named reference objects to return. Default 50." - changed
Input schema / properties / view / enumPrevious value: -[ - "summary", - "admin_coverage", - "bridges", - "packages", - "named_geometries", - "full" -]New value: +[ + "summary", + "admin_coverage", + "bridges", + "products", + "named_reference_objects", + "full" +]
- Changed
resolve_point2 fields changed- removed
Input schema / properties / include_geometryRemoved value: -{ - "description": "When true, include geometry in resolver internals where available. Default false to keep responses small.", - "type": "boolean" -} - changed
Input schema / properties / target_admin_level / descriptionPrevious value: -"Requested administrative level such as admin_0, admin_1, admin_2, admin_3, admin_4, or admin_5. Default admin_2. Use deepest/all only when the caller explicitly needs the deepest supported local geometry."New value: +"Optional stopping level such as admin_0 through admin_5. Omit for the normal complete chain through the deepest currently served tier."
- Changed
resolve_reference3 fields changed- added
Input schema / properties / as_ofAdded value: +{ + "description": "ISO date or year used to select a time-bounded identity assertion, especially for historical names and codes.", + "type": "string" +} - changed
Input schema / properties / from_system / descriptionPrevious value: -"Input reference system, such as loc_id, admin_boundary, zip, zcta, overlay_zcta, nws_zone, nws_fire, overlay_nws_fire_weather_zone, tribal, water_body, marine_eez, nuts, or a catalog family id."New value: +"Input reference system, such as loc_id, admin_boundary, zip, zcta, overlay_zcta, nws_zone, nws_fire, overlay_nws_fire_weather_zone, tribal, water_body, marine_eez, nuts, historical_country/iso3166_3, or a catalog family id." - added
Input schema / properties / items / items / properties / as_ofAdded value: +{ + "description": "ISO date or year used to select a time-bounded identity assertion.", + "type": "string" +}
2 tool updates
- Changed
get_geometry1 field changed- added
Input schema / properties / include_infoAdded value: +{ + "description": "When true for loc_ids batch mode, include heavier loc_id_info enrichment for each result. Default false for lean bulk geometry responses.", + "type": "boolean" +}
- Added
read_geometry_catalog
1 tool update
- Changed
resolve_point5 fields changed- removed
Input schema / properties / countryRemoved value: -{ - "description": "Alias for parent_loc_id/country_scope when the scope is an ISO3 country code.", - "type": "string" -} - changed
Input schema / properties / country_hint / descriptionPrevious value: -"Alias for parent_loc_id/iso3. Use one country per paid/trusted bulk batch."New value: +"Alias for country_scope for clients that already use hint terminology." - changed
Input schema / properties / country_scope / descriptionPrevious value: -"Alias for parent_loc_id when the scope is an admin_0/country loc_id."New value: +"Optional ISO3/admin_0 loc_id scope such as USA or CAN. Use only when every point in the request should be resolved inside that one country; this lets the runtime skip global country detection and use one country geometry bank." - removed
Input schema / properties / iso3Removed value: -{ - "description": "Alias for parent_loc_id/country_scope when the scope is an ISO3 country code.", - "type": "string" -} - removed
Input schema / properties / parent_loc_idRemoved value: -{ - "description": "Optional country scope such as USA, CAN, or IND. Required for paid/trusted bulk point batches over the free preview limit. Bulk should use one country and one target_admin_level per call.", - "type": "string" -}
1 tool update
- Changed
resolve_point5 fields changed- added
Input schema / properties / countryAdded value: +{ + "description": "Alias for parent_loc_id/country_scope when the scope is an ISO3 country code.", + "type": "string" +} - added
Input schema / properties / country_hintAdded value: +{ + "description": "Alias for parent_loc_id/iso3. Use one country per paid/trusted bulk batch.", + "type": "string" +} - added
Input schema / properties / country_scopeAdded value: +{ + "description": "Alias for parent_loc_id when the scope is an admin_0/country loc_id.", + "type": "string" +} - added
Input schema / properties / iso3Added value: +{ + "description": "Alias for parent_loc_id/country_scope when the scope is an ISO3 country code.", + "type": "string" +} - added
Input schema / properties / parent_loc_idAdded value: +{ + "description": "Optional country scope such as USA, CAN, or IND. Required for paid/trusted bulk point batches over the free preview limit. Bulk should use one country and one target_admin_level per call.", + "type": "string" +}
1 tool update
- Changed
resolve_point2 fields changed- changed
Input schema / properties / points / descriptionPrevious value: -"Points to resolve. Hosted default maximum is 25 points per call."New value: +"Points to resolve. Hosted default free preview is 25 points; larger valid batches return a payment-required quote instead of executing for free." - added
Input schema / properties / target_admin_levelAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "integer" + } + ], + "description": "Requested administrative level such as admin_0, admin_1, admin_2, admin_3, admin_4, or admin_5. Default admin_2. Use deepest/all only when the caller explicitly needs the deepest supported local geometry." +}
8 tool updates
- Changed
convert_reference4 fields changed- added
Input schema / anyOfAdded value: +[ + { + "required": [ + "from_system", + "value", + "to_system" + ] + }, + { + "required": [ + "items" + ] + } +] - added
Input schema / properties / batch_idAdded value: +{ + "description": "Optional caller-supplied batch id for tracing.", + "type": "string" +} - added
Input schema / properties / itemsAdded value: +{ + "description": "Reference conversions to run in one call. Default public cap is deployment-configurable.", + "items": { + "additionalProperties": false, + "properties": { + "bridge_vintage": { + "description": "Optional bridge vintage for this row.", + "type": "string" + }, + "from_system": { + "description": "Input reference system for this row. Defaults to top-level from_system when omitted.", + "type": "string" + }, + "id": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ], + "description": "Optional caller identifier echoed in the result." + }, + "iso3": { + "description": "Optional country hint for this row.", + "type": "string" + }, + "limit": { + "description": "Maximum ranked output references for this row.", + "maximum": 100, + "minimum": 1, + "type": "integer" + }, + "min_share": { + "description": "Optional minimum overlap share threshold for this row.", + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "row_index": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ], + "description": "Optional caller row identifier echoed in the result." + }, + "target_admin_level": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "integer" + } + ], + "description": "Optional intermediate admin target level for this row." + }, + "to_system": { + "description": "Output reference system for this row. Defaults to top-level to_system when omitted.", + "type": "string" + }, + "value": { + "description": "Identifier or name in the input system.", + "type": "string" + } + }, + "required": [ + "value" + ], + "type": "object" + }, + "minItems": 1, + "type": "array" +} - removed
Input schema / requiredRemoved value: -[ - "from_system", - "value", - "to_system" -]
- Added
create_conversion_job - Added
create_geometry_export - Added
estimate_conversion_job - Added
estimate_geometry_package - Added
get_job_status - Added
resolve_loc_id_scope - Changed
resolve_reference4 fields changed- added
Input schema / anyOfAdded value: +[ + { + "required": [ + "from_system", + "value" + ] + }, + { + "required": [ + "items" + ] + } +] - added
Input schema / properties / batch_idAdded value: +{ + "description": "Optional caller-supplied batch id for tracing.", + "type": "string" +} - added
Input schema / properties / itemsAdded value: +{ + "description": "Reference values to resolve in one call. Default public cap is deployment-configurable.", + "items": { + "additionalProperties": false, + "properties": { + "admin_level_hint": { + "description": "Optional admin-level hint for admin/name resolution.", + "maximum": 5, + "minimum": 0, + "type": "integer" + }, + "bridge_vintage": { + "description": "Optional bridge vintage for this row.", + "type": "string" + }, + "country_hint": { + "description": "Optional country hint for admin/name resolution.", + "type": "string" + }, + "from_system": { + "description": "Input reference system for this row. Defaults to top-level from_system when omitted.", + "type": "string" + }, + "id": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ], + "description": "Optional caller identifier echoed in the result." + }, + "iso3": { + "description": "Optional country hint for this row.", + "type": "string" + }, + "limit": { + "description": "Maximum ranked matches for this row.", + "maximum": 100, + "minimum": 1, + "type": "integer" + }, + "min_share": { + "description": "Optional minimum area-share threshold for this row.", + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "row_index": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ], + "description": "Optional caller row identifier echoed in the result." + }, + "target_admin_level": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "integer" + } + ], + "description": "Optional admin target level for this row." + }, + "value": { + "description": "Identifier or name in the input system.", + "type": "string" + } + }, + "required": [ + "value" + ], + "type": "object" + }, + "minItems": 1, + "type": "array" +} - removed
Input schema / requiredRemoved value: -[ - "from_system", - "value" -]
9 tool updates
- Removed
admin_to_sidechain - Added
check_geometry - Removed
get_boundary - Changed
get_geometry4 fields changed- added
Input schema / anyOfAdded value: +[ + { + "required": [ + "loc_id" + ] + }, + { + "required": [ + "loc_ids" + ] + } +] - added
Input schema / properties / batch_idAdded value: +{ + "description": "Optional caller-supplied batch id for tracing.", + "type": "string" +} - added
Input schema / properties / loc_idsAdded value: +{ + "description": "DaedalMap loc_ids to fetch in one call. Default public cap is deployment-configurable and lower when include_polygon is true.", + "items": { + "type": "string" + }, + "type": "array" +} - removed
Input schema / requiredRemoved value: -[ - "loc_id" -]
- Removed
loc_id_hierarchy - Changed
loc_id_info11 fields changed- added
Input schema / anyOfAdded value: +[ + { + "required": [ + "loc_id" + ] + }, + { + "required": [ + "loc_ids" + ] + } +] - added
Input schema / properties / batch_idAdded value: +{ + "description": "Optional caller-supplied batch id for tracing.", + "type": "string" +} - added
Input schema / properties / include_hierarchyAdded value: +{ + "description": "When true, include parent and full ancestor chain. Default false.", + "type": "boolean" +} - added
Input schema / properties / include_referencesAdded value: +{ + "description": "When true, include known external or side-chain references attached to each loc_id. Default false.", + "type": "boolean" +} - added
Input schema / properties / iso3Added value: +{ + "description": "Optional country hint for bridge artifacts. Defaults to the loc_id country when possible.", + "type": "string" +} - added
Input schema / properties / limit_per_systemAdded value: +{ + "description": "Maximum overlap references to return per bridge/system. Default 10.", + "maximum": 100, + "minimum": 1, + "type": "integer" +} - added
Input schema / properties / loc_idsAdded value: +{ + "description": "DaedalMap loc_ids to inspect in one call. Default public cap is deployment-configurable.", + "items": { + "type": "string" + }, + "type": "array" +} - added
Input schema / properties / min_shareAdded value: +{ + "description": "Optional minimum target-area share for reverse overlap references.", + "maximum": 1, + "minimum": 0, + "type": "number" +} - added
Input schema / properties / systemsAdded value: +{ + "description": "Optional reference systems to include when include_references is true, such as zcta, nws_fire, overlay_tribal, or overlay_nws_public_zone.", + "items": { + "type": "string" + }, + "type": "array" +} - added
Input schema / properties / target_admin_levelAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "integer" + } + ], + "description": "Admin level for bridge-backed reverse reference lookup. Inferred when omitted." +} - removed
Input schema / requiredRemoved value: -[ - "loc_id" -]
- Removed
loc_id_references - Changed
resolve_point5 fields changed- added
Input schema / anyOfAdded value: +[ + { + "required": [ + "lat", + "lon" + ] + }, + { + "required": [ + "points" + ] + } +] - added
Input schema / properties / batch_idAdded value: +{ + "description": "Optional caller-supplied batch id echoed in the result.", + "type": "string" +} - added
Input schema / properties / include_geometryAdded value: +{ + "description": "When true, include geometry in resolver internals where available. Default false to keep responses small.", + "type": "boolean" +} - added
Input schema / properties / pointsAdded value: +{ + "description": "Points to resolve. Hosted default maximum is 25 points per call.", + "items": { + "additionalProperties": false, + "properties": { + "id": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ], + "description": "Optional caller point identifier echoed in the result." + }, + "lat": { + "description": "Latitude in WGS84 decimal degrees.", + "maximum": 90, + "minimum": -90, + "type": "number" + }, + "lon": { + "description": "Longitude in WGS84 decimal degrees.", + "maximum": 180, + "minimum": -180, + "type": "number" + }, + "row_index": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ], + "description": "Optional caller row identifier echoed in the result." + } + }, + "required": [ + "lat", + "lon" + ], + "type": "object" + }, + "minItems": 1, + "type": "array" +} - removed
Input schema / requiredRemoved value: -[ - "lat", - "lon" -]
- Removed
sidechain_to_admin
7 tool updates
- Changed
admin_to_sidechain2 fields changed- changed
Input schema / properties / source_family / descriptionPrevious value: -"Side-chain geometry family to return. Use overlay_zcta for Census ZCTAs and overlay_tribal for tribal areas."New value: +"Side-chain geometry family to return. Use overlay_zcta for Census ZCTAs, overlay_tribal for tribal areas, overlay_nws_public_zone for NWS public forecast zones, and overlay_nws_fire_weather_zone for NWS fire weather zones." - changed
Input schema / properties / source_family / enumPrevious value: -[ - "overlay_zcta", - "overlay_tribal" -]New value: +[ + "overlay_zcta", + "overlay_tribal", + "overlay_nws_public_zone", + "overlay_nws_fire_weather_zone" +]
- Added
convert_reference - Added
get_geometry - Added
list_reference_systems - Added
loc_id_references - Added
resolve_reference - Changed
sidechain_to_admin3 fields changed- changed
Input schema / properties / source_family / descriptionPrevious value: -"Side-chain geometry family. Use overlay_zcta for Census ZCTAs and overlay_tribal for tribal areas."New value: +"Side-chain geometry family. Use overlay_zcta for Census ZCTAs, overlay_tribal for tribal areas, overlay_nws_public_zone for NWS public forecast zones, and overlay_nws_fire_weather_zone for NWS fire weather zones." - changed
Input schema / properties / source_family / enumPrevious value: -[ - "overlay_zcta", - "overlay_tribal" -]New value: +[ + "overlay_zcta", + "overlay_tribal", + "overlay_nws_public_zone", + "overlay_nws_fire_weather_zone" +] - changed
Input schema / properties / source_loc_id / descriptionPrevious value: -"Side-chain loc_id. For ZCTAs, either canonical form such as 'USA-Z-10001' or a five-digit ZIP/ZCTA like '10001' is accepted."New value: +"Side-chain loc_id. For ZCTAs, either canonical form such as 'USA-Z-10001' or a five-digit ZIP/ZCTA like '10001' is accepted. For NWS public forecast zones use canonical form such as 'USA-NWSZ-TXZ001'."
Frequently Asked Questions
Claiming proves that you control a remote MCP connector. It does not move, proxy, or interrupt the server.
Open the connector listing, choose Claim ownership, and sign in to Glama.
Complete one verification method:
GitHub identity — fastest for official registry listings. For a namespace such as
io.github.alice/server, link the matching GitHub user, then choose Claim with GitHub. An organization namespace such asio.github.acme/serveralso needs that organization to have installed the Glama AI GitHub App and approved its permissions, because GitHub discloses organization membership only to apps it has installed. Use HTTP or DNS when it has not.HTTP challenge — works when you can deploy a public file. Generate a token, publish the exact JSON Glama shows at
/.well-known/glama.jsonon the same origin as the connector, then choose Check HTTP challenge.DNS challenge — works when you control DNS but cannot change the server. Generate a token, create the exact TXT record Glama shows, wait for it to propagate, then choose Check DNS challenge.
After verification, Glama sends a confirmation email and gives you access to listing details, thumbnails, health checks, and analytics. Keep the HTTP file or DNS record in place: Glama periodically checks it and ownership remains verified while the token is discoverable.
The HTTP ownership file has this structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"claim": "glama_claim_..."
}Claim tokens are opaque, stable, and bound to the signed-in Glama account. They contain no email address or other personal information. If Glama can no longer discover a verified HTTP or DNS token, it starts a seven-day grace period before removing claim-based access. Restore the same token during that period to keep ownership verified. Never publish an email address, Glama session token, GitHub token, or connector credential as ownership proof.
If verification fails, confirm that you copied the current token exactly. The HTTP file must be public, return valid JSON with a successful HTTP response, and stay on the connector's origin. DNS changes may need more time to propagate. A claim cannot transfer to a different origin or hostname: if the connector target changes, Glama starts the grace period and the new target must be claimed separately after the previous claim is released.
For a connector linked to the official MCP Registry, registry updates continue to replace its name, description, and URL by default. After claiming, open Manage connector and enable Use Glama listing details as the source of truth if edits made on Glama should be preserved. Categories and thumbnails are always managed on Glama; registry linkage and technical connection settings continue to sync.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
To improve your MCP server's ranking:
Claim ownership of the server listing
Complete the server profile with an accurate description and thumbnail
Provide a test profile so Glama can connect to and evaluate the server
Keep tool definitions clear and complete to earn a high Tool Definition Quality Score (TDQS)
Route real usage through the Glama Gateway; more recorded successful server uses also improve the ranking
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Related MCP Connectors
- earthOAuthcom.mireye
MCP server for Mireye Earth — federal-source-cited geospatial data for any MCP-aware agent.
Geo-based flight search MCP server. Find more flights between any two places on earth
Geospatial AI MCP server — satellite imagery, embeddings, weather, GNS governance
MCP server for Japan geodata: cadastral lot numbers (chiban) and reverse geocoding, for AI agents.
Related MCP Servers
AlicenseAqualityBmaintenanceAn MCP server for querying the FDSN Web Service Event APIs of multiple seismological datacenters and retrieving earthquake information as JSON.61AGPL 3.0- AlicenseAqualityCmaintenanceMCP server wrapping the USGS Earthquake Hazards API, enabling AI assistants to search the global earthquake catalog, look up event details, count quakes, find 'Did You Feel It' reports, and read realtime feeds.5MIT
- AlicenseNot gradedqualityCmaintenanceAn MCP server that makes live Earth data usable by AI agents. Its initial data sources cover natural hazards: earthquakes from the USGS FDSN event catalog and volcanic activity from the Smithsonian Global Volcanism Program.MIT
- AlicenseNot gradedqualityDmaintenanceA powerful MCP server that connects AI assistants to authoritative natural hazard data sources, enabling monitoring of earthquakes, tsunamis, volcanoes, and solar events with configurable alerts and webhooks.1MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.
TDQS
Most tools have clearly distinct scopes with detailed 'Use this' guidance, but a few pairs like get_disaster_link_chain and get_disaster_links_for_event, or query_dataset versus the specialized get_* event tools, could cause momentary confusion. Overall, descriptions mitigate overlap well.
The majority follow a consistent verb_noun pattern (check_, compare_, convert_, create_, estimate_, get_, list_, resolve_). Minor exceptions like loc_id_info and query_dataset are acceptable but break the pattern slightly.
28 tools exceed the preferred range, but the broad domain spanning disasters, geospatial geometry, reference conversion, and export jobs justifies many of them. Still, the count feels heavy and might overwhelm agents.
The tool surface is remarkably comprehensive: discovery (catalog, pack, geometry catalog), resolution (point, reference, scope), geometry (check, get, compare), conversion (quote, create, status), and disaster events for multiple types. No critical dead ends for the stated domain.