Skip to main content
Glama
kkawailab

MLIT Data Platform MCP Server

by kkawailab

MLIT DATA PLATFORM MCP Server

⚠️ 重要な免責事項 本リポジトリは、国土交通省の公式リポジトリ mlit-dpf-mcp を利用して作成された非公式のアプリケーションです。 国土交通省の認可や承認を受けたものではありません。 本リポジトリの利用により生じたいかなる損失及び障害等について、作成者は責任を負わないものとします。

目次

Related MCP server: MLIT Geospatial MCP Server

1. 概要

本リポジトリは、国土交通省の公式リポジトリ mlit-dpf-mcp をベースに作成された非公式のMCP (Model Context Protocol) サーバーです。

国土交通省が保有するデータと民間等のデータを連携し、一元的に検索・表示・ダウンロードを可能にする国土交通データプラットフォームが提供する利用者向けAPIと接続します。

本MCPサーバーを利用することで、大規模言語モデル(LLM)と直接連携し、対話形式で直感的にデータを検索・取得することが可能になります。APIに関する専門的な知識がなくても、誰でも簡単に国土交通データプラットフォームから曖昧な指示や複雑な条件設定でデータを検索・取得が可能な、新しいデータ活用のかたちを提供します。

⚠️ 本リポジトリは国土交通省の認可や承認を受けたものではありません。個人が作成した非公式のアプリケーションです。

2. 主な機能

国土交通データプラットフォームの利用者向けAPIを活用し、以下の機能を提供します:

  • search(キーワードの指定によりデータを検索します。並べ替えや件数の指定も可能です。)

  • search_by_location_rectangle(指定した矩形範囲と交差するデータを検索します。)

  • search_by_location_point_distance(指定した地点と半径からなる円形範囲と交差するデータを検索します。)

  • search_by_attribute(カタログ名、データセット名、都道府県、市区町村などの属性を指定してデータを検索します。)

  • get_data(データの詳細情報を取得します。)

  • get_data_summary(データIDとタイトルなどのデータの基本情報を取得します。)

  • get_data_catalog(データカタログやデータセットの詳細情報を取得します。)

  • get_data_catalog_summary(IDやタイトルなどのデータカタログやデータセットの基本情報を取得します。)

  • get_file_download_urls(ファイルのダウンロード用URLを取得します(有効期限:60秒)。)

  • get_zipfile_download_url(複数ファイルをZIP形式でまとめたダウンロードURLを取得します(有効期限:60秒)。)

  • get_thumbnail_urls(サムネイル画像のURLを取得します(有効期限:60秒)。)

  • get_all_data(条件に一致する大量のデータを一括取得します。)

  • get_count_data(条件に一致するデータ件数を取得します。)

  • get_suggest(キーワード検索時の候補を取得します。)

  • get_prefecture_data(都道府県名・コードの一覧を取得します。)

  • get_municipality_data(市区町村名・コードの一覧を取得します。)

  • get_mesh(指定したメッシュに含まれるデータを取得します。)

  • normalize_codes(入力された都道府県名・市区町村名を正規化します。)

3. 動作環境

  • OS:Windows 10 / 11 または macOS 13以降

  • MCPホスト:Claude Desktopなど

  • MCPサーバー実行環境:Python 3.10+

  • メモリ:8GB以上推奨

  • ストレージ:空き容量 1GB以上(キャッシュやログを含む)

4. インストールとセットアップ

本MCPサーバーは、Claude DesktopClaude Code の両方で使用できます。それぞれの設定方法を以下に説明します。

共通の準備手順

どちらの環境でも、まず以下の準備が必要です。

1. APIキーの取得

国土交通データプラットフォームでアカウントを作成し、APIキーを取得してください。

詳しい手順は、こちらをご覧ください。

2. リポジトリのクローン

git clone https://github.com/MLIT-DATA-PLATFORM/mlit-dpf-mcp.git
cd mlit-dpf-mcp

4.1. Claude Desktopでの使用方法

Claude Desktop(デスクトップアプリ)で使用する場合の設定方法です。

前提条件

  • Claude Desktopアプリがインストールされている

  • Python 3.10以上がインストールされている

手順

1. 仮想環境を作成 & 有効化

python -m venv .venv
.venv\Scripts\activate      # Windows
source .venv/bin/activate   # macOS/Linux

2. 依存ライブラリをインストール

pip install -e .
pip install aiohttp pydantic tenacity python-json-logger mcp python-dotenv

3. 環境変数を設定

.env.exampleをコピーし、 .env ファイルを作成します:

MLIT_API_KEY=your_api_key_here
MLIT_BASE_URL=https://www.mlit-data.jp/api/v1/

your_api_key_hereは必ず、手順1で取得したAPIキーに置き換えてください。

4. Claude Desktopの設定ファイルを開く

  • Windows: C:\Users\<ユーザー名>\AppData\Roaming\Claude\claude_desktop_config.json

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Claude Desktopアプリの設定画面にある「開発者」メニューの「設定を編集」ボタンをクリックしてclaude_desktop_config.jsonを開くことも可能です。

5. MCPサーバーの構成を追加

{
  "mcpServers": {
    "mlit-dpf-mcp": {
      "command": "......./mlit-dpf-mcp/.venv/Scripts/python.exe",
      "args": [
        "....../mlit-dpf-mcp/src/server.py"
      ],
      "env": {
        "MLIT_API_KEY": "your_api_key_here",
        "MLIT_BASE_URL": "https://www.mlit-data.jp/api/v1/",
        "PYTHONUNBUFFERED": "1",
        "LOG_LEVEL": "WARNING"
      }
    }
  }
}

commandargsは必ず、実際のパスに変更してください。 your_api_key_hereは必ず、手順1で取得したAPIキーに置き換えてください。

6. Claude Desktop を再起動


4.2. Claude Codeでの使用方法

Claude Code(VS Code拡張機能)で使用する場合の設定方法です。

前提条件

  • Visual Studio Code がインストールされている

  • Claude Code 拡張機能がインストールされている

  • Python 3.10以上がインストールされている

  • uv または pip がインストールされている

手順

1. プロジェクトディレクトリに移動

cd mlit-dpf-mcp

2. 依存ライブラリをインストール

uvを使用する場合(推奨):

uv pip install -e .

または通常のpipを使用:

pip install -e .

3. MCP設定ファイルを作成

プロジェクトのルートディレクトリに .mcp.json ファイルを作成します:

4. MCP設定を記述

.mcp.json に以下の内容を記述します:

{
  "mcpServers": {
    "mlit-dpf-mcp": {
      "command": "uv",
      "args": [
        "--directory",
        "/絶対パス/mlit-dpf-mcp",
        "run",
        "python",
        "-m",
        "src.server"
      ],
      "env": {
        "MLIT_API_KEY": "your_api_key_here",
        "MLIT_BASE_URL": "https://www.mlit-data.jp/api/v1/"
      }
    }
  }
}

重要な設定項目:

  • "/絶対パス/mlit-dpf-mcp": このリポジトリの絶対パスに置き換えてください

    • Linux/macOS例: "/home/username/mlit-dpf-mcp"

    • Windows例: "C:/Users/username/mlit-dpf-mcp" (スラッシュを使用)

  • "your_api_key_here": 取得したAPIキーに置き換えてください

注意: .mcp.json はプロジェクトのルートディレクトリに配置してください(.claude/ ディレクトリ内ではありません)

5. VS Codeでプロジェクトを開く

code .

6. Claude Codeを起動

VS Codeのコマンドパレット(Ctrl+Shift+P / Cmd+Shift+P)から「Claude Code: Start」を選択します。

7. MCPサーバーの接続を確認

Claude Codeのチャット画面で、MCPツールが利用可能になっていることを確認します。ツールアイコン(🔧)をクリックすると、mcp__mlit-dpf-mcp__で始まる各種ツールが表示されます。

トラブルシューティング(Claude Code)

MCPサーバーが起動しない場合:

  1. .mcp.json のパスが正しいか確認(プロジェクトルートに配置されているか)

  2. APIキーが正しく設定されているか確認

  3. VS Codeの出力パネル(Output Panel)で「Claude Code」を選択し、エラーログを確認

依存関係のエラーが出る場合:

uv pip install aiohttp pydantic tenacity python-json-logger mcp python-dotenv

5. 使用例

5.1. 基本的な検索

MCPサーバーが正しく設定されていれば、Claude DesktopまたはClaude Codeで自然言語による対話形式でデータを検索できます。

例:キーワード検索

「東京都のダムを教えて」

Claudeは自動的にMCPツールを使用して、以下のような処理を実行します:

  1. 都道府県名「東京都」を正規化してコード「13」を取得

  2. データセット「ダム便覧(dhb)」を検索

  3. 該当するダムのリストを表示

例:位置情報による検索

「東京駅から半径5km以内にある公共施設を検索して」

例:データの可視化

「岐阜県のダムを地図にプロットして」

5.2. ダム地図の作成(サンプルプロジェクト)

このリポジトリには、東海地方のダムを地図にプロットするサンプルプロジェクトが含まれています。

含まれるファイル

  • plot_tokai_dams.py - 地図生成のメインスクリプト

  • tokai_dams.json - 東海地方のダムデータ(12件のサンプル)

  • tokai_dams_map.html - 生成されたインタラクティブ地図

  • fetch_tokai_dams.py, get_tokai_dams.py - データ取得用スクリプト

実行方法

1. 必要なライブラリをインストール

uv pip install folium

または:

pip install folium

2. 地図を生成

python plot_tokai_dams.py

3. ブラウザで地図を開く

# Linux/macOS
xdg-open tokai_dams_map.html

# Windows
start tokai_dams_map.html

地図の特徴

  • 都道府県ごとに色分けされたマーカー

    • 🔴 赤:愛知県

    • 🔵 青:岐阜県

    • 🟢 緑:静岡県

    • 🟣 紫:三重県

  • マーカーをクリックするとダムの詳細情報を表示

  • MarkerCluster機能で見やすく表示

  • インタラクティブなズーム・パン操作

カスタマイズ

全216件のダムデータを取得して完全な地図を作成する場合は、Claude CodeまたはClaude Desktopで以下のように依頼してください:

「東海地方の全てのダムデータを取得してtokai_dams.jsonを更新して」

6. トラブルシューティング

よくある問題と解決方法

1. MCPサーバーが起動しない

症状: Claude DesktopまたはClaude CodeでMCPツールが表示されない

解決方法:

  • 設定ファイルのパスが正しいか確認

  • APIキーが正しく設定されているか確認

  • Python環境が正しくアクティベートされているか確認

Claude Desktopの場合:

# パスの確認
which python  # macOS/Linux
where python  # Windows

Claude Codeの場合: VS Codeの出力パネル(Output)で「Claude Code」を選択し、エラーログを確認してください。

2. APIキーのエラー

症状: MLIT_API_KEY is not set などのエラーメッセージ

解決方法:

  • .mcp.json(Claude Code)またはclaude_desktop_config.json(Claude Desktop)で、MLIT_API_KEYが正しく設定されているか確認

  • APIキーに余分なスペースや引用符が含まれていないか確認

  • 国土交通データプラットフォームでAPIキーが有効か確認

3. 依存関係のエラー

症状: ModuleNotFoundError: No module named 'aiohttp' などのエラー

解決方法:

# 必要なパッケージを再インストール
uv pip install aiohttp pydantic tenacity python-json-logger mcp python-dotenv

# または
pip install aiohttp pydantic tenacity python-json-logger mcp python-dotenv

4. 地図生成のエラー

症状: ModuleNotFoundError: No module named 'folium'

解決方法:

uv pip install folium
# または
pip install folium

5. データが取得できない

症状: 検索しても結果が返ってこない

解決方法:

  • APIキーの有効性を確認

  • 検索条件を変更してみる(キーワードを簡略化、範囲を広げるなど)

  • ネットワーク接続を確認

  • APIのレート制限に達していないか確認

デバッグ方法

ログレベルの変更

より詳細なログを確認したい場合は、設定ファイルでLOG_LEVELを変更してください:

Claude Desktop(claude_desktop_config.json):

"env": {
  "LOG_LEVEL": "DEBUG"
}

Claude Code(.mcp.json):

"env": {
  "LOG_LEVEL": "DEBUG"
}

手動でのサーバー起動テスト

MCPサーバーが正しく動作するか、手動で起動してテストできます:

cd mlit-dpf-mcp
export MLIT_API_KEY=your_api_key_here
export MLIT_BASE_URL=https://www.mlit-data.jp/api/v1/
python -m src.server

エラーが表示される場合は、そのメッセージに従って問題を解決してください。


7. ディレクトリ構成

mlit-dpf-mcp/
├─ .mcp.json                     # MCP設定ファイル(Claude Code用)
├─ .claude/                      # Claude Code設定ディレクトリ(権限設定など)
│  └─ settings.local.json        # ツール権限設定ファイル
├─ src/
│  ├─ server.py                  # MCP サーバー & ツール定義
│  ├─ client.py                  # MLIT GraphQL API クライアント
│  ├─ schemas.py                 # Pydantic モデル(入力バリデーション)
│  ├─ config.py                  # 環境変数ロード & 設定検証
│  └─ utils.py                   # ロギング、タイマー、レート制限
├─ plot_tokai_dams.py            # 地図プロット用スクリプト(サンプル)
├─ fetch_tokai_dams.py           # ダムデータ取得スクリプト(サンプル)
├─ get_tokai_dams.py             # データ取得ヘルパースクリプト(サンプル)
├─ tokai_dams.json               # 東海地方のダムデータ(サンプル)
├─ tokai_dams_map.html           # 生成された地図HTMLファイル(サンプル)
├─ pyproject.toml                # プロジェクト設定ファイル
├─ uv.lock                       # 依存関係ロックファイル
├─ README.md                     # このファイル
├─ LICENSE                       # ライセンスファイル
└─ .env.example                  # 環境変数のサンプル

8. ライセンス

本リポジトリはMITライセンスで提供されています。詳細はLICENSEを参照してください。


9. 注意事項

非公式リポジトリについて

  • 本リポジトリは、国土交通省の公式リポジトリ mlit-dpf-mcp をベースに作成された非公式のアプリケーションです。

  • 国土交通省の認可、承認、推奨を受けたものではありません。

  • 本リポジトリは個人が作成したものであり、国土交通省および国土交通データプラットフォームとは一切関係ありません。

データ利用について

免責事項

  • 本リポジトリは非公式のアプリケーションとして提供しているものです。動作保証は行っておりません。

  • 本リポジトリの内容は予告なく変更・削除する可能性があります。

  • 本リポジトリの利用により生じた損失及び障害等について、作成者は一切の責任を負わないものとします。

  • 本リポジトリに関する問い合わせを国土交通省または国土交通データプラットフォームに行わないでください。

Available Tools

18 tools
get_all_dataA

条件に当てはまる大量のデータを取得する。

            使い方:
            - 大量件数をバッチで取得します。内部的に GraphQL `getAllData` を使用し、返却された `nextDataRequestToken` を用いて次バッチを自動で取得します。
            - 絞り込みは `term` / `phrase_match` と、属性(`catalog_id`, `dataset_id`, `prefecture_code`, `municipality_code`, `address`)や矩形範囲を組み合わせて指定できます。
            - 1回のバッチ件数は `size`(API上限は1000)。本ツールの既定は `size=1000`(最大値)で、`max_batches` または `max_items` で総取得量を制御します。
            - メタデータが不要な場合は `include_metadata=False` で転送量を削減できます。

            例:
            - データセット単位で全件取得(メタデータ付き):
            term="", dataset_id="mlit-001", size=1000, max_batches=10, include_metadata=True

            - カタログIDと矩形で範囲取得(東京都心部の例):
            term="", catalog_id="dimaps",
            location_rectangle_top_left_lat=35.80,  location_rectangle_top_left_lon=139.55,
            location_rectangle_bottom_right_lat=35.60, location_rectangle_bottom_right_lon=139.85,
            size=1000, max_batches=5

            - 都道府県コードのみで全件走査:
            term="", prefecture_code="13", size=1000, max_items=5000

            注意:
            - API仕様上、`locationFilter`(矩形など)**単独では検索不可**です。必ず `term` または `attributeFilter`(本ツールでは `catalog_id` / `dataset_id` / `prefecture_code` / `municipality_code` / `address` に相当)を併用してください。
            - 次バッチ取得時は `nextDataRequestToken` を使用し、**他の条件は無視**されます(ツール側で自動処理)。データが空になった時点で取得を停止します。
            - `size` のAPI上限は1000です(本ツールの既定値は1000)。大量取得時は `max_batches` / `max_items` を併用して制御してください。
            - 座標は WGS84。矩形は「北西(top_left)→南東(bottom_right)」の順で指定してください。
            - `include_metadata=False` にすると `id`/`title` 中心の軽量レスポンスになります。
ParametersJSON Schema
NameRequiredDescriptionDefault
sizeNo1回のリクエストで取得する件数(最大1000)。大量データの場合はバッチ処理で自動的に複数回リクエストされます
termNo検索キーワード。属性フィルタのみの場合は空文字列""または省略
phrase_matchNoフレーズマッチモード
prefecture_codeNo都道府県コード。normalize_codesで正規化済みのコードを使用してください
municipality_codeNo市区町村コード(5桁)。例: '13101'=千代田区
addressNo住所による検索。都道府県名や市区町村名を含む文字列
catalog_idNoカタログID。get_data_catalog_summaryで確認可能
dataset_idNoデータセットID
location_rectangle_top_left_latNo矩形範囲の左上緯度
location_rectangle_top_left_lonNo矩形範囲の左上経度
location_rectangle_bottom_right_latNo矩形範囲の右下緯度
location_rectangle_bottom_right_lonNo矩形範囲の右下経度
max_batchesNo最大バッチ処理回数。20回 × size(1000) = 最大20,000件まで取得可能
include_metadataNoメタデータを含めるか。falseにするとレスポンスサイズが小さくなります
max_itemsNo取得する最大アイテム数の上限。設定するとmax_batchesより優先されます

TDQS

A4.8/5.0
Behavior5/5

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

No annotations provided, yet description comprehensively discloses: internal GraphQL usage, automatic pagination with nextDataRequestToken, API limit of 1000 per batch, WGS84 coordinate system, response format differences based on include_metadata (lightweight id/title only vs full), and termination condition (stops when data empty).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Excellent structure with clear sections (purpose, usage, examples, cautions). Information is front-loaded with the core purpose, followed by implementation details, concrete examples, and critical constraints. No redundant text; every sentence provides actionable guidance or constraints.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex 15-parameter tool with batch processing and no output schema, the description is comprehensive. It explains the pagination mechanism, response payload variations, coordinate systems, and batch control logic. Minor gap: could explicitly state this is read-only (though implied by '取得'), but behavior is otherwise fully specified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has 100% coverage (baseline 3), but description adds crucial semantic relationships: max_items takes priority over max_batches, size=1000 is the API maximum and tool default, coordinate ordering (NW top-left to SE bottom-right), and that prefecture_code requires prior normalization via sibling tool. Examples demonstrate valid parameter combinations.

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

Purpose5/5

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

Opening sentence '条件に当てはまる大量のデータを取得する' clearly states the specific action (retrieve large batch data) and scope. It distinguishes from siblings like get_data or search by emphasizing batch processing ('バッチで取得'), automatic pagination, and large-scale retrieval capabilities ('大量件数').

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

Usage Guidelines5/5

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

Dedicated '使い方' section explains exactly when to use (large batch retrieval) and how to combine filters (term + attributes/rectangle). Three concrete examples cover different scenarios (dataset retrieval, rectangle-based, prefecture scan). '注意' section explicitly states critical when-not constraints: locationFilter cannot be used alone, and nextDataRequestToken ignores other conditions.

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

get_count_dataA

特定のデータセットに含まれるデータや、指定した範囲、日付など、指定した検索条件に一致するデータの件数を取得する。分類ごとの集計も可能。

            使い方:
            - キーワード / メタデータ / 空間条件を組み合わせて、件数のみを高速に把握できます。
            - 集計の切り口は `slice_type` で指定:
            - "dataset": カタログ→データセットの2段階で件数を返す(全カタログ/全データセットの分布を俯瞰)
            - "attribute": 任意属性ごとの上位出現値を `slice_size` 件まで取得(最大50)。必要なら `slice_sub_attribute_name` で下位分類も可能。
            - 空間条件(矩形/円)は `location_*` 引数により内部で `locationFilter` に変換。
            - 属性条件は `catalog_id` / `dataset_id` / `prefecture_code` / `municipality_code` / `address` などを内部で `attributeFilter` に変換。

            例:
            - キーワード「橋梁」をデータセット別に件数集計:
            term="橋梁", slice_type="dataset"

            - 都道府県別トップ10 + その下でデータセット別内訳:
            term="", slice_type="attribute",
            slice_attribute_name="DPF:prefecture_code", slice_size=10,
            slice_sub_attribute_name="DPF:dataset_id", slice_sub_size=10

            - 矩形範囲(東京都心部)× カタログIDで件数:
            term="", catalog_id="dimaps",
            location_rectangle_top_left_lat=35.80,  location_rectangle_top_left_lon=139.55,
            location_rectangle_bottom_right_lat=35.60, location_rectangle_bottom_right_lon=139.85,
            slice_type="attribute", slice_attribute_name="DPF:dataset_id", slice_size=20

            - 円範囲(東京駅 半径500m)× データセット内件数:
            term="", dataset_id="cals_construction",
            location_lat=35.681236, location_lon=139.767125, location_distance=500,
            slice_type="attribute", slice_attribute_name="DPF:title", slice_size=10

            注意:
            - 公式仕様上、`locationFilter`(空間条件)**のみでは検索不可**。必ず `term` か `attributeFilter`(本ツールでは catalog_id / dataset_id / prefecture_code / municipality_code / address 等)を併用してください。
            - `slice_size` の最大は **50**。上位出現値のみが返却され、それ以外は省略されます。上位分類の `dataCount` には下位分類で表示されない分も含まれます。
            - `attributeFilter` は `is/similar/gte/gt/lte/lt` に対応し、`AND` / `OR` でネスト結合が可能(本ツールでは単純条件を主にサポート)。
            - `locationFilter` は `rectangle` / `geoDistance` のほか `union` / `intersection` に対応。ただし **同クラス内の他メンバーと同時利用不可**、かつ **入れ子(ネスト)不可**。
            - 座標は WGS84。矩形は「北西(top_left)→南東(bottom_right)」の順で指定。
            - パフォーマンス観点から、まず `get_count_data` でボリューム見積り → 必要に応じて `get_all_data` で実データ取得が推奨。
ParametersJSON Schema
NameRequiredDescriptionDefault
termNo検索キーワード。属性フィルタのみの場合は省略可能
phrase_matchNoフレーズマッチモード
prefecture_codeNo都道府県コードで絞り込み
municipality_codeNo市区町村コードで絞り込み
addressNo住所で絞り込み
catalog_idNoカタログIDで絞り込み
dataset_idNoデータセットIDで絞り込み。集計対象の指定に必須
location_rectangle_top_left_latNo矩形範囲の左上緯度
location_rectangle_top_left_lonNo矩形範囲の左上経度
location_rectangle_bottom_right_latNo矩形範囲の右下緯度
location_rectangle_bottom_right_lonNo矩形範囲の右下経度
location_latNo中心地点の緯度(円形範囲検索用)
location_lonNo中心地点の経度(円形範囲検索用)
location_distanceNo検索半径(メートル単位、円形範囲検索用)
slice_typeNo集計タイプ: - 'attribute': 属性別に集計(最も一般的) - 'dataset': データセット別に集計 省略時は属性指定があれば自動的に'attribute'になります
slice_attribute_nameNo集計する属性名(ネームスペース付き)。 例: - 'DPF:year' → 年度別集計 - 'DPF:prefecture_code' → 都道府県別集計 - 'RSDB:tenken.nendo' → 点検年度別集計 指定すると自動的にslice_type='attribute'になります
slice_sizeNo集計結果の最大件数(1-50)。上位N件のみ取得したい場合に指定
slice_sub_attribute_nameNo2段階目の集計属性名。 例: slice_attribute_name='DPF:prefecture_code', slice_sub_attribute_name='DPF:year' → 都道府県別 × 年度別のクロス集計
slice_sub_sizeNo2段階目の集計結果の最大件数

TDQS

A4.6/5.0
Behavior4/5

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

アノテーションがないため説明が全ての負担を担う。slice_sizeの上限50、上位値のみ返却(それ以外省略)、locationFilter単独では検索不可といった制約を明記。座標系(WGS84)や矩形の頂点順序などの技術仕様も開示。読み取り専用であることは「件数を取得」という表現から暗示されるが、明示的な安全宣言があれば完璧だった。

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

19パラメータを持つ複雑なツールのため適切な長さ。用途→使い方(箇条書き)→具体例→注意事項という構造が論理的。具体例4つはパラメータ組み合わせの理解に不可欠。冗長な部分はなく、各文が価値を持っている。

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

出力スキーマがないにも関わらず、返却値の性質(上位N件のみ、dataCountに含まれる範囲)を説明。空間検索の制約、パフォーマンス上の推奨フロー、属性フィルタの演算子対応など、複雑な集計ツールとして必要な情報が網羅されている。

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

スキーマ記述カバレッジ100%のためベースライン3。説明はlocation_*引数が内部でlocationFilterに変換されること、catalog_id等がattributeFilterに変換されることを付加。slice_typeの値(dataset/attribute)のセマンティクスと使用パターンを具体例と共に詳説し、パラメータ間の相互作用を明確にしている。

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

Purpose5/5

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

明確に「指定した検索条件に一致するデータの件数を取得する」と述べており、動詞(取得)と対象(データ件数)が具体的。兄弟ツールとの差別化も明確で、「get_all_dataで実データ取得が推奨」と対比関係を明示している。

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

Usage Guidelines5/5

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

「まずget_count_dataでボリューム見積り→必要に応じてget_all_dataで実データ取得が推奨」と明確な使い分けを指示。slice_typeの選択基準(dataset vs attribute)や空間条件と属性条件の組み合わせ要件も詳細に説明している。

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

get_dataA

データセットIDとデータIDを用いて、データの詳細情報を取得する。

            使い方:
            - 検索API(search)で拾った id を使って、対象データの詳細(title 以外の各種メタ情報や関連フィールド)を取得。
            - すでに対象が確定している場合、検索よりも効率的に必要情報へアクセスできます。

            例:
            - 既知IDで詳細取得:
            dataset_id="cals_construction", data_id="<searchで取得したid>"

            - データセット内の特定データを直接参照:
            dataset_id="mlit-001", data_id="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"

            注意:
            - 引数は GraphQL の data(dataSetID:, dataID:) に対応しています。
            - data_id は search の結果(DataClass.id)を使用してください。
            - 存在しないIDを指定した場合、totalNumber=0 となり結果は返りません。
            - 詳細項目は MLIT DPF のスキーマに依存します(必要な項目はクライアント側でフィールド選択推奨)。
ParametersJSON Schema
NameRequiredDescriptionDefault
dataset_idYesデータセットID
data_idYesデータID

TDQS

A4.7/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden and discloses several behavioral traits: GraphQL API correspondence (data(dataSetID:, dataID:)), error handling for non-existent IDs (totalNumber=0), and schema dependency (MLIT DPF). Deducting one point because it doesn't explicitly confirm read-only/safety status or mention rate limits, though 'get' implies safe read semantics.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Perfectly structured with four distinct, front-loaded sections: purpose statement, usage guidelines, concrete examples, and technical notes. Every sentence earns its place without redundancy. The length is appropriate for the tool's complexity and the lack of output schema annotations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 2 simple parameters with full schema coverage and no output schema, the description is comprehensive. It explains what is returned (title以外の各種メタ情報), error conditions, schema dependencies, and client-side recommendations (フィールド選択推奨). No critical gaps remain for an AI agent to invoke this tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% (both parameters have descriptions), establishing a baseline of 3. The description adds value by specifying data_id provenance (must come from search results DataClass.id), providing concrete examples (dataset_id='cals_construction', data_id UUID format), and mapping to GraphQL parameter names.

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

Purpose5/5

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

Description opens with a specific verb+resource combination (データの詳細情報を取得する/retrieve detailed data information) and explicitly defines the required inputs (dataset_id and data_id). It clearly distinguishes this from siblings by contrasting with the search API (検索APIで拾ったidを使って), establishing this as a direct retrieval tool versus a discovery tool.

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

Usage Guidelines5/5

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

Contains an explicit '使い方' (Usage) section stating exactly when to use this tool versus alternatives: 'すでに対象が確定している場合、検索よりも効率的' (When the target is already determined, more efficient than search). It explicitly names the sibling tool 'search' as the prerequisite source for IDs, creating a clear workflow distinction.

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

get_data_catalogA

データカタログ・データセットの詳細情報を取得する。

            使い方:
            - すべてのカタログの詳細を取得(重い): ids を指定しない(内部的に IDs=null 相当)、include_datasets=True
            - 特定カタログだけ取得(推奨): ids=["cals","rsdb"] のように配列で指定
            - 軽量にID/タイトル等だけ取得: minimal=True
            - データセット一覧や件数も取得: include_datasets=True(データセットのメタデータ定義・件数が取得可能)

            例:
            - 全カタログのID/タイトルのみ(軽量):
            minimal=True, include_datasets=False

            - 特定カタログ(cals, rsdb)の詳細 + データセット一覧:
            ids=["cals","rsdb"], minimal=False, include_datasets=True

            - 単一カタログのメタ情報だけ(datasets不要):
            ids=["mlit_plateau"], minimal=False, include_datasets=False

            注意:
            - 公式仕様では `dataCatalog(IDs: [String])` で、IDs に null を渡すと全カタログが返ります。IDを指定すると対象のみ取得されます。
            - `include_datasets=True` の場合、各カタログ配下の `datasets` 情報(メタデータ定義、データ件数など)も取得します。大量になるため必要に応じてオフにしてください。
            - `minimal=True` は主要フィールド中心の軽量レスポンスです。詳細が必要な場合は False にしてください。
            - 返るフィールドは `DataCatalogClass` に準拠します(title, description, publisher, modified など多数を含み、datasets も持ちます)。
ParametersJSON Schema
NameRequiredDescriptionDefault
idsNoカタログIDの配列。nullの場合は全カタログを取得
minimalNo最小限の情報のみ返す
include_datasetsNo配下のデータセット情報も含める

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations provided, the description effectively discloses performance characteristics (labels operations as '重い'/heavy or '軽量'/lightweight), warns about large data volumes ('大量になる'), and specifies the return structure conforms to DataCatalogClass with enumerated fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well-structured with clear section headers (使い方/例/注意) that front-load critical information. Slightly verbose with some repetition between usage patterns and examples, but every section serves a distinct purpose (theory vs concrete examples vs technical spec details).

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema exists, the description adequately compensates by specifying the return type (DataCatalogClass) and listing representative fields (title, description, publisher, modified, datasets). Also covers performance implications and parameter interactions comprehensively.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

While schema has 100% description coverage (baseline 3), the description adds significant practical context beyond the schema: explains that omitting ids is equivalent to null internally, clarifies the trade-offs between minimal=true/false, and details what include_datasets actually retrieves (metadata definitions, record counts).

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

Purpose5/5

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

The description clearly states it retrieves '詳細情報' (detailed information) of data catalogs/datasets, distinguishing it from the sibling tool 'get_data_catalog_summary'. The specific verb+resource combination is unambiguous.

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

Usage Guidelines5/5

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

Excellent explicit guidance with dedicated sections: '使い方' explains when to use specific parameter combinations (heavy vs recommended vs lightweight), '例' provides concrete parameter sets, and '注意' clarifies the official API spec behavior regarding null IDs.

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

get_data_catalog_summaryA

データカタログ・データセットの基本情報(ID、タイトル)を取得する。

            使い方:
            - すべてのカタログのIDとタイトル一覧を取得: 引数なし(内部的に IDs=null 相当)
            - 特定カタログだけの基本情報を取得: 「get_data_catalog」を minimal=True で使うか、こちらのサマリーを利用

            例:
            - 全カタログのID/タイトル:
            (引数なしで呼び出し)

            - 特定ID群のみの概要を見たい(軽量):
            get_data_catalog を minimal=True, ids=["cals","rsdb"] で代用

            注意:
            - 返却内容はID/タイトル中心の軽量情報です。詳細なメタデータやデータセット一覧が必要な場合は「get_data_catalog」を使用してください。
            - 公式APIでは IDs=null を指定すると全件取得になります(本ツールは内部でこの挙動に合わせています)。
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden. It discloses that returns are 'ID/タイトル中心の軽量情報' (lightweight ID/title-focused info), explains the internal API behavior matching 'IDs=null', and clarifies what is NOT returned (detailed metadata/dataset lists). Minor gap: lacks pagination or exact return structure details.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description uses clear structural sections (使い方/Usage, 例/Examples, 注意/Notes) that front-load the purpose statement. While the Japanese formatting with indentation consumes space, every sentence provides actionable guidance or behavioral context without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having no output schema and no annotations, the description adequately describes the return content qualitatively ('ID/タイトル中心の軽量情報'). It thoroughly covers sibling relationships and usage contexts. Minor gap: lacks exact return value structure specification.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema has 0 parameters, establishing a baseline of 4. The description adds value by explaining the implicit behavior: '引数なし(内部的に IDs=null 相当)' clarifies what happens when called with no arguments, effectively documenting the parameter-less invocation pattern.

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

Purpose5/5

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

The opening sentence 'データカタログ・データセットの基本情報(ID、タイトル)を取得する' provides a specific verb (取得する/get) and resource (データカタログ・データセット). It clearly distinguishes itself from sibling 'get_data_catalog' by stating that detailed metadata requires that alternative instead.

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

Usage Guidelines5/5

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

The '使い方' section explicitly outlines when to use no arguments (for all catalogs) versus when to use 'get_data_catalog' with minimal=True. The '注意' section explicitly names 'get_data_catalog' as the alternative for detailed metadata needs, providing clear when/when-not guidance.

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

get_data_summaryA

データセットIDとデータIDを用いて、基本情報(データID、タイトル)を取得する。

            使い方:
            - すでに dataSetID / dataID を把握している場合に、軽量にタイトル等の基本情報だけ取得します。
            - 検索結果から拾った id を入れて確認・プレビュー用途に最適。

            例:
            - タイトルだけ確認したい:
            dataset_id="cals_construction", data_id="<searchで取得したid>"

            - 詳細取得前の事前チェック:
            dataset_id="mlit-001", data_id="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"

            注意:
            - data_id は検索API(search)の結果で得られる DataClass.id を使用してください。
            - 指定したIDに一致しない場合、totalNumber=0 となります(結果なし)。
            - サマリ用途のため、詳細な付帯情報が必要な場合は get_data を使用してください。
ParametersJSON Schema
NameRequiredDescriptionDefault
dataset_idYesデータセットID。searchツールの結果から取得
data_idYesデータID。searchツールの結果から取得

TDQS

A4.7/5.0
Behavior4/5

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

With no annotations provided, description carries full burden. It discloses the 'totalNumber=0' behavior when IDs don't match, clarifies this returns only basic info vs full details, and explains the lightweight nature of the operation. Lacks explicit read-only/safety declaration but implies it through context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Excellent structure with clearly delineated sections (purpose, usage, examples, notes). Japanese formatting uses line breaks effectively. Every sentence provides distinct value - no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 2-parameter lookup tool with no output schema, description is complete. It explains return content (basic info), error cases, prerequisites (search API), and sibling alternatives. No gaps given the tool's simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Despite 100% schema coverage (baseline 3), description adds concrete value through usage examples showing actual ID formats (e.g., 'cals_construction', 'mlit-001', UUID pattern) and reinforces that IDs come from search tool results.

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

Purpose5/5

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

Description explicitly states it retrieves basic information (data ID, title) using dataset and data IDs. It clearly distinguishes from sibling tool get_data by stating this is for summary/basic info while get_data is for detailed information.

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

Usage Guidelines5/5

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

Contains explicit '使い方' (usage) section describing when to use (when IDs are already known, for lightweight retrieval, for preview). Explicitly names search API as prerequisite for obtaining IDs and get_data as alternative for detailed information.

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

get_file_download_urlsA

ファイルのダウンロード用URLを取得する。取得したURLがhttps://www.mlit-data.jp/download/で始まる場合、URLの有効期限は60秒。

            使い方:
            - 事前に search / data API で対象データの `files`(id, original_path)を取得してから、本APIでダウンロードURLを生成します。
            - 本ツールは2通りに対応:
            (A) `files=[{id, original_path}, ...]` を直接渡す
            (B) `dataset_id` と `data_id` を渡す(ツール側で対象データの `files` を読み取り、一括でURL化)

            例:
            - 単一ファイルのURLを取得(直接指定):
            files=[{ id:"<filesのid>", original_path:"INDEX_C.XML" }]

            - データIDから付属ファイルのURL一覧を取得(簡易):
            dataset_id="cals_construction", data_id="<searchで取得したid>"

            注意:
            - `id` と `original_path` は、まず search / data のレスポンスに含まれる `DataClass.files` から取得してください。
            - 取得したURLが `https://www.mlit-data.jp/download/` で始まる場合、**60秒以内にダウンロード開始**が必要です(期限切れに注意)。
            - 連携元サイトで直接ダウンロードできる場合は、メタデータ `DPF:downloadURLs` / `DPF:dataURLs` も併用してください。
            - `original_path` を省略すると、付属ファイルの元ファイル名・パスが用いられます(files.original_pathを参照)。
ParametersJSON Schema
NameRequiredDescriptionDefault
filesNoダウンロードするファイルの配列。dataset_id+data_idを指定する場合は省略可能
dataset_idNoデータセットID。filesを省略する場合は必須
data_idNoデータID。filesを省略する場合は必須

TDQS

A4.5/5.0
Behavior4/5

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

No annotations provided, so description carries full burden. Discloses critical behavioral trait: URLs starting with specific domain have 60-second expiration ('60秒以内にダウンロード開始が必要'). Explains default behavior when original_path is omitted. Missing: error handling details, auth requirements, and exact return structure (though no output schema exists).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well-structured with clear visual hierarchy: purpose statement → usage patterns → examples → warnings. Front-loaded with core function. Lengthy but justified by complexity (two usage modes, time constraints, prerequisites). Minor deduction for slightly verbose Japanese prose style, but every sentence provides actionable guidance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Comprehensive coverage of prerequisites, temporal constraints (60s expiration), and parameter interactions for a 3-parameter tool with complex conditional logic. Lacks description of return value structure (expected since no output schema provided) and error scenarios. Sufficient for safe invocation but could note rate limiting or failure modes.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has 100% coverage (baseline 3). Description adds substantial value: concrete JSON syntax examples for files parameter, explanation of the XOR relationship between files vs dataset_id/data_id, and data lineage guidance ('search / data のレスポンスに含まれる DataClass.files から取得'). Compensates for schema's lack of conditional validation.

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

Purpose5/5

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

Opens with specific verb-resource pair 'ファイルのダウンロード用URLを取得する' (Get file download URLs). The description clearly distinguishes this from sibling get_zipfile_download_url through its focus on individual file arrays versus zip archives, and explains the dual input patterns (direct files array vs dataset/data_id lookup).

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

Usage Guidelines5/5

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

Contains explicit '使い方' (Usage) section stating prerequisites ('事前に search / data API で...取得してから'), describes two mutually exclusive usage patterns (A) and (B), and notes alternatives ('連携元サイトで直接ダウンロードできる場合は...DPF:downloadURLs...を併用'). Clearly defines when to use each parameter combination.

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

get_meshA

メッシュに含まれるデータを取得する。

            使い方:
            - 事前に `search` API で対象データを特定し、レスポンスの `dataset_id`(=dataSetID)、`id`(=dataID)、
            および `meshes[].id`(=meshID)を取得します。その上で、本APIに `meshCode`(メッシュコード)を指定して該当メッシュのオブジェクトを取得します。
            - `meshCode` は任意の次元(例: 250m など)のメッシュコードを指定可能。該当がなければ `null` が返ります。

            例:
            - 人口5次メッシュ(250m)の一枚を取得:
            dataset_id="dpf_population_data",
            data_id="8fb65cb6-a7e3-4b15-bf17-1c71be572a9f",
            mesh_id="national_sensus_250m_r2",
            mesh_code="5339452932"

            - 事前に `search` で必要パラメータを取得:
            term="人口及び世帯" → 結果の `dataset_id`, `id`, `meshes[].id` を本APIに転用

            注意:
            - GraphQL定義は `mesh(dataSetID:String!, dataID:String!, meshID:String!, meshCode:String!): JSONObject`。
            返却はJSONオブジェクトで、メッシュコードや指標(例: 総人口 等)が含まれます。該当しない場合は `null`。:contentReference[oaicite:1]{index=1}
            - `meshCode` の粒度は自由ですが、データ側に該当レコードが存在しないと取得できません(空振り時は `null`)。:contentReference[oaicite:2]{index=2}
            - 必要な `meshID` は `search` レスポンスの `meshes` 配列から選びます(例: "national_sensus_250m_r2")。:contentReference[oaicite:3]{index=3}
            - 利用にはMLIT DPFのGraphQLエンドポイントとAPIキーが必要です。:contentReference[oaicite:4]{index=4}
ParametersJSON Schema
NameRequiredDescriptionDefault
dataset_idYesデータセットID
data_idYesデータID
mesh_idYesメッシュID
mesh_codeYesメッシュコード(標準地域メッシュコード)

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden. It discloses critical behavioral traits: requires MLIT DPF GraphQL endpoint and API key, returns `null` when mesh not found (empty result behavior), and returns a JSON object containing mesh codes and indicators. Minor gap: no rate limit or error handling details mentioned.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well-structured with clear sections (Usage, Examples, Notes). Information is front-loaded with the prerequisite workflow. Minor deductions for `:contentReference` artifacts (likely documentation import noise) and slight repetition regarding null return behavior, but overall efficiently organized.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, and the description adequately compensates by specifying the return type (JSON object with mesh codes/indicators) and null handling. Complex prerequisite workflow is fully documented. Minor gap: could elaborate on the specific structure of the returned JSON object.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, establishing baseline 3. The description adds significant value by explaining where each ID originates (`dataset_id` from search response's `dataset_id`, `data_id` from `id`, etc.) and noting that `mesh_code` accepts arbitrary dimensions (e.g., 250m). This semantic context exceeds the schema's basic type definitions.

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

Purpose5/5

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

The description opens with a clear, specific verb phrase 'メッシュに含まれるデータを取得する' (Retrieve data contained in the mesh). It effectively distinguishes from siblings like `get_data` or `get_all_data` by emphasizing the mesh-specific retrieval workflow and prerequisite `search` call required to obtain the specific IDs.

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

Usage Guidelines5/5

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

Explicit '使い方' (Usage) section provides clear prerequisites: must call `search` API first to obtain `dataset_id`, `data_id`, and `mesh_id` before invoking this tool. It also specifies the exact source of each parameter in the search response, creating an unambiguous workflow.

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

get_municipality_dataA

市区町村名・市区町村コード一覧を取得する。

            使い方:
            - フィルタなし(既定): 全国すべての市区町村を返します(大量件数)。
            - 都道府県で絞り込み: pref_codes=["13"] のように都道府県コードを指定(複数可)。
            - 市区町村コードで絞り込み: muni_codes=["13101","13102"] のように6桁コードを指定(複数可)。
            - 取得フィールドを最小化: fields=["code_as_string","name"] のように必要フィールドだけ指定(クライアント最適化)。

            例:
            - 全国の市区町村(コード/名称のみ):
            pref_codes=[], muni_codes=[], fields=["code_as_string","name"]

            - 東京都の市区町村一覧:
            pref_codes=["13"], fields=["code_as_string","prefecture_code","name","katakana"]

            - 特定の市区町村コードを直接取得:
            muni_codes=["13101","13102"], fields=["code_as_string","name","romaji"]

            注意:
            - GraphQL仕様: `municipalities(muniCodes:[Any], prefCodes:[Any]): [MunicipalityClass]`。
            パラメータ未指定時は**全件**を返します(大量になるため fields での軽量化推奨)。:contentReference[oaicite:1]{index=1}
            - コードは数値/文字列どちらでも指定可能ですが、アプリ側で扱いやすいのは **6桁の文字列** `code_as_string` です(例: "13101")。:contentReference[oaicite:2]{index=2}
            - 返却クラス `MunicipalityClass` には、`name`(郡名/市区町村名/政令市区名を組み合わせた正式名称)、`katakana`、`romaji`、`prefecture_code`、および有効期間(`used_from`/`used_until`)等が含まれます。:contentReference[oaicite:3]{index=3}
            - 政令指定都市の区は**独立したエントリ**として返ります(例: 札幌市中央区 など)。:contentReference[oaicite:4]{index=4}
ParametersJSON Schema
NameRequiredDescriptionDefault
pref_codesNo都道府県コードの配列 (例: ['13', '27'])
muni_codesNo市区町村コードの配列 (例: ['13101', '13102'])
fieldsNo取得するフィールド名の配列。デフォルト: ['code_as_string', 'prefecture_code', 'name']
pref_codeNo単一都道府県コード(後方互換性用)。pref_codesの使用を推奨

TDQS

A4.3/5.0
Behavior4/5

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

No annotations provided, but description carries full burden effectively. Warns about large result sets (大量件数) when unfiltered, specifies GraphQL specification details, explains that wards (区) are independent entries, and documents return class structure (MunicipalityClass fields) despite absence of output schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well-structured with clear visual hierarchy: purpose → usage patterns → concrete examples → important notes. Despite length, every section serves distinct purpose. Front-loaded with core function, followed by progressively specific implementation details. No redundant repetition of schema types.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 4-parameter query tool with 0 required parameters, description adequately warns about unfiltered usage returning massive datasets. Documents return structure (MunicipalityClass fields including validity periods) compensating for missing output schema. Would benefit from pagination or rate limit notes for perfect score.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% (baseline 3), but description adds significant semantic value: explains pref_codes accepts multiple prefecture codes, recommends 6-digit string format for muni_codes, documents fields parameter for client-side optimization, and clarifies via examples that empty arrays return all data.

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

Purpose5/5

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

Opening line '市区町村名・市区町村コード一覧を取得する' provides specific verb (取得する/get) and resource (市区町村名・コード一覧). Clearly distinguishes from sibling get_prefecture_data by specifying municipality-level (市区町村) rather than prefecture-level (都道府県) data.

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

Usage Guidelines4/5

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

Extensive '使い方' section explains exactly when to use each parameter pattern (no filter for national data, pref_codes for prefecture filtering, muni_codes for specific municipalities). Provides concrete examples for each scenario. Lacks explicit comparison to sibling tools like get_prefecture_data, but parameter-level guidance is exemplary.

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

get_prefecture_dataA

都道府県名・都道府県コード一覧を取得する。

            使い方:
            - 引数なしで47都道府県の一覧を取得(コード/名称)。
            - 軽量にコードと正式名称のみ取得、または必要に応じて name_short / hiragana / romaji などをクライアント側でフィールド選択。

            例:
            - コードと名称だけ取得:
            (引数なしで呼び出し)

            - かな・ローマ字も含めて取得(クライアントのフィールド指定例):
            prefecture { code_as_string name hiragana romaji }

            注意:
            - GraphQL定義: `prefecture: [PrefectureClass]`。パラメータはありません(常に全都道府県を返します)。
            - 主なフィールド: code(数値), code_as_string(2桁文字列), name(正式名), name_short, hiragana, romaji, used_from / used_until。
            - 公式コードは2桁(先頭ゼロ付き)。アプリで文字列コードが必要な場合は `code_as_string` を利用してください。
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior4/5

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

No annotations provided, so description carries full burden. It discloses that the tool always returns all prefectures (常に全都道府県を返します), explains the GraphQL return structure, details available fields (code_as_string, hiragana, romaji, etc.), and notes data format specifics (2-digit codes with leading zeros).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well-structured with clear sections (使い方, 例, 注意). Information is front-loaded with the core purpose first. Slightly verbose in the GraphQL field examples, but remains readable and purposeful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple zero-parameter tool, the description comprehensively compensates for the missing output schema by detailing all return fields, their data types (string vs number), and semantic meaning (official codes vs short names), providing sufficient context for invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema has 0 parameters with 100% coverage (baseline 4). The description explicitly confirms there are no parameters (パラメータはありません) and explains the implication (always returns all prefectures), which validates the empty schema design.

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

Purpose5/5

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

Description clearly states it retrieves the list of prefecture names and codes (都道府県名・都道府県コード一覧を取得する). It specifically mentions the 47 prefectures (47都道府県), distinguishing it from generic sibling tools like get_data or search.

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

Usage Guidelines3/5

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

Provides clear usage instructions (使い方) explaining no arguments returns all 47 prefectures and mentions client-side field selection. However, it lacks explicit guidance on when to use this versus generic alternatives like get_data or search.

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

get_suggestA

キーワード検索の候補を表示する。

            使い方:
            - 入力中の文字列(term)から、上位のキーワード候補を返します。候補は `name`(候補語)と `cnt`(該当件数)を含みます。
            - 完全一致寄りにしたい場合は phrase_match=True を指定します。
            - カタログ/データセット等で範囲を絞って候補を出すことも可能です(search と同様に attributeFilter 相当を利用)。

            例:
            - 単純サジェスト(全データ対象):
            term="川", phrase_match=True
            → 上位候補(例: "川河川", "河川", ...)が name/cnt で返る。

            - 特定データセット内でのサジェスト:
            term="川", phrase_match=True, dataset_id="cals_construction"

            - カタログ単位でのサジェスト:
            term="橋", catalog_id="dimaps"

            注意:
            - term は必須です(空文字は不可)。
            - 本APIは GraphQL `suggest(term, phraseMatch, attributeFilter?)` を使用します。属性での絞り込みは
            本ツールの引数(catalog_id / dataset_id / prefecture_code / municipality_code / address)を
            内部で attributeFilter にマッピングして行います。
            - 返却される候補は name と cnt を含む配列です(例は公式サンプル参照)。
ParametersJSON Schema
NameRequiredDescriptionDefault
termYes検索キーワードの一部。例: 'バス' → 'バス停', 'バスロケ' などを提案
phrase_matchNoフレーズマッチモード
prefecture_codeNo都道府県コードで絞り込み
municipality_codeNo市区町村コードで絞り込み
addressNo住所で絞り込み
catalog_idNoカタログIDで絞り込み
dataset_idNoデータセットIDで絞り込み
location_rectangle_top_left_latNo矩形範囲の左上緯度
location_rectangle_top_left_lonNo矩形範囲の左上経度
location_rectangle_bottom_right_latNo矩形範囲の右下緯度
location_rectangle_bottom_right_lonNo矩形範囲の右下経度

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden. It discloses the return format (array containing name and cnt fields), explains the internal GraphQL implementation ('GraphQL suggest(term, phraseMatch, attributeFilter?) を使用'), and notes critical constraints (term is required, empty strings invalid).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Excellent structure with clear section headers (使い方, 例, 注意). Information is front-loaded with the core purpose, followed by usage patterns, concrete examples, and caveats. No redundant text; every sentence provides actionable guidance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 11-parameter tool without an output schema, the description is comprehensive. It explains the return data structure (name/cnt array), provides multiple usage scenarios covering different parameter combinations, and documents the internal API mechanism. Missing only minor details like rate limits or auth requirements.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

While the schema has 100% description coverage (baseline 3), the description adds significant semantic value by explaining that phrase_match adjusts matching toward exact matches, and clarifying that filtering parameters are internally mapped to an attributeFilter structure. This context aids proper parameter combination.

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

Purpose5/5

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

The description clearly states the tool 'キーワード検索の候補を表示する' (displays keyword search candidates/suggestions). It effectively distinguishes this from sibling search tools (search, search_by_attribute, etc.) by emphasizing autocomplete/suggestion functionality versus full record retrieval.

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

Usage Guidelines4/5

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

The '使い方' section provides clear guidance on when to use phrase_match for exact-match preferences and how to apply filters (catalog_id, dataset_id). It references the relationship to search operations ('search と同様に'), though it could more explicitly state when to choose this over the main search tools.

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

get_thumbnail_urlsA

データのサムネイル画像URLを取得する。取得したURLがhttps://www.mlit-data.jp/download/で始まる場合、URLの有効期限は60秒。

            使い方:
            - 基本: dataset_id と data_id を指定して、そのデータに紐づくサムネイルURL一覧を取得します。
            - ファイル個別のサムネイルが欲しい場合は、search/data 結果から取得した file の id を使って絞り込みます(GraphQLの fileID に相当)。
            - 本ツールは2通りに対応:
            (A) thumbnails=[{id, original_path}, ...] を直接渡す(既にファイル情報を持っている場合に高速)
            (B) dataset_id と data_id を渡す(ツール側で対象データのサムネイルを探索)

            例:
            - データIDからサムネイルのURL一覧を取得:
            dataset_id="ndm", data_id="<searchで取得したid>"

            - 特定ファイルのサムネイルを取得(直接指定):
            thumbnails=[{ id:"<fileのid>", original_path:"<元ファイルの相対パス>" }]

            注意:
            - 取得したURLが download ドメインで始まる場合は **60秒以内にダウンロード開始**が必要です(期限切れに注意)。
            - サムネイルが存在しないデータは **空配列** が返ります。
            - fileID を指定しない場合はデータに紐づく代表サムネイル等が返ります。必要に応じてファイルIDで絞り込んでください。
            - レスポンスは配列で、各要素は fileName / URL を含みます(GraphQL: thumbnailURLs)。
ParametersJSON Schema
NameRequiredDescriptionDefault
thumbnailsNo取得するサムネイルの配列
dataset_idNoデータセットID
data_idNoデータID

TDQS

A4.4/5.0
Behavior4/5

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

No annotations provided, so description carries full burden. Discloses critical 60-second URL expiration for download domain URLs, empty array behavior when thumbnails don't exist, and response structure (array with fileName/URL). Does not mention rate limits or caching behavior, but covers the essential operational constraints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well-structured with clear sections: purpose → usage patterns → examples → warnings. Despite length, every section provides distinct value (examples show concrete syntax, notes contain critical 60-second expiration warning). Front-loaded purpose statement followed by progressive detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema provided, but description compensates fully by detailing response format ('配列で、各要素は fileName / URL を含みます'), edge case behavior (empty array return), and temporal constraints (60s expiration). Complete coverage for a tool with dual invocation modes and no annotations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has 100% coverage (baseline 3). Description adds crucial semantic context: explains the mutually exclusive usage modes (direct thumbnails array for 'fast' path vs dataset lookup), clarifies that 'id' corresponds to GraphQL fileID from search results, and documents the relationship between dataset_id and data_id parameters.

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

Purpose5/5

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

Opening sentence 'データのサムネイル画像URLを取得する' provides specific verb (取得する) + resource (サムネイル画像URL). Clearly distinguishes from sibling get_file_download_urls by focusing specifically on thumbnail images rather than file downloads.

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

Usage Guidelines4/5

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

Explicit '使い方' section documents two distinct invocation patterns (A: direct thumbnails array vs B: dataset_id/data_id lookup). Explains when to use file-level filtering ('ファイル個別のサムネイルが欲しい場合') and references integration with search/data results. Lacks explicit comparison to sibling alternatives like get_file_download_urls.

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

get_zipfile_download_urlA

複数の付属ファイルをZIP形式で圧縮し、圧縮ファイルのダウンロードURLを取得する。URLの有効期限は60秒。

            使い方:
            - まとめて取得したい複数ファイルの `id` と、ZIP内に格納する `original_path`(パス)を指定します。
            - search / data で取得した `files` から必要な id / original_path を選択して投入してください。
            - 本ツールは2通りに対応:
            (A) `files=[{id, original_path}, ...]` を直接渡す
            (B) `dataset_id` と `data_id` を渡す(ツール側で `files` を参照しZIP作成)

            例:
            - IFCを3本まとめてZIPで取得:
            files=[
                { id:"<id1>", original_path:"ICON/.../モデルA.ifc" },
                { id:"<id2>", original_path:"ICON/.../モデルB.ifc" },
                { id:"<id3>", original_path:"ICON/.../モデルC.ifc" },
            ]

            - データIDから付属ファイルをZIP化(簡易):
            dataset_id="cals_construction", data_id="<searchで取得したid>"

            注意:
            - ZIPのダウンロードURLは **60秒間のみ有効** です。取得後すぐにダウンロード処理を開始してください。
            - GraphQLは `zipfileDownloadURL(files:[FileInputClass]): String`。`files` の `id` / `original_path` は `DataClass.files` を用います。
            - 大容量ZIPはクライアント側のタイムアウト設定にも注意してください。
ParametersJSON Schema
NameRequiredDescriptionDefault
filesNoZIP化するファイルの配列
dataset_idNoデータセットID
data_idNoデータID

TDQS

A4.8/5.0
Behavior5/5

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

With no annotations provided, the description carries full behavioral disclosure burden. It explicitly warns that download URLs are valid for only 60 seconds (critical operational constraint), notes client-side timeout risks for large ZIPs, and reveals the underlying GraphQL implementation structure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections (purpose, usage, examples, warnings) and front-loaded critical information. It is slightly verbose with the GraphQL implementation detail at the end, which is unnecessary for tool selection, but overall efficiently organized.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and no annotations, the description adequately explains the return value (URL string) and operational constraints (60s expiry, large file timeouts). It could be improved by mentioning error conditions (e.g., invalid file IDs) or whether the ZIP resource persists after URL expiry.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Despite 100% schema coverage (baseline 3), the description adds substantial semantic value: it explains that files and dataset_id/data_id represent mutually exclusive usage modes, clarifies that original_path determines the storage path inside the ZIP, and provides concrete IFC file examples showing valid input structures.

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

Purpose5/5

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

The opening sentence clearly states the tool compresses multiple attachments into ZIP format and retrieves a download URL, with the critical detail that the URL expires in 60 seconds. This clearly distinguishes it from sibling get_file_download_urls which handles individual files.

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

Usage Guidelines5/5

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

The '使い方' section explicitly documents two distinct invocation patterns: (A) passing a files array directly with id/original_path, or (B) using dataset_id/data_id for simplified retrieval. It specifies that parameters should come from search/data results, providing clear guidance on when to use each pattern.

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

normalize_codesA

入力された都道府県名・市区町村名を正規化し、正式なコードと名称を取得する。

            使用ケース:
            1. ユーザー入力('東京', 'Tokyo', '13')を正規化 → '13' + '東京都'
            2. 市区町村名から5桁コードを取得
            3. 曖昧な入力の候補一覧取得

            このツールを他の検索ツールの前に実行することで、正確なprefecture_code/municipality_codeを取得できます
ParametersJSON Schema
NameRequiredDescriptionDefault
prefectureNo都道府県の指定。以下の形式に対応: - コード: '13', '27' - 日本語: '東京都', '東京', '大阪府', '大阪' - ローマ字: 'Tokyo', 'Osaka', 'Hokkaido' 全角数字(例: '13')も自動的に正規化されます
municipalityNo市区町村の指定。以下の形式に対応: - JISコード: '13101' (千代田区) - 日本語: '千代田区', '港区' 注意: 市区町村を指定する場合、prefectureも併せて指定することを推奨します(同名の市区町村が複数存在する可能性があるため)

TDQS

A4.4/5.0
Behavior4/5

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

Without annotations, the description carries the full burden. It effectively discloses normalization behavior (handling Tokyo/Tokyo/13/full-width numbers) and ambiguous input handling (候補一覧取得). Minor gap: no output structure details provided despite lacking output schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well-structured with clear sections: one-sentence purpose, numbered use cases (1-3), and integration guidance. No redundant text; every sentence conveys critical information about functionality or usage context.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple 2-parameter normalization tool, the description adequately covers intent and usage patterns. While it lacks explicit output schema documentation, the use cases imply return values (codes + names), making it sufficient for agent selection given the tool's limited complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with comprehensive parameter descriptions (codes, Japanese, romaji formats, full-width normalization). The main description adds use case context but does not supplement parameter semantics beyond what the schema already provides, warranting the baseline score.

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

Purpose5/5

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

The description clearly states the tool normalizes prefecture/municipality names and retrieves official codes/names (都道府県名・市区町村名を正規化し、正式なコードと名称を取得する). It specifically distinguishes itself from data retrieval siblings by positioning as an input normalization utility.

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

Usage Guidelines5/5

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

Explicitly instructs to use this tool before other search tools (このツールを他の検索ツールの前に実行することで), clearly establishing its role as a preprocessing step for the sibling data retrieval tools (get_data, search, etc.).

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

search_by_attributeA

メタデータ項目を用いて検索する。例えば、カタログ名、データセット名、都道府県、市区町村等を設定して検索することが可能。 属性フィルタで検索(GraphQL公式形のみ): attributeFilter { attributeName: "DPF:...", is: }。operatorは常に is。

            使い方:
            - 属性(attribute_name)と値(attribute_value)を指定してメタデータ検索を行う。
            - キーワード(term)を併用して、より細かい条件指定も可能。

            例:
            - 特定データセット内の検索:
            attribute_name="DPF:dataset_id", attribute_value="mlit-001", term="橋梁"

            - 東京都に属するデータ:
            attribute_name="DPF:prefecture_code", attribute_value="13"

            - データカタログ単位で検索:
            attribute_name="DPF:catalog_id", attribute_value="mlit-cat-001", term=""

            注意:
            - attribute_name には DPF:prefix を含む正式属性名を指定してください(例: "DPF:dataset_id")。
            - attribute_value の型は文字列または数値。operator は常に "is" 固定。
            - term="" の場合でも属性条件のみで検索可能。
            - minimal=True を指定すると軽量レスポンスになります。
ParametersJSON Schema
NameRequiredDescriptionDefault
termNo検索キーワード。属性のみで検索する場合は空文字列""または省略可能
firstNo検索結果の開始位置
sizeNo取得件数(最大500)
phrase_matchNoフレーズマッチモード
attribute_nameYes属性名(必須)。ネームスペースプレフィックス付き。 例: - DPF:dataset_id (データセットID) - DPF:prefecture_code (都道府県コード) - DPF:municipality_code (市区町村コード) - DPF:year (年度) - DPF:catalog_id (カタログID) - RSDB:tenken.nendo (点検年度 - 道路施設) - PLATEAU:... (PLATEAU関連属性) プレフィックスがない場合、一般的な属性には自動的にDPF:が追加されます
attribute_valueYes属性値(必須)。'is'オペレータで完全一致検索します。 例: - dataset_id: 'mlit-plateau-2023' - prefecture_code: '13' (東京都) - year: '2023' - municipality_code: '13101' (千代田区) 数値コードの場合、normalize_codesで正規化してから使用することを推奨
minimalNo最小限のフィールドのみ返す

TDQS

A4/5.0
Behavior3/5

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

No annotations provided, so description carries full burden. Discloses that operator is always 'is' (fixed), term can be empty for attribute-only search, and minimal=True produces lightweight responses. However, missing safety profile (read-only nature), rate limits, error conditions, or return value structure details expected for a search tool without annotation hints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well-organized with clear sections: overview, GraphQL syntax note, usage guidelines, examples, and cautions. Japanese text is appropriately detailed for the complexity of DPF namespace requirements. Minor verbosity in example formatting is acceptable for clarity. No redundant sentences.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 7 parameters and no output schema, the description comprehensively covers input requirements and usage patterns but omits description of return values, result structure, or pagination behavior (beyond schema definitions of first/size). For a search tool lacking both annotations and output schema, it should describe what gets returned to achieve higher completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

While schema has 100% coverage with detailed descriptions, the description adds valuable semantic context including concrete examples ('mlit-001', '13' for Tokyo, '13101' for Chiyoda) and explicit usage patterns for attribute_name/value pairs. This helps agents understand valid value formats beyond schema syntax.

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

Purpose5/5

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

Description clearly states the tool searches using metadata items (catalog names, dataset names, prefectures, municipalities) with specific examples. It effectively distinguishes from siblings like generic 'search' and location-based tools by emphasizing structured attribute filtering (DPF: prefixes) rather than keywords or coordinates.

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

Usage Guidelines4/5

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

Contains explicit '使い方' (Usage) section explaining to specify attribute_name/value pairs and that term keyword can be combined for finer conditions. Provides three concrete use-case examples (dataset-specific, prefecture-specific, catalog-specific). Lacks explicit 'when not to use' comparisons to sibling tools, but positive guidance is comprehensive.

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

search_by_location_point_distanceA

指定した地点と半径によって作成される円形範囲と交差するデータを検索する。

            使い方:
            - 緯度(lat)、経度(lon)、距離(メートル単位)を指定して円形範囲を作成。
            - term(キーワード)を組み合わせることで空間+テキスト検索も可能。

            例:
            - 東京駅から半径500m以内のバス停を検索:
            term="バス停", location_lat=35.681236, location_lon=139.767125, location_distance=500

            - 半径5km以内の道路関連データ:
            term="道路", location_lat=35.68, location_lon=139.75, location_distance=5000

            - term="" で位置情報のみ検索:
            term="", location_lat=35.68, location_lon=139.75, location_distance=1000

            注意:
            - location_lat / location_lon / location_distance の3つは必須。
            - location_distance の単位はメートル。
            - WGS84座標系を使用。
            - phrase_match=Trueで完全一致検索。
            - 大きな半径を指定すると結果件数が増加するため、sizeで制御してください。
ParametersJSON Schema
NameRequiredDescriptionDefault
termNo検索キーワード。位置のみで検索する場合は省略可能
firstNo検索結果の開始位置
sizeNo取得件数(最大500)
phrase_matchNoフレーズマッチモード
prefecture_codeNo都道府県コード。normalize_codesで正規化可能
location_latYes中心地点の緯度 (例: 35.6812 for 東京駅)
location_lonYes中心地点の経度 (例: 139.7671 for 東京駅)
location_distanceYes検索半径(メートル単位)。例: 1000 = 半径1km圏内

TDQS

A4.5/5.0
Behavior4/5

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

No annotations provided, so description carries full burden. Discloses WGS84 coordinate system, phrase_match exact-match behavior, and performance warning about large radii increasing result count. However, lacks disclosure of result sorting (distance vs relevance), error behavior for invalid coordinates, or rate limiting concerns.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Excellent structure with clear visual separation: Purpose → Usage → Examples → Notes. Each section is dense with actionable information. Examples use consistent formatting (parameter=value) that mirrors actual API calls. No filler text; even the '注意' section provides specific constraints (3 required params, max results control).

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Comprehensive for input handling with 8 parameters fully contextualized. Covers coordinate system, pagination hints (size control), and search modes. However, given no output schema exists, the description should ideally characterize return values (e.g., 'returns list of spatial data records') rather than just stating 'search data'.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Despite 100% schema coverage (baseline 3), description adds substantial value through concrete examples with real coordinates (Tokyo Station 35.681236, 139.767125), clarifies empty string usage for term, and emphasizes the meter unit for distance. The examples effectively demonstrate parameter interaction patterns beyond individual field descriptions.

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

Purpose5/5

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

Description opens with a precise statement: '指定した地点と半径によって作成される円形範囲と交差するデータを検索する' (Search for data intersecting with the circular range created by specified point and radius). This provides specific verb (検索/search), resource (データ/data), and geometric scope (circular range) that clearly differentiates it from sibling rectangle-based and attribute-based search tools.

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

Usage Guidelines4/5

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

Provides excellent practical guidance through '使い方' (How to use) and three concrete examples showing spatial-only vs spatial+text search patterns. Explicitly notes that term can be empty for location-only searches. However, lacks explicit comparison to siblings (e.g., when to use search_by_location_rectangle vs this tool).

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

search_by_location_rectangleA

矩形範囲と交差するデータを検索する。

            使い方:
            - 指定した矩形範囲(北西緯度経度と南東緯度経度)に含まれるデータを検索します。
            - 検索語(term)を組み合わせて空間+キーワード検索も可能です。

            例:
            - 東京都内の橋梁を検索:
            term="橋梁",
            location_rectangle_top_left_lat=35.80,
            location_rectangle_top_left_lon=139.55,
            location_rectangle_bottom_right_lat=35.60,
            location_rectangle_bottom_right_lon=139.85

            - キーワードなしで矩形範囲のデータを取得:
            term="",
            location_rectangle_top_left_lat=35.7,
            location_rectangle_top_left_lon=139.6,
            location_rectangle_bottom_right_lat=35.6,
            location_rectangle_bottom_right_lon=139.7

            注意:
            - `location_rectangle_top_left_lat/lon` と `location_rectangle_bottom_right_lat/lon` の4点は必須。
            - 北西(top_left)は右下(bottom_right)よりも緯度が高く、経度が低くなるように指定。
            - termが空の場合でも矩形条件のみで検索可能。
            - phrase_match=Trueで完全一致検索。
            - size は 1回あたり最大10,000件(API制限あり)。
            - 座標は世界測地系(WGS84)を使用。
ParametersJSON Schema
NameRequiredDescriptionDefault
termNo検索キーワード。位置のみで検索する場合は省略可能
firstNo検索結果の開始位置
sizeNo取得件数(最大500)
phrase_matchNoフレーズマッチモード
prefecture_codeNo都道府県コード (例: '13'=東京都, '27'=大阪府)。normalize_codesツールで正規化できます。位置検索と組み合わせて結果を絞り込めます
location_rectangle_top_left_latYes矩形範囲の左上緯度 (例: 35.6895 for 東京)
location_rectangle_top_left_lonYes矩形範囲の左上経度 (例: 139.6917 for 東京)
location_rectangle_bottom_right_latYes矩形範囲の右下緯度
location_rectangle_bottom_right_lonYes矩形範囲の右下経度

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations provided, the description carries full behavioral disclosure burden effectively. It specifies the coordinate system (WGS84), clarifies intersection logic (交差/intersecting vs containing), notes rate limits (10,000 items), and explains coordinate ordering constraints (NW must have higher latitude than SE).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well-structured with clear visual hierarchy: purpose statement → usage guide → concrete examples → notes/cautions. The examples, while lengthy, provide essential concrete values. The warning about coordinate ordering is appropriately prominent. Slightly verbose but justified by the 9-parameter complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 9 parameters, no annotations, and no output schema, the description provides comprehensive coverage of input requirements, constraints, and usage patterns. It lacks description of return values, but without an output schema provided in the system, this is acceptable. The cross-reference to normalize_codes demonstrates awareness of the broader tool ecosystem.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% so baseline is 3. The description adds concrete example values (35.80, 139.55) and coordinate ordering constraints not in the schema. However, it contradicts the schema regarding the 'size' parameter limit (description states max 10,000; schema states max 500), creating potential confusion for the agent.

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

Purpose5/5

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

The description clearly states the tool searches for data intersecting with a rectangular range ('矩形範囲と交差するデータを検索する'). It uses a specific verb (検索/search) and resource (data by rectangle), and distinguishes itself from siblings like search_by_location_point_distance (radius) and search_by_attribute through its focus on bounding box coordinates.

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

Usage Guidelines4/5

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

Provides explicit usage patterns under '使い方' with concrete examples showing both spatial+keyword and spatial-only searches. Notably references sibling tool normalize_codes for prefecture_code normalization ('normalize_codesツールで正規化できます'), giving clear cross-tool guidance. Would score 5 if it explicitly contrasted when to use radius search (search_by_location_point_distance) versus this rectangle search.

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.

  1. 18 tool updatesv0.1.0
    • First observedget_all_data
    • First observedget_count_data
    • First observedget_data
    • First observedget_data_catalog
    • First observedget_data_catalog_summary
    • First observedget_data_summary
    • First observedget_file_download_urls
    • First observedget_mesh
    • First observedget_municipality_data
    • First observedget_prefecture_data
    • First observedget_suggest
    • First observedget_thumbnail_urls
    • First observedget_zipfile_download_url
    • First observednormalize_codes
    • First observedsearch
    • First observedsearch_by_attribute
    • First observedsearch_by_location_point_distance
    • First observedsearch_by_location_rectangle

TDQS

A4.4/5.0

Scored across 18 tools

Disambiguation4/5

Most tools have distinct purposes, but there is some overlap between search_by_attribute and search (both support term + attribute filtering) and between get_data_catalog and get_data_catalog_summary (both retrieve catalog metadata, though with different detail levels). The descriptions help clarify the differences, but an agent might initially confuse these pairs.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern with snake_case (e.g., get_all_data, search_by_location_rectangle). The naming is predictable and uniform across the entire set, making it easy for an agent to understand the action and target.

Tool Count4/5

With 18 tools, the count is slightly high but reasonable for a data platform server covering search, retrieval, metadata, and file operations. Each tool serves a specific function, though some could potentially be consolidated (e.g., multiple search variants).

Completeness5/5

The toolset comprehensively covers the domain of data access and management, including search (with various filters), data retrieval (batch, single, counts), metadata exploration (catalogs, datasets, municipalities, prefectures), file operations (downloads, thumbnails, ZIPs), and utilities (suggest, normalize). There are no obvious gaps for core workflows.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers