Skip to main content
Glama

DaedalMap

Bring your data. Connect its geography.

DaedalMap is geographic interoperability infrastructure: a loc_id identity model, versioned boundary geometry, published crosswalks between geography systems, and maintained data packs. Resolve coordinates and reference codes to administrative matches, pull compatible shapes and data, and follow crosswalks into other systems such as census tracts, postal areas, watersheds, and electoral districts.

Use it through a remote MCP server, an HTTP API, a map app, downloadable files, or this repository, which is the open runtime behind all of them.

Website | App | Agent docs | Geometry | Data packs | Downloads | Convert a file | llms.txt

Connect an agent

The hosted MCP server needs no install or account for discovery:

https://app.daedalmap.com/mcp?registry=github

Claude Code:

claude mcp add --transport http daedalmap 'https://app.daedalmap.com/mcp?registry=github'

Codex:

codex mcp add daedalmap --url 'https://app.daedalmap.com/mcp?registry=github'

Any client that supports streamable HTTP MCP can use the same URL. Start with get_tool_help with topic='geometry' for geography jobs, or get_catalog, then get_pack, then get_data for data. Setup for other clients is in the agent docs.

Discovery and small geography lookups are free. Larger point/reference batches and some data packs are metered: a paid call returns its exact price before any charge and is paid from account credit with an API key. get_pack reports the access lane for the selected data pack.

Related MCP server: STAC MCP Server

Tools

Job

Tools

Learn the model

get_tool_help with a topic or exact tool name

Find what exists

get_catalog, then get_pack for a data pack or get_geography for a geometry family or scope

Query maintained data

get_data with a pack_id, exact metrics, and structured filters

Inspect one disaster event

get_event with an exact event_id returned by get_data

Coordinates to places

resolve_point, then resolve_deep_point when Admin 4-6 or one deeper family is needed

Rectangular map view to places

resolve_bbox with four WGS84 corners returns ranked Global Admin 0-2 overlaps and percentages

Deeper map view lookup

resolve_deep_bbox with the same corners and a shallow loc_id compares one country's Admin 1-owned partition

Identify a column of codes

identify_dataset_geography, identify_reference_system

Translate codes between systems

convert_reference

Inspect and relate places

get_loc_id_info, compare_geographies

Retrieve shapes

get_shape with exact loc_ids

Each tool takes strict JSON arguments. The calling model turns a user's question into those arguments, and the server returns typed errors with recovery guidance when a call is malformed.

This table is the complete public roster, not a roadmap. Bulk export/job builders and direct upstream live-feed wrappers remain internal or paused and are intentionally absent from tools/list.

The loc_id model

loc_id is DaedalMap's geographic identity model. The administrative spine is the main hierarchy and default join path:

USA                      country
USA-CA                   state
USA-CA-037               county
USA-CA-037-221710        census tract

Other geography families, such as postal areas, watersheds, tribal areas, and marine regions, keep their own loc_id identities. Published crosswalks connect them to the spine and to each other, and each crosswalk row carries its relationship type, overlap weight, source, and vintage. A direct join works when both datasets declare the same identity; otherwise the connection runs through a crosswalk.

Schema details are in docs/DATA_SCHEMAS.md.

Coverage

Geometry: global baseline plus 8+ deeper countries. The same geography tools work worldwide down to Admin 2. Country releases add deeper administrative tiers and reference families for Australia, Brazil, Canada, France, Germany, Mexico, the United Kingdom, the United States, and more as releases publish.

Data: 20+ maintained data packs covering natural hazards (earthquakes, tsunamis, volcanoes, hurricanes, tornadoes, wildfires, floods, weather alerts), hazard risk and environmental burden, economic and business indicators, currency rates, population, and climate.

The catalogs are the authority for what is available now:

Downloads

The Windows launcher's public source, build script, and tests are in tools/launcher. Its portable download keeps programs and its managed runtime in the launcher folder by default.

The Downloads page has three kinds of file:

  • Program - the map app or local MCP runtime, to run DaedalMap on your machine.

  • Data pack - maintained records for a subject, with source and release evidence.

  • Geometry package - boundaries and reference geography for a country or family.

Run it yourself

This repository is the open runtime: the FastAPI server, MCP and HTTP API, and map frontend. Use it to self-host, run against your own data, or extend the engine.

The Network expansion also lives in this repository. It adds optional rail, river, and power layers to the local Mapping map and provides a separate spreadsheet editor and Parquet CLI that run without Mapping. The older Lake County road map editor is archived reference code.

To develop one local program without checking out every source directory, see Work on one local tool. The tool source entries cover Mapping, Network, Research MCP, Geometry MCP, and the optional AI expansion, including their current migration status.

cd county-map
pip install -r requirements.txt
Copy-Item .env.example .env

Set a data folder in .env:

INSTALL_MODE=local
RUNTIME_MODE=local
DATA_ROOT=C:/path/to/your/data

Leave DATA_ROOT blank to use the default app-data folder. No cloud storage, database, or account is needed. The repository does not ship a data folder; docs/DATA_INSTALLATION.md covers installing packs.

python app.py

The app opens at http://localhost:7000, and the same MCP server is at http://localhost:7000/mcp. Discovery routes:

  • GET /api/v1/guide

  • GET /api/v1/catalog

  • GET /api/v1/packs/{pack_id}

  • POST /api/v1/query/dataset

Model API keys are optional. OPENAI_API_KEY or ANTHROPIC_API_KEY powers the built-in chat panel only; MCP clients bring their own model. A self-hosted instance returns commercial_access_unavailable on paid lanes unless you configure a commercial verifier.

Runtime modes

INSTALL_MODE

RUNTIME_MODE

Use

local

local

Your machine, your data folder

local

cloud

Your machine, Parquet read from object storage you configure

cloud

cloud

A server deployment reading object storage

In cloud data mode the runtime caches small metadata files locally and queries Parquet in object storage through DuckDB httpfs. Details are in docs/LOCAL_AND_HOSTED.md.

Documentation

Contact

Questions, feedback, and self-hosting issues: support@daedalmap.com

License

MIT. Data packs and geometry carry their own source licenses, listed in each catalog entry.

For agents reading this repository

If asked to assess DaedalMap, start with the public context map, then use API and MCP contracts for hosted tools and data installation for local artifacts. The source checkout does not include the data packs or geometry packages. Check the live data catalog and geometry catalog before describing current coverage. Distinguish repository code, downloadable artifacts, and hosted service behavior in your answer.

Available Tools

16 tools
compare_geographiesCompare Geographic IdentitiesA
Read-onlyIdempotent
Inspect

Compare two known loc_ids using selected reference-graph identity and direct relationship evidence. Verified Admin ancestry can prove containment; a typed graph edge can prove only the relation it declares. An explicit negative edge returns no_overlap; a missing edge returns unknown. This tool never reads polygons or computes shape intersections. Use an external identifier bridge before this call when the input is not a loc_id. No payment required.

Inputs: as_of, items, batch_id, left_as_of, +5 more. Returns: ok, error, reason, results, +16 more

convert_referenceConvert Geographic ReferenceA
Read-onlyIdempotent
Inspect

Convert within one declared scope per call: iso3 is required and names one ISO3 country, GLOBAL, or MARINE. A batch uses one from_system, to_system, and crosswalk_id, with at most 25000 requested result rows. Convert X -> loc_id -> Y; omit to_system to enter the loc_id universe. For admin or city names use from_system admin_boundary with a country_hint inside the declared country. A published direct crosswalk uses one selected artifact; if the system pair has multiple artifacts, supply crosswalk_id from the typed ambiguity error. An exact miss ends on that artifact. Use get_geography when family or scope coverage is unknown. The tools/list access metadata states authored free, account, and paid item allowances; active operator policy may waive payment.

Inputs: iso3, as_of, items, limit, +11 more. Returns: ok, from, error, loc_id, +15 more

get_catalogList Published Packs or GeographiesA
Read-onlyIdempotent
Inspect

Choose data or geometry to list published pack IDs or family and scope IDs. The response includes a complete catalog download URL. Use get_pack for data or get_geography for geometry.

Inputs: catalog (required). Returns: error, packs, detail, reason, +20 more

get_dataGet DataA
Read-onlyIdempotent
Inspect

Retrieve rows from one selected published data pack using exact metrics, loc_id-based region filters, time/metric filters, sorting, and a row limit. Disaster event rows include stable event_id values for get_event drill-down. A parent administrative loc_id selects matching descendant rows at the pack's published grain. Call get_pack first; geometry families use their focused next-step tools.

Inputs: filters (required), metrics (required), pack_id (required), sort, +3 more. Returns: rows, sort, error, limit, +14 more

get_eventGet EventA
Read-onlyIdempotent
Inspect

Retrieve one exact disaster event and explicitly requested relationships, affected places, native observations, or geometry. Use get_data to obtain the stable event_id first.

Inputs: pack_id (required), event_id (required), source_id (required), limit, +4 more. Returns: error, event, reason, pack_id, +17 more

get_geographyInspect One Geography Family or ScopeA
Read-onlyIdempotent
Inspect

Inspect one published geometry family across scopes or one scope across families. Returns coverage and known editions from catalog metadata only. Optional year selects the latest admitted edition no later than that year when the selected catalog has an edition index; an unavailable index is reported explicitly.

Inputs: year, scope_id, family_id. Returns: error, reason, catalog, coverage, +10 more

get_loc_id_infoInspect Direct loc_id ConnectionsA
Read-onlyIdempotent
Inspect

Look up one known loc_id or a small batch in the selected reference graph. Return its identity and directly recorded loc_id connections, with family, direction, and relationship evidence. Each ID returns at most 50 connections and an explicit has_more flag. This tool does not expand descendants, infer containment, read shapes, search catalogs, or consult external adapters. No payment required.

Inputs: loc_id, loc_ids, batch_id, request_id. Returns: ok, iso3, name, error, +21 more

get_packInspect One Data PackA
Read-onlyIdempotent
Inspect

Inspect one exact data pack ID for its metrics, time coverage, and query metadata before get_data.

Inputs: pack_id (required). Returns: error, detail, reason, catalog, +12 more

get_shapeRetrieve Shapes for Known loc_idsA
Read-onlyIdempotent
Inspect

Shape lookup for exact existing loc_ids only. The default returns shape availability, centroid, and bounding box; include_polygon=true adds GeoJSON coordinates. Obtain any descendant IDs before this call. Historical geometry is returned first and successors are never substituted automatically. Year selection is not yet supported.

Inputs: loc_id, loc_ids, batch_id, request_id, +1 more. Returns: ok, error, items, reason, +13 more

get_tool_helpGet Tool HelpA
Read-onlyIdempotent
Inspect

Describe one tool visible on this facade, including its exact contract, or return a bounded workflow overview for one supported topic.

Inputs: topic, question, tool_name. Returns: ok, error, title, access, +13 more

identify_dataset_geographyChoose Geography Columns From a DatasetA
Read-onlyIdempotent
Inspect

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

Inputs: columns (required), request_id, country_scope, dataset_context. Returns: ok, error, limit, reason, +15 more

identify_reference_systemIdentify One Identifier Column's Reference SystemA
Read-onlyIdempotent
Inspect

Identify one selected identifier column within one required ISO3 country, GLOBAL, or MARINE scope. Pass bounded strings preserving leading zeros. It checks maintained identifier evidence, not dataset columns or polygons. Ambiguous systems stay unselected until expected.system is supplied. Use identify_dataset_geography first when the column is unknown. No payment required.

Inputs: country_scope (required), expected, identifier, request_id, +3 more. Returns: ok, error, limit, reason, +15 more

resolve_bboxResolve Map ViewportB
Read-onlyIdempotent
Inspect

Compare one non-wrapping rectangular WGS84 viewport with the published Global administrative spine through Admin 2. Supply its four corners. Returns the best equal-area overlap plus nearby matches at each level and their shares of the viewport and loc_id. Large views may require zooming in. This tool reads no country deep bank.

Inputs: corners (required), request_id. Returns: ok, bbox, error, reason, +15 more

resolve_deep_bboxResolve Map Viewport (Deep)B
Read-onlyIdempotent
Inspect

Second-pass rectangle overlap within one returned shallow administrative loc_id. Routes to that country's one Admin 1-owned exact partition and compares its Admin 1-6 spine. Supply the original four WGS84 corners; broad views may require zooming in.

Inputs: corners (required), shallow_loc_id (required), request_id. Returns: ok, bbox, error, reason, +15 more

resolve_deep_pointResolve Point(s) (Deep)A
Read-onlyIdempotent
Inspect

Second-pass containment only after resolve_point. Supply the original WGS84 coordinate or a bounded point array, one shared shallow_loc_id returned by resolve_point, and one canonical family from get_catalog(catalog='geometry'). family defaults to administrative; shape-backed families use direct bbox-to-exact-shape lookup without crosswalks. Single and bulk requests share this scoped contract.

Inputs: shallow_loc_id (required), lat, lon, family, +4 more. Returns: ok, error, point, stack, +24 more

resolve_pointResolve Point(s) in One ScopeA
Read-onlyIdempotent
Inspect

Resolve WGS84 coordinates in exactly one selected scope and family. GLOBAL administrative finds Admin0; an ISO3 administrative scope finds its shallow country bank. MARINE requires one specific jurisdiction family (for example exclusive_economic_zone or high_seas), or water_body with water_kind=named or zone. The broad marine_jurisdiction category has no point route. No call crosses scopes or opens another family's bank. Discover families with get_catalog(catalog='geometry').

Inputs: lat, lon, family, points, +4 more. Returns: ok, error, point, stack, +24 more

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.9/5.0

    Scored across 16 tools

    Disambiguation4/5

    Most tools have distinct roles, and the first-pass versus deep-pass resolution tools are explicitly separated in their descriptions. The four resolve_* tools and the sequential identify/convert/compare reference tools could still be confused at a glance, but the descriptions provide enough routing guidance.

    Naming Consistency5/5

    All tool names use snake_case with a predictable verb-first pattern such as get_, resolve_, identify_, convert_, and compare_. Even the multiword names remain consistent and readable.

    Tool Count4/5

    At 16 tools, the surface is slightly above the typical 3-15 range but reasonable for a complex geospatial catalog, resolution, and reference-conversion server. Each tool appears to serve a distinct workflow step rather than duplicating functionality.

    Completeness4/5

    The set covers discovery, pack/geography inspection, point and bbox resolution, deep resolution, identifier identification, conversion, comparison, shape lookup, event drill-down, and data retrieval. Minor gaps exist around broad search or polygon-intersection workflows, but the core read-only geospatial lifecycle is well covered.

    Maintenance

    ActivityActive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      C
      quality
      D
      maintenance
      A Model Context Protocol server that connects LLMs to GIS operations, enabling AI assistants to perform accurate geospatial analysis including geometric operations, coordinate transformations, and spatial measurements.
      87
      204
      MIT
    • A
      license
      B
      quality
      C
      maintenance
      Enables AI assistants to search and access geospatial datasets through STAC (SpatioTemporal Asset Catalog) APIs. Supports querying satellite imagery, weather data, and other geospatial assets with spatial, temporal, and attribute filters.
      11
      20
      MIT
    • A
      license
      A
      quality
      D
      maintenance
      Provides comprehensive geospatial analysis capabilities through Turf.js, enabling spatial measurements, geometric operations, coordinate transformations, and geographic data processing. Supports over 100 geospatial functions including distance calculations, spatial relationships, buffer operations, and grid generation.
      100
      MIT
    • F
      license
      A
      quality
      D
      maintenance
      Provides access to the OpenLandMap STAC catalog, offering over 100 global environmental datasets including soil, climate, and vegetation data. It enables AI agents to discover, search, and retrieve Cloud-Optimized GeoTIFFs for global geospatial analysis.
      27
      -