APIドキュメント(β)
国土DBのAPIは、住所または自治体コードを渡すと、その場所のデータをまとめて返します。JSONで9つのエンドポイント、AIから使うMCPも同じデータを返します。APIキーは/developersから無料で発行できます(キーごと60 req/min、1日あたり通常1000リクエスト)。商用利用の可否を確認できたデータに限って公開しているβ版です。
クイックスタート
-
APIキーを発行する
/developers でGoogleアカウントにサインインし、「新しいキーを発行」を押します。キーは発行画面でしか表示されないので、その場で控えてください。
-
1コール投げてみる
千代田区(
13101)のプロファイルを取得します。curl "https://kokudodb.jp/v1/munis/13101" \ -H "Authorization: Bearer YOUR_API_KEY" -
AIから使う
同じキーで
POST /mcpにつなぐと、会話から住所や自治体名を伝えるだけで9つのツールを呼べます。手順はClaudeから使う / ChatGPTから使うにあります。
認証とレート制限
全 /v1/* エンドポイントと POST /mcp は Authorization: Bearer <API key> が必須です。ヘッダ以外の渡し方(クエリパラメータや X-API-Key)には対応していません。
| 項目 | 値 |
|---|---|
| ベースURL | https://kokudodb.jp |
| 認証 | Authorization: Bearer <API key> |
| レート制限 | β期間中: キーごと 60 req/min、かつ1日あたり通常 1000 リクエスト(どちらかを超えると 429)β終了後: プラン別(Freeは100回/日を予定しています。β期間中の上限とは異なります。詳しくは料金プラン) |
| キーの保有上限 | 1ユーザーあたり有効なキー 5 件まで |
| 認証不要 | /health と /openapi.json のみ |
| 料金 | β期間中は課金しません |
キーが漏れたときは /developers でそのキーを失効させ、新しいキーを発行してください。失効は取り消せません。
レスポンスの構造
全レスポンスの最上位に service_phase(現在は beta)が入ります。自治体系のエンドポイントは、自治体のメタ情報と layers 配列を返します。1レイヤー = 1配列要素ではなく、1レイヤーブロック = 1要素です(同じ layer_id が複数のブロックに分かれることがあります。例: KSJ:A55 は用途地域構成の zoning_youto と、それ以外の規制の regulation_a55)。
| フィールド | 内容 |
|---|---|
block_id | ブロックの識別子。同一 layer_id 内の複数ブロックを区別する |
layer_id | 元データのレイヤー識別子(例 KSJ:A55、KOKUDO:URBANPLAN) |
status | 下記「レイヤーブロックのステータス」の4値 |
license | class / label / evidence_url。台帳で確認できた利用条件 |
source | provider / fiscal_years / attribution。表示・再配布時はこの attribution を出典として明示してください |
data | 実データ。status が unavailable_* のときは必ず null |
quality_flags | 品質上の注意(無ければ空配列) |
rows_contributed / rows_excluded | 集計に何行寄与し、何行を除外したかの透明性情報 |
日付の形式
decision_date / last_checked_at は ISO 8601 形式(例 "2025-03-25" や "2026-08-19T23:49:04+00:00")で返ります。一方 /v1/license/* 系の confirmed_at / reconfirm_due は ISO 8601 ではなく "Tue, 25 Mar 2025 00:00:00 GMT" 形式(RFC 1123、常にUTC)で返ります。フィールドによって形式が異なるので、パースするときは対象フィールドの形式を確認してください。
エンドポイント
パラメータ・型の一覧はAPIリファレンス(ReDoc、/openapi.json から生成)にあります。ここでは使い方と実レスポンスを載せます。
/healthスナップショットの読み込み状態を返します。認証不要です。
- パラメータなし
キー: status / service_phase / gold_snapshot / ledger_cache / api_key_store / address_resolution。各ストアは loaded を返し、読み込み済みのものは stale・age_seconds も返します(未ロードのストアは loaded だけのことがあります)。
/v1/profile住所文字列・自治体コード・place_id のいずれか1つから、その場所のプロファイルを1コールで返します。
q— 住所文字列(例東京都千代田区霞が関一丁目)muni_code— 5桁の市区町村コードplace_id— 国土DBの place_id- 3つは同時指定できません(いずれか1つが必須)。2つ以上渡すと
400です。
curl "https://kokudodb.jp/v1/profile?muni_code=13101" \
-H "Authorization: Bearer YOUR_API_KEY"
/v1/munis/{muni_code}自治体プロファイル。用途地域・地価・将来推計人口・学校・医療・標高・行政区域に加えて、政策データ(policies)と上場企業拠点(companies)まで、レイヤーブロックをまとめて1コールで返します。返るブロックは自治体の収録状況によって変わります。
muni_code必須 — 5桁の市区町村コード(パス)
curl "https://kokudodb.jp/v1/munis/13101" \
-H "Authorization: Bearer YOUR_API_KEY"
レスポンス例(千代田区。layers は先頭1ブロックのみ、categories は上位2件のみ抜粋)
{
"service_phase": "beta",
"muni_code": "13101",
"pref_code": "13",
"muni_name": "千代田区",
"pref_name": "東京都",
"ward_name": null,
"is_designated_city_ward": false,
"city_layer_scope": "municipality",
"city_layer_muni_code": "13101",
"layers": [
{
"block_id": "zoning_youto",
"layer_id": "KSJ:A55",
"name": "用途地域構成",
"status": "ok",
"license": {
"class": "commercial_ok",
"evidence_url": "https://nlftp.mlit.go.jp/ksj/gml/datalist/KsjTmplt-A55-2024.html",
"label": "CC_BY_4.0(オープンデータ)"
},
"source": {
"attribution": "国土交通省 国土数値情報(都市計画決定情報)を加工して作成",
"fiscal_years": [2024],
"provider": "国土交通省 国土数値情報"
},
"data": {
"a55_scope": "municipality",
"total_area_sqm": 11363503.3,
"feature_count": 94,
"categories": [
{
"area_sqm": 6951162.3,
"bcr_pct_area_weighted": 80,
"far_pct_area_weighted": 706.2,
"feature_count": 67,
"youto_code": "10",
"youto_name": "商業地域"
},
{
"area_sqm": 3595715.9,
"bcr_pct_area_weighted": 60,
"far_pct_area_weighted": 321.1,
"feature_count": 10,
"youto_code": "5",
"youto_name": "第1種住居地域"
}
]
},
"quality_flags": [],
"rows_contributed": 94,
"rows_excluded": 0
}
]
}
block_id の並び: zoning_youto / regulation_a55 / landprice / population_mesh / schools / medical / elevation / administrative / policies / companies / urban_planning。収録状況によって出ないブロックがあります。
/v1/munis/{muni_code}/land-prices地価公示(KSJ:L01)と都道府県地価調査(KSJ:L02)を、用途区分別の年次系列(yearly)と現年の地点明細(current_points)で返します。ブロックは landprice_detail_l01 と landprice_detail_l02 の2つです。
muni_code必須 — 5桁の市区町村コード(パス)from— 開始年度(西暦)to— 終了年度(西暦)
curl "https://kokudodb.jp/v1/munis/13101/land-prices?from=2020&to=2025" \
-H "Authorization: Bearer YOUR_API_KEY"
レスポンス例(yearly 2件・current_points 1件のみ抜粋)
{
"service_phase": "beta",
"muni_code": "13101",
"layers": [
{
"block_id": "landprice_detail_l01",
"layer_id": "KSJ:L01",
"status": "ok",
"source": {
"attribution": "国土交通省 国土数値情報(地価公示)を加工して作成",
"fiscal_years": [2020, 2021, 2022, 2023, 2024, 2025, 2026],
"provider": "国土交通省 国土数値情報"
},
"data": {
"yearly": [
{
"fiscal_year": 2020,
"point_count": 2,
"price_avg_yen_per_sqm": 2255000.0,
"price_max_yen_per_sqm": 2960000,
"price_median_yen_per_sqm": 1550000,
"price_min_yen_per_sqm": 1550000,
"use_category": "1住居",
"yoy_change_pct_avg": null
},
{
"fiscal_year": 2020,
"point_count": 7,
"price_avg_yen_per_sqm": 2841429.0,
"price_max_yen_per_sqm": 4050000,
"price_median_yen_per_sqm": 3030000,
"price_min_yen_per_sqm": 1850000,
"use_category": "2住居",
"yoy_change_pct_avg": null
}
],
"current_points": [
{
"address": "東京都 千代田区二番町3番4",
"lat": 35.68586806,
"lon": 139.73710306000004,
"point_id": "L01-26:007233",
"price_yen_per_sqm": 5640000,
"use_category": "商業",
"yoy_change_pct": 8.7
}
]
}
}
]
}
yearly は「年度 × 用途区分」で1行です。自治体全体の1本の系列ではないので、合算するときは use_category をまたぐ集計になることに注意してください。
/v1/munis/{muni_code}/zoning用途地域のサマリだけを返します(/v1/munis/{muni_code} の zoning_youto と regulation_a55 相当)。bcr_pct_area_weighted は建蔽率、far_pct_area_weighted は容積率で、どちらも面積加重平均です。
muni_code必須 — 5桁の市区町村コード(パス)
curl "https://kokudodb.jp/v1/munis/13101/zoning" \
-H "Authorization: Bearer YOUR_API_KEY"
/v1/munis/{muni_code}/planning-history都市計画の決定・変更イベントを、決定日・告示番号・種別・区域名と一次出典つきで返します。国土数値情報ではなく当社が自治体・都道府県の一次資料から収集したデータで、収録は当社が集められた範囲にとどまります。データが無い場合も、その理由を coverage_reason で返します。
muni_code必須 — 5桁の市区町村コード(パス)from/to— 決定日の範囲(YYYY-MM-DD)plan_type— 種別で絞り込む(文字列が一致するものだけを返す。例用途地域、区域区分)limit— 既定 50、最大 200cursor— 前回応答のnext_cursor(内容は不透明。そのまま渡す)
curl "https://kokudodb.jp/v1/munis/23209/planning-history?limit=3" \
-H "Authorization: Bearer YOUR_API_KEY"
レスポンス例(碧南市。events は先頭1件のみ抜粋)
{
"service_phase": "beta",
"muni_code": "23209",
"coverage": "some",
"coverage_reason": null,
"coverage_category": null,
"city_layer_scope": "municipality",
"events": [
{
"decision_event_id": "89899abdf686c5740817061527c3466c",
"decision_date": "2025-03-25",
"notice_number": "愛知県告示第163号",
"plan_type": "臨港地区",
"area_name_raw": "碧南市",
"area_name_normalized": "碧南市",
"deciding_authority": "prefecture",
"deciding_body_code": "23",
"event_type": null,
"event_type_note": "記載なし(一次資料参照)",
"evidence_sources": ["muni_document"],
"source_document": "https://www.pref.aichi.jp/soshiki/toshi/r6-aichi-toshikeikaku-kokuzi.html",
"text_source": "html_table",
"also_reported_in": [],
"conflicts": [],
"candidate_duplicate_group_id": null
}
],
"next_cursor": null
}
並び順は決定日の新しい順です。event_type が null のときは、一次資料に決定・変更の別が書かれていなかったという意味で、event_type_note にその旨が入ります(推測で埋めません)。
/v1/layers既知レイヤーのカタログ。まだ取り込んでいないレイヤーも含めて、ingested(取り込み済みか)と servable(配信してよいか)を返します。どのデータが利用可能かをコード側で判定するときは、この一覧を使ってください(画面の文言をパースしないでください)。
- パラメータなし
レスポンス例(layers は先頭2件のみ抜粋)
{
"service_phase": "beta",
"ledger_ready": true,
"status_enum": [
"ok",
"unavailable_due_to_license",
"unavailable_due_to_not_ingested",
"experimental"
],
"layers": [
{
"layer_id": "KSJ:A55",
"name": "都市計画決定情報",
"provider": "国土交通省 国土数値情報",
"attribution": "国土交通省 国土数値情報(都市計画決定情報)を加工して作成",
"evidence_url": "https://nlftp.mlit.go.jp/ksj/gml/datalist/KsjTmplt-A55.html",
"license_class": "commercial_ok",
"ingested": true,
"servable": true,
"quality_flags": []
},
{
"layer_id": "KSJ:L01",
"name": "地価公示",
"provider": "国土交通省 国土数値情報",
"attribution": "国土交通省 国土数値情報(地価公示)を加工して作成",
"evidence_url": "https://nlftp.mlit.go.jp/ksj/gml/datalist/KsjTmplt-L01.html",
"license_class": "commercial_ok",
"ingested": true,
"servable": true,
"quality_flags": []
}
]
}
/v1/license/resolveレイヤー(必要なら年度・都道府県・自治体まで絞って)の利用条件を台帳から解決します。台帳に該当が無ければ配信しない fail-close です。servable が false のデータは data が null になります。
layer_id必須 — 例KSJ:A55fiscal_year— 年度で条件が違う場合に指定pref_code/muni_code— 地域で条件が違う場合に指定
レスポンス例
{
"service_phase": "beta",
"layer_id": "KSJ:A55",
"license_class": "commercial_ok",
"license_label": "CC_BY_4.0(オープンデータ)",
"servable": true,
"evidence_url": "https://nlftp.mlit.go.jp/ksj/gml/datalist/KsjTmplt-A55-2024.html",
"matched_ledger_id": "KSJ:A55|fy=ALL|pref=ALL|muni=ALL",
"confirmed_at": "Mon, 17 Aug 2026 00:00:00 GMT",
"reconfirm_due": "Tue, 17 Aug 2027 00:00:00 GMT",
"queried_fiscal_year": null,
"queried_pref_code": null,
"queried_muni_code": null
}
/v1/license/ledgerあるレイヤーの台帳エントリ一覧(公開して安全な列のみ)。confirmed_at はその条件を確認した日、reconfirm_due は再確認の期限です。
layer_id必須
/v1/munis/{muni_code}/disaster-context災害リスク要約・過去の災害履歴・防災計画の要点・避難所やインフラの文脈を1コールで返します。収録は当社が集められた範囲にとどまり、ブロックごとに coverage を返します。評価語や色分類は含みません(数値と区分のみ)。
muni_code必須 — 5桁の市区町村コード(パス)
/mcpMCP(streamable HTTP、JSON-RPC 2.0)。詳細は下のMCPの節を参照してください。
エラー
エラーは常に error.code と error.message を持つ同じ形で返ります。
| HTTP | error.code | 意味 |
|---|---|---|
| 400 | bad_request | パラメータが不正(q と muni_code の同時指定、limit の範囲外など) |
| 401 | unauthorized | Bearerヘッダが無い、またはキーが無効・失効済み |
| 404 | not_found | その muni_code / place_id が存在しない |
| 405 | method_not_allowed | そのパスで許可されていないHTTPメソッド |
| 429 | rate_limited | レート制限(キーごと 60 req/min、または1日あたり通常 1000 リクエスト)を超過。Retry-After ヘッダに待つべき秒数が入ります(分の上限なら60秒、日次の上限なら日本時間0時までの秒数) |
| 503 | service_unavailable | スナップショット未ロード、またはライセンス台帳が古い(fail-close)。Retry-After ヘッダを返すので、少し待って再試行してください |
エラーレスポンスの実例
// 401: ヘッダ無し
{"error": {"code": "unauthorized", "message": "Authorization: Bearer <API key> ヘッダが必要です"}}
// 404: 存在しない自治体コード
{"error": {"code": "not_found", "message": "muni_code が見つかりません: '99999'"}}
// 400: q と muni_code の同時指定
{"error": {"code": "bad_request", "message": "q / muni_code / place_id は同時指定禁止(指定: q, muni_code)"}}
404 と「データが無い」は別物です。 自治体は存在するがそのデータを持っていない場合、404 ではなく 200 を返し、ブロックの status や coverage で理由を伝えます。下の2節を参照してください。
レイヤーブロックのステータス
各レイヤーブロックは block_id(同一 layer_id 内の複数ブロックを区別、例: KSJ:A55 の zoning_youto=用途地域構成 / regulation_a55=それ以外の規制)と status を持ちます。unavailable_* の場合、data は必ず null です。
ok— 利用可能。ただしdataが{"coverage": "none"}の場合は「ライセンス上は問題ないが対象データが無い」ことを意味します(例: 都市計画区域外の自治体には用途地域決定情報が存在しません)unavailable_due_to_license— ライセンス未許諾(fail-close)unavailable_due_to_not_ingested— 未収録レイヤーexperimental— 実験的(レイヤーブロック全体。将来推計人口population_meshが該当)
政令指定都市の行政区(例: 浜松市中央区)は /v1/munis/{muni_code} レスポンスの city_layer_scope が city_aggregate になり、用途地域・学校データは市集約コード(city_layer_muni_code)単位の値が返ります(区別のデータは国土数値情報側で配布されていないため)。
データが無いときの返し方
都市計画決定の履歴(planning-history / urban_planning ブロック)は、データが無いときに黙って空配列を返すのではなく、なぜ無いのかを返します。「そもそも対象外」なのか「当社がまだ集められていない」のかを、利用者側で区別できるようにするためです。
coverage_category | 意味 | coverage_reason |
|---|---|---|
out_of_scope | 対象外。都市計画区域を持たない自治体 | outside_city_planning_area |
not_exists | 不存在。区域内だが指定自体が無い(白地) | outside_zoning |
not_found | 未発見(未到達)。当社の収集がまだ届いていない | not_published_online(オンライン未公開) |
not_yet_crawled(未着手) | ||
extraction_failed(抽出失敗) | ||
not_reached_after_remedies(複数手段でも到達できず) |
coverage が some のとき、coverage_reason と coverage_category は null です。last_checked_at は最後に確認した日時を返します。
データが無いときのレスポンス例
{
"service_phase": "beta",
"muni_code": "13101",
"coverage": "none",
"coverage_category": "not_found",
"coverage_reason": "extraction_failed",
"city_layer_scope": "municipality",
"city_layer_muni_code": null,
"events": [],
"last_checked_at": "2026-08-21T07:36:48+00:00",
"next_cursor": null
}
MCP
POST /mcp はstreamable HTTP(JSON-RPC 2.0)で、ツール9種を公開しています。REST APIと同じキーを Authorization: Bearer ヘッダで渡します。対応メソッドは initialize / tools/list / tools/call で、notifications/* には 202 を返します。
| 項目 | 値 |
|---|---|
| エンドポイント | https://kokudodb.jp/mcp |
| トランスポート | MCP streamable HTTP(JSON-RPC 2.0、単一JSON応答) |
| プロトコルバージョン | 2025-06-18 |
| 認証 | Authorization: Bearer <API key>(全メソッド必須) |
| サーバー名 | kokudodb |
| ツール数 | 9 |
SSEストリーミング(GET /mcp)には未対応です。未認証の GET /mcp は 401 +WWW-Authenticate を返し、認証済みの GET には 405 を返します。
ツール
| ツール名 | 説明 | 引数 |
|---|---|---|
get_land_profile |
住所/自治体コード/place_idから国土プロファイル(用途地域・地価・人口推計等)を1コールで取得する。結果には常に `freshness` を含む。キャッシュされた gold snapshot が鮮度SLAを超過していても、配信上限(既定7日、`freshness.stale_serve_max_seconds`)以内であれば結果は返り `freshness.stale=true` になる(この配信上限は `freshness.loaded_at` 起点のキャッシュ滞留時間であり、上流データの古さそのものの上限ではない。超えると失敗する)。`freshness.data_as_of` は対象 Gold テーブルの最終変更時刻の最大値であり、元資料の基準日や全ブロックの鮮度を保証するものではない(`null` は基準時刻不明を意味する)。`freshness.loaded_at`(このプロセスがキャッシュをロードした時刻)とは別物。`freshness.stale=false` も上流の最新資料が反映されている保証にはならない。`freshness.stale=true` を受け取った場合は、結果に更新遅延がある旨を利用者に示すこと。 | muni_code / place_id / q |
get_muni_profile |
自治体プロファイル(用途地域・地価・将来人口・施設数・標高・行政区域)を取得する。結果には常に `freshness` を含む。キャッシュされた gold snapshot が鮮度SLAを超過していても、配信上限(既定7日、`freshness.stale_serve_max_seconds`)以内であれば結果は返り `freshness.stale=true` になる(この配信上限は `freshness.loaded_at` 起点のキャッシュ滞留時間であり、上流データの古さそのものの上限ではない。超えると失敗する)。`freshness.data_as_of` は対象 Gold テーブルの最終変更時刻の最大値であり、元資料の基準日や全ブロックの鮮度を保証するものではない(`null` は基準時刻不明を意味する)。`freshness.loaded_at`(このプロセスがキャッシュをロードした時刻)とは別物。`freshness.stale=false` も上流の最新資料が反映されている保証にはならない。`freshness.stale=true` を受け取った場合は、結果に更新遅延がある旨を利用者に示すこと。 | muni_code* |
get_land_price_trends |
自治体の地価公示(L01)/地価調査(L02)時系列と現年地点明細を取得する。結果には常に `freshness` を含む。キャッシュされた gold snapshot が鮮度SLAを超過していても、配信上限(既定7日、`freshness.stale_serve_max_seconds`)以内であれば結果は返り `freshness.stale=true` になる(この配信上限は `freshness.loaded_at` 起点のキャッシュ滞留時間であり、上流データの古さそのものの上限ではない。超えると失敗する)。`freshness.data_as_of` は対象 Gold テーブルの最終変更時刻の最大値であり、元資料の基準日や全ブロックの鮮度を保証するものではない(`null` は基準時刻不明を意味する)。`freshness.loaded_at`(このプロセスがキャッシュをロードした時刻)とは別物。`freshness.stale=false` も上流の最新資料が反映されている保証にはならない。`freshness.stale=true` を受け取った場合は、結果に更新遅延がある旨を利用者に示すこと。 | from / muni_code* / to |
get_zoning_summary |
自治体の都市計画決定情報(A55)サブタイプ別サマリを取得する。結果には常に `freshness` を含む。キャッシュされた gold snapshot が鮮度SLAを超過していても、配信上限(既定7日、`freshness.stale_serve_max_seconds`)以内であれば結果は返り `freshness.stale=true` になる(この配信上限は `freshness.loaded_at` 起点のキャッシュ滞留時間であり、上流データの古さそのものの上限ではない。超えると失敗する)。`freshness.data_as_of` は対象 Gold テーブルの最終変更時刻の最大値であり、元資料の基準日や全ブロックの鮮度を保証するものではない(`null` は基準時刻不明を意味する)。`freshness.loaded_at`(このプロセスがキャッシュをロードした時刻)とは別物。`freshness.stale=false` も上流の最新資料が反映されている保証にはならない。`freshness.stale=true` を受け取った場合は、結果に更新遅延がある旨を利用者に示すこと。 | muni_code* |
resolve_license |
レイヤーのライセンス許諾状態をfail-closeで解決する(台帳公開面)。 | fiscal_year / layer_id* / muni_code / pref_code |
list_layers |
既知の全レイヤー(未投入含む)のingest状態・servable状態カタログを取得する。 | — |
get_planning_history |
自治体の都市計画決定・変更イベント(決定日・告示番号・種別・区域名 + 一次出典)の時系列を取得する。データが無い場合も不存在/対象外/未発見(未到達)の理由を返す(全国網羅ではない、自社収集の一次資料ベース)。 | cursor / from / limit / muni_code* / plan_type / to |
get_disaster_risk_point |
住所/place_idから町字代表点の災害リスク(地震・液状化・洪水〈内水を含む〉・津波・高潮・土砂)を1コールで取得する。災害種別は内水を含む7種、status は 区域内/区域外/未評価/提供不可/利用不能 のいずれか。スコア(0-100)と全国順位(%)は 地震・液状化・洪水・津波・高潮・土砂 の6種のみ(内水は独立のスコア・順位を持たず洪水スコアに統合される入力。内水の提供可否は洪水とは別の利用条件確認による)。全国順位(percentile)の母集団は災害種別で異なる(地震・液状化は全国の125m区画、洪水・津波・高潮・土砂災害はその災害の想定区域内と判定された区画のみが母集団)。洪水・津波・高潮の順位は status=in_area の時のみ算出する(区域外で順位が無いのは障害でもライセンス上の理由でもない)。status=利用不能(unavailable) は供給データまたは配信処理が一時的に使えない状態で、区域外やリスクが無いことを示すものではない。値は町字代表点(125mメッシュ)の判定であり、実際の被害範囲は周辺375m四方でも異なりうる(区域外=安全の意味ではない)。評価語(安全/危険等)は含まない。提供できる災害種別は都道府県ごとのライセンス確認状況により異なる(一部県では未提供)。結果には常に `freshness` を含む。キャッシュされた gold snapshot が鮮度SLAを超過していても、配信上限(既定7日、`freshness.stale_serve_max_seconds`)以内であれば結果は返り `freshness.stale=true` になる(この配信上限は `freshness.loaded_at` 起点のキャッシュ滞留時間であり、上流データの古さそのものの上限ではない。超えると失敗する)。`freshness.data_as_of` は対象 Gold テーブルの最終変更時刻の最大値であり、元資料の基準日や全ブロックの鮮度を保証するものではない(`null` は基準時刻不明を意味する)。`freshness.loaded_at`(このプロセスがキャッシュをロードした時刻)とは別物。`freshness.stale=false` も上流の最新資料が反映されている保証にはならない。`freshness.stale=true` を受け取った場合は、結果に更新遅延がある旨を利用者に示すこと。 | place_id / q |
get_disaster_context |
自治体の災害リスク要約・過去の災害履歴・防災計画の要点・避難所/インフラ文脈を1コールで取得する。データが無いブロックはcoverage=noneで正直に返す(全国網羅ではない、自社収集・公的データの集約ベース)。 | muni_code* |
* は必須引数です。
直接呼ぶ場合
クライアントを使わず素で叩くこともできます。
curl -X POST "https://kokudodb.jp/mcp" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call",
"params":{"name":"get_muni_profile","arguments":{"muni_code":"13101"}}}'
レスポンス例(content[0].text は実際には全ブロックのJSON文字列。ここでは短縮)
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"isError": false,
"content": [
{
"type": "text",
"text": "{\"service_phase\": \"beta\", \"muni_code\": \"13101\", \"muni_name\": \"千代田区\", \"layers\": [ … ]}"
}
]
}
}
ClaudeやChatGPTから使う手順はClaudeから使うとChatGPTから使うにまとめています。