Daedalmap Geographic Data

Created By
4 hours ago
Overview
<main>
Docs / For Agents

Geographic data for
agents and MCP clients.

Remote MCP server and hosted API for deterministic geography-aware queries. Free discovery. Free and paid execution lanes. Live pack catalog.

<h2>What you get</h2>
<p>
  <span id="agentsPackCountBody">Live packs</span> across disasters, FX
  rates, and global indicators. All packs share a common location model
  and query contract.
</p>
<ul class="detail-list">
  <li><strong>Free:</strong> currency, volcanoes, hurricanes, floods, tornadoes, UN SDG, World Factbook, WorldPop</li>
  <li><strong>Paid via x402 on Base USDC:</strong> earthquakes, tsunamis</li>
</ul>
<p><a class="docs-next-link" href="/docs/packs">Browse all packs</a></p>

<h2>Connect your agent</h2>
<p>
  New here: use plain HTTP for the very first successful result, or use MCP
  if your client already supports remote MCP servers. Both paths hit the
  same hosted backend.
</p>
<ul class="detail-list">
  <li>Remote MCP client: <code>https://app.daedalmap.com/mcp</code></li>
  <li>Plain HTTP: <code>/api/v1/catalog</code>, <code>/api/v1/packs/{pack_id}</code>, <code>/api/v1/query/dataset</code></li>
  <li>Pack-specific registry entry: narrow facades at <code>/mcp/currency</code>, <code>/mcp/earthquakes</code>, etc.</li>
</ul>

<h2>MCP quickstart</h2>
<p>
  If you already have an MCP-capable client, point it at
  <code>https://app.daedalmap.com/mcp</code>, list tools, then call one
  narrow tool. If you just want the fastest first result, skip to
  <a class="docs-next-link" href="/docs/agent-examples">Agent Examples</a>
  and follow the plain HTTP flow first.
</p>
<div class="code-block">
curl https://app.daedalmap.com/mcp

curl -X POST https://app.daedalmap.com/mcp \
  -H "Content-Type: application/json" \
  -H "MCP-Protocol-Version: 2025-06-18" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/list"
  }'
</div>
<ul class="detail-list">
  <li><code>get_catalog</code> &mdash; list every published pack</li>
  <li><code>get_pack</code> &mdash; full pack schema: metric inventory with stats, query rules, and a paste-ready example body. <strong>Call this before any query.</strong></li>
  <li><code>query_dataset</code> &mdash; generic structured query against any pack (matches <code>POST /api/v1/query/dataset</code>)</li>
  <li><code>get_earthquake_events</code>, <code>get_volcanic_activity</code>, <code>get_tsunami_events</code>, <code>get_fx_rates</code> &mdash; narrow per-pack tools with sensible defaults. Use when the question is a simple event or rate fetch for a named region and time window.</li>
</ul>

<h2>One question, every pack</h2>
<p>
  Every pack returns rows keyed on the same <code>loc_id</code>. Earthquakes
  in Japan, the population of Japan, and Japan's currency timeline all come
  back with <code>loc_id=JPN</code>. Cross-pack joins are a client-side zip
  on a single column. No country-name normalization. No fuzzy matching. No
  per-source dictionaries.
</p>
<div class="code-block">
# 1. Earthquake counts for Japan, last 25 years
curl -X POST https://app.daedalmap.com/api/v1/query/dataset \
  -H "Content-Type: application/json" \
  -d '{"source_id":"earthquakes_events",
       "metrics":["event_count"],
       "filters":{"region_ids":["JPN"],
                  "time":{"start":"2000-01-01","end":"2025-12-31"}}}'

# 2. Poverty headcount ratio for Japan, same window
curl -X POST https://app.daedalmap.com/api/v1/query/dataset \
  -H "Content-Type: application/json" \
  -d '{"source_id":"01",
       "metrics":["ind_1_2_1"],
       "filters":{"region_ids":["JPN"],
                  "time":{"start":2000,"end":2025}}}'

# Both responses key on loc_id=JPN. Join in five lines.
</div>
<p>
  This is the differentiator vs single-source MCP wrappers. One geographic
  key across every domain - disasters, demographics, economics, climate,
  currency.
</p>
<p><a class="docs-next-link" href="/docs/loc-id">Learn loc_id</a></p>

<h2>Client setup</h2>
<p>Expand your client below.</p>

<details class="docs-accordion">
  <summary>Claude Code</summary>
  <div class="docs-accordion-body">
    <div class="code-block">
claude mcp add --transport http daedalmap https://app.daedalmap.com/mcp

claude mcp list
    </div>
    <p>JSON config equivalent:</p>
    <div class="code-block">
{
  "mcpServers": {
    "daedalmap": {
      "type": "http",
      "url": "https://app.daedalmap.com/mcp"
    }
  }
}
    </div>
  </div>
</details>

<details class="docs-accordion">
  <summary>Codex</summary>
  <div class="docs-accordion-body">
    <div class="code-block">
codex mcp add daedalmap --url https://app.daedalmap.com/mcp

codex mcp list
    </div>
  </div>
</details>

<details class="docs-accordion">
  <summary>ChatGPT developer mode</summary>
  <div class="docs-accordion-body">
    <ul class="detail-list">
      <li>Enable developer mode in ChatGPT settings.</li>
      <li>Add a remote MCP connector.</li>
      <li>Use <code>https://app.daedalmap.com/mcp</code> as the server URL.</li>
    </ul>
  </div>
</details>

<details class="docs-accordion">
  <summary>Gemini SDK</summary>
  <div class="docs-accordion-body">
    <div class="code-block">
from google import genai

client = genai.Client()

mcp_server = {
    "type": "mcp_server",
    "name": "daedalmap",
    "url": "https://app.daedalmap.com/mcp",
}

interaction = client.interactions.create(
    model="gemini-2.5-flash",
    input="List the published DaedalMap packs and suggest one first query.",
    tools=[mcp_server],
)
    </div>
  </div>
</details>

<details class="docs-accordion">
  <summary>Mistral SDK</summary>
  <div class="docs-accordion-body">
    <p>
      If your Mistral runtime supports a remote MCP client, point it at
      <code>https://app.daedalmap.com/mcp</code>. Otherwise use the hosted HTTP API
      at <code>/api/v1/</code> directly.
    </p>
  </div>
</details>

<details class="docs-accordion">
  <summary>Local and open-weight runtimes</summary>
  <div class="docs-accordion-body">
    <p>
      If your agent framework supports remote MCP, use
      <code>https://app.daedalmap.com/mcp</code>. Otherwise call
      <code>/api/v1/catalog</code>, <code>/api/v1/packs/{pack_id}</code>, and
      <code>/api/v1/query/dataset</code> directly.
    </p>
  </div>
</details>

<h2>First flow</h2>
<ol class="detail-list">
  <li>Call <code>GET /api/v1/catalog</code> &mdash; see all live packs at a glance.</li>
  <li>Call <code>GET /api/v1/packs/{pack_id}</code> for each pack you plan to use. This is the workhorse endpoint. It returns the complete metric inventory with per-metric statistics, a <code>quick_start</code> block with step-by-step rules and a paste-ready query body, temporal and geographic coverage, and the list of countries missing from each metric. Read <code>quick_start.important_rules</code> before writing any query.</li>
  <li>Copy <code>quick_start.first_query_template</code> and modify <code>region_ids</code>, <code>time</code>, and <code>metrics</code> to match your question.</li>
  <li>Call <code>POST /api/v1/query/dataset</code>. Free packs return rows directly. Paid packs return a <code>402</code> challenge with the exact price; retry with payment.</li>
  <li>For questions that cross two packs, run step 4 once per pack and join rows on <code>loc_id</code> client-side.</li>
</ol>
<p>
  The metric stats block (<code>min</code>, <code>median</code>, <code>max</code>)
  in the pack response is a diagnostic tool, not just a description. If a max value
  looks like a year or an implausible number, that signals a data quality edge case
  worth checking before building on that metric.
</p>
<p><a class="docs-next-link" href="/docs/agent-examples">Copyable request shapes for every pack</a></p>

<h2>Canonical first, live second</h2>
<p>
  Agent callers should prefer DaedalMap's hosted canonical pack tools first.
  For earthquakes and tsunamis, that means using the published pack lanes
  and their processed event history before considering any upstream wrapper.
</p>
<ul class="detail-list">
  <li><strong>Preferred:</strong> <code>get_earthquake_events</code> and <code>/api/v1/query/dataset</code> against the <code>earthquakes</code> pack.</li>
  <li><strong>Routing hint:</strong> use <code>get_pack</code> as the source of truth for <code>canonical_available_through</code>, <code>preferred_tool</code>, and any <code>live_fallback_tool</code> guidance.</li>
  <li><strong>Fallback only:</strong> live wrapper tools for preliminary upstream data when the caller explicitly asks for live/preliminary updates or needs a window not yet present in the canonical hosted lane.</li>
  <li><strong>Explore mode:</strong> the human Explore chat should stay on DaedalMap canonical data and should not silently switch to an upstream live wrapper.</li>
</ul>
<p>
  This keeps cross-pack joins, <code>loc_id</code> alignment, enriched fields,
  and published artifact behavior stable by default.
</p>

<h2>Pricing</h2>
<p>
  Base price is <code>$0.01</code> for up to 100 rows, then <code>$0.0001</code>
  per additional row. The <code>402</code> challenge shows the exact amount before
  any charge. Requests above the pack row limit are rejected rather than charged.
</p>
</main>

<footer class="site-footer">
  <span>DaedalMap</span>
  <div class="site-footer-links">
    <a href="/">Home</a>
    <a href="/about">About</a>
    <a href="/explore">Explore</a>
    <a href="/research">Research</a>
    <a href="/ops">Ops</a>
    <a href="/docs/for-agents">Agents</a>
    <a href="/feeds">Feeds</a>
    <a href="/packs">Packs</a>
    <a href="/docs">Docs</a>
    <a href="https://www.daedalmap.com/account">Account</a>
    <a href="/docs/faq">FAQ</a>
    <a href="https://app.daedalmap.com" target="_blank" rel="noreferrer" data-secure-app-link>App</a>
    <a href="https://github.com/xyver/daedal-map" target="_blank" rel="noreferrer">GitHub</a>
    <a href="/privacy">Privacy</a>
  </div>
</footer>

Server Config

{
  "mcpServers": {
    "daedalmap": {
      "url": "https://app.daedalmap.com/mcp?registry=mcpso"
    }
  }
}
Project Info
Created At
4 hours ago
Updated At
4 hours ago
Author Name
-
Star
-
Language
-
License
-
Category

Recommend Servers

View All
Howtocook Mcp

9 hours ago
Sellerguide

25 minutes ago
Demand Chain - AI Agent native demand matching platform
@文明天梯

让你的Agent来跟全世界对接需求,你的AI助理帮你把需求传达出去,又帮你接受别人给你的需求。 需求链平台是将整个人类联结在一起的一个工具,组成一个网络。 告诉你的AI助理,你的需求,Agent会在需求链平台上寻找到能解决你需求的人。 别人也会将他的需求传达给你,你接受你能处理的需求,你也可以将这个需求拆分,变成数个小的需求,继续放在需求链上传递下去。 比如说你想要一种技术的创新,一个人工智能的新算法,或者是需要一种新材料,想要一种新的解决方案,去解决工作生活中的真实痛点。 你或许有一个天才的想法,需要有人与你一起去验证是否可行。 或者你已经有一套成功的技术,需要让全世界都知道你的方案。 总之每个人都有各种需求需要解决,而需求链平台,就是帮你解决各种需求而存在的机制。 赶快打开你的Agent,告诉他,你的需求吧。 此需求链平台是地球人类共有的基础设施,永久开源,中立,免费。 Let your Agent connect with demands from across the globe. Your AI assistant will forward your requests and receive demands from others for you. The Demand Chain Platform is a tool that unites all humanity into a connected network. Simply tell your AI assistant what you need, and your Agent will find people on the platform who can address your requirements. Others will also send their demands to you. You may take on tasks you are capable of handling, or split a single demand into several smaller ones to keep them circulating on the Demand Chain. For instance, you may seek technological innovation, a new AI algorithm, advanced new materials, or practical solutions to real problems in work and daily life. You might have a brilliant idea and need partners to verify its feasibility. Or you possess proven technologies and wish to share your solutions with the whole world. Everyone has various needs to fulfill, and the Demand Chain Platform is built precisely for this purpose. Launch your Agent and submit your demands right away. As a shared infrastructure for all people on Earth, this Demand Chain Platform is permanently open-source, neutral and free of charge.

14 hours ago
Sellerguide

23 minutes ago