Skip to main content
Glama

Space Finder MCP 🚀

宇宙・天文データを横断検索し、画像・動画・音声までチャット上で表示できる Model Context Protocol (MCP) サーバーです。

惑星・人工衛星・宇宙ミッションのメディア検索、ロケット打ち上げ、小惑星接近情報、「史上初の宇宙望遠鏡は?」といった逆引き歴史Q&Aを、AIエージェント(Claude / Cursor / Hermes 等)から自然言語で呼び出せます。

「Space Finder」は宇宙(Space)に関する情報を探すMCPです。「物理的な空間=オフィス・駐車場を探す」同名サービスとは無関係です。


✨ 特徴

  • 画像・動画・音声をそのまま返せる — 画像はチャット内にインライン表示、音声・動画は再生URLを返却

  • tokyo-transit方式のJSON応答 — 人間向け表示(content)とLLM向け純粋JSON(structuredContent)を分離し、情報を失わずに構造化データを渡せる

  • 認証不要のツールが大半 — APIキーの管理なしですぐ動く(NASA の一部ツールのみ任意キー。ESA/Copernicus は検索・プレビューのみで、認証付きダウンロードは非対応)

  • 他国の宇宙機関データに対応 — インド ISRO・欧州 ESA/Copernicus・日本 JAXA・カナダ CSA・ブラジル INPE・英国 EO DataHub・フランス CNES・中国 CNSA 系ポータル・全衛星軌道(CelesTrak)・EO Dashboard(NASA/ESA/JAXA共同) を横断検索

  • 引用元を明示 — 科学的な内容には必ずデータソースへのリンクを併記

  • 図の注記を機械可読で返す(figure/1) — 描画系ツールは「どの面を・どの縮尺で・主天体を焦点に置いたか」と注記・自己検証を JSON で返し、LLM が図を誤読しないようにする

⚠️ 注(出力のどこまでが保証か) — ツールが返す**structuredContent の JSON・数値・画像・リンクは、同じ引数で同じ時刻に呼べばどのモデルからでも同じ内容です(データ取得と計算はサーバー側で完結し、モデルには依存しません)。一方、それを読みやすい文章に組み立てる工程はホスト側の AI モデルに委ねられます**。説明の順序・語り口・要約の粒度・強調する点はモデルや設定によって変わるため、同じツール結果でも書き上がりは同一にはなりません。数値や出典の最終的な根拠は structuredContent に置いてください(表示文と食い違って見える場合は JSON 側が正で、その差は「モデルの文章化」のばらつきです)。

Related MCP server: NASA MCP Server

🧭 図の注記(figure/1)— 描画系ツールの自己申告

描画系ツール(solar_system_now / sat_ground_track / planetary_orbiter_track / planetary_rover_location_map / sky_map_with_satellites / solar_eclipse_series / moon_phase_map / astronomy_weather〔雨雲・降水画像を返すとき〕)は、画像を返すだけでなく structuredContent.figureschema: "figure/1" に「その図をどう描いたか」を自己申告します。LLM はピクセルから描画規約を推測できないため(高離心率の軌道を「主天体の周りを回る円」と説明してしまう等)、注記をデータとして渡す設計です。

  • view — どの面を(frame)どの投影で(projection)見た図か、なぜその視点なのか(why

  • primary — 主天体を焦点at: "focus")に置いたか中心"center")に置いたか、焦点と中心のズレ(center_offset

  • scale — 線形/対数(type)、実寸か(to_scale)、誇張している要素(exaggerated

  • conic — 軌道の円錐曲線(kind: ellipse / parabola / hyperbola、a / e / q / apo / c)

  • notes — 図の誤読を防ぐ注記。数値から生成するので図と文が食い違いません

    • 地図タイルが取れなかった場合は「地図タイル N/M 枚を取得できませんでした(図の該当領域は背景色のまま)」も数値から生成します(欠けを黙って捨てると「地図に無い=何も無い」と誤読されるため)

  • verify — 図の自己検証(描いた画素から測った近点/遠点距離、ラベルの線被り画素数、periapsis_check: equality / upper_bound

    • 近点が画面上で分解できない図(超長距離の楕円では近日点が「誇張した主天体の円盤」の内側に入る)は、画素から近点距離を測っても意味がないため等値検査をせず、periapsis_resolvable: false + 理由 + 上界検査(曲線が焦点から円盤半径以上に近点側へ伸びていないこと=主天体を楕円の中心に置く誤りは依然として検出)に切り替えます。この場合の注記には「この縮尺では図から確認できない」旨が数値から生成されて入ります

  • verify.panel_overlaps_marker — 地図の上に置く情報パネルが現在位置マーカーを隠していないか。パネルは surface_map.panel_placement()マーカーを隠さない隅へ置き、どの隅でも重なる小さい図ではマーカーをパネルの上に描き直します(描いた後にパネルを重ねるとマーカーが消えるため。実測: 月面の LRO が図の上端に来ると左上のパネルの下に入り、画素検査 marker_pixels が 0 になりました)

  • caption — そのまま使える1〜2文の説明

content(人間向け表示)にも同じ注記を ### ⚠️ 図の注記 として出すので、structuredContent を使わないクライアントでも注記は失われません。

uv run python scripts/check-tools.py --figures   # 描画系の figure/1 を検査(注記が空・verify.ok が偽なら exit 1)
uv run python scripts/check-tools.py --media-links # 画像/音声/動画のリンク先行を検査(画像より前にリンクが無い等で exit 1)
uv run python scripts/check-tools.py --concurrency # 並列ツール呼び出し(single-flight/スレッド逃がし/例外漏れ)を検査
uv run python scripts/check-tools.py --stdio       # 実クライアント経路(stdio)で代表ツールが無応答にならないか検査

🔀 並行ツール呼び出し(LLM が複数ツールを同時に投げる)

LLM は1ターンで複数のツールを並行に呼びます。サーバー側がそれに応えられるかは別問題で、FastMCP は同期関数をイベントループ上でそのまま呼ぶため、素のままだと1つのツールが API 待ちをしている間、他のツール呼び出しは1つも動き出しません(実測: 同一ツール4並列で wall = 各呼び出しの合計 2.55s)。

  • 同期ツールは anyio のワーカースレッドで実行server.py_threaded / _reg)。同じ4並列が wall 2.47s・4.0× になりました。実ネットワークでも、別々の地名の astronomy_weather 3並列が 3.93s(逐次合計 11.72s・3.0×)です。

  • 同じ引数の並行呼び出しは1回に集約cache.ttl_cache の single-flight)。8並列の同一呼び出しでも実行は1回・結果は共有なので、NASA の DEMO_KEY のような共有枠を N 倍消費しません。

  • matplotlib で描く経路は img_common.RENDER_LOCK で直列化。pyplot はプロセス全体の状態(rcParams・現在の figure)を持つため、並列に描くと図が混ざります。

  • 共有状態はロックで保護cache / nasa_budget)。キャッシュされた戻り値は呼び出し側で書き換えません(並行時に他人の結果を壊すため。書き換えるなら deepcopy)。

  • CPU 律速の計算は GIL で並列化しません(Skyfield・Pillow の計算)。並列化が効くのは I/O 待ち(API 呼び出し)で、それが並列ツール呼び出しの主目的です。

  • 検査: uv run python scripts/check-tools.py --concurrency(single-flight/ワーカースレッドへの逃がし/混在4ツールの並列呼び出しで例外漏れ・structuredContent 欠落が無いこと)。

  • ⚠️ 遅延 import するネイティブ拡張は起動前に import 済みにしておきますserver.py 冒頭の import numpy)。stdio サーバーが動き出した後に numpy / matplotlib / skyfield を import すると、import が返らずツール呼び出しが無応答になります(実測: numpy・matplotlib.pyplot・skyfield.api が HANG。PIL.Image・sgp4・requests は問題なし)。scripts/check-tools.py --stdio が実際に子プロセスを起動して代表ツールの応答を確認します。

🧭 名前解決のフォールバック(表記ゆれ・和名・名前→座標)

「自然な入力をしたのに 0 件/エラー」を防ぐため、名前の解決を name_common.py の共通段階に集約しています(各ツールが個別に対処すると必ず穴が残るため)。

段階

内容

実例(実測)

1. 内蔵テーブル / 既知名

速い・オフライン

M31, iss, hubble

2. 表記ゆれ(空白/アンダースコア/連結/大小)

アーカイブは観測者の入力そのままを持つ

HL TauHL_Tau/HLTau も一致(ALMA の target_name

3. 和名 → 英語名

JA_ALIASES(衛星・深宇宙天体)

「ひまわり」→himawari、「ひので」→29479、「オリオン大星雲」→Orion Nebula

4. 名前 → 座標

Sesame/CDS(SIMBAD・NED 横断・認証不要)

M104/Sombrero/HL Tau → 座標 → 円錐検索(CADC)

5. それでも駄目なら 候補を提示して停止

推測で検索しない

ALMA はアーカイブ内の候補名、CelesTrak は既知の名前一覧を提示

  • JA_ALIASES は 103 キー: 日本の気象・地球観測・科学衛星(ひまわり/だいち/いぶき/しずく/しきさい/みちびき/ひので/あかつき/はやぶさ2…)、有人・輸送(宇宙ステーション/きぼう/こうのとり)、宇宙望遠鏡(ハッブル/JWST/スピッツァー/ケプラー/ガイア…)、中国機(天宮/天和/問天/夢天/神舟/嫦娥…)、深宇宙天体(銀河・星雲・星団17件)、明るい恒星16件。

  • 現役衛星は WELL_KNOWN に NORAD ID を実測登録(CelesTrak GROUP=active の OBJECT_NAME と突合): ひまわり8/9号、だいち2/4号、いぶき/いぶき2号、しずく、しきさい、あじさい、あらせ、れいめい、ひさき、天和/問天/夢天、ISS、ハッブル、ひので 等 → 和名から NORAD ID までオフラインで解決(衛星系キーの 21/61。残りは過去機・番号なしのファミリー名で、曖昧なら候補提示、退役機は「表示できない」と正直に返す)。

  • 適用先: alma_search(表記ゆれ+候補提示)/ cadc_observations(名前→座標のフォールバック)/ satellite_status(和名展開+一致件数の明示)/ sat_tle(和名→NORAD ID 解決+候補提示)

  • ⚠️ 修正の根拠は実測: 以前は cadc_observations("M104") が即エラー、satellite_status(query="ひまわり")sat_tle(name="ひので") が 0 件、alma_search("HL Tau", band=7) が 0 件でした(すべて現在は解決)。

🔗 メディアのリンク — インライン表示できないクライアント向け

Hermes Agent のようなリッチなクライアントは ImageContent をそのまま描画しますが、CLI系・Android系のハーネス(codex / opencode など)は画像ブロックを無視するため「画像が生成されたのに何も表示されない」状態になります。そこで メディア本体より前に、アイコン付きの markdown リンクを必ず出します。

種別

出る場所

生成画像(描画系7ツール)

content先頭行

🖼️ [生成した画像を開く(…)](file:///…) | 保存先: \``

検索した画像search_space_images

各項目の説明の直後

🖼️ [画像を開く: タイトル](URL)

検索した音声search_space_audio

各項目の直後

🎧 [音声を開く: タイトル](URL)

検索した動画search_space_videos

各項目の直後

🎬 [動画を再生: タイトル](URL)🖼️ [ポスター画像を開く: …](URL)

気象衛星の実画像weather_satellite_now

content先頭行

🖼️ [生成した画像を開く](画像URL)file:// の保存先

気象庁の雨雲・降水画像astronomy_weather

各画像の直前行

🖼️ [◯◯を開く: ラベル](気象庁のページURL)

EO Dashboard のサムネイルeodashboard_detail

説明の直後・画像の直前

🖼️ [サムネイル画像を開く: タイトル](URL)

APOD の画像URLapod

タイトルの直後

🖼️ [画像を開く: タイトル](URL)(動画の日は 🎬

  • 生成画像は %LOCALAPPDATA%\Temp\space_finder_mcp\out\<tool>_<日時>_<乱数>.<ext>生バイトのまま保存し、file:// URI と実パスの両方を出します(最新200件を残して自動整理)。

  • 同じパスを structuredContent.image_path にも入れるので、LLM はファイルを再参照できます。

  • URL 内の空白・括弧は %20 / %28 にエスケープします(NASA のアセットURLには空白入りの動画名があり、生のままだとリンクが途中で切れます)。

  • content の並びは常に「リンクを含むテキスト → ImageContent」なので、画像を描けないクライアントでもリンクは必ず見えます

  • 機械的に検査しますscripts/check-tools.py --media-links(画像ブロックより前にアイコン付きリンクが無い/structuredContent にURL・保存パスが無い/image_path のファイルが存在しない場合は exit 1。実測: 画像を返す12ツールすべて OK)。生成系の docstring には「回答時はこのリンクをそのまま提示してください」と明記しています。

🆕 直近の更新内容(v0.31.1)

「蓄積ストアの保持期限を全経路で適用」(v0.31.1)。保持の設計は変えず(過去データは45日で自動削除・有効な予定は永久)、保持期限が calendar_events(一覧だけを見る軽い経路)でも効くようにしました。

  • 🧹 calendar_events でも prune — これまでは space_calendar(カレンダー描画)を呼んだときだけ古いデータを削除していたため、一覧だけを使い続けると過去データが溜まり続けました。calendar_store.KEEP_PAST_DAYS(=45日)を単一の出典にして、両方の経路で同じ期限を適用します。有効なユーザー予定は対象外(削除した予定は tombstone として残り180日で消える)。

  • 注記に保持期限を明示figure.notescalendar_events の説明に「過去データは45日で自動削除」をコードの定数から生成して出します(数値とコードが食い違わない)。

  • 🧪 回帰テストcalendar_events が期限切れデータを消し、ユーザー予定を消さないことを検証(計49件)。

  • 🧪 回帰テストcalendar_events が期限切れデータを消し、ユーザー予定を消さないことを検証(計49件)。

  • 🔍 ゲートの検証範囲を拡張 — 予定系ツールは引数が必須のためゲートでは「引数を指定してください」で終わり、実経路が検証されていませんでした。ゲート専用の安全な引数を与え、書き込みは一時ストアへ逃がして利用者の実データを汚さずに4ツールすべて(追加・一覧・削除・描画)を実呼び出しで検証します。

  • 検証 — 全51ツール実呼び出し exit 0(45 OK/6 error はいずれも外部の一時制限: NASA 429×2・CelesTrak 遮断×3・Open Notify 接続失敗×1。カレンダー4ツールはすべて ok)/--dead-code 0/--fuzz 288組合せ 例外漏れ0/--offline exit 0/--figures 描画系9/--media-links 12ツール 問題0/--concurrency 3/3/--stdio 6/6 無応答0/unittest 49件 OK。実ストアでも検証(2020年の検証レコードを挿入 → calendar_events 呼び出しで削除・予定は保持。ゲートの書き込みが実ストアに混入しないことも確認)。

登録ツールは 51本(増減なし)。

以前の更新

  • v0.31.0宇宙・天文イベントカレンダー(4ツール)space_calendar(月グリッド+structuredContent.events。打ち上げ=LL2・天文現象=DE421+Skyfield・公開イベント=国立天文台・自分の予定=ローカル)と calendar_events / calendar_event_add / calendar_event_remove。蓄積ストアを一次ソースにした read-through(窓 [M-1, M+2]・未取得の月だけ取得。初回 8〜11秒/2回目以降 API 0回・0.4秒)。

  • v0.30.2 — LLM の並列ツール呼び出しへの対応(全47ツールを anyio のワーカースレッド実行・single-flight・RENDER_LOCK。実測 4並列 2.55s→2.47s)と、stdio 無応答(numpy の起動時 import)・外部API遮断での固まり(fail fast)・メディアリンク抜け・情報パネルが現在位置マーカーを隠す描画バグの修正。

  • v0.30.1 — 衛星カタログの全件走査と一致度順、NASA 断時の宇宙天気 SWPC フォールバックsource で出典明示)。

  • v0.30.0 — 気象庁の雨雲・降水画像(解析雨量・降水短時間予報+ナウキャスト、雷活動度で警告)を astronomy_weather に統合し、日食ルーチンを応用した月齢マップ moon_phase_map を追加(47ツール)。

  • v0.29.1 — 外部データの部分失敗・異常値を黙って落とさない修正と回帰テスト(ISS時刻の防御的変換、neo_today の content 側 redact、部分失敗の数値化)。

📦 インストール

前提

  • uv(Python 3.11+)

インストール

# リポジトリをクローンして依存インストール
git clone https://github.com/loosephoto/space-finder-mcp.git
cd space-finder-mcp
uv sync

実行

# MCP サーバー起動(stdio)
uv run space-finder-mcp

ローカルで uv run を使うため、uvPATH にある必要があります。

(任意)NASA APIキー

apodneo_todayapi.nasa.gov の無料キーを使います。未設定でも DEMO_KEY で動作しますが、レート制限 30 req/hr/IP と低く、space_weather(DONKI) も同じ枠を共有するため、キー未設定だと3ツールが枠を取り合います。実用にはキーを推奨します。

呼び出し回数はサーバー側で管理していますnasa_budget.py)— 直近1時間の使用数を数え、枠を使い切っていたらHTTP を投げずに回復までの目安(例:「約30分後に自動的に回復します」)を返します。実際に 429 を受けた場合は Retry-After を尊重し、その間は再試行しません(同じ 429 を繰り返し踏みに行かない)。CelesTrak も短時間の連続リクエストで IP 単位に遮断され(403、または TCP が返らない blackhole)、その間は 1 回の呼び出しが分単位で固まります。接続は (connect 10 秒, read 25 秒) で打ち切り、遮断を受けたらセッション内で記憶して以降は HTTP を出さずに即座に案内を返します(sat_tle / sat_ground_track / tiangong_now / sky_map_with_satellites が該当)。

キーの取得方法(無料・即時発行): api.nasa.gov にアクセスし、メールアドレスを登録するだけで 無料の API キーが即時発行されます。無料開発者キーのレート制限は 1時間あたり 1,000 リクエスト です(実用に十分な容量)。登録時に入力したメール宛てに確認が来ます。

# (a) 環境変数で渡す
export NASA_API_KEY="your_key_here"

# (b) リポジトリ直下の .env に書く(MCPクライアントの設定にキーを書きたくない場合)
cp .env.example .env   # 編集して NASA_API_KEY=... を記入(.gitignore 済み・コミット禁止)

優先順位は MCPクライアントの env > リポジトリ直下の .env です(未設定なら DEMO_KEY)。

キーの取り扱い: 応答に含まれる API キーは伏せ字化します(nasa_budget.redact()api_key=***budget.keyDEMO_KEY / custom のみ)。requests の例外文字列が URL ごとキーを含むため、そのまま返すと利用者のキーが漏れるためです。

ESA Copernicus について(認証付きダウンロードは非対応)

copernicus_search検索とプレビューURL取得は認証不要で動作します。本サーバーは OAuth2 による認証付きダウンロードは行いませんCDSE_CLIENT_ID 等のクレデンシャルは使用しません)。実際の画像ダウンロードが必要な場合は Copernicus Data Space で取得してください。


🔌 MCPクライアントへの登録

Claude Code

cd /絶対パス/space-finder-mcp
claude mcp add -s project space-finder -- uv --directory "$(pwd)" run space-finder-mcp
claude mcp list   # 確認(space-finder が表示されればOK)

-s project はリポジトリ直下に .mcp.json を作ります(共有向け)。個人利用なら -s user を指定します。

プロジェクトガイドは CLAUDE.md、開発規約は .claude/rules/ にあります(Claude Code が自動で読み込みます)。

Codex

codex mcp add space-finder --env NASA_API_KEY=<your_key> -- uv --directory <絶対パス>/space-finder-mcp run space-finder-mcp
codex mcp list

--env は省略可(その場合は .envDEMO_KEY を使用)。エージェント向けガイドは AGENTS.md です。

Claude Desktop / Cursor / その他(claude_desktop_config.json / mcp.json

同梱の mcp.json を参考に設定してください(args のパスは環境に合わせて書き換えます)。

{
  "mcpServers": {
    "space-finder-mcp": {
      "command": "uv",
      "args": ["--directory", "/絶対パス/space-finder-mcp", "run", "space-finder-mcp"]
    }
  }
}

env を書く場合は空文字を入れないでください(空だと DEMO_KEY にフォールバックしません)。キーは env.env のどちらか一方に置けば十分です。

エージェント向けドキュメント

ファイル

用途

CLAUDE.md

Claude Code 用プロジェクトガイド(セットアップ・規約・検証・リリース手順)

AGENTS.md

Codex など AGENTS.md を読むエージェント向けガイド

SKILL.md

エージェント向けスキル定義(51ツールの仕様・使用例・キャッシュ・注意事項)

.claude/rules/

開発規約(コーディング・検証ゲート・データ出典)

Hermes Agent

hermes config set mcp_servers.space-finder-mcp.command uv
hermes config set 'mcp_servers.space-finder-mcp.args' '["run", "--project", "/絶対パス/space-finder-mcp", "space-finder-mcp"]'
# 反映には再起動

🛠️ ツール一覧

登録ツールは 51本(宇宙・天文イベントカレンダー 4本(space_calendar / calendar_events / calendar_event_add / calendar_event_remove)+他国の宇宙機関データ 15本+火星探査ローバー状況 1本+天文観測(ESO/CADC/ALMA) 3本+電波望遠鏡(TART) 1本+天文ニュース 1本+天体観測用天気 1本+天体位置・星座 1本+星図合成 1本+太陽系俯瞰 1本+日食時系列 1本+月齢マップ 1本+NASA POWER気候 1本+EO Dashboard 2本+宇宙天気 1本+AWS STAC 2本+ISS位置 1本+衛星地上軌道 1本+汎用天体周回機 1本+汎用ローバー位置 1本+WMO OSCAR 1本+気象衛星リアルタイム画像 1本+中国/ロシア打ち上げ・天宮 3本+メディア/逆引き 4本)。全51ツールを実呼び出しで検証済みです(外部APIの障害・レート制限時は、例外ではなく CallToolResult のエラーとして返します)。

ツール

できること

データ源

認証

reverse_lookup

「史上初の宇宙望遠鏡は?」等をカテゴリ+国+時期から解決

Wikidata SPARQL

不要

upcoming_launches

今後のロケット打ち上げ予定(日時・機体・射場・状態)

Launch Library 2

不要

china_launches

中国のロケット打ち上げ予定(長征・Shenzhou・LandSpace等・射場・ミッション)

Launch Library 2

不要

russia_launches

ロシア(Roscosmos)のロケット打ち上げ予定(ソユーズ・Progress・Luna等・射場・ミッション)

Launch Library 2

不要

apod

今日(指定日)の天文写真

NASA Open API

キー(任意)

neo_today

今日地球に接近する小惑星

NASA Open API

キー(任意)

search_space_images

惑星・衛星の画像検索+チャット内インライン表示(既定は先頭1枚・inline_max で増減)

NASA Image & Video Library

不要

search_space_audio

宇宙音声の検索(kindで効果音/ポッドキャスト切替)

NASA / Sounds from Beyond

不要

search_space_videos

宇宙動画の検索+再生URL(解像度別・字幕付き)

NASA Image & Video Library

不要

isro_data

インドISROの人工衛星・ロケット・顧客衛星・センター一覧/検索

ISRO公式API (github.com/isro/api)

不要

copernicus_collections

ESA Copernicus の衛星データコレクション一覧

Copernicus Data Space (STAC)

不要

copernicus_search

ESA Copernicus の衛星画像を STAC で検索(領域・日時・雲量)

Copernicus Data Space (STAC)

不要(検索・プレビューのみ)

jaxa_datasets

JAXA Earth の地球観測データセット一覧(ALOS/GSMaP/GCOM等)

JAXA Earth API (STAC COG)

不要

jaxa_dataset_search

JAXA Earth データセットをキーワード検索

JAXA Earth API (STAC COG)

不要

csa_dataset_search

カナダCSAオープンデータ(RADARSAT等)を検索

CSA Open Data Portal (CKAN)

不要

inpe_collections

ブラジルINPEの衛星データコレクション一覧

INPE BDC STAC

不要

inpe_search

ブラジルINPEの衛星画像(CBERS・Amazonia-1等)をSTAC検索

INPE BDC STAC

不要

sat_tle

全世界の衛星の軌道要素(TLE)を取得(ISS・ハッブル・気象衛星等)

CelesTrak (NORAD)

不要

uk_stac_collections

英国EO DataHubのコレクション一覧

UK EO DataHub STAC

不要

uk_stac_search

英国EO DataHubの衛星・気候データをSTAC検索

UK EO DataHub STAC

不要

cnes_status

フランスCNESのポータル(THEIA/GEODES)到達状態・概要

CNES THEIA/GEODES

不要(ダウンロードは要登録)

astronomy_weather

天体観測に最適な夜間の時間帯を予報(雲量・視程・風速・降水・月相・月明かりから判断)。日本国内の地点では気象庁の雨雲・降水画像(解析雨量・降水短時間予報パネル+ナウキャスト、雷の有無も確認)を画像で同時に返すinclude_rain=false で無効化)

Open-Meteo + 気象庁(ナウキャスト・解析雨量)

不要

constellation_now

指定地点・時刻で太陽・月・惑星の高度・方位・星座を計算(観測可否判断)

Skyfield + JPL de421

不要

astronomy_news

最新の天文ニュース・「今週の星空ガイド」を取得(観測/ニュース絞込可)。取得不可時は他ソースへ自動フォールバック

Sky & Telescope / Universe Today / NASA / Phys.org RSS

不要

mars_rover_status

火星探査ローバー(キュリオシティ等)の現在の状況・天気・ソルを表示

NASA Mars Weather

不要

power_climate

任意地点の過去の気候・太陽エネルギー統計(気温・日射量・風速)

NASA POWER

不要

eso_seeing

ESO パラナル天文台(チリ, VLT)のリアルタイム大気コンディション(シーイング・可降水量・気象)

ESO ASM API

不要

cadc_observations

CADC(カナダ天文データセンター)の観測データ検索(HST・ジェミニ等)

CADC TAP

不要(画像DLは一部要登録)

alma_search

ALMA(アルマ望遠鏡)科学アーカイブの観測データ検索(観測対象・座標・周波数帯・公開/要権限)

ALMA Science Archive (NAOJ, IVOA TAP)

不要

radio_sources_now

TART オープン電波望遠鏡が「いま観測できる電波源」(GNSS・静止衛星等)を仰角順に表示

TART source catalog (NZ)

不要

sky_map_with_satellites

指定地の空に太陽系の惑星と人工衛星を重ねた画像(matplotlib正確版=PNG/Pillow簡易版=JPEGを選択)

JPL de421+Skyfield / CelesTrak+SGP4

不要

solar_system_now

太陽を中心とした太陽系の惑星・小惑星・探査機・彗星の現在位置俯瞰図(ハレー等の周期彗星とC/彗星・ボイジャー等の遠方天体まで対数縮尺で自動拡張表示)。view="comet_orbit" で彗星の軌道面ビュー(太陽=焦点の楕円/e≥1 は双曲線の枝)。comet にカンマ区切りで複数(または comet2、最大4天体)指定すると 1彗星=1パネルで1枚に並べる(パネルごとに軌道面と縮尺が違う旨は figure.notes に自動生成)

JPL DE421+Skyfield / JPL SBDB / JPL Horizons

不要

solar_eclipse_series

日食(太陽が月に欠ける過程)の時系列パネル画像(7枚・食分と太陽高度・次回日食の自動検索=約4年(1400日)先まで・max_magnitude対応。地平線下で見えない食は返さない

JPL DE421+Skyfield

不要

moon_phase_map

月齢マップ(月の満ち欠け)。layout="calendar"(既定)で1か月の日別格子(日月火水木金土・月齢・照度・月相)、layout="lunation" で1朔望月(朔→朔)の時系列パネル。輝面の向きは太陽の位置角から計算(月齢からの決め打ちをしない)。朔・望・上弦・下弦の時刻を現地時間で併記

JPL DE421+Skyfield

不要

eodashboard_collections

EO Dashboard(NASA×ESA×JAXA共同)の173データセットをテーマ・機関・キーワードで検索

EO Dashboard (GitHub catalog)

不要

eodashboard_detail

EO Dashboardの1データセットの詳細(衛星・センサー・説明・画像・参照リンク)

EO Dashboard (GitHub catalog)

不要

space_weather

宇宙天気(太陽フレア・CME・地磁気嵐・太陽粒子現象)。NASA が枠切れ・障害のときは認証不要の NOAA SWPC(Kp・NOAAスケール・GOES X線・太陽風・陽子・警報・黒点)へ自動切替(出典を明記)

NASA DONKI → NOAA SWPC(フォールバック)

不要(SWPC)/キー任意(DONKI)

stac_collections

AWS Earth Searchの衛星データコレクション一覧

AWS Earth Search STAC

不要

stac_search

Sentinel-2 / Landsat / NAIP / DEM をSTAC検索(場所・日時・雲量)

AWS Earth Search STAC

不要

iss_now

ISS(国際宇宙ステーション)の現在位置を取得し Googleマップリンクで表示

Open Notify

不要

sat_ground_track

任意の人工衛星(ISS・ひので・ハッブル等)の現在位置と地上軌道を地球地図にプロットした画像を返す。CelesTrak TLE + Skyfield(SGP4) で真下の点・高度・速度を計算し、NASA Blue Marble 地図に軌道トレイルを重ねる

CelesTrak + Skyfield + Blue Marble

不要

planetary_orbiter_track

任意の天体(月・火星・水星・タイタン等)を周回する探査機の現在位置と軌道トレイルを、その天体の地図にプロットした画像を返す。JPL Horizons の状態ベクトルを IAU 自転モデルで天体固定座標(緯度経度・高度)に変換し、NASA Trek の等角図法地図に重ねる。span_deg=360で天体全面表示にも対応。過去機(かぐや等)は運用終了を案内し、落点が公表されている機体は落点を地点マーカーで描いた地図(figure.kind="impact_site_map")を返すsites="apollo"(または "apollo11""apollo17", "all")で 地点マーカー図figure.kind="landing_site_map"/木星は impact_site_map)も返す。全球等角図がある天体(月・火星・水星・タイタン・ベスタ・ケレス)は地形画像の上に、無い天体(木星・土星・冥王星・金星・ガリレオ衛星など)は緯度経度グリッドの上に公表座標を描く

JPL Horizons + NASA Trek / NASA NSSDC / PDS

不要

planetary_rover_location_map

任意の天体面を移動する探査ローバーの現在地をその天体の地図中心に示した画像(走行経路・着陸点)。NASA MMGIS の位置データと NASA Trek の等角地図を合成。現状データは火星ローバー(Perseverance/Curiosity)

NASA MMGIS + Trek WMTS

不要

weather_satellite_now

GEO/LEO気象衛星19機(ひまわり9号・GOES-18/19・Meteosat・FY・GK-2A・INSAT・NOAA-20/-21・SNPP・Metop-B/C・FY-3D)の公開画像。GEOは最新フレーム、LEOは日次全球合成。取得不可は restricted/unavailable/non_image_product の理由コードで返す

JMA(himawari.asia)/NOAA STAR/EUMETSAT WMS/CMA-NSMC/KMA/IMD/NASA GIBS

不要

space_calendar

宇宙・天文イベントカレンダー(月グリッド図+JSON)。打ち上げ(LL2 の月範囲クエリ・日付精度 net_precision が Day/Hour/Minute/Second の行だけを日付セルに配置)・天文現象(Skyfield のローカル計算: 月相・二十四節気・惑星の衝/合/内合・最大離角・日食月食・流星群)・公開イベント(国立天文台)・自分の予定を重ねて描く。取得結果は蓄積ストアに溜め、要求月 M に対して窓 [M-1, M+2] を確保し未取得・期限切れの月だけ取りに行く(2回目は API 0 回)。NASA の公式リスト(WP REST)と照合した行には公式URLを付与

Launch Library 2 + JPL DE421/Skyfield + 国立天文台 + nasa.gov

不要

calendar_events

蓄積済みイベントの一覧(図を描かず外部APIも呼ばない軽い経路)。打ち上げ・天文現象・公開イベント・自分の予定を日付順に返す

蓄積ストア(ローカル)

不要

calendar_event_add

自分の予定をカレンダーに追加(ローカル保存・外部送信なし)。日付は 2026-10-24 / 10月24日 形式、時刻・終了日・繰り返し(毎日/毎週/毎月/毎年)対応。フローティングなローカル日時なので place を変えても予定の日付は動かない

ローカル(%LOCALAPPDATA%\space-finder-mcp

不要

calendar_event_remove

自分の予定を削除(id か title[+date])。冪等(既に無ければエラーにしない)。同名が複数あるときは削除せず候補を提示して停止

ローカル

不要

satellite_status

世界中の気象・地球観測衛星の運用ステータス・軌道・打ち上げ日(Roscosmos等)。カタログ全1,000件超を走査し、query は一致度順(acronym 完全/前方一致 → 名称の語境界 → 部分一致のみ)で提示

WMO OSCAR

不要

cnsa_status

中国CNSA系衛星データポータル(風雲/NSMC・高分/CNSA-GEO・CBERS/CRESDA)の到達状態・概要+認証不要の代替経路

CNSA各公式ポータル

不要(ダウンロードは要登録)

tiangong_now

天宮(Tiangong)中国宇宙ステーションの現在位置(SGP4伝播+Googleマップ表示)

CelesTrak TLE + SGP4

不要


📖 ツール詳細

🔍 reverse_lookup — 逆引き歴史Q&A

「初めて」「記録」「〜による発見」など、カテゴリを横断して最初のもの・記録を Wikidata の構造化データから解決します。検索対象の種別を自動判別します。

  • 機器系(宇宙望遠鏡・探査機・人工衛星・天文台): instance-of + 打ち上げ日 + 国 で検索

  • 人系(宇宙飛行士): 職業(P106) + 生年 + 国籍 で検索

Q: 米国で最初に打ち上げた宇宙望遠鏡は?
A: → 1966年の OAO 系観測機が最古として返る

Q: 日本の最初の宇宙飛行士は?
A: 秋山豊寛(1942年生・日本人初)

設計方針: 「記録・初」の答えは LLM の記憶から捏造せず、Wikidata SPARQL が根拠を返し、Wikipedia 記事 URL を引用します。

対応カテゴリ:

日本語

英語

種別

宇宙望遠鏡

space telescope

機器

宇宙探査機

space probe

機器

人工衛星 / 宇宙船

satellite / spacecraft

機器

天文台

observatory

機器

宇宙飛行士

astronaut

🚀 upcoming_launches — ロケット打ち上げ

認証なしの公開API(Launch Library 2)から今後の打ち上げを返します。

🌌 apod / neo_today — NASA日次データ

  • apod: 今日(または指定日)の Astronomy Picture of the Daydate 省略時は「今日」を明示指定して取得し、当日分が未公開(404)や API が 500 を返す場合は 直近の公開分(前日)へ自動フォールバックします(fallback_to_previous_day で判定可能)。

  • neo_today: 今日地球に接近する小惑星(直径・接近距離・速度)

キーはサーバー側でのみ保持し、クライアントへ晒しません(公開デプロイ時は環境変数・シークレット管理を推奨)。

🖼️ search_space_images — 画像検索・表示

NASA Image & Video Library から惑星・人工衛星の画像を検索し、チャットにインライン表示します。

  • content: テキストサマリ + base64の画像(ImageContent)。各項目の直後に 🖼️ [画像を開く: タイトル](URL) のリンクを出す(インライン描画できないクライアント向け)

  • structuredContent: {title, date, nasa_id, image_url, keywords} のJSON

  • 転送量: インラインに埋め込む画像は既定で先頭1枚inline_max=15 で増やせる)。 高画質URLは structuredContent.results[].image_url に必ず入るため、必要なら再取得できます。 インライン画像は一段小さいバリエーション(~large~medium)を使い、画像資産は ディスクキャッシュされます(同じ画像を再ダウンロードしません)。

Q: 木星の画像を見せて → 木星の写真がチャットに表示される

🔊 search_space_audio — 音声検索

宇宙関連の音声を検索します。kind 引数で用途を選べます

kind

対象

sound_effect

短い宇宙の音(惑星の電波・Sputnikのビープ・打ち上げ音)

「スプートニクの音」

podcast

長尺の解説・インタビュー

「アポロのポッドキャスト」

auto

両方から探す(既定)

各結果に再生URL+尺の目安をJSONで返し、content には 🎧 [音声を開く: タイトル](URL) のアイコン付きリンクを出します。

🎬 search_space_videos — 動画検索

宇宙動画(打ち上げ・ミッション映像・解説)を検索し、再生用MP4 URLを返します。

  • structuredContent: {title, video_url, urls:{preview/medium/mobile/orig/subtitle}, poster_url}解像度別URLと字幕(.srt)を分離

  • content: テキストサマリ + ポスター画像(インライン)。🎬 [動画を再生: タイトル](MP4 URL)🖼️ [ポスター画像を開く: …](URL) のリンクを先に出します

🇮🇳 isro_data — インド ISRO の公式データ

ISRO公式オープンAPI(Vercel配信・認証不要)から、ISROが打ち上げた人工衛星・ロケット・外国向け顧客衛星・センター/施設の一覧を返します。query で部分一致検索(例 "cartosat", "chandrayaan")も可能。

Q: インドの人工衛星を教えて
A: → Aryabhata, Bhaskara-I, ... 全112件から返る
Q: ISROが外国向けに打ち上げた衛星は?
A: kind="customer_satellites" で 国・打ち上げ日・質量・ロケット 付きで返る

🇪🇺 copernicus_collections / copernicus_search — 欧州 ESA Copernicus

Copernicus Data Space EcosystemSTAC APIstac.dataspace.copernicus.eu/v1)を利用。Sentinel-1/2/3 ほか地球観測衛星のメタデータを検索できます。

  • copernicus_collections: 利用可能なコレクション一覧(Sentinel-2 光学・Sentinel-1 SAR・Sentinel-3 海洋/大気 等)

  • copernicus_search: コレクション・空間範囲(bbox)・日時・雲量上限で衛星画像を検索。structuredContent に id/日時/雲量/bbox/プレビューURL を返す

認証: 検索とプレビューURL取得は認証不要。画像ダウンロードのみ Copernicus Data Space の無料アカウント(OAuth2 client_credentials)が必要です。設定時は環境変数 CDSE_CLIENT_ID / CDSE_CLIENT_SECRET をサーバー側に設定します(キーはクライアントへ晒さない)。

Q: 東京周辺の最近の Sentinel-2 画像を雲が少ない順に見たい
A: copernicus_search(collection="sentinel-2-l2a", bbox="139.6,35.5,139.9,35.8", max_cloud_cover=20)

🇯🇵 jaxa_datasets / jaxa_dataset_search — 日本 JAXA Earth

JAXA Earth APISTAC COG カタログ(認証不要)から、地球観測データセットを探索します。ALOS 標高(AW3D30)・GSMaP 降水・GCOM-C/W・PALSAR-2 森林(FFN) など 60+ データセット。

  • jaxa_datasets: データセット一覧(ID・タイトル・アセット)

  • jaxa_dataset_search: キーワード検索("GSMaP", "ALOS", "GCOM", "precip", "FNF" 等)

Q: JAXAの降雨データセットは?
A: jaxa_dataset_search("GSMaP") → GSMaP の正規・日次データセットが返る

🇨🇦 csa_dataset_search — カナダ CSA オープンデータ

CSA Open Data PortalCKAN API(認証不要)で、RADARSAT ほかカナダの宇宙データセットを検索します。CSAは中間CAチェーンが不完全なサーバーのため、OS の証明書ストアでTLS検証するアダプタを使用(検証を無効化しない安全な方式)。

Q: カナダの RADARSAT データは?
A: csa_dataset_search("radarsat") → RADARSAT-1 Archive ほか10件が返る

🇧🇷 inpe_collections / inpe_search — ブラジル INPE

INPE BDC(ブラジル宇宙研究所)の STAC API(認証不要)で、CBERS-4/4A・Amazonia-1・GOES-19 等の衛星画像を検索します。

  • inpe_collections: 79コレクション一覧

  • inpe_search: コレクション・領域(bbox)・日時・雲量で画像検索

Q: ブラジル周辺のCBERS衛星画像
A: inpe_search("CB4-WFI-L4-SR-1", bbox="-46.6,-23.6,-46.5,-23.5")

🛰️ sat_tle — CelesTrak(全世界の衛星軌道)

CelesTrak(NORADカタログ・認証不要)から、任意の衛星の軌道要素(TLE) を取得します。ISS・ハッブル・気象衛星・中国宇宙ステーション等、namenorad_idgroup で指定可能。

Q: ISSの現在の軌道要素は?
A: sat_tle("iss") → 傾角・離心率・周回数・エポック
Q: 中国宇宙ステーションのTLE
A: sat_tle("tiangong") → CSS(TIANHE) の軌道要素

🇬🇧 uk_stac_collections / uk_stac_search — 英国 EO DataHub

UK EO DataHubSTAC API(公開カタログは認証不要)で、Sentinel-2 ARD・UKCP気候モデル・EOCIS 等の英国データを検索します。

Q: 英国のSentinel画像
A: uk_stac_search("sentinel2_ard", bbox="-2.9,49.5,-2.8,49.6")

※商用データ(Airbus/Planet)は要アカウント。

🇫🇷 cnes_status — フランス CNES

CNES の地球観測ポータル THEIAGEODES の到達状態と提供データ概要を返します。画像ダウンロードには無料アカウント登録が必要です。

Q: フランスのCNES衛星データは?
A: cnes_status() → THEIA / GEODES の状態と概要

🔭 astronomy_weather — 天体観測用天気(Open-Meteo + 気象庁の雨雲・降水画像)

Open-Meteo(認証不要・無料・全世界対応)から、指定地点の今後数日間で天体観測に適した夜間の時間帯を自動抽出します。雲量・視程・風速・降水確率・昼夜判定を総合して判断し、AIからのアドバイスを返します。

  • 場所は緯度経度(latitude/longitude)または地名(place)で指定

  • 富士山・マウナケア・アタカマ・阿智村などの著名観測地は正確な緯度経度を内蔵

  • max_cloud で観測可否の雲量基準を調整可能(既定 40%)

  • structuredContent に各時間帯の雲量・視程・風速・降水確率をJSONで返す

Q: マウナケアで今夜天体観測できる?
A: astronomy_weather(place="マウナケア") → 夜間の観測チャンス時間帯と雲量
Q: 東京で明日の星空は?
A: astronomy_weather(place="東京") → 雲が少ない夜間を抽出+気象庁の雨雲・降水画像(解析雨量+今夜の予報+ナウキャスト)を添付
A: astronomy_weather(place="東京", include_rain=False) → 雨雲画像なしで予報のみ

出典: open-meteo.com(CC BY 4.0 データ)

🌍 eodashboard_collections / eodashboard_detail — EO Dashboard(NASA×ESA×JAXA共同)

EO Dashboard(NASA・ESA・JAXA 3機関共同の地球観測ダッシュボード)のデータカタログを検索・表示します。データは GitHub リポジトリで無料公開されており、173件のデータセット(大気・海洋・陸域・雪氷・農業・社会経済)を認証不要で探索できます。

  • eodashboard_collections: テーマ(atmosphere/oceans/agriculture/cryosphere等)・機関(NASA/ESA/JAXA)・キーワードで検索

  • eodashboard_detail: 1データセットの詳細(衛星・センサー・説明・参照リンク・サムネイル画像)を返し、画像をインライン表示

Q: NASAの大気データを教えて
A: eodashboard_collections(agency="NASA", themes="atmosphere")
Q: 海氷のデータセットは?
A: eodashboard_collections(keyword="sea ice")
Q: NO2データセットの詳細と画像を見せて
A: eodashboard_detail("N1_NO2") → 詳細+サムネイル画像

時系列データ(Sentinel Hub統計API)は別途キーが必要ですが、メタデータ・説明・画像・参照リンクの取得はすべて認証不要です。検索・概要・学習用途に最適です。

出典: github.com/ESA-eodashboards/eodashboard-catalog / github.com/eurodatacube/eodash-assets

☀️ space_weather — NASA 宇宙天気(DONKI)

NASA DONKI(Database Of Notifications, Knowledge, Information)から、太陽活動に伴う宇宙環境の乱れを取得します。天体観測(オーロラ・電波)や通信・衛星運用への影響評価に使えます。

  • kind で取得対象を選択: all(既定)/ flare(太陽フレア)/ cme(コロナ質量放出)/ gst(地磁気嵐)/ sep(太陽粒子現象)

  • 期間は start_date / end_date(YYYY-MM-DD)で指定

  • 認証: 環境変数 NASA_API_KEYapod と同じキーを使用)。未設定時は DEMO_KEY(低レート)

  • フォールバック: NASA が枠切れ(429)や障害のときは、認証不要の NOAA SWPCservices.swpc.noaa.gov)へ自動で切り替えます。Kp・NOAAスケール(R/S/G の現在値と1〜3日予測)・GOES X線クラス・太陽風(速度/密度/Bt/Bz)・陽子フラックス・警報・黒点相対数を返し、どちらの出典で答えたかcontentstructuredContent.sourceNOAA SWPCfallback: true + NASA 側の理由 nasa_reason)に明記します。SWPC 側でも取得できなかった項目は failed に残します

  • 枠の使い方: 1回の呼び出しで4エンドポイント(FLR/CME/GST/SEP)を叩くため DEMO_KEY を4消費します。カテゴリ単位でキャッシュするので、kind を変えた呼び出しで同じカテゴリを取り直しません(実測: all の直後の flare は HTTP 0回)。429 時は「429 後の待機」か「枠切れ」かを区別した案内を返します(自分の使用数だけを出すと、IP を共有する DEMO_KEY では数字と矛盾して見えるため)

Q: 最近の太陽フレアは?
A: space_weather(kind="flare")
Q: 地磁気嵐が起きているか確認
A: space_weather(kind="gst", start_date="2026-08-01")
Q: 宇宙天気の全体状況
A: space_weather() → フレア・CME・地磁気嵐・粒子現象をまとめて表示

出典: api.nasa.gov(NASA Space Weather)

🌍 stac_collections / stac_search — AWS Earth Search STAC

AWS Earth Search(STAC規格の衛星データカタログ)で、Sentinel-2 / Landsat 8/9 / NAIP / Copernicus DEM を認証不要で検索します。

  • stac_collections: 利用可能な9コレクション一覧

  • stac_search: コレクション・場所(bbox/地名)・日時・雲量上限で検索。structuredContent実際のデータURL(COG等)を含む

Q: 東京のLandsat画像を探して
A: stac_search("landsat-c2-l2", place="東京")
Q: 関東の雲が少ないSentinel-2画像
A: stac_search("sentinel-2-l2a", bbox="139.6,35.5,139.9,35.8", max_cloud_cover=20)
Q: 利用できる衛星データを一覧
A: stac_collections()

Copernicus Data Space(copernicus_search)が全Sentinelを扱うのに対し、こちらはLandsatやNAIPも検索可能。雲量フィルタは STAC の query パラメータを使用します(Earth Search は filter 非対応)。

出典: earth-search.aws.element84.com

🛰 iss_now — ISS 現在位置(Googleマップ表示)

Open Notifyiss-now.json から、ISS(国際宇宙ステーション)の現在位置(緯度経度)を取得し、Googleマップリンクで表示します。

Q: ISSは今どこを飛んでる?
A: iss_now() → 現在の緯度経度 + Googleマップリンク
  • 高度約420km・速度約27,700 km/h・地球1周約90分

  • structuredContent に緯度経度・タイムスタンプ・GoogleマップURLを返す

  • 認証不要

出典: api.open-notify.org(Open Notify)。HTTP のみ対応(HTTPS では応答しない)。

🛰 satellite_status — WMO OSCAR(世界気象機関)衛星カタログ

WMO OSCAR/Space(世界気象機関の公式カタログ)から、気象・地球観測衛星の運用ステータス・軌道・打ち上げ日を取得します。認証不要で 1041衛星 を収録。

Q: ロシアの気象衛星(Meteor-M)の運用状況は?
A: satellite_status(query="Meteor-M", agency="Roscosmos")
Q: 世界の気象衛星一覧
A: satellite_status()
  • query: 衛星名(meteor, resurs, goes, kanopus, himawari 等)。一致度順に並べ替えて返します — acronym の完全/前方一致を最優先し、名称は語境界で照合、名称の途中に含まれるだけの一致(例: "meteor" が "Meteorological" に含まれる DMSP/COSMIC)は低順位に置き、件数を分けて表示します(以前は 92件の誤ヒットに Meteor-M が埋もれていました)

  • カタログ全件(約1,044件・35ページ)を走査します。1ページ30件固定の API なので初回は40秒ほどかかりますが、取得結果をディスクにも保存するため以後はプロセスを再起動しても即時です(24時間で更新)。取得できなかったページがある場合は structuredContent.failed_pages と本文に明示します(欠けを黙って捨てません)

  • agency: 機関名(Roscosmos, NOAA, EUMETSAT, JAXA 等)

  • 運用中🟢 / 計画中🔵 / 延長🟡 / 退役🔴 を色付きで表示

  • Roscosmos の気象衛星(Meteor-M・Resurs-P・Kanopus等)も詳細に収録

実装メモ: OSCAR API の search / space_agency / status パラメータは現在機能しません(常に全件を返す)。そのため全件をページング取得し、クライアントサイドでフィルタしています。

出典: space.oscar.wmo.int(WMO OSCAR/Space)


📡 alma_search — ALMA 電波観測データ検索

ALMA(アタカマ大型ミリ波サブミリ波干渉計)の科学アーカイブを、NAOJ が運用する東アジア鏡の IVOA TAP 経由で検索。object_name(例 M100, HL Tau)か ra/dec+radius、受信 band(1〜10)、product_typecube/image/visibility/all)、public_only で絞り込む。mm/サブmm の電波観測のため低温ガス・塵や惑星系形成領域が対象。

  • 天体名は表記ゆれを自動吸収HL TauHL_Tau/HLTau 等)。0件のときはアーカイブ内の候補名を提示して停止(推測しない)。

  • 返る情報: 観測対象・座標・周波数帯・データ種別(cube/image)・空間分解能(″)・露出時間・可視降水量 pwv・QA2 合否・公開/要権限・プロポーザルID・PI名・関連論文。

  • with_products=Truedatalink を引いて実データ製品(校正済み tar・生データ ASDM・README・パイプライン製品)をアイコン付きリンクで列挙(先頭3件)。

メタデータ検索は認証不要。data_rights=Public の FITS は ALMA アーカイブから取得可(Restricted は元プロポーザル権限者のみ)。

{"observatory": "ALMA", "count": 8, "public": 8, "restricted": 0,
 "records": [{"target_name": "M100", "band": "3", "frequency_ghz": "100–104 GHz",
              "data_rights": "Public", "proposal_id": "2011.0.00004.SV", ...}]}

📡 radio_sources_now — TART 電波望遠鏡の可視電波源

オープンソースで開発公開されている教育用電波干渉計 TART(NZ)の可視電波源カタログから、指定した観測地(lat/lon)で地平線より上にある電波源を取得。返るのは主に GNSS・放送・静止通信衛星で、name・仰角el・方位角az・距離・フラックス密度jy を持つ。電波天文・衛星追尾の学習に最適。

lat/lon 省略時は TART 本体のある NZ(ダニーデン)基準。可視性(強度)API は 2026-09 時点で応答停止のため未使用。

{"observatory": "TART", "count": 15,
 "sources": [{"name": "GSAT0232 (GALILEO 32)", "elevation_deg": 77.9,
              "azimuth_deg": 63.1, "range_km": 23342, "flux_density_jy": 1500000}, ...]}

🗺️ sky_map_with_satellites — 星空マップ+人工衛星(描画エンジン選択式)

指定した観測地・時刻の空に、太陽系の惑星・月と人工衛星の現在位置を重ねた画像を返す。天体位置は JPL de421 + Skyfield、衛星位置は CelesTrak TLE + SGP4 で実測計算(全てローカル/認証不要)。

engine で描画を選択:

  • "simple"(既定): Pillow による実写背景の簡易合成。惑星を種類別アイコン(岩石惑星=各色、木星=縞、土星=環)、衛星を赤い発光マーカー+軌道予測線で描く。学生・観賞用途で視認性重視

  • "accurate": matplotlib による正確な星図。方位・仰角グリッド、軌道予測線を精確表示(科学・詳細用途)。マーカーの配色・光背・土星の環・木星の縞・火星の極冠・名札・凡例は simple と同一の指定色で、色は天体・記号の共通パレット img_common.BODY_COLORS / SYMBOL_COLORS の 1 か所から生成します(凡例も実際に描いたものだけを色コード付きで表示)。

画像は content に base64 でインライン表示(simple=JPEG / accurate=PNG)、座標一覧は structuredContent に JSON。 simple は実写合成のため JPEG が適切で、PNG 比で約1/5の転送量になります(1400×1400 で 992KB → 188KB)。

{"time_utc": "...", "engine": "simple (Pillow)",
 "planets": {"月": {"az":..,"alt":..}, ...},
 "satellites": {"ISS (国際宇宙ステーション)": {"az":..,"alt":..,"trail":[...]}, ...}}

☀️ solar_system_now — 太陽系俯瞰図(太陽中心の惑星・小惑星・探査機・彗星位置)

「太陽系を上から見た図」「今の惑星の位置」「イトカワの今の位置を図で」などに応答。太陽を中心とした黄道面俯瞰図を画像化し、惑星(8惑星+冥王星)は JPL DE421 暦表 + Skyfield で日心黄道座標を計算。任意の小惑星は JPL SBDB API の軌道要素を取得しケプラー2体問題で日心位置へ伝播する(asteroid/asteroid2 で複数指定可)。

  • 距離が 0.4〜40 AU と2桁超のため、Pillow版(既定)は対数縮尺で全天体を一枚に表示。惑星を実物色アイコン+距離ラベル、小惑星を緑の十字マーカー+緑軌道リングで強調。惑星軌道円・小惑星帯(2.0-3.4AU目安)も併記。学生・観賞向けに視認性優先。

  • engine="accurate"matplotlib 版(線形距離の正確な相対距離俯瞰図)も選択可。科学的な相対距離比較用途向け。

  • 惑星・太陽・小惑星・彗星の色は img_common.BODY_COLORS / SYMBOL_COLORS の共通パレット(sky_map_with_satellites と同一の値)を両エンジンで共有します。

  • 一部の惑星の位置を計算できなかった場合は、その旨(失敗数)を contentfigure.notes に出し、structuredContent.planet_errors に天体名と理由を記録します(黙って欠落させません)。

  • 対応小惑星エイリアス: イトカワ(itokawa/25143)・ベンヌ(101955)・アポフィス(99942)・リュウグウ(162173)・ツタティス(4179)・エロス(433)。SBDBのsstr(番号・名前)なら任意の小惑星を指定可能。認証不要。

  • 遠方探査機: probe/probe2 引数に ボイジャー1号/2号・パイオニア10号/11号・ニュー・ホライズンズ・はやぶさ2(日英名対応)を指定。JPL Horizons 状態ベクトル(ECLIPTIC, 太陽中心)から日心位置を取得。ボイジャー等は黄緯が大きい(~35°)ため、黄道面への正射影距離で描画し、ラベルに真距離と黄緯を併記。表示スケールは探査機の距離まで自動拡張し、色付き菱形マーカー+太陽からの補助線で強調。遠方のため線形 matplotlib 版は使わず Pillow(対数縮尺)で表示。認証不要。

  • 彗星の軌道面ビュー(view="comet_orbit": 単体なら comet と併せて指定すると、その彗星の軌道を彗星自身の軌道面を真横から見た図で返します。太陽は円錐曲線の焦点(楕円の中心ではない)に置き、近日点・遠日点・現在位置・日心距離目盛(AU)を描画します。e≥1 の C/彗星(例: 紫金山・アトラス=SBDB の a が負)は閉じない双曲線の枝として近日点から有限距離までを描きます(楕円として描くと a(1+e) が負になり破綻するため)。ハレー彗星(e=0.968・逆行 i=162°)のような極端な楕円でも、焦点と中心のズレ a·e が図と figure.notes の両方に出ます。

  • 複数彗星を1枚に(1彗星=1パネル): comet="ハレー彗星,C/2004 R2" のようにカンマ区切り/; も可)または comet2 を併用すると、最大4天体を縦に並べた1枚の画像で返します。彗星ごとに軌道面も縮尺も違うため、1つの座標系に重ねると嘘になる(=軌道面が違えば「真横から見た形」は同時に成立せず、a が2桁違うと小さい軌道が点に潰れる)ので、パネルは独立した軌道面・独立した縮尺です。その旨(同じ長さの線でも距離が一致しないこと)と a の開き(例: 229倍)は figure.notes に数値から生成して入ります。1天体の取得に失敗しても他のパネルは描き、structuredContent.errors と注記に理由を残します(上限4件を超える要求も「要求N件のうちM件を描画」と明示)。figure.kindorbit_plane_set で、パネルごとの円錐曲線・自己検証は figure.panels[]conic / verify / px_per_AU / notes)、figure.verify は全パネルの集約です。

  • 彗星(周期・C/): comet/comet2 引数に ハレー彗星(halley/1P)・エンケ彗星(2P)・チュリュモフ・ゲラシメンコ(67P)・テンペル第1(9P)・ヴィルト第2(81P) 等の周期彗星、または 紫金山・アトラス(C/2023 A3)・ラブジョイ(C/2014 Q2) 等のC/彗星を指定。周期彗星は JPL SBDB 軌道要素のケプラー伝播、C/彗星(非周期・放物線/双曲線軌道)は JPL Horizons 状態ベクトルで 日心位置を計算。彗星はシアン色の輝く核+太陽と反対方向に伸びる尾で描画し、黄緯が大きいものは 黄道面への正射影距離で配置・ラベルに真距離と黄緯を併記。遠方彗星は表示スケールを自動拡張。認証不要。

{"time_utc": "2026-09-09 05:32 UTC", "engine": "simple (Pillow, 対数縮尺)",
 "asteroids": {"イトカワ": {"au": 1.60, "eclLon": 82.9}},
 "probes": {"ボイジャー1号": {"au": 171.7, "proj_au": 140.4, "eclLat": 35.2}},
 "comets": {"ハレー彗星": {"au": 35.1, "proj_au": 33.7, "eclLat": -16.6}}}  // 惑星は全9天体
{"comet": "1P/Halley", "e": 0.967936, "q_au": 0.5749, "typ": "sbdb",
 "figure": {"schema": "figure/1", "kind": "orbit_plane",
            "primary": {"name": "太陽", "at": "focus", "center_offset_AU": 17.3537},
            "conic": {"kind": "ellipse", "e": 0.967936, "q": 0.5748638313743413,
                      "apo": 35.282406265764116, "c": 17.35377121719489},
            "verify": {"periapsis_error_pct": 7.13, "apoapsis_error_pct": 0.04,
                       "periapsis_check": "equality", "label_overlap_px": 0, "ok": true}}}
 // view="comet_orbit" の応答例。超長距離の桁(C/2004 R2, a=4.1e3 AU)では
 // {"periapsis_resolvable": false, "periapsis_check": "upper_bound", "periapsis_upper_bound": 4.0, "ok": true}

🌞 solar_eclipse_series — 日食の時系列パネル(太陽が月に欠ける過程)

「2035年9月2日の皆既日食を画像で」「東京で見える次の日食」「2019年の部分日食の進行」などに応答。指定した観測地・日付で、太陽と月の見かけの重なりを JPL DE421 + Skyfield で実測計算し、食の始まり〜最大〜終わりを7枚のパネルに並べて合成。サンプル画像(部分日食の時系列)と同じレイアウト。

  • 太陽・月の視角半径と角距離を観測地の視位置(topocentric apparent)で計算し、**月の位置角(PA)**を反映して正しく欠ける位置に月を描画。パネル上部に▲(天の北)、各パネル下に現地時刻・食分。

  • 最大食分から種別を自動判定:0.995以上は皆既(月視半径≥太陽)/金環(月<太陽)、それ以外は部分

  • figure.verify描いた画素から測り直した食分を各パネルで報告値と突き合わせます(PA軸の明部長 L から 食分 = 1 − L/2R)。実測誤差は 0.004 以内、パネル欠けやはみ出しはここで落ちます。

  • date 省略時は**「これから起こる次の日食」を約4年(1400日)先まで自動検索**(Skyfield almanac で新月を列挙し、食のありうる新月だけ高速絞り込み → 精密計算)。例: 東京の次に見える食は 2030-06-01 部分日食(食分0.80・太陽高度+19°) で、既定の引数だけでこれが返ります(800日=約2年では可視の食が無く、常に「見つかりません」しか返せませんでした)。走査は「30分刻みで食の時間帯を特定 → その窓内だけ2分刻みで精密化」の2段構えで、初回は約28秒(同じ観測地・同じ日なら1日キャッシュで以後は即時)です。

  • 見えない食は返しません — 描くのはその観測地で太陽が地平線より上にある時間帯だけで、最大食分も可視区間の中で求めます。日食が現地の日付をまたぐ場合(例: 23:25 開始 → 翌 00:37 終了)も前後6時間まで含めて計算します。全日食が地平線下なら「太陽が地平線下(最大高度 −67°)のため見えません」と明示します(例: 東京2028-01-26)。

  • max_magnitude=True で最大食のみの単一画像を返す。place/lat/lon世界中の任意の観測地を指定可能(東京・ベルリン・ケープタウン・グリニッジ天文台・昭和基地 等。Open-Meteo + Nominatim で自動解決)。日食の現地時刻はその場所のタイムゾーン(DST込み)で表示。認証不要。

{"kind": "部分日食", "max_magnitude": 0.63, "date": "2028年1月26日",
 "place": "東京", "lat": 35.68, "lon": 139.69}  // 7パネル時系列画像を content に返す

🌙 moon_phase_map — 月齢マップ(月の満ち欠けの格子/朔望月パネル)

「今月の月齢マップを見せて」「2026年9月の月相カレンダー」「次の朔望月の満ち欠けを画像で」などに応答。日食の時系列パネルと同じ幾何計算(JPL DE421 + Skyfield・認証不要)を使い、観測地から見た太陽と月の実位置から輝面の向き(位置角 PA)と照度を求めて月円盤を正しい向きに欠けさせます(月齢から向きを決め打ちしません)。

  • layout="calendar"(既定)— 指定した月を日月火水木金土の格子に並べ、各日に月齢・照度・月相(新月/三日月/上弦/十三夜/満月/下弦/有明月 etc)を描きます。朔・望・上弦・下弦が起きる日はイベント名と現地時刻を強調表示。

  • layout="lunation"1朔望月(朔→朔)を等間隔の時系列パネルdays で3〜12枚・既定8枚)に並べ、各パネルに日時・月齢・照度・月相・輝面の位置角を出します。

  • 月齢=直前の朔(新月)からの経過日数、照度=円盤の輝面の割合(満月=100%)。カレンダーは各日現地正午時点、パネルは各パネルの現地時刻時点の値です。

  • figure.verify描いた画素から明暗境界線の位置を測り直し、申告した照度と突き合わせます(照度 k の円盤は位置角軸上で縁から 2kR の幅が明るい)。走査軸が申告した位置角なので、満ち欠けの向きが違えば一致しません(実測誤差 0.02 以内)。

  • 図と数値の食い違いを注記で明示 — 「円盤は模式図(実写ではなく月の海は乱数)」「天の北を上・東を左に置いた見え方で地平線からの見え方ではない」「朔・望の日は正午時点では前後になる(例: 9/11 は正午時点の月齢 29.4・新月の時刻は 12:26)」等を数値から生成します(figure.notes は要約せず引用してください)。

  • date"2026-09" / "2026年9月16日")と place/lat/lon で観測地・期間を指定。日付・時刻・曜日は現地時間(緯度経度から取得した UTC オフセット)で表示します。

{"layout": "calendar", "period": {"month": "2026-09", "days": 30},
 "days": [{"date": "2026-09-11", "moon_age": 29.39, "illum_pct": 0, "phase_ja": "新月(正午時点の月齢 29.4)",
           "bright_limb_pa_deg": 31.1, "events": ["新月"]}, "..."],
 "events": [{"phase": "新月", "datetime_local": "2026-09-11 12:26"}, "..."],
 "figure": {"kind": "moon_phase_calendar", "verify": {"ok": true, "worst_error": 0.0121}}}

🛰 planetary_orbiter_track — 汎用・天体周回機マップ

月・火星・水星・タイタン・ベスタ・ケレス等、NASA Trek が等角図法グローバル画像を持つ任意の天体を周回する探査機の現在位置と軌道トレイルを画像化します。JPL Horizons の状態ベクトルを IAU 自転モデルで天体固定座標(緯度経度・高度)に変換して正確に計算。認証不要。

  • 対応天体(BODIES テーブル): moon(LRO・ゲートウェイ)、mars(MRO・Mars Odyssey)等。新規天体は「中心天体ID・IAU回転定数・TrekタイルURL・半径」を1行追加するだけで対応可能。

  • span_deg=360 で天体全面表示(2:1グローバルビュー)、既定 120 で現在位置中心の局所表示。

  • 高精度トレイル: step を秒単位(1/60分)まで細分化可能。JPL Horizons の TLIST を POST + 分割バッチで送るため、1400点超のトレイルも高速取得。

  • トレイルの一部が失敗した場合: 計算できなかった点数を contentfigure.notes に出し、structuredContent.trail_errorsoffset_min と理由を記録します(図に無い点を「無い」と誤読させないため)。

  • 運用終了機(かぐや・MAVEN・あかつき等)は推測せず丁寧に案内(かぐやは JAXA 公表の落点=南緯65.5°/東経80.4° Gill クレータ付近を出典つきで返す)。和名・英名・別名(かぐや/kaguya/selene)は同じ案内に着地。

  • 着陸地点マップ(figure.kind="landing_site_map": sites="apollo"アポロ6地点を天体全面図に番号付きマーカー+凡例で、sites="apollo11" のように1地点を指定するとその地点中心の局所図で返します。座標は NASA NSSDC が公表した月着陸船(LM)の値(LRO 画像から決定・惑星中心 Mean Earth/Polar Axis、Wagner et al., Icarus 283 (2017))で、旗そのものの座標は公開表に無いため「マーカーは着陸地点を指す」旨と各地点の旗の状態(下記)を注記に自動生成して入れます。地点マーカーは共通ルーチン surface_map.pydraw_markers / verify_markers(投影の逆変換+全地点の画素検証)を使います。文字(タイトル・凡例・番号)は地図の外=下の帯に置き、地図の上に重ねません(重ねるとマーカーが文字で隠れる)。複数地点では地点間の最小間隔からマーカー半径を決め、離隔が足りなければキャンバスを自動拡大します(markers_do_not_overlap を検証)。番号は他のマーカーに載らない位置へ機械配置し、置けなければ省略して注記に残します。

  • 対応天体(sites= の地点マーカー図): MAP_BODIES の16天体(月・火星・水星・金星・タイタン・ベスタ・ケレス・イオ・エウロパ・ガニメデ・カリスト・木星・土星・冥王星・ベンヌ・リュウグウ)。ベースマップは3種類を天体ごとに自動選択します。

    1. trek … NASA Trek の全球等角図タイル(層IDを検証済みの6天体: 月・火星・水星・タイタン※・ベスタ・ケレス。※タイタンは画像方式に切替済み)

    2. image1枚の全球等角図(金星=USGS/NASA Magellan 合成図、タイタン=NASA Cassini 全球図、イオ/エウロパ/ガニメデ/カリスト=USGS/NASA のモザイク)。2:1 でない画像はアスペクト比を補正して描画(補正率と元の AR を注記に明示)

    3. graticule … 全球画像が無い天体(木星・土星・冥王星・ベンヌ・リュウグウ)は緯度経度グリッド。注記に「地形画像は無い」と明示 実測: NASA Trek に Jupiter は無い(404)。画像が取得できないときは自動でグリッドに落ち、その旨を注記に残します。

  • sites="map"(地点なし・地図のみ): 地点マーカーを描かず全球図そのものを返します(イオ・エウロパ・ガニメデ・カリストのように着陸機が無い天体の全球図表示に使用。figure.kind="body_map")。

  • 地点データの内訳(2026-09 時点): 月10(アポロ6+嫦娥3号+ルノホート1/2+サーベイヤー3号)/タイタン1(ホイヘンス 10.573°S・192.335°W=東向き正 167.665°E。旧 ESA 表記の 0〜360°W 慣例を変換)/金星9(ベネラ7・8・9・10・11・12・13・14号+ベガ2号。出典: Venera 飛行データ表=NSSDC 準拠。8/9/10号は「半径150km以内」の精度)/火星12(マルス2・3・6号、バイキング1号、パスファインダー、ビーグル2号、スピリット、オポチュニティ、フェニックス、キュリオシティ、インサイト、パーサヴィアランス。出典: The Planetary Society の着陸地点一覧が付す一次出典)/木星23(SL9)。経度は東向き正(−180〜180)に統一し、0〜360°表記や西経の値は自動で折り返します(実測: 金星351°Eをそのまま渡すと画面外に描かれた)。

  • 木星の SL9 衝突地点: planetary_orbiter_track(body="jupiter", sites="all")シューメーカー・レヴィ第9彗星の衝突地点23破片(1994-07-16〜22)を木星の緯度経度グリッドに描きます。座標は PDS Atmospheres が公開する Chodas & Yeomans (1996) の表(緯度=木星中心緯度、経度=System III の西向き→東向き正に変換、衝突面は 100 mbar 面)。注記に「木星は固体表面が無いガス惑星で、衝突痕は数日〜数週間で大気に流されて消えた」ことを明示します。近すぎて重なる地点(例: 破片 D と S は同じ 33°W)は重ねて描かず、図示しなかった地点として注記と structuredContent に残します。

  • 米国旗の状態(NASA ALSJ「Six Flags on the Moon」+ LROC 時系列画像): アポロ11号は倒れている(帰還時の上昇エンジン噴射で倒れた/LROC に旗の影なし)。12号・16号・17号は立っている(LROC 時系列で強い影)。14号・15号は LROC では旗の影が不明瞭(15号は LRV の TV カメラで離陸後も立っていたことを確認)。

  • 落点マップ(figure.kind="impact_site_map": 落点が公表されている過去機は、その天体面の地図に地点マーカーを描いた図を返します(かぐや=月面図)。注記には「公表座標に置いたマーカーであり、衝突でできた新クレータを画像から同定したものではない」旨を数値から生成して入れます。地点マーカーの描画・画素検証は共通ルーチン surface_map.pydraw_marker / verify_marker)を使い、投影の逆変換で座標を再計算+マーカー色の画素数まで検査します。

🗺 planetary_rover_location_map — 汎用・天体面ローバー位置マップ

任意の天体面を移動する探査ローバーの現在地・走行経路・着陸地点を、その天体の局所地図に重ねて画像化します。ベースマップ・タイル合成・切り出し・投影・マーカー・画素検証は共通ルーチン surface_map.py を再利用(周回機・ローバー・落点マップで同じ投影・同じ検証)。

  • 走行経路(橙線)・現在地(赤●)・着陸地点(青●)を合成し、ローバーを画像中心に配置。

  • 対応ローバー(ROVERS テーブル): perseverance(パーサヴィアランス)・curiosity(キュリオシティ)。

  • 正直な制約: ローバー位置データは NASA MMGIS(火星専用)のみ。月面ローバー等の現役位置データは公開されておらず、データ源ができればテーブル追加で対応可能。

⚡ キャッシュ(API呼び出しと処理の削減)

外部APIへの呼び出し回数と再計算を抑えるため、データの性質ごとに3層でキャッシュします(cache.py)。

対象

方式

TTL

① 不変アセット

Trek 地図タイル / NASA 画像資産 / 星空マップ背景

ディスク%LOCALAPPDATA%\Temp\space_finder_mcp\cache

30日(実質無期限)

② 揮発データ

RSS・打ち上げ(LL2)・STAC検索・天気・ESO

プロセス内メモリ

10分

宇宙天気(DONKI) — カテゴリ単位(種別を変えても取り直さない。DEMO_KEY は1回4エンドポイントを消費するため)

プロセス内メモリ

10分

天体観測用天気・メディア検索・ALMA/CADC

プロセス内メモリ

30分

APOD・NEO・EO Dashboard(日次データ。DEMO_KEY 消費も抑制)

プロセス内メモリ

1時間

高コスト計算

探査機・彗星の Horizons 状態ベクトル(分単位でキー化)/SBDB 軌道要素

プロセス内メモリ

24時間(キーが1分ごとに変わる=実質1分)

データセット一覧・ジオコーディング・NASA POWER・Wikidata逆引き

プロセス内メモリ

24時間

③ 高コスト計算

日食(次の日食探索=約28秒/指定日の判定=約1秒。探索窓は約4年=1400日)

緯度経度を丸めたキーでメモリ

24時間

実測効果(1回目 → 2回目)

  • planetary_orbiter_track(LRO): 4.46s / 73リクエスト → 1.07s / 1リクエスト(タイル72枚を再取得しない)

  • solar_eclipse_series(東京): 28.4s → 0.7s(探索窓を1400日に拡大しても初回のみ)/ 指定日 0.4〜1.2s → 0.7s

  • satellite_status: 50.28s → 0.00s / astronomy_weather 2.56s → 0.00s

  • satellite_status(全1,044件の走査): 初回 38.5s → 以後 0.07s(カタログをディスクにも保存し、プロセス再起動後も即時)

  • sky_map_with_satellites(simple) の画像: 992KB → 188KB(JPEG化)

  • search_space_images: インライン画像を3枚 → 1枚(inline_max で増やせる)

設計上の約束

  • 同じ引数の並行呼び出しは1回の実行にまとめます(single-flight)。8並列で投げても実行は1回で、結果は全員に同じものが返ります(共有レート枠を N 倍消費しない)

  • エラー応答はキャッシュしません(一時的な障害やレート制限(429)が固定化しない)

  • 取得失敗時は期限切れでもディスクの古い内容を返します(stale-if-error)

  • 現在位置系(iss_now / tiangong_now / 各位置計算)はリアルタイム性を優先しキャッシュ対象外です(TLEは従来どおり6時間キャッシュ)


🔐 応答方式(tokyo-transit 方式)

全ツールは CallToolResult を使い、次の2層で応答します。

  • content — 人間向け表示(テキストサマリ、画像は ImageContent

  • structuredContent — LLM向けの純粋JSON(メディアURL・メタデータを構造化)

これにより、ホストLLMが表示テキストを要約しても元データ(URL等)を失わず、正確な情報を保持できます。


🧪 開発・検証

変更後は次の検証ゲートを通してください(scripts/check-tools.py は依存追加なしで同梱)。

# 1. 構文チェック
uv run python -m compileall -q src/space_finder_mcp

# 2. 全51ツールを実呼び出し(例外漏れ・structuredContent欠落・タイムアウトを検出。数分)
uv run python scripts/check-tools.py

# 3. ネットワーク全断を注入して「例外が外へ漏れないか」を検査
uv run python scripts/check-tools.py --offline

# 4. 未参照定義・未使用import の走査(0件を維持)
uv run python scripts/check-tools.py --dead-code

# 5. 数値引数へ不正値("abc" など)を注入して例外漏れを検査
uv run python scripts/check-tools.py --fuzz

# 5a. 並列ツール呼び出し(LLM が同時に複数ツールを投げる前提)を検査
uv run python scripts/check-tools.py --concurrency

# 5a2. 実クライアント経路(stdio)で代表ツールが応答するか検査
uv run python scripts/check-tools.py --stdio

# 5b. 画像/音声/動画を返すツールが「リンク先行」を守っているか検査(0件を維持)
uv run python scripts/check-tools.py --media-links

# 5c. 描画系ツールの figure/1(図の注記・自己検証)を検査
uv run python scripts/check-tools.py --figures

# 6. 変更したツールだけ先に確認 / CI向けJSON出力
uv run python scripts/check-tools.py --only sat_tle,apod
uv run python scripts/check-tools.py --json

終了コードは 0=正常 / 1=異常です(例外漏れ・structuredContent 欠落・タイムアウト・デッドコード・figure/1 の検証失敗 --figures・メディアのリンク先行違反 --media-links)。MCPサーバーはホットリロードがないため、src/ を変更したらクライアントを再起動してください。

エージェントから使う場合

Claude Code は CLAUDE.md.claude/rules/、Codex は AGENTS.md、その他のエージェントは SKILL.md を参照します。

# Hermes で接続確認
hermes mcp test space-finder-mcp

プロジェクト構成

src/space_finder_mcp/
├── __init__.py          # main() → mcp.run()
├── __main__.py          # python -m space_finder_mcp 用の入口
├── server.py            # FastMCP サーバー定義・47ツール登録
├── stac_common.py       # STAC系共通の入力検証ヘルパー(bbox/雲量。ツール定義なし)
├── input_utils.py       # 引数の防御的数値変換 as_int/as_float(不正値でも例外を漏らさない)
├── img_common.py        # 画像合成の共通ヘルパー(フォント探索/JPEG化/アンチメリジアン分割。ツール定義なし)
├── cache.py             # キャッシュ基盤(TTLメモリ/ディスク資産キャッシュ。ツール定義なし)
├── env_config.py        # リポジトリ直下 .env の読み込み(標準ライブラリのみ。ツール定義なし)
├── wikidata_lookup.py   # reverse_lookup(逆引き歴史Q&A)
├── launch.py            # upcoming_launches / china_launches / russia_launches(ロケット打ち上げ・中国・ロシア)
├── nasa.py              # apod / neo_today(NASA日次)
├── media.py             # search_space_images / audio / videos(メディア検索)
├── isro.py              # isro_data(インド ISRO)
├── copernicus.py        # copernicus_collections / copernicus_search(欧州 ESA)
├── jaxa.py              # jaxa_datasets / jaxa_dataset_search(日本 JAXA)
├── csa.py               # csa_dataset_search(カナダ CSA, システムCA検証アダプタ)
├── inpe.py              # inpe_collections / inpe_search(ブラジル INPE STAC)
├── celestrak.py         # sat_tle(CelesTrak 全衛星軌道TLE)
├── uk_datahub.py        # uk_stac_collections / uk_stac_search(英国 EO DataHub)
├── cnes.py              # cnes_status(フランス CNES THEIA/GEODES)
├── weather_astro.py     # astronomy_weather(天体観測用天気, Open-Meteo, 月相+気象庁雨雲画像)
├── jma_rain.py          # 気象庁の雨雲・降水画像の合成(解析雨量・降水予報+ナウキャスト/雷)
├── weather_sat.py       # weather_satellite_now(GEO/LEO気象衛星の公開画像, 19機+理由コード)
├── power.py             # power_climate(NASA POWER 気候・太陽エネルギー統計)
├── eodashboard.py       # eodashboard_collections / detail(EO Dashboard, NASA/ESA/JAXA)
├── donki.py             # space_weather(NASA 宇宙天気 DONKI)
├── swpc.py              # NOAA SWPC(宇宙天気のフォールバック・認証不要)
├── stac_search.py       # stac_collections / stac_search(AWS Earth Search STAC)
├── iss.py               # iss_now(ISS 現在位置, Open Notify)
├── oscar.py             # satellite_status(WMO OSCAR 衛星カタログ)
├── cnsa.py              # cnsa_status(中国 CNSA 系衛星データポータル到達状態)
├── tiangong.py          # tiangong_now(天宮 中国宇宙ステーション位置, CelesTrak TLE + SGP4)
├── eso.py               # eso_seeing(ESO パラナル大気・シーイング)
├── cadc.py              # cadc_observations(CADC カナダ天文観測データ)
├── alma.py              # alma_search(ALMA 電波観測データ, Science Archive TAP)
├── tart.py              # radio_sources_now(TART オープン電波望遠鏡 可視電波源)
├── skyfield_pos.py      # constellation_now(天体位置・星座, Skyfield)
├── news.py               # astronomy_news(Sky & Telescope 天文ニュース)
├── sky_overlay.py        # sky_map_with_satellites(星図+人工衛星, matplotlib/Pillow)
├── solar_system.py        # solar_system_now(太陽系俯瞰図, JPL DE421+SBDB / matplotlib+Pillow)
├── solar_eclipse.py       # solar_eclipse_series(日食の時系列パネル, JPL DE421+Skyfield)
├── moon_phase.py          # moon_phase_map(月齢マップ: 月齢カレンダー/朔望月パネル, JPL DE421+Skyfield)
├── mars_rover.py         # mars_rover_status(火星ローバー状況・天気)
├── surface_map.py        # 天体面地図の共通描画(タイル合成・等角投影・地点マーカー・画素検証)
├── planetary_map.py      # planetary_orbiter_track(汎用・天体周回機マップ/落点マップ)
├── calendar_store.py     # 蓄積ストア(正規化レコード+来歴/ユーザー予定・原子書き込み・月別TTL・prune)
├── space_calendar.py     # space_calendar / calendar_events / calendar_event_add / calendar_event_remove
└── planetary_rover.py    # planetary_rover_location_map(汎用・ローバー位置マップ)

リポジトリ直下(エージェント・クライアント向け):

space-finder-mcp/
├── CLAUDE.md                # Claude Code 用プロジェクトガイド
├── AGENTS.md                # Codex など AGENTS.md を読むエージェント向け
├── SKILL.md                 # エージェント向けスキル定義(47ツール仕様)
├── mcp.json                 # MCPクライアント設定の例
├── .env.example             # 環境変数の例(NASA_API_KEY は任意)
├── .claude/rules/           # 開発規約(coding-conventions / testing-and-verification / data-and-sources)
├── scripts/check-tools.py   # 回帰検証ゲート(全ツール実行 / --offline / --dead-code / --fuzz
│                            #   / --figures / --media-links / --concurrency / --stdio)
├── tests/                   # 回帰テスト(unittest discover -s tests。並列・起動import・遮断時の挙動)
├── pyproject.toml           # 依存・バージョン(uv 管理)
└── README.md / LICENSE

📄 ライセンス / 注意

  • ライセンス: MIT License(本リポジトリの LICENSE を参照)

  • データソース: NASA・NASA Image & Video Library・Launch Library 2・Wikidata(Wikimedia)・ISRO・ESA Copernicus Data Space・JAXA Earth API・CSA Open Data・INPE BDC・CelesTrak・UK EO DataHub・CNES THEIA/GEODES・CNSA(NSMC/CNSA-GEO/CRESDA)・CelesTrak(天宮TLE)・ESO ASM・ALMA Science Archive(NAOJ)・TART・CADC・JPL/Skyfield(de421)・NASA MMGIS・NASA Trek WMTS・Open-Meteo(CC BY 4.0)・EO Dashboard・NASA DONKI・NASA POWER・AWS Earth Search STAC・Open Notify・WMO OSCAR は、それぞれの利用条件・ライセンスに従います。

  • 宇宙データは科学的な内容を含みます。応答時は引用元(Wikipedia / NASA / ISRO / ESA / JAXA / CSA / CNSA 等)へのリンクを必ず表示してください。

  • 画像・動画・音声の著作権・クレジット表記は各ソースの指示に従ってください(NASA素材は NASA Media Usage Guidelines を参照)。


🗺️ ロードマップ

  • 逆引き歴史Q&A(Wikidata)

  • ロケット打ち上げ・NASA日次

  • 画像・音声・動画の検索・表示

  • 他国の宇宙機関データ(ISRO・ESA/Copernicus・JAXA・CSA・INPE・CelesTrak・UK EO DataHub・CNES)

  • 天体観測用天気(Open-Meteo)

  • EO Dashboard(NASA/ESA/JAXA 共同地球観測カタログ)

  • 宇宙天気(NASA DONKI: 太陽フレア・CME・地磁気嵐)

  • AWS Earth Search STAC(Sentinel/Landsat/NAIP 検索)

  • ISS 現在位置(Open Notify + Googleマップ表示)

  • WMO OSCAR 衛星カタログ(運用ステータス)

  • 中国 CNSA 系衛星データポータル(風雲/高分/CBERS 到達状態)

  • 中国のロケット打ち上げ(china_launches)・天宮リアルタイム位置(tiangong_now)

  • 天体観測の強化(astronomy_weather に月相・月明かり統合)・NASA POWER 気候データ(power_climate)

  • 世界の天文観測データ(ESO パラナルシーイング・CADC カナダ天文データ)

  • ロシア(Roscosmos)の打ち上げデータ(russia_launches)

  • 天体位置・星座計算(constellation_now, Skyfield + JPL)

  • 天文ニュース(astronomy_news, Sky & Telescope RSS)

  • 火星探査ローバー状況(mars_rover_status, Mars Weather)

  • 地球リアルタイム画像(EPIC/DSCOVR)

  • 惑星の3D地図(NASA Trek WMTS)

  • 多言語(en/zh)応答の全面対応

Available Tools

47 tools
apodA

今日(または指定日)の NASA の今日の天文写真(APOD)を返す。NASA_API_KEY が必要。

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNo

TDQS

A3.5/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It usefully discloses a prerequisite (NASA_API_KEY が必要), which is real behavioral context, but says nothing about rate limits, error behavior, or response shape for a network-backed read.

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?

Two short sentences, front-loaded with the core purpose and followed by the auth prerequisite. No filler.

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?

For a single-parameter read tool this is nearly sufficient, but with no output schema and no annotations, the missing date format and any hint about what the response contains (image URL, title, explanation) leave a small but real gap.

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 description coverage is 0%, so the description must compensate. It conveys that the date is optional and defaults to today's picture ('今日(または指定日)'), adding genuine semantics, but it omits the expected date format (e.g. YYYY-MM-DD), which is the key detail an agent needs.

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

Purpose4/5

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

States a specific verb ('返す' / returns) and a specific resource (NASA's Astronomy Picture of the Day), plus the scope (today or a specified date). It is clearly distinguishable from siblings like astronomy_news or search_space_images, though it does not explicitly name any sibling to route against.

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?

The phrase '今日(または指定日)' implies that the date parameter is optional and that the tool is the right choice when you want the APOD for a particular day, but there is no explicit when-to-use/when-not guidance or named alternative.

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

astronomy_newsA

天文ニュース・観測ガイドを返す(複数フィードのフォールバック付き・認証不要)。

「今日の天文ニュース」「今週の星空ガイド」「惑星観測の見どころ」など。
第一候補は Sky & Telescope の公式RSS。取得できない場合は他ソース
(Universe Today / NASA / Phys.org) に自動でフォールバックする。
content に表示用サマリ、structuredContent に JSON を返す。

Args:
    limit: 返す件数(既定 8、最大 15)。
    section: 絞り込み("all"=全部, "observing"=観測ガイド, "news"=ニュース)。
ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
sectionNoall

TDQS

A3.8/5.0
Behavior4/5

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

With zero annotations the description carries the full burden, and it delivers substantive behavioural detail: multi-source fallback order (Sky & Telescope RSS → Universe Today / NASA / Phys.org), the fact that no authentication is required, and the dual return shape (display summary in content, JSON in structuredContent). Freshness, caching, and failure behaviour when all feeds fail are not stated.

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?

Purpose is front-loaded in the first sentence, followed by examples, fallback behaviour, return format, and a compact argument list. Every element is relevant, though the parenthetical asides make it slightly denser than strictly necessary.

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 two-parameter, read-only retrieval tool with no annotations and no output schema, the description covers what is fetched, from where, the fallback chain, the no-auth requirement, the return shape, and both parameters. Only edge behaviours (feed exhaustion, limit bounds handling) remain unaddressed.

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 description coverage is 0% and no enums are declared, so the description must supply all parameter meaning. It documents limit (default 8, maximum 15) and section with the allowed values all/observing/news, which the schema does not encode. It adds clear value but omits e.g. what happens for out-of-range limits.

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

Purpose4/5

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

States a specific verb and resource ('天文ニュース・観測ガイドを返す') and enumerates concrete content types (daily news, weekly sky guide, planetary observing highlights), so an agent knows exactly what it retrieves. It does not explicitly distinguish itself from near-neighbours like apod, astronomy_weather, or sky_map_with_satellites, which keeps it short of a 5.

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?

The example phrasings ('今日の天文ニュース', '今週の星空ガイド', '惑星観測の見どころ') imply when the tool is appropriate, and the section parameter hints at query routing. However, no explicit when-not condition or named alternative sibling is given, so usage is only implied.

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

astronomy_weatherA

天体観測に最適な時間帯を予報する(Open-Meteo, 認証不要・全世界対応)。

指定した地点の今後数日間で「夜間かつ雲が少なく・視程が良い」時間帯を抽出し、
観測のチャンスと注意点を AI からのアドバイス形式で返す。

例:「東京で今夜天体観測できる?」「シドニーの晴れ予報」「富士山頂の雲量」
場所は緯度経度(latitude/longitude)または地名(place)で指定。

Args:
    latitude: 緯度(例 東京 35.68)。place 指定時は省略可。
    longitude: 経度(例 東京 139.69)。
    place: 地名(緯度経度より優先)。Open-Meteo のジオコーディングで解決。
    days: 予報日数(1〜7、既定 3)。
    max_cloud: 「観測可」とみなす雲量の上限%(既定 40)。
    include_rain: 日本国内の地点に限り、気象庁の雨雲・降水画像
        (解析雨量・降水短時間予報のパネル+ナウキャスト=雨雲の動き)を
        添付する(既定 True。取得失敗時は添付なしで続行)。
        ⚠️ structuredContent.figure.notes は要約せずそのまま引用すること。
        (添付した雨雲・降水画像は content に「🖼️ [◯◯を開く](URL)」のリンク付きで出します。
        インライン画像を描画しないハーネスでは、回答にこのリンクをそのまま提示してください。)
ParametersJSON Schema
NameRequiredDescriptionDefault
daysNo
placeNo
latitudeNo
longitudeNo
max_cloudNo
include_rainNo

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it discloses no authentication needed, global coverage, advice-style output, the rain-imagery attachment behavior, the failure fallback, and the instruction to preserve structuredContent.figure.notes and image links. It does not mention rate limits or explicitly state read-only behavior, but the forecast nature makes this mostly implicit.

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 front-loaded with the core purpose, followed by examples and then a structured Args list. It is longer than minimal, but the extra detail, especially the rain-image handling notes, is operationally useful rather than filler. The organization keeps it readable.

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 tool with six parameters and no output schema, the description covers location specification, parameter semantics, output behavior, and edge cases such as failed image retrieval. It does not explain the exact output format beyond 'AI advice' and optional image links, and it avoids discussion of timezone handling or validation errors, but the agent has enough to invoke it correctly.

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?

The schema provides no property descriptions, but the description compensates thoroughly by documenting all six parameters: latitude, longitude, place precedence over coordinates, days range with default, max_cloud threshold meaning, and include_rain behavior plus fallback. This adds substantial meaning beyond the bare schema.

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 states a clear purpose: forecasting the best time windows for astronomical observation based on nighttime, low cloud, and good visibility. It names the data source (Open-Meteo), authentication requirement, and global scope, and the examples (e.g., 'Can I stargaze in Tokyo tonight?') make the resource and intent unambiguous.

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 description gives concrete usage context through examples, explains how to specify location via coordinates or place name, and documents parameter ranges and precedence rules. It does not explicitly compare this tool to any sibling tool or state when not to use it, so there is a slight gap in exclusion guidance.

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

cadc_observationsA

CADC(カナダ天文データセンター)の観測データを検索する(認証不要)。

HST(ハッブル)・ジェミニ望遠鏡・NEOSSat 等の観測メタデータを、
天体名または座標(ra/dec)で ADQL 検索する。

例:「ハッブルが撮ったNGC 300」「オリオン星雲の観測データ」「ジェミニの観測一覧」
パブリックメタデータは認証不要。画像ダウンロードは一部要認証。

Args:
    object_name: 天体名(例 "M31", "Orion", "NGC 300", "M104", "Sombrero", "HL Tau")。
        座標指定より優先。内蔵テーブルに無い名前は **SIMBAD/NED(Sesame)で座標解決**し、
        和名(オリオン大星雲 等)も英語名に展開して解決する(推測では検索しない)。
    ra: 赤経(度)。object_name 省略時、dec と併用。
    dec: 赤緯(度)。
    radius: 検索半径(度, 既定 0.5)。
    telescope: 望遠鏡で絞り込み(例 "HST", "Gemini-North", "TESS")。
    limit: 返す件数(既定 8、最大 20)。
ParametersJSON Schema
NameRequiredDescriptionDefault
raNo
decNo
limitNo
radiusNo
telescopeNo
object_nameNo

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the full behavioral burden and does well: it discloses that lookup is unauthenticated for public metadata but partially restricted for image download, that unresolved names are resolved via SIMBAD/NED (Sesame) with Japanese-name expansion and no guessing, and that results are capped (limit default 8, max 20). It does not describe the returned record structure or pagination, so it is strong but not exhaustive.

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?

Front-loaded with purpose, then scope, then examples, then per-argument semantics, so an agent can stop reading at any level. It is slightly long-winded in the object_name entry, where five example names plus the SIMBAD explanation could be trimmed, but every block still carries usable information.

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 six-parameter tool with no annotations and no output schema, the description covers selection logic, auth requirements, resolution behavior, and result caps. The only real gap is what a returned observation record contains, though with no output schema that gap is not fully avoidable.

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?

Schema description coverage is 0%, so the description must compensate and it does: every one of the six parameters is defined with units (degrees), defaults (radius 0.5, limit 8), a max (20), value examples ('HST', 'Gemini-North', 'TESS'), and a precedence rule between object_name and ra/dec. This is exactly the semantic detail the bare schema lacks.

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?

States a specific verb and resource ('CADCの観測データを検索する') and scopes it to concrete holdings (HST, Gemini, NEOSSat metadata) retrieved via ADQL by object name or coordinates. The example queries ('ハッブルが撮ったNGC 300', 'オリオン星雲の観測データ') make the intended use unmistakable and clearly separate it from generic image search siblings like search_space_images.

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?

Gives clear operational conditions: object_name takes precedence over coordinates, and ra/dec are only used together when object_name is omitted. Auth context ('パブリックメタデータは認証不要。画像ダウンロードは一部要認証') tells the agent when the tool works unauthenticated. It stops short of explicitly naming an alternative (e.g. alma_search or eso_seeing) for overlapping archive queries.

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

china_launchesA

中国のロケット打ち上げ予定(長征シリーズ・LandSpace等の民間企業を含む)を返す。

Launch Library 2 を「search=China」で絞り込み、長征(Long March)シリーズや
Shenzhou(有人)/Tianzhou(補給)、Hyperbola-3(LandSpace)等を取得する。
認証不要。content に表示用サマリ、structuredContent に JSON を返す。

Args:
    limit: 返す件数(既定 8、最大 15)。
    status: 状態で絞り込み(例 "Go for Launch", "To Be Determined")。省略で全状態。
ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
statusNo

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 the full burden and does disclose key traits: it names the upstream source (Launch Library 2 with search=China), states auth is not required, and explains the dual return channels (content summary vs structuredContent JSON). It omits error/rate-limit behavior, but the essential behavioral context is present.

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 purpose is front-loaded in the first line, followed by data source, output format, and args. Slightly verbose with the upstream-source explanation, but each block serves a purpose and nothing is filler.

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 2-parameter tool with no output schema and no annotations, the description covers what it does, the source, the return structure, and both parameters' behavior. An agent has what it needs to call it correctly, though it could note the global-scope alternative for 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?

Schema description coverage is 0%, so the description must compensate, and it does: it documents limit (default 8, max 15) and status with example values ('Go for Launch', 'To Be Determined') plus the omit-for-all behavior. The max-15 cap and status examples are meaning the schema itself does not convey.

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 states a specific verb and resource ('returns Chinese rocket launch schedule') and scopes it precisely to China, naming the Long March series and private firms (LandSpace). This clearly distinguishes it from siblings like upcoming_launches and russia_launches without the agent needing to open a schema.

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?

The China-only scope implicitly differentiates it from upcoming_launches and russia_launches, and the status filter use is explained. However, it never explicitly names an alternative or states when to prefer this over the global launch tool, leaving routing to inference.

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

cnes_statusA

フランス CNES の地球観測データポータル(THEIA / GEODES)の到達状態と概要を返す。

例:「フランスのCNES衛星データ」「THEIAポータル」
画像ダウンロードには CNES アカウント登録が必要。ここではポータルの状態と
提供データの概要を確認する。

Returns:
    CallToolResult: 表示用サマリ + JSON。
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior3/5

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

No annotations, so the description carries the full burden. It discloses the return shape (display summary + JSON) and the meaningful boundary that no downloads/account are involved, but says nothing about authentication needs, failure behavior when the portal is unreachable, or rate limits.

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?

Front-loads the core purpose, then examples, then the account/download caveat, then the return note. Information is well ordered, though the Japanese wording is slightly verbose for what is a no-argument status check.

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 zero-parameter, read-only status tool with no output schema, the description covers what it does, when to reach for it, the download limitation, and the return format. Nothing essential is missing, though it remains silent on error behavior.

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?

The tool takes zero parameters, so the schema has nothing to document and there is no parameter semantics to compensate for; the baseline of 4 applies.

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?

States a specific resource (the French CNES Earth observation portal, THEIA/GEODES) and a specific verb (returns reachability status and overview). An agent can distinguish it from the sibling cnsa_status (Chinese agency) and from satellite_status without opening the schema.

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?

Gives example trigger phrases ("French CNES satellite data", "THEIA portal") and implicitly draws a boundary by noting that image downloading requires a CNES account and that this tool only checks portal status and data overview. It does not name an explicit alternative tool, so it falls short of a 5.

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

cnsa_statusA

中国 CNSA 系衛星データポータル(風雲/NSMC・高分/CNSA-GEO・CBERS/CRESDA)の到達状態と概要を返す。

例:「中国の衛星データ」「風雲衛星」「高分」「CBERS」
画像ダウンロードには各ポータルへのアカウント登録が必要。ここではポータルの状態と
提供データの概要、および認証不要の代替データ源を確認する。

Returns:
    CallToolResult: 表示用サマリ + JSON。
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description must carry the full behavioral burden. It discloses that the tool reports portal reachability, provides data overviews, and notes that downloading images requires account registration while the tool itself focuses on status and auth-free alternatives. This is useful context, but it doesn't specify return format details beyond 'summary + JSON' or any rate limits.

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 front-loaded with the core purpose, followed by examples and a note about account requirements. It is reasonably concise, though the parenthetical listing of agencies is slightly dense and the 'Returns' block is boilerplate.

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 covers the essential aspects: what the tool does, what it returns broadly (summary + JSON), and important context about account requirements and auth-free alternatives. It is nearly complete, missing only explicit routing to sibling tools or detailed output structure.

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?

The tool takes zero parameters (parameter count 0, required 0), so the baseline is 4. The description correctly implies that no input is needed—it is a status-checking tool—and adds no misleading parameter information.

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

Purpose4/5

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

The description states a specific purpose: returning the reachability status and overview of three Chinese satellite data portals (FY/NSMC, GF/CNSA-GEO, CBERS/CRESDA). It also provides example queries that reflect the intended use. It is clear, though its distinction from siblings like cnes_status, jaxa_datasets, or copernicus_collections relies on the national/agency scope rather than explicit differentiation.

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?

Usage is implied through examples ('中国の衛星データ', etc.) and the note about needing portal accounts for image downloads. However, it does not explicitly state when to use this tool versus alternatives, nor does it name a sibling tool for cross-portal search.

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

constellation_nowA

指定した観測地・日時で太陽・月・惑星の位置(高度・方位角・星座)を返す。

「今夜東京で見える惑星は?」など。NASA JPL 天体暦 + Skyfield でローカル計算(認証不要)。

Args:
    latitude: 観測地の緯度(例 東京 35.68)。place 指定時は省略可。
    longitude: 観測地の経度(例 東京 139.69)。
    place: 観測地名(既知テーブル)。緯度経度より優先。
    time_utc: 観測時刻 "YYYY-MM-DD HH:MM"(UTC)。省略で現在。
ParametersJSON Schema
NameRequiredDescriptionDefault
placeNo
latitudeNo
time_utcNo
longitudeNo

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does a decent job: it discloses local computation via NASA JPL ephemeris + Skyfield, that no authentication is needed, and that omitting time_utc defaults to 'now'. It does not discuss response format or numeric precision/frame, but the key operational traits are covered.

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?

Front-loaded summary, then a concrete query example, then an Args block — well organized with no filler. The example sentence and the ephemeris note each earn their place.

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 read/compute tool with no output schema, the description names the returned quantities (altitude, azimuth, constellation) and the input semantics fully. It could say slightly more about the return structure, but nothing required to call it correctly is missing.

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?

Schema coverage is 0%, yet the description documents all four parameters — latitude/longitude with a Tokyo example, place as a known-name lookup, and time_utc with its format and default. It even states the precedence rule that place overrides latitude/longitude, adding meaning absent from the schema.

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

Purpose4/5

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

States a specific verb (返す) and precise resource — altitude, azimuth, and constellation of Sun/Moon/planets for a given site and time. It is distinguishable from most siblings, though it does not explicitly contrast itself with the nearby solar_system_now tool.

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?

The '「今夜東京で見える惑星は?」' example gives a concrete use case, which implies when to reach for it. However, there is no explicit when-not guidance and no routing to alternatives such as solar_system_now, leaving comparison to inference.

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

copernicus_collectionsA

ESA Copernicus の利用可能な衛星データコレクション一覧を返す(認証不要)。

例:「Copernicusの衛星データ」「Sentinelのコレクション」
content に表示用サマリ、structuredContent に JSON を返す。

Args:
    limit: 返す件数(既定 20、最大 100)。
ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo

TDQS

A3.8/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 does well: it discloses that no authentication is needed, that content holds a display summary while structuredContent holds JSON, and that the limit caps at 100. It does not mention pagination or rate limits, but the key behavioral traits for a read-only listing tool are covered.

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 entry is compact and front-loads the core purpose before examples, return-format notes, and the limit argument. Every sentence contributes information; only the example phrases feel slightly redundant.

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 list tool with no output schema, the description covers purpose, auth requirements, return shape (content summary plus structuredContent JSON), and the single argument's bounds. Nothing essential for correct invocation appears to be missing.

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 description coverage is 0% and only one parameter exists, so the description must carry meaning. It explains that limit is the number of items to return, with a default of 20 and a maximum of 100 — the max is not present anywhere in the schema, so this adds genuine value.

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

Purpose4/5

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

The description states a specific verb and resource: it returns a list of available ESA Copernicus satellite data collections. This distinguishes it functionally from sibling tools like copernicus_search (which presumably searches within collections), though it does not name that sibling explicitly. Clear but lacks sibling differentiation.

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?

The description notes it requires no authentication and gives example query phrasings (e.g. 'Copernicus satellite data', 'Sentinel collections'), which implies when to use it. However, it never explicitly states when to prefer this over copernicus_search or other collection-listing siblings, leaving the choice to inference.

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

eodashboard_collectionsA

EO Dashboard(NASA・ESA・JAXA共同)の地球観測データセットを検索する(認証不要)。

3機関の衛星データ(大気・海洋・陸域・雪氷・農業・社会経済など173件)の
一覧・検索を返す。content に表示用サマリ、structuredContent に JSON を返す。

例:「NASAの大気データ」「気候変動の衛星データ」「NO2 のデータセット」
テーマで絞る: agriculture / atmosphere / biomass / covid-19 / cryosphere /
             economy / extreme-events / oceans

Args:
    themes: テーマ(例 "atmosphere", "oceans")。カンマ区切りで複数可。
    agency: 機関(例 "NASA", "ESA", "JAXA")。
    keyword: キーワード(タイトル・説明に部分一致)。
    limit: 返す件数(既定 20、最大 50)。
ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
agencyNo
themesNo
keywordNo

TDQS

A4.3/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 usefully discloses no-auth access, output format split between content and structuredContent, and the default/maximum limit. It still does not describe rate limits, result ordering, or pagination behavior beyond the limit cap.

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?

The description is front-loaded with the purpose, followed by output behavior, examples, filter values, and parameter semantics. Every section adds useful information for invocation, with no redundant filler.

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 four optional parameters, no annotations, and no output schema, the description is mostly complete: it covers purpose, auth, output channels, filtering, and parameter limits. It could further describe the shape of the returned structuredContent JSON or the semantics of combining multiple themes.

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?

Schema description coverage is 0%, so the description must explain all parameters, and it does. It documents themes with examples and comma-separated multi-value support, agency with examples, keyword matching against title and description, and limit with default and maximum values.

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

Purpose4/5

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

The description clearly states a specific verb and resource: searching EO Dashboard earth observation datasets jointly provided by NASA, ESA, and JAXA. It also gives scale and domain context (173 datasets across atmosphere, ocean, land, etc.). However, it does not explicitly differentiate this collection-search tool from the sibling eodashboard_detail tool.

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?

It gives clear usage context through example queries and theme-based filtering, and notes that authentication is not required. It does not state when not to use this tool or explicitly direct the agent to a preferred alternative such as eodashboard_detail.

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

eodashboard_detailA

EO Dashboard の1つのデータセットの詳細(衛星・センサー・説明・参照リンク・画像)を返す。

例:「NO2データセットの詳細」「EO Dashboardの海面水温の情報」
content に表示用サマリ+サムネイル画像(インライン)、structuredContent に JSON を返す。

インライン画像を表示できないハーネス(CLI系・Android系の codex / opencode など)向けに、
画像本体より前に「🖼️ [サムネイル画像を開く: …](URL)」というアイコン付きリンクを必ず出します
(同じURLを structuredContent.image_url にも入れます)。
回答時はこのリンクをそのまま提示してください(画像が描画されない環境では唯一の導線)。

Args:
    identifier: コレクションIDまたは名前(例 "N1_NO2", "NO2_daily", "sea_ice")。
                大まかな名前でも探す。
    show_image: サムネイルをチャットにインライン表示するか(既定 True)。
ParametersJSON Schema
NameRequiredDescriptionDefault
identifierYes
show_imageNo

TDQS

A4.8/5.0
Behavior5/5

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

With no annotations, the description carries the full burden. It transparently discloses output format (content with summary + inline thumbnail, structuredContent JSON), the always-emitted fallback link for non-image harnesses, that show_image controls inline rendering, and that identifier accepts rough names. This is rich behavioral context beyond the 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?

The description is organized as purpose → examples → output behavior → args. Each sentence adds needed information; the link-handling instruction is verbose but critical because it directly instructs the agent on response presentation. No fluff.

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 the tool's simplicity (2 simple params), the description covers invocation, parameter semantics, and output handling, including a specific field name (structuredContent.image_url). It would benefit from stating error behavior or a structuredContent schema, but for an agent deciding to call, it is sufficient.

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?

Schema has 0% description coverage, so the description's Args section is essential. It explains identifier as collection ID or name with examples ('N1_NO2', 'sea_ice') and notes fuzzy matching ('大まかな名前でも探す'), and defines show_image's default and role. This fully compensates for the empty schema.

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 states 'EO Dashboard の1つのデータセットの詳細(衛星・センサー・説明・参照リンク・画像)を返す' – a specific verb (返す) and resource (one dataset's details). This clearly distinguishes from collection-listing siblings like eodashboard_collections.

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 concrete example queries ('NO2データセットの詳細', 'EO Dashboardの海面水温の情報') that signal when to invoke, and scopes itself to a single dataset with '1つの'. It lacks explicit exclusion of alternatives (e.g., eodashboard_collections for lists), so it stops short of full when-not guidance.

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

eso_seeingA

ESO パラナル天文台(チリ, VLT)のリアルタイム大気・シーイング観測データを返す。

例:「パラナル天文台のシーイング」「VLTの観測コンディション」「赤外線観測の水蒸気」
認証不要。シーイング(arcsec)・可降水量(PWV)・気温・湿度・風速を返す。

Args:
    hours: 過去何時間分を取得するか(既定 12、最大 48)。
    fields: カンマ区切りの観測フィールド。省略で主要フィールド。
ParametersJSON Schema
NameRequiredDescriptionDefault
hoursNo
fieldsNodimm_paranal-fwhm,lhatpro_paranal-pwv0,meteo_paranal-temp1,meteo_paranal-rhum1,meteo_paranal-wind_speed1,meteo_paranal-press_inst

TDQS

A3.8/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden, and it does disclose notable behavior: no authentication required, real-time observational data, and the specific fields returned (seeing arcsec, PWV, temp, humidity, wind). It omits data cadence, rate limits, and error behavior, but the auth and return-value context is genuinely useful.

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?

Front-loaded purpose followed by example queries, auth/return summary, and an Args block — well structured and free of padding. Slightly longer than strictly needed but every section carries information.

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 two-parameter, no-output-schema, no-annotation tool, the description covers purpose, invocation examples, authentication, return fields, and both parameter constraints. An agent has enough to call it correctly; only field enumeration and freshness/cadence details are missing.

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 description coverage is 0%, so the description must compensate, and it does: hours is described as lookback window with default 12 and max 48, and fields as a comma-separated list where omission means the main fields. It stops short of enumerating valid field names beyond the schema's default string.

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

Purpose4/5

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

States a concrete verb and resource: returns real-time atmospheric/seeing observation data from ESO Paranal (Chile, VLT). The observatory/instrument scoping makes it distinguishable from the generic sibling astronomy_weather, though it never explicitly names that sibling.

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?

The three example queries (Paranal seeing, VLT conditions, IR water vapor) imply the user intents this tool serves, giving implied usage rather than explicit when/when-not guidance. With 40+ siblings including astronomy_weather, it should say which queries belong to those tools instead.

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

inpe_collectionsA

ブラジルINPEの衛星データコレクション一覧を返す(認証不要)。

例:「ブラジルの衛星データ」「CBERSのコレクション」
content に表示用サマリ、structuredContent に JSON を返す。

Args:
    limit: 返す件数(既定 30、最大 100)。
ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the full burden and does disclose two valuable behaviors: authentication is not required, and output is split between a display summary in content and JSON in structuredContent. It still omits read-only confirmation, response size/pagination behavior, and error conditions, which for a no-annotation tool is a meaningful gap.

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?

Front-loaded purpose line, then return-format note, then the arg doc; every sentence is short and functional. The 'Args:' formatting is slightly boilerplate but not wasteful.

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, so the description correctly fills that gap by explaining that content holds a summary and structuredContent holds JSON. For a single-parameter list tool this is nearly complete; only pagination and result-size expectations are unaddressed.

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 0% and the schema exposes only a default of 30, but the description supplies the upper bound (max 100) that the schema lacks. This is exactly the compensation the low-coverage case requires, though it says nothing about offset/paging semantics.

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

Purpose4/5

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

States a specific verb (returns a list) and resource (Brazilian INPE satellite data collections), and the parenthetical 'no auth required' plus the CBERS example make the resource identifiable. It does not explicitly name the sibling inpe_search as the contrasting tool, so sibling differentiation relies on the agent's inference.

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?

The query examples ('Brazil satellite data', 'CBERS collections') imply when this tool is useful, and the no-auth note is a useful precondition. However, there is no explicit statement of when to use this instead of inpe_search or copernicus_collections, so guidance is only implied.

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

isro_dataA

ISRO(インド宇宙研究機関)の公式データを返す(認証不要)。

「インドの人工衛星」「ISROのロケット」「インドの宇宙センター」など。
content に表示用サマリ、structuredContent に JSON を返す。

Args:
    kind: データ種別
        - "spacecrafts": ISROが打ち上げた人工衛星一覧(既定)
        - "launchers": ISROのロケット(打ち上げ機)一覧
        - "customer_satellites": ISROが外国向けに打ち上げた顧客衛星一覧
        - "centres": ISROのセンター/施設一覧
    query: 部分一致検索語(例: "cartosat", "chandrayaan")。省略で全件。
    limit: 返す件数(既定 20、最大 100)。
ParametersJSON Schema
NameRequiredDescriptionDefault
kindNospacecrafts
limitNo
queryNo

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It usefully discloses that no authentication is needed and that results arrive as a display summary in content plus JSON in structuredContent. It does not state that the operation is read-only, nor anything about rate limits, pagination behavior beyond the limit cap, or error handling.

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?

Front-loads the core purpose and authentication fact, then organizes parameters in a clean Args block. Slightly padded by the redundant Japanese example topics line that repeats information implied by the kind values.

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 3-optional-parameter read tool with no output schema and no annotations, the definition covers purpose, auth, return channels, and every parameter's semantics and defaults. Only the absence of any read-only assurance and richer return-shape detail keeps it from being fully complete.

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?

Schema description coverage is 0%, so the description must do all the work, and it does: it enumerates all four allowed kind values with the default, explains query as a partial-match term with examples and the omit-for-all behavior, and gives limit's default (20) and maximum (100).

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?

States a specific verb and resource: returns official ISRO (Indian Space Research Organisation) data, with concrete example queries (satellites, rockets, centres). The name plus description cleanly separates it from agency siblings like jaxa_datasets, cnsa_status, and inpe_search.

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?

Gives clear context for use (ISRO-specific data, no authentication required) and enumeration of the four data kinds, which tells the agent when this tool applies. However, it names no alternative sibling and gives no when-not guidance, so it stops short of explicit routing.

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

iss_nowA

ISS(国際宇宙ステーション)の現在位置を返し、Googleマップで表示できるURLを生成する。

例:「ISSは今どこ?」「国際宇宙ステーションの現在位置」
content に表示用サマリ+Googleマップリンク、structuredContent に JSON(緯度経度)を返す。

Returns:
    CallToolResult: ISS の現在位置情報。
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It usefully discloses the response shape (content = summary + Google Maps link, structuredContent = JSON lat/long), which compensates for the absent output schema, but says nothing about data source, freshness/latency of a 'now' reading, or caching — meaningful gaps for a positional tool.

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?

Purpose is front-loaded, followed by example queries and return-format notes in a logical order. The trailing 'Returns: CallToolResult: ISS の現在位置情報' largely restates the opening sentence, a minor 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?

With no output schema, the description steps in to explain the return payload (display summary + map link in content, JSON coordinates in structuredContent), which is the main thing an agent needs. It is adequate for a zero-param read tool, though source/freshness details remain unspecified.

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?

The tool takes zero parameters, so per the rubric the baseline is 4. There is nothing for the description to clarify beyond what the empty schema already conveys.

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

Purpose4/5

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

States a specific verb and resource: returns the ISS's current position and generates a Google Maps URL. The resource (ISS) is inherently distinct from siblings like tiangong_now or sat_ground_track, though the description never names an alternative to route against. Clear but without explicit sibling differentiation.

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?

The two example utterances ('Where is the ISS now?') imply when the tool applies, giving an agent intent-matching cues. However, there is no explicit when-not guidance and no mention of the closest alternative (tiangong_now for the Chinese station, satellite_status for general tracking), so usage is only implied.

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

jaxa_datasetsA

JAXA Earth の地球観測データセット(ALOS/GSMaP/GCOM等)一覧を返す(認証不要)。

例:「JAXAの地球観測データ」「GSMaP降雨データセット」
content に表示用サマリ、structuredContent に JSON を返す。

Args:
    limit: 返すデータセット件数(既定 30、最大 100)。
ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo

TDQS

A3.9/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 does add real behavioral context: 認証不要 (no authentication required) and the return shape (content holds a display summary, structuredContent holds JSON). It does not mention rate limits or pagination behavior for large result sets, so it stops short of full disclosure.

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?

Very compact and front-loaded: purpose first, then example queries, then the return contract, then the single argument. Every line earns its place with no repetition.

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 single-optional-parameter listing tool with no output schema and no annotations, the description covers purpose, auth, return channels, and the argument's range. The main missing piece is how it relates to the sibling jaxa_dataset_search.

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 0% (the schema documents only the default of 30), so the description must compensate, and it does: it explains limit is the number of datasets returned, with a default of 30 and a maximum of 100. The max value is information the schema entirely lacks.

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

Purpose4/5

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

States a specific verb+resource (returns a list of JAXA Earth observation datasets) and names concrete examples (ALOS/GSMaP/GCOM), which makes the scope unambiguous. It does not, however, distinguish itself from the sibling jaxa_dataset_search, which an agent must choose between.

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?

The sample queries (「JAXAの地球観測データ」「GSMaP降雨データセット」) imply when the tool is appropriate, giving implied usage guidance. But there is no explicit statement of when to use this list tool versus the sibling jaxa_dataset_search, nor any exclusions.

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

mars_rover_statusA

NASA 火星探査ローバーの現在の状況・天気・最新写真を返す。

「キュリオシティの現在の状況」「火星探査ローバーの今」「パーサヴィアランスの天気」
など。火星の天気(気温・気圧・風速・ソル・地球日付・季節)を認証不要で取得。

Args:
    rover: ローバー名("curiosity"=キュリオシティ既定, "perseverance"=パーサヴィアランス)。
        天気フィードが稼働しているのは現状 MSL(キュリオシティ) のみ。
    show_photos: 保持(互換用。Mars Rover Photos API は廃止済みのため取得しない)。
ParametersJSON Schema
NameRequiredDescriptionDefault
roverNocuriosity
show_photosNo

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description must carry the full behavioral burden, and it does disclose meaningful traits: auth-free access, the fact that only MSL/Curiosity currently has a working weather feed, and that the Photos API is deprecated so photos are not retrieved. It does not describe the return format or rate limits, leaving a small gap.

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?

Purpose is front-loaded, followed by usage examples and then a tidy Args block separated from the body. It is efficient overall, though the leading 'photos' claim adds a misleading line that a leaner description would have dropped.

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?

With no output schema and no annotations, the description covers what is needed to call the tool and even enumerates returned weather fields (temperature, pressure, wind, sol, Earth date, season). The deprecated-parameter explanation closes the main ambiguity, leaving only minor gaps around response format.

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?

Schema description coverage is 0%, so the description must compensate and it does fully: 'rover' is explained with its default ('curiosity') and the caveat that 'perseverance' weather is unavailable, and 'show_photos' is explained as a deprecated compatibility no-op. This adds substantial meaning beyond the bare schema titles and defaults.

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

Purpose4/5

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

The opening sentence gives a specific verb and resource ('NASA Mars rover current status/weather/photos'), which clearly separates it from location-oriented siblings like planetary_rover_location_map. However, the headline promises 'latest photos' while the Args section states photos are no longer fetched, so the stated purpose is partially self-contradictory.

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?

Concrete trigger examples are provided ('Curiosity current status', 'Perseverance weather'), which give clear context for invocation. It also notes no authentication is required. It stops short of naming an alternative tool or stating when not to use it, so exclusions are absent.

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

moon_phase_mapA

月齢マップ(月の満ち欠けを1か月ぶん並べた図)を返す(認証不要・ローカル計算)。

例:「今月の月齢マップを見せて」「2026年9月の月相カレンダー」「9月の満月はいつ?」

日食の時系列パネル(solar_eclipse_series)と同じ幾何計算を使い、観測地から見た
太陽と月の実位置から「輝面の向き(位置角 PA)」と照度を求め、月円盤を正しい向きに
欠けさせて描きます(月齢から向きを決め打ちしない)。月齢は直前の朔(新月)からの
経過日数、照度は円盤の輝面の割合です。描いた画素から輝面の面積比を測り直し、
申告した照度と突き合わせて自己検証します(figure.verify)。

layout="calendar"(既定)は指定した月の日別セル(日月火水木金土の格子)、
layout="lunation" は1朔望月(朔→朔)を等間隔の時系列パネルで返します。

月齢・照度は地球規模の見え方なので観測地には依存しませんが、日付・時刻・曜日は
現地時間(緯度経度から取得した UTC オフセット)で表示します。

Args:
    date: 年月("2026-09" / "2026年9月")または年月日("2026-09-16")。省略時は現在の月。
    place: 観測地(例 "東京","大阪","new york")。lat/lon 指定時は無視。省略時は東京。
    lat: 観測地の緯度。lon と併用時は place より優先。
    lon: 観測地の経度。
    layout: "calendar"(既定・1か月の格子)または "lunation"(朔望月の時系列パネル)。
    days: layout="lunation" のパネル枚数(3〜12・既定8)。calendar では無視。

インライン画像を表示できないハーネス(CLI系・Android系の codex / opencode など)向けに、
content の先頭へ「🖼️ [生成した画像を開く(…)](file:///…) | 保存先: `…`」という
アイコン付きリンクを必ず出します(画像は出力ディレクトリに保存し、同じパスを
structuredContent.image_path にも入れます)。
回答時はこのリンクをそのまま提示してください(画像が描画されない環境では唯一の導線)。
ParametersJSON Schema
NameRequiredDescriptionDefault
latNo
lonNo
dateNo
daysNo
placeNo
layoutNocalendar

TDQS

A4.6/5.0
Behavior5/5

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

No annotations are provided, so the description carries full responsibility. It thoroughly discloses no-auth local calculation, self-verification via figure.verify, local-time handling based on UTC offset, output image saving, the always-present file link, and structuredContent.image_path. This is rich behavioral disclosure.

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?

The description is long but well-structured: purpose and examples first, then behavioral notes, then an Args list. Every sentence carries operational value; the clear organization makes the length manageable for an agent.

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 no annotations and no output schema, the description covers outputs, side effects, defaults, parameter precedence, and harness-specific fallback behavior. An agent has everything necessary to invoke the tool correctly.

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?

Schema description coverage is 0%, yet the description documents every parameter: date formats and default, place with examples and precedence rules, lat/lon behavior, layout values, and days constraints (3–12, default 8, ignored in calendar). It fully compensates for the empty schema.

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

Purpose4/5

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

The description clearly states that the tool returns a moon age map (月齢マップ) with one month of lunar phases arranged in a figure, and provides concrete example queries. It identifies the resource and action well, but does not explicitly contrast itself with sibling map tools beyond referencing shared geometry with solar_eclipse_series.

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 description gives concrete example prompts and clearly explains when to use layout='calendar' versus layout='lunation', including that 'days' is ignored in calendar mode. It provides clear usage context but does not explicitly state when to choose this tool over alternatives or list exclusions.

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

neo_todayA

今日地球に接近する小惑星(NEO)を返す。NASA_API_KEY が必要。

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden; it usefully discloses that a NASA_API_KEY credential is required, which is real behavioral context. However, it says nothing about rate limits, caching, failure modes, or the shape of the returned data, leaving significant gaps for a tool with zero annotation coverage.

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

Conciseness5/5

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

Two short, front-loaded sentences with zero waste: the first states what is returned, the second states the prerequisite. Nothing is padded or redundant.

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 zero-parameter, read-only lookup with no output schema, the description covers the essential facts: what it returns, the temporal window, and the credential requirement. It could say slightly more about the return content, but it is adequate to call the 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?

The tool takes zero parameters, which is the baseline-4 case. The description correctly implies there is nothing to configure, so no parameter explanation is needed or missing.

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

Purpose4/5

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

States a specific verb and resource ('returns asteroids (NEO) approaching Earth today'), which is unambiguous and distinct from nearby siblings like solar_system_now or sky_map_with_satellites. It does not explicitly name an alternative sibling, but the scope is narrow enough that confusion is unlikely.

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

Usage Guidelines2/5

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

The word 'today' implies the temporal scope, but there is no guidance on when to pick this over related tools (e.g. sky_map_with_satellites, planetary_orbiter_track) or any stated exclusions. Usage is left entirely to inference.

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

planetary_orbiter_trackA

任意の天体(月・火星・水星・タイタン等)を周回する探査機の現在位置と軌道を、その天体の地図にプロットした画像を返す。

例:「LROの現在位置を月面地図で」「MROの火星での現在地」「火星周回機の位置」
「かぐやの月面落下地点は?」(過去機は運用終了を案内し、落点が公表されていれば
その地点を月面図にマーカーで示した図を返す)
「アポロの着陸地点を月面図で」「アポロ11号の着陸地点は?」(sites 指定=地点マーカー図)
JPL Horizons が返す中心天体の状態ベクトルを IAU 自転モデルで天体固定座標
(緯度経度・高度) に変換し、NASA Trek の等角図法地図に重ねて描画。認証不要。

全面表示にするには span_deg=360(既定 120)。zoom 省略時は全面(1)に自動設定。

Args:
    body: 天体名(moon, mars, mercury, titan, vesta, ceres)。
    orbiter: 周回機名(月: lro, gateway/火星: mro, odyssey)または
        JPL Horizons の負の天体ID(例 "-74")。和名("かぐや"/"あかつき" 等)も可。
        過去機(kaguya 等)は運用終了のため現在位置は返さず、**落点が公表されている
        機体(かぐや)は落点の緯度経度・時刻・出典を structuredContent.impact_site に返す**。
    when: 観測時刻 ISO8601(例 "2026-09-10T00:00:00Z")。省略で現在。
    minutes: 現在位置の前後何分の軌道を表示するか(既定 90, 最大 1440)。
    step: トレイルの時間刻み(分。既定 5, 最小 1)。
    zoom: 地図ズーム 1〜最大(既定: span_deg>=360 なら1=全面, それ未満は3)。
    span_deg: 表示する経度幅(度。360=天体全面, 既定 120, 最大 360)。
    out_px: 出力画像の長辺ピクセル(既定 900, 最大 1600)。
    sites: **地点マーカー図**にする場合の地点指定(例 "apollo"=アポロ6地点すべて、
        "apollo11"="apollo17"=個別)。指定すると周回機の計算を行わず、NASA NSSDC が
        公表した着陸船(LM)座標にマーカーを置いた図を返す(1地点なら局所図、複数なら
        天体全面図+凡例)。旗の位置は公開表に無いため、注記でその旨を明示する。

インライン画像を表示できないハーネス(CLI系・Android系の codex / opencode など)向けに、
content の先頭へ「🖼️ [生成した画像を開く(…)](file:///…) | 保存先: `…`」という
アイコン付きリンクを必ず出します(画像は %LOCALAPPDATA%\Temp\space_finder_mcp\out に
保存し、同じパスを structuredContent.image_path にも入れます)。
回答時はこのリンクをそのまま提示してください(画像が描画されない環境では唯一の導線)。
ParametersJSON Schema
NameRequiredDescriptionDefault
bodyNomoon
stepNo
whenNo
zoomNo
sitesNo
out_pxNo
minutesNo
orbiterNolro
span_degNo

TDQS

A4.8/5.0
Behavior5/5

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

With no annotations, the description carries the full transparency burden and does so thoroughly. It discloses the underlying computation (JPL Horizons state vectors, IAU rotation model, NASA Trek map), output storage path, structuredContent.image_path and impact_site fields, the always-prepended image link for non-rendering harnesses, authentication-free access, and the fact that flag positions are not available. This is unusually complete behavioral disclosure for a tool with no annotations.

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?

The description is long but appropriately so for a tool with nine parameters, zero schema descriptions, and no annotations. It is front-loaded with purpose and examples before diving into technical details, and the per-parameter explanations are scannable and information-dense. Every major sentence adds usable guidance for an agent.

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 the tool's complexity, nine parameters, no output schema, and no annotations, the description is complete enough for correct selection and invocation. It covers what the tool returns, how to use each mode, examples of valid queries, defaults, constraints, authentication expectations, file output behavior, and structuredContent fields. An agent can invoke this tool correctly without additional context.

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?

Schema description coverage is 0%, so the description must fully compensate. It does: every parameter (body, orbiter, when, minutes, step, zoom, span_deg, out_px, sites) receives an explanation including defaults, ranges, accepted values, valid aliases, and conditional behavior. This goes far beyond what the bare input schema provides.

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 that it returns an image plotting the current position and trajectory of a spacecraft orbiting a celestial body on that body's map, using concrete verbs and resources. It includes multiple example queries (LRO, MRO, Kaguya, Apollo) that make the tool's scope and output unmistakable, and the "sites" mode and past-probe impact-point behavior further define its exact function.

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 description gives strong usage context via examples and parameter modes: it explains when to use past-probe impact-point handling, when the "sites" marker mode applies, and how zoom/span_deg behavior changes. It does not explicitly compare this tool to siblings like sat_ground_track or planetary_rover_location_map, so exclusion guidance is implied rather than stated.

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

planetary_rover_location_mapA

任意の天体面を移動する探査ローバーの現在地を、その天体の地図上に示した画像を返す(認証不要)。

例:「パーサヴィアランスの現在地を火星地図で」「キュリオシティが今どこにいるか地図で」
ローバーの現在地データ(現状は NASA MMGIS / 火星)と走行経路を取得し、NASA Trek の
等角地図タイルに、走行経路(橙線)・現在地(赤●)・着陸地点(青●)を合成して描画。
planetary_map.BODIES の天体テーブルを利用するため、ベースマップは天体を指定して切り替え可能。

Args:
    body: 天体名(既定 "mars"。planetary_map の対応天体)。
    rover: ローバー名("perseverance"=既定, "curiosity")。
    zoom: 地図ズーム。省略時は天体の最大ズーム(火星7)。高倍率ほど詳細。
    span_deg: 表示する画角(経度幅・度)。大きいほど広範囲・解像度低下。既定0.5。
    out_px: 出力画像の長辺ピクセル(既定1000, 最大2000)。

インライン画像を表示できないハーネス(CLI系・Android系の codex / opencode など)向けに、
content の先頭へ「🖼️ [生成した画像を開く(…)](file:///…) | 保存先: `…`」という
アイコン付きリンクを必ず出します(画像は %LOCALAPPDATA%\Temp\space_finder_mcp\out に
保存し、同じパスを structuredContent.image_path にも入れます)。
回答時はこのリンクをそのまま提示してください(画像が描画されない環境では唯一の導線)。
ParametersJSON Schema
NameRequiredDescriptionDefault
bodyNomars
zoomNo
roverNoperseverance
out_pxNo
span_degNo

TDQS

A4.5/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and does so well: it discloses that no auth is required, the underlying data source (NASA MMGIS / Mars), the rendering pipeline (NASA Trek equirectangular tiles with orange path line, red current-position dot, blue landing-site dot), the fact that a file is written to disk (a side effect), and the structuredContent.image_path return. It even explains the fallback behavior for harnesses that cannot render inline images.

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?

Purpose is front-loaded, followed by examples, then a behavior/render block and an Args block — a logical structure. The final paragraph about inline-image linking is somewhat verbose and repeated in intent, but it documents genuinely necessary fallback behavior rather than padding.

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 5-parameter tool with no output schema and no annotations, the description covers what the tool produces (an image plus structuredContent.image_path), how it renders, all parameter semantics, and environment constraints. There is no output schema, so the description rightly explains the return artifact itself.

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?

Schema description coverage is 0%, so the description must compensate, and it fully documents all five parameters with defaults and semantics: body (default mars, bounded by planetary_map bodies), rover (perseverance default, curiosity), zoom (defaults to the body maximum, Mars=7, higher is more detailed), span_deg (longitude width in degrees, default 0.5, larger = wider but lower resolution), and out_px (default 1000, max 2000).

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

Purpose4/5

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

The description states a specific verb and resource: it returns a rendered map image showing a rover's current position on an arbitrary celestial body. The purpose is unambiguous, though it never explicitly distinguishes itself from the sibling 'mars_rover_status' (data vs. rendered map), leaving that disambiguation to inference.

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?

Two example queries ("Perseverance's current location on a Mars map", "where is Curiosity now") make the intended use case concrete. However, there is no explicit when-not guidance nor a direct comparison to the alternative 'mars_rover_status' tool, so the routing signal is contextual rather than explicit.

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

power_climateA

NASA POWER API で任意地点の過去の気候・太陽エネルギー統計を返す(認証不要)。

例:「東京の過去1年間の日射量」「ハワイの気温データ」「太陽光発電の立地評価」
過去の日別データ(通常数日〜数ヶ月前まで)の期間平均を計算して返す。

Args:
    latitude: 緯度(例 東京 35.68)。
    longitude: 経度(例 東京 139.69)。
    start: 開始日 "YYYY-MM-DD"。省略で1年前。
    end: 終了日 "YYYY-MM-DD"。省略で直近データ。
    parameters: カンマ区切りのパラメータ(例 "T2M,ALLSKY_SFC_SW_DWN")。
        省略で主要パラメータ(気温・日射量・風速)。
ParametersJSON Schema
NameRequiredDescriptionDefault
endNo
startNo
latitudeYes
longitudeYes
parametersNo

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations provided, the description carries the full behavioral burden. It discloses that no authentication is required and that data is typically several days to months old and returned as a period average, but omits rate limits, error conditions, and response format 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 is front-loaded with purpose, then examples, then parameter details. It is appropriately sized and structured for a data-retrieval tool, with each section serving a clear purpose, though the Japanese prose is slightly repetitive.

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 covers the main invocation needs: purpose, authentication, data latency, averaging behavior, and all parameters. It does not describe the exact return fields or units, but is sufficient for an agent to select and invoke the 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 description coverage is 0% for all five parameters, so the description must compensate. It documents every parameter: latitude and longitude with examples, start/end as YYYY-MM-DD with defaults, and parameters as a comma-separated list with a default set, adding substantial meaning beyond the bare schema.

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

Purpose4/5

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

The description clearly states the verb (returns) and resource (past climate/solar energy statistics) and specifies the source API (NASA POWER) and no authentication. It distinguishes the tool from space-focused siblings by describing climate/solar data for arbitrary points, but does not explicitly name or contrast with any sibling tool.

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?

Usage is implied through examples such as “Tokyo’s solar irradiance over the past year” and “temperature data for Hawaii,” and the data scope is described as period averages of past daily data. There is no explicit guidance on when to use this tool versus alternatives or when not to use it.

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

radio_sources_nowA

TART オープン電波望遠鏡が「いま観測できる電波源」を返す(認証不要)。

教育・研究用にオープンソース公開されている電波干渉計 TART の可視電波源
カタログから、指定した観測地点の地平線より上にある電波源(GNSS・静止衛星等の
人工衛星)をリアルタイムに取得する。電波天文・衛星追尾の学習用。

例:「いま上空に何が見える?」「ダニーデンの電波望遠鏡が見ている衛星」
「いま観測できる電波源」 認証不要。

Args:
    lat: 観測地点の緯度(度)。省略時は TART 本体のある NZ(-45.87)。
    lon: 観測地点の経度(度)。省略時は NZ(170.60)。
    alt: 観測地点の標高(m, 既定 100)。
    elevation: 地平線からの最小仰角(度, 既定 10。高いほど地平線近くを除外)。
    limit: 返す件数(既定 15、最大 50)。
ParametersJSON Schema
NameRequiredDescriptionDefault
altNo
latNo
lonNo
limitNo
elevationNo

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations, the description carries the full burden and does disclose meaningful behavior: no authentication required (stated twice), real-time retrieval, and the default observing site when lat/lon are omitted. It still omits return format, latency/freshness of the catalog, and any rate limits, which is a real gap for an unannotated data tool.

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?

Front-loads the one-line answer before elaboration, then an examples block, then an Args block that maps cleanly to the parameters. Slightly repetitive ('認証不要' appears twice) but every sentence carries content, so only minor trimming is possible.

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?

There is no output schema and no annotations, so the description is the only source of truth. It names the source categories returned but never describes the response shape (fields, ordering, units), leaving the agent guessing about what comes back from this data-returning tool.

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?

Schema description coverage is 0%, but the description compensates fully: lat/lon (degrees, default TART site -45.87/170.60), alt (meters, default 100), elevation (minimum elevation above horizon, default 10, higher excludes near-horizon sources), and limit (default 15, max 50). The max-50 cap and the semantic effect of elevation are information not present anywhere in the schema.

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?

States a specific verb and resource: it returns radio sources currently observable by the TART open radio telescope, with the source types (GNSS, geostationary satellites) named explicitly. An agent can distinguish this from siblings like sat_tle or sky_map_with_satellites because the scope (real-time over-the-horizon sources from the TART catalog) is stated up front.

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?

Gives example queries ('what's overhead now?', 'satellites Dunedin's telescope sees') and frames it as educational/research use, which implies when it fits. However, it never names an alternative tool or an explicit when-not-to-use condition, so routing versus sat_tle, iss_now, or sky_map_with_satellites is left to inference.

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

reverse_lookupA

逆引き歴史Q&A — カテゴリ+国 で絞り込んだ最初/記録の宇宙オブジェクトを Wikidata から探す。

例: 「米国で最初に打ち上げた宇宙望遠鏡は?」→ category="宇宙望遠鏡", country="United States"
例: 「日本初の人工衛星は?」→ category="人工衛星", country="Japan"

Args:
    category: 探す対象のカテゴリ(宇宙望遠鏡/space probe/satellite/astronaut など)。
    launch_date: 打ち上げ日(P619)で並べる場合は True。False にすると対象を列挙する。
    country: 国名(例 "United States", "Japan", "India")。Wikidata 上で Q-id に自動解決する。
    country_qid: 国の Q-id を直接指定する場合(例 "Q30"=米国, "Q17"=日本)。country より優先。
    limit: 返す件数(既定 5)。
    order: "asc"=古い順(最初のもの), "desc"=新しい順。
    language: ラベル表示言語(ja/en/zh など)。
ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
orderNoasc
countryNo
categoryYes
languageNoja
country_qidNo
launch_dateNo

TDQS

A4.1/5.0
Behavior3/5

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

With no annotations, the description must carry the full behavioral burden. It discloses the Wikidata source, that launch_date=True sorts by launch date while False lists objects, and that country_qid takes priority over country. However, it omits read-only nature, permissions, rate limits, error behavior, and return structure.

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?

The description is front-loaded with purpose, then examples, then an Args block. Every part earns its place: the examples illustrate usage and the Args block compensates for the zero schema description coverage.

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 7-parameter lookup with no annotations and no output schema, the description covers all inputs and key behavioral details. It is nearly complete, but it does not describe the return shape or what fields the Wikidata results contain, which matters because no output schema is provided.

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?

Schema description coverage is 0%, so the description must explain all parameters. It does: category with examples, launch_date sorting vs listing, country with example values and auto Q-id resolution, country_qid priority, limit default, order asc/desc meaning, and language for labels.

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

Purpose4/5

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

The description states a specific verb+resource: reverse-looking up first/record space objects from Wikidata filtered by category and country, with concrete examples. It is clear what the tool does, though it does not explicitly differentiate itself from the many sibling search/lookup 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?

The examples ('米国で最初に打ち上げた宇宙望遠鏡は?' → category/country) clearly establish when to use the tool for historical 'first/record' queries. It gives no explicit exclusions or named alternatives among siblings, but the context is clear enough.

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

russia_launchesA

ロシア(Roscosmos)のロケット打ち上げ予定を返す(ソユーズ・プロトン・アンガラ等)。

Launch Library 2 を「search=Roscosmos」で絞り込み、ソユーズ(Soyuz)による
Progress(補給)・Soyuz MS(有人)・Luna 等の打ち上げを取得する。
ロシア直のオープンAPIは存在しないため(Roscosmos REST は404)、グローバル集約API経由。
認証不要。content に表示用サマリ、structuredContent に JSON を返す。

Args:
    limit: 返す件数(既定 8、最大 15)。
    status: 状態で絞り込み(例 "Go for Launch")。省略で全状態。
ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
statusNo

TDQS

A4.1/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 discloses the data source (Launch Library 2 with search=Roscosmos), that authentication is not required, and the return format (content summary plus structuredContent JSON). It lacks rate-limit or error-handling details, but covers key behavioral traits well.

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?

Front-loads the purpose, then provides source/auth/output context, then a compact Args section. Every sentence contributes useful information, though the justification for using the aggregator API is slightly verbose and could be tightened.

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 read tool with two optional parameters and no output schema, the description covers purpose, data source, authentication, return format, and parameter behavior. Minor gaps like error handling or pagination are unlikely to impede correct 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?

Schema description coverage is 0%, so the description must compensate. It documents both parameters: limit (default 8, maximum 15) and status (filter by state, example "Go for Launch", omitted returns all states). This adds meaningful constraints and semantics beyond the bare schema.

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?

States a specific verb (returns) and resource (Russian/Roscosmos rocket launch schedule), naming example vehicles (Soyuz, Proton, Angara) and the data source. An agent can immediately tell this is the Russia-focused launch tool, distinct from global or other national launch siblings.

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?

Usage is implied by the country scope: use this for Russian/Roscosmos launches. However, it never explicitly states when to use it versus siblings like upcoming_launches or china_launches, nor does it provide exclusions. The note about no direct Russian API explains the source choice but is not usage guidance.

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

satellite_statusA

世界気象機関(WMO)OSCARの衛星カタログから、気象・地球観測衛星の運用ステータスを返す。

ロシアのMeteor-M・Resurs・Kanopus等、世界中の気象衛星の運用状況・軌道・打ち上げ日を確認できる。
例:「ロシアの気象衛星」「Meteor-Mの運用状況」「世界の気象衛星一覧」
content に表示用サマリ、structuredContent に JSON を返す。

カタログ**全件(約1,000件)を走査**し、query は一致度順(acronym の完全/前方一致 →
名称の語境界一致 → 名称の部分一致のみ)に並べて返す。`query="meteor"` のような入力でも
Meteor-M が「Meteorological」を含む他衛星に埋もれない。一致件数の内訳
(acronym・語境界 / 部分一致のみ)と、取得できなかったページ数も数値で返す。

初回の呼び出しは全件取得のため40秒ほどかかります(1ページ30件固定・約4.5秒 ×
35ページ)。取得したカタログはディスクにも保存するため、以後はプロセスを
再起動しても即時に応答します(24時間で更新)。

Args:
    query: 検索語(衛星名・略称)。**和名は英語名に自動展開**する
        ("ひまわり"→himawari, "だいち"→alos, "宇宙ステーション"→iss)。
        例 "meteor", "resurs", "goes", "himawari", "だいち"。
    agency: 機関名(例 "Roscosmos", "NOAA", "EUMETSAT", "JAXA")。
    limit: 返す件数(既定 10、最大 20)。
ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryNo
agencyNo

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 fully carries the behavioral disclosure burden. It discloses the full-catalog scan (~1,000 entries), match ordering for queries, the ~40-second first-call latency, disk caching, 24-hour refresh behavior, and the content vs. structuredContent return split.

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?

The description is front-loaded with purpose and structured with examples, behavioral notes, and an Args section. Although long, every sentence provides actionable information for correct invocation, especially the performance caveat and matching behavior.

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 no output schema and no annotations, the description is remarkably complete: it explains return formats, query semantics, parameter constraints, performance expectations, and edge-case reporting such as unmatched pages. An agent has enough context to invoke the tool correctly and interpret its results.

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?

Schema description coverage is 0%, so the description must compensate, and it does: query is explained with matching rules and Japanese-to-English expansion, agency is given with concrete examples, and limit is fully specified with default and maximum values.

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 states a specific verb ('返す' / returns), a clear resource (WMO OSCAR satellite catalog), and a distinct domain (weather and Earth observation satellite operational status). It includes concrete examples and differentiates itself from sibling tools focused on TLE, positions, or imagery.

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 description gives clear context for when to use the tool: when querying operational status, orbit, or launch dates of WMO OSCAR catalog satellitesтное. It provides example queries and parameter usage, though it does not explicitly name alternative tools or state when not to use it.

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

sat_ground_trackA

任意の人工衛星の現在位置と地上軌道を地球地図にプロットした画像を返す。

例:「ISSの現在位置を地球地図で」「ひのでの位置を地図で」「ハッブルの軌道」
CelesTrak の最新 TLE を Skyfield(SGP4)で伝播し、衛星の真下の点(緯度経度・高度)
とその前後の軌道トレイルを NASA Blue Marble 地球地図に重ねる。認証不要。

精度: 軌道トレイルは step 分刻み(デフォルト 1分)で描画し、経度±180度境界で
線を分割するため、世界地図上で正確に表示される。subpoint() は地球自転・歳差・
極運動を考慮した真の地上点を返す。

Args:
    norad_id: NORAD カタログ番号(例 25544=ISS, 29479=ひので)。name より優先。
    name: 衛星名または省略名(例 "iss", "hubble", "hinode")。既知の衛星は
        ID に解決、それ以外は TLE を直接検索。
    when: 観測時刻 ISO8601(例 "2026-09-10T03:30:00Z")。省略で現在。
    minutes: 現在位置の前後何分の軌道を表示するか(既定 45、最大 1440=24時間)。
        準天頂衛星(みちびき)の8の字軌道を見るには 720 前後を指定。
    step: トレイルの時間刻み(分。既定 1、最小 0.5)。小さいほど滑らか。
    out_px: 出力画像の幅ピクセル(既定 1200、最大 2048)。

インライン画像を表示できないハーネス(CLI系・Android系の codex / opencode など)向けに、
content の先頭へ「🖼️ [生成した画像を開く(…)](file:///…) | 保存先: `…`」という
アイコン付きリンクを必ず出します(画像は %LOCALAPPDATA%\Temp\space_finder_mcp\out に
保存し、同じパスを structuredContent.image_path にも入れます)。
回答時はこのリンクをそのまま提示してください(画像が描画されない環境では唯一の導線)。
ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
stepNo
whenNo
out_pxNo
minutesNo
norad_idNo

TDQS

A4.5/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and delivers: it names the data source (CelesTrak TLE), the propagation method (Skyfield/SGP4), states no authentication is required, explains longitude ±180 trail splitting and subpoint accuracy, and discloses the file output path plus the mandatory link behavior in content and structuredContent.image_path.

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?

Content is front-loaded — purpose first, then examples, then mechanism, accuracy notes, and finally per-argument documentation — so the reader can stop early. It is somewhat long and the accuracy paragraph is dense, but almost every sentence adds actionable detail rather than filler.

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?

Although there is no output schema, the description explains the return surface thoroughly (generated image, its saved file path, structuredContent.image_path, and the inline link for harnesses that cannot render images). Combined with documented parameter behavior, an agent has everything needed to call and present the result.

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?

Schema coverage is 0% and the description fully compensates, documenting all six parameters with defaults, ranges, and precedence: norad_id takes priority over name, name accepts abbreviations and falls back to a TLE search, when is ISO8601 with 'now' as default, minutes defaults to 45 with a 1440 cap, step default 1 / min 0.5, out_px default 1200 / max 2048.

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

Purpose4/5

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

The opening sentence gives a specific verb and resource — plots any satellite's current position plus ground track onto an Earth map image, which implicitly separates it from narrower siblings like iss_now or satellite_status. It never explicitly names or contrasts a sibling tool, so it stops short of full differentiation.

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?

Concrete example queries ('ISSの現在位置を地球地図で', 'ハッブルの軌道') make the intended use obvious, and it adds situational guidance such as using minutes≈720 to see QZSS' figure-eight orbit. It offers no explicit when-not-to-use guidance or named alternatives among the many sibling tracking tools.

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

sat_tleA

任意の人工衛星(ISS・ハッブル・気象衛星・中国宇宙ステーション等)の軌道要素(TLE)を返す。

例:「ISSの軌道要素」「ハッブル宇宙望遠鏡のTLE」「気象衛星の軌道」
認証不要。CelesTrak(NORADカタログ)から取得。
content に表示用サマリ、structuredContent に JSON(軌道パラメータ)を返す。

Args:
    name: 衛星名または省略名(例 "iss", "hubble", "tiangong", "goes-18")。
        **和名は英語名/既知名へ自動解決**する("ひので"→29479, "ひまわり9号"→41836,
        "宇宙ステーション"→iss)。解決できない場合は既知の名前を提示して停止する。
    norad_id: NORAD カタログ番号(例 25544=ISS)。name より優先。
    group: CelesTrak の衛星グループ(例 "stations", "weather", "amateur", "science")。
    limit: 返す件数(既定 5、最大 20)。
ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
groupNo
limitNo
norad_idNo

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it discloses the data source (CelesTrak/NORAD), that no auth is needed, the return shape (content summary plus structuredContent JSON), name-resolution behavior for Japanese names, and that unresolved names stop with suggestions. It omits rate-limit/error nuances but is substantially more informative than typical.

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?

Purpose and examples are front-loaded, and the return-format line precedes the parameter docs. The example list is slightly redundant with the parameter examples, but overall it is efficient and well-organized.

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 read-only lookup with no output schema, the description explains the return structure, the data source, the no-auth posture, and the failure behavior on unresolved names. Nothing an agent needs to invoke it correctly appears to be missing.

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?

Schema description coverage is 0%, so the description must compensate, and it does fully: name (with examples and Japanese-name auto-resolution), norad_id (with 25544=ISS example and explicit precedence over name), group (CelesTrak groups), and limit (default 5, max 20). Every parameter's meaning and constraints are supplied.

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?

States a specific verb and resource: returns TLE orbital elements for arbitrary satellites, with concrete examples (ISS, Hubble, weather sats, Chinese station). The TLE-specific scope distinguishes it from siblings like satellite_status or sat_ground_track without needing to name them.

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?

Usage is conveyed only implicitly through example queries ("ISSの軌道要素", "ハッブルのTLE"), and it notes no authentication is required. There is no explicit when-to-use vs. when-not guidance or reference to the competing sibling tools, leaving the agent to infer selection.

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

search_space_audioA

宇宙関連の音声を検索し、再生可能な音声URLを返す。

content には表示用サマリ、structuredContent にはJSON(タイトル/再生URL/種別/尺など)を返す。

「宇宙の音・惑星の音・打ち上げの効果音」のような短い音声を探すなら kind="sound_effect"、
「ポッドキャスト・解説・飛行士インタビュー」のような長い音声なら kind="podcast" を指定。
既定 kind="auto" は両方を探す。

例:
  - 「スプートニクの音を聞きたい」→ query="sputnik", kind="sound_effect"
  - 「アポロのポッドキャスト」→ query="apollo", kind="podcast"
  - 「火星の音」→ query="mars", kind="auto"

Args:
    query: 検索語(juno, saturn, sputnik, launch, apollo など)。
    limit: 返す件数(既定 3、最大 10)。
    kind: "auto"(両方) / "podcast"(NASA Image Library の長尺トーク・解説) /
          "sound_effect"(短い宇宙の音・効果音)。

content の各項目には、メディア本体より前に「🖼️ [画像を開く: タイトル](URL)」
「🎧 [音声を開く: タイトル](URL)」「🎬 [動画を再生: タイトル](URL)」というアイコン付き
リンクを出します(インライン表示を描画できない CLI/Android 系ハーネスでも開けるように)。
回答時はこのリンクをそのまま提示してください。
ParametersJSON Schema
NameRequiredDescriptionDefault
kindNoauto
limitNo
queryYes

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 and does disclose behavior beyond structured data: it explains that content returns a display summary while structuredContent returns JSON with title/play-URL/type/duration, and it specifies how result links are rendered for non-inline harnesses. Auth requirements, rate limits, and failure/empty-result behavior are still unstated, which keeps it out of the top band.

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 purpose and return shape are front-loaded, and the parameter guidance is grouped under an explicit Args section. It is longer than strictly necessary because the icon-link formatting instruction and the three examples partially restate the kind guidance, but every block remains actionable.

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?

There is no output schema, so the description correctly takes on the job of explaining return values (content summary plus structuredContent fields) and the link format. What is missing is guidance on empty or failed searches and on upstream source coverage, which would matter for an agent deciding whether a miss means 'no results' or 'wrong tool'.

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?

Schema description coverage is 0%, so the description must compensate, and it does: query is illustrated with concrete example terms, limit is documented as default 3 / max 10 (a bound absent from the schema), and kind's three accepted values and their meanings are spelled out despite no enum being defined.

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 states a specific verb (検索) and resource (宇宙関連の音声) plus the concrete output (再生可能な音声URL). This clearly separates it from siblings such as search_space_images and search_space_videos, which cover other media types.

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?

It gives concrete routing rules for the internal modes — kind="sound_effect" for short sounds, kind="podcast" for long talks, and kind="auto" to search both — reinforced by three worked examples. It does not, however, say when to prefer this tool over sibling media search tools, so it stops short of full alternative coverage.

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

search_space_imagesA

惑星・人工衛星・宇宙ミッションの画像を NASA Image & Video Library から検索し表示する。

LLM向けに structuredContent へJSON(title/date/nasa_id/image_url など)を返し、
content にはチャット表示用のサマリ+インライン画像を返す。

例: 「火星の画像を見せて」「ハッブルの写真」「アポロの画像」

Args:
    query: 検索語(mars, jupiter, hubble, apollo など英語が確実)。
    limit: 返す画像件数(既定 3、最大 10)。
    show_inline: 画像をチャットにインライン表示するか(既定 True)。
    inline_max: チャットに埋め込む画像の枚数(既定 1、最大 5)。
        転送量を抑えるため既定は先頭1枚のみ。全件のURLは
        structuredContent.results[].image_url に入る。

content の各項目には、メディア本体より前に「🖼️ [画像を開く: タイトル](URL)」
「🎧 [音声を開く: タイトル](URL)」「🎬 [動画を再生: タイトル](URL)」というアイコン付き
リンクを出します(インライン表示を描画できない CLI/Android 系ハーネスでも開けるように)。
回答時はこのリンクをそのまま提示してください。
ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryYes
inline_maxNo
show_inlineNo

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations, the description carries the full behavioral burden and does so well: it discloses the dual return channels (structuredContent JSON fields vs. content summary with inline images), the bandwidth-driven inline default, the max values not present in the schema, and the exact icon-prefixed link format so it renders even on CLI/Android harnesses.

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?

Front-loads purpose, then return-shape, then examples, then args — a logical order. It is slightly verbose with some restatement of the inline/link behavior, but every section carries information an agent needs to call and present results correctly.

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 4-parameter tool with no annotations and no output schema, the definition is complete: it explains fetch behavior, both return surfaces, per-field output content, and the presentation contract for downstream harnesses. Nothing needed to invoke or relay results is missing.

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?

Schema coverage is 0% and the schema holds only defaults, yet the description documents all four parameters including constraints absent from the schema (limit max 10, inline_max max 5) and the practical hint that English queries are more reliable. This is meaningfully more than the structured fields provide.

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?

States a specific verb (検索し表示する) and resource (惑星・人工衛星・宇宙ミッションの画像) sourced from the NASA Image & Video Library, and the example queries make the target media unambiguous. It is readily distinguishable from siblings search_space_audio and search_space_videos.

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 concrete example queries (火星の画像, ハッブルの写真, アポロの画像) that show when to reach for this tool, and implicitly positions it as the image counterpart to the audio/video siblings. It never names an alternative explicitly or states exclusions, so it falls short of a 5.

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

search_space_videosA

宇宙関連の動画(打ち上げ・ミッション映像・解説など)を検索し、再生用MP4 URLを返す。

content には表示用サマリ+ポスター画像(インライン)を返し、
structuredContent にはJSON(タイトル/再生URL/解像度別URL/字幕など)を返す。
動画自体は巨大なのでbase64埋め込みせず、クライアント/LLMがURLから再生する。

例: 「火星の動画」「ロケット打ち上げ映像」「ハッブルの映像」

Args:
    query: 検索語(mars, launch, hubble, artemis など英語が確実)。
    limit: 返す動画件数(既定 3、最大 10)。
    show_poster: ポスター画像をチャットにインライン表示するか(既定 True)。

content の各項目には、メディア本体より前に「🖼️ [画像を開く: タイトル](URL)」
「🎧 [音声を開く: タイトル](URL)」「🎬 [動画を再生: タイトル](URL)」というアイコン付き
リンクを出します(インライン表示を描画できない CLI/Android 系ハーネスでも開けるように)。
回答時はこのリンクをそのまま提示してください。
ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryYes
show_posterNo

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it distinguishes content (summary + inline poster) from structuredContent (JSON with title/play URLs/resolution URLs/subtitles), warns that the video is too large to base64-embed and must be streamed from URL, and specifies how links render in CLI/Android harnesses. Auth, rate limits, and error behavior remain unstated, keeping it from a 5.

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?

Content is front-loaded: purpose and return shape come first, then args, then link-rendering detail. The format guidance is somewhat verbose and the link-format paragraph could be tightened, but every block serves the caller.

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 exists, yet the description explains both return channels (content vs structuredContent), the poster behavior, and that playback happens via URL rather than embedded data. An agent has everything needed to call and render the result correctly.

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?

Schema description coverage is 0%, so the description must compensate and it does: query is documented with a recommendation to use English, limit is given both default (3) and max (10), and show_poster states its default and meaning. This adds meaning well beyond the bare typed schema.

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

Purpose4/5

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

States a specific verb (検索) and resource (宇宙関連の動画 – 打ち上げ・ミッション映像・解説) plus the return type (再生用MP4 URL). The topic clearly separates it from siblings like search_space_images and search_space_audio, though no sibling is named explicitly.

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 concrete triggering examples (「火星の動画」「ロケット打ち上げ映像」「ハッブルの映像」) that map intent to the tool, giving clear context for use. It does not state when NOT to use it or explicitly route to the image/audio siblings, so it stops short of a 5.

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

sky_map_with_satellitesA

東京(または指定地)の空に太陽系の惑星と人工衛星を重ねた図を返す(認証不要)。

例:「東京の空に惑星と人工衛星を重ねた図」「今見えるISSを星空マップで」「木星はどこに見える?」
天体位置は JPL de421 + Skyfield、衛星位置は CelesTrak TLE + SGP4 で実測計算。

学生・観賞用途では視認性の高い Pillow 版(既定)を推奨。正確な座標プロットが必要な場合は
matplotlib 版も選択できる。

engine で描画方法を選択:
  - "simple"(既定):   Pillow による実写背景の簡易合成。惑星を種類別の色アイコンで
    大きく・明瞭に描き、学生が見やすい見た目重視の画像。
  - "accurate":       matplotlib による正確な星図。座標グリッド・軌道予測線を精確表示
    (科学・教育の詳細用途向け)。マーカーの色・光背・土星の環・木星の縞・火星の極冠・
    名札・凡例は simple 版と同じ指定色(_PLANET_VISUAL / _C_*)から作る。
画像は content に base64 インライン表示、座標は structuredContent に JSON。

Args:
    place: 観測地(例 "東京","大阪","new york")。lat/lon 指定時は無視。省略時は東京。
    lat: 観測地の緯度。lon と併用時は place より優先。
    lon: 観測地の経度。
    when: 観測時刻 ISO8601(例 "2026-09-09T11:00:00Z")。省略時は現在時刻。
    engine: "simple"(既定/Pillow) / "accurate"(matplotlib)。

インライン画像を表示できないハーネス(CLI系・Android系の codex / opencode など)向けに、
content の先頭へ「🖼️ [生成した画像を開く(…)](file:///…) | 保存先: `…`」という
アイコン付きリンクを必ず出します(画像は %LOCALAPPDATA%\Temp\space_finder_mcp\out に
保存し、同じパスを structuredContent.image_path にも入れます)。
回答時はこのリンクをそのまま提示してください(画像が描画されない環境では唯一の導線)。
ParametersJSON Schema
NameRequiredDescriptionDefault
latNo
lonNo
whenNo
placeNo
engineNosimple

TDQS

A4.2/5.0
Behavior4/5

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

No annotations, so the description carries the burden. It discloses computed data sources (JPL de421 + Skyfield, CelesTrak TLE + SGP4), no-auth requirement, inline base64 output, temp file path, and the link behavior for harnesses that can't render images. Lacks error handling or rate-limit notes.

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

Conciseness3/5

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

Front-loaded core purpose, but the body is long and mixes Japanese and English, with duplication around engine behavior and the link generation. Some content could be trimmed.

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?

Covers all parameters, default behavior, output format, and fallback link for non-rendering harnesses. Missing an output schema means the description must explain return values, which it does partially (base64 inline, structuredContent JSON).

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 0%, so the description lists all five parameters with meaning, allowed values for engine, default for place and when, and precedence rules (lat/lon over place, place ignored when lat/lon given).

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?

States a specific verb (returns a diagram) and resource (sky map overlaying solar-system planets and satellites), with a concrete example list. It clearly distinguishes itself from siblings like iss_now and solar_system_now by combining both in one rendered image.

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?

Gives example queries and recommends the Pillow engine for students/observation, but doesn't explicitly say when NOT to use this versus iss_now or solar_system_now for a specific need.

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

solar_eclipse_seriesA

日食の時系列パネル画像(太陽が月に欠ける過程)を返す(認証不要)。

例:「2035年9月2日の皆既日食を画像で」「東京で見える次の日食」「2019年の部分日食の進行」
指定した観測地・日付で太陽と月の視位置を JPL DE421 + Skyfield で実測計算し、
食の始まり〜最大〜終わりを複数パネルに並べて合成。月の位置角も正確に反映。

date を省略した場合は、その観測地で「これから起こる次の日食」を約4年(1400日)先まで自動検索(800日では可視の食が無い観測地があるため)。
描画するのは、その観測地で太陽が地平線より上にある時間帯だけ。最大食分も可視区間の中で
求める。全日食が地平線下なら「見えません」と明示して図は返さない(見えない食を図にして
誤解させないため。日付をまたぐ食も前後6時間まで含めて計算する)。
max_magnitude=True で最大食のみの単一画像を返す(進行でなく最も欠けた瞬間だけ見たい時)。

Args:
    date: 日付(例 "2035-09-02" / "2035/09/02" / "2035年9月2日")。省略時は次の日食を検索。
    place: 観測地(例 "東京","大阪","new york")。lat/lon 指定時は無視。省略時は東京。
    lat: 観測地の緯度。lon と併用時は place より優先。
    lon: 観測地の経度。
    max_magnitude: True で最大食のみの単一パネルを返す(既定 False=時系列)。

インライン画像を表示できないハーネス(CLI系・Android系の codex / opencode など)向けに、
content の先頭へ「🖼️ [生成した画像を開く(…)](file:///…) | 保存先: `…`」という
アイコン付きリンクを必ず出します(画像は %LOCALAPPDATA%\Temp\space_finder_mcp\out に
保存し、同じパスを structuredContent.image_path にも入れます)。
回答時はこのリンクをそのまま提示してください(画像が描画されない環境では唯一の導線)。
ParametersJSON Schema
NameRequiredDescriptionDefault
latNo
lonNo
dateNo
placeNo
max_magnitudeNo

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations, the description fully carries the burden of behavioral disclosure. It reveals the JPL DE421 + Skyfield calculation basis, the 1400-day search window, the visibility constraint, the behavior when a total eclipse is below the horizon, and the exact file/link output behavior. Nothing seems hidden or contradictory.

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 front-loaded with purpose and examples barrier to understanding, and every section serves an operational need. It is long and includes some implementation rationale, such as why 1400 days are used instead of 800, but this extra detail is still useful for setting expectations.

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 no output schema and no annotations, the description covers input semantics, automatic search behavior, visibility edge cases, image generation modes, file save paths, and how the agent should present the result. An agent has enough information to invoke it correctly and interpret the response.

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?

Schema description coverage is 0%, but the description compensates by explaining every parameter: date formats, place examples, lat/lon precedence over place, defaults, and the effect of max_magnitude. This is far richer than the bare JSON schema.

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 names a specific verb and resource: it returns time-series panel images of solar eclipses, with the Sun being obscured by the Moon. Concrete example queries further clarify scope, and the domain is clearly distinct from the generic image/space tools among siblings.

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 description gives operational guidance: date omission triggers an automatic next-eclipse search, max_magnitude=True selects a single-image mode, and visibility is restricted to periods when the Sun is above the horizon. It does not compare against sibling tools by name, but provides clear context for when and how to use the tool.

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

solar_system_nowA

太陽を中心とした太陽系の惑星・小惑星・探査機・彗星の現在位置図を返す(認証不要)。

例:「太陽系を上から見た図」「今の惑星の位置」「イトカワの今の位置を図で」
「ボイジャー1号の現在位置を図で」「ハヤブサ2は今どこ?」「ハレー彗星は今どこ?」
「紫金山・アトラス彗星の位置」
惑星(8惑星+冥王星)は JPL DE421 暦表、小惑星は JPL SBDB 軌道要素のケプラー伝播、
遠方探査機(ボイジャー/パイオニア等)は JPL Horizons の状態ベクトル、
彗星は周期彗星(ハレー等)を SBDB 軌道要素、非周期C/彗星を Horizons 状態ベクトルで計算。

学生・観賞用途では視認性の高い Pillow 版(既定)を推奨。対数縮尺で内惑星から
百数十AUの遠方天体までを一枚に収める。探査機・遠方彗星を指定すると表示範囲を
自動拡張し、それぞれ色付き菱形マーカー・シアン色の尾を持つ彗星マーカーで強調する。
遠方天体は線形の matplotlib 版では枠外のため、指定時は対数縮尺の Pillow 版を自動選択。

engine で描画方法を選択:
  - "simple"(既定):   Pillow による視認性重視の合成。惑星を色アイコン、小惑星を緑十字、
    探査機を色付き菱形、彗星をシアンの核+尾で強調。距離は対数縮尺。
  - "accurate":       matplotlib による線形距離の正確な俯瞰図(近距離のみ)。
画像は content に base64 インライン表示、座標は structuredContent に JSON。
structuredContent.figure には「この図をどう描いたか」の注記(figure/1)が入る。
⚠️ figure.notes は図の誤読を防ぐための注記なので、要約・言い換えせずそのまま引用すること。

Args:
    when: 時刻 ISO8601(例 "2026-09-09T11:00:00Z")。省略時は現在時刻。
    asteroid: 小惑星(例 "イトカワ"/"itokawa"/"25143", "ベンヌ", "アポフィス")。
    asteroid2: 2つ目の小惑星。
    probe: 遠方探査機(例 "ボイジャー1号"/"voyager1"/"パイオニア10号"/"はやぶさ2"/
        "hayabusa2")。はやぶさ2 は JPL Horizons ID -37。
    probe2: 2つ目の探査機。
    comet: 彗星(例 "ハレー彗星"/"halley"/"1P", "エンケ彗星", "67P",
         "紫金山・アトラス"/"C/2023 A3", "ラブジョイ"/"C/2014 Q2")。
    comet2: 2つ目の彗星。
    engine: "simple"(既定/Pillow) / "accurate"(matplotlib)。
    view: "system"(既定)=太陽系俯瞰図 / "comet_orbit"=彗星の軌道面ビュー。
        comet_orbit は comet の指定が必須で、彗星自身の軌道面を真横から見た図
        (太陽=円錐曲線の焦点)を返す。e>=1 の C/彗星は閉じない双曲線の枝として描く。
        **comet にカンマ区切りで複数(または comet2 を併用、最大4天体)指定すると、
        1彗星=1パネルで並べた1枚の画像**を返す(パネルごとに軌道面と縮尺が異なる。
        その旨は figure.notes に数値から生成して入る)。

インライン画像を表示できないハーネス(CLI系・Android系の codex / opencode など)向けに、
content の先頭へ「🖼️ [生成した画像を開く(…)](file:///…) | 保存先: `…`」という
アイコン付きリンクを必ず出します(画像は %LOCALAPPDATA%\Temp\space_finder_mcp\out に
保存し、同じパスを structuredContent.image_path にも入れます)。
回答時はこのリンクをそのまま提示してください(画像が描画されない環境では唯一の導線)。
ParametersJSON Schema
NameRequiredDescriptionDefault
viewNosystem
whenNo
cometNo
probeNo
comet2No
engineNosimple
probe2No
asteroidNo
asteroid2No

TDQS

A4.7/5.0
Behavior5/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It fully covers what the tool does: returns an image in content (base64), coordinates in structuredContent, includes a figure.notes caution about quoting verbatim, auto-saves images to a temp path, and emits a clickable file link for CLI/Android harnesses. It also discloses the auto-selection of Pillow engine for distant objects. This is thorough and non-contradictory.

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 long but highly structured: a purpose paragraph with examples, an explanation of computation sources, engine details, output format, and a parameter list. Every sentence carries information and there is no filler. The length is justified by the tool's complexity (9 parameters, multiple engines, views, and output behaviors). It could be slightly tightened, but it is appropriately detailed.

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 tool with 9 parameters, no schema descriptions, and no output schema, this description is exceptionally complete. It covers all parameters, engines, views, output format, image path handling, figure.notes instruction, and even warns about harness limitations. Nothing an agent needs to invoke it correctly is missing.

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

Parameters5/5

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

Schema coverage is 0%, so the description must compensate. It does so excellently: every parameter (when, asteroid, probe, comet, engine, view, plus the 2 variants) is explained with format, examples, and aliases. It even explains the comet_orbit view's multi-comet behavior and the hyperbolic branch for e>=1 comets. This is far beyond typical parameter documentation.

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 statement: it returns a current-position map of solar system bodies centered on the Sun, no authentication required. It lists the specific body classes (planets, asteroids, probes, comets) and gives numerous concrete query examples, distinguishing it from sibling tools like sky_map_with_satellites or constellation_now.

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 description provides many usage examples ('例:') that make it obvious when to call this tool, and it explains the two engine options and the two view modes, including when to choose which. It does not explicitly state when NOT to use it or name sibling alternatives, but the scope is clear enough that an agent can route correctly. Missing explicit exclusions against alternatives.

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

space_weatherA

NASA DONKI の宇宙天気(太陽フレア・CME・地磁気嵐・太陽粒子現象)を返す。

天体観測や通信・衛星運用に影響する太陽活動を確認できる。

**NASA 側がレート制限・障害のときは、認証不要の NOAA SWPC(Kp・NOAA スケール・

GOES X線・太陽風・陽子・警報・黒点相対数)に自動で切り替えて返す**(どちらの出典かを

content と structuredContent.source に明記する)。
例:「最近の太陽フレア」「CME(コロナ質量放出)の情報」「地磁気嵐は起きてる?」
content に表示用サマリ、structuredContent に JSON を返す。

Args:
    kind: データ種別
        - "all": 太陽フレア・CME・地磁気嵐・太陽粒子をまとめて表示(既定)
        - "flare": 太陽フレア(FLR)
        - "cme": コロナ質量放出(CME)
        - "gst": 地磁気嵐(GST)
        - "sep": 太陽高エネルギー粒子現象(SEP)
    start_date: 開始日(YYYY-MM-DD)。省略時は既定(最近)。
    end_date: 終了日(YYYY-MM-DD)。省略時は既定。
    limit: 各カテゴリの返す件数(既定 10、最大 20)。
ParametersJSON Schema
NameRequiredDescriptionDefault
kindNoall
limitNo
end_dateNo
start_dateNo

TDQS

A4.6/5.0
Behavior5/5

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

No annotations are provided, so the description carries the full behavioral burden. It fully discloses a key surprise: automatic fallback to NOAA SWPC (no auth required) when NASA has rate limits or outages, and states the source is identified in content and structuredContent.source. It also specifies the output contract: display summary in content and JSON in structuredContent. This is rich, non-obvious behavioral disclosure.

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 verbose but every section earns its place: purpose, use case, fallback behavior, examples, output contract, and parameter docs. It front-loads the core purpose before behavioral details. The parameter documentation is somewhat long to live in the description (would be better in schema descriptions), but given 0% schema coverage it is justified placement.

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 tool with no annotations, no output schema, and no schema descriptions, the description is highly complete: it covers purpose, use case, fallback, output format, and all parameters with enums and constraints. The only minor gap is that the exact JSON field structure of structuredContent is not enumerated, but the source field disclosure covers the most important piece.

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?

Schema description coverage is 0%, so the description must fully compensate. It documents all four parameters: kind with all five enum values and Japanese explanations (all/flare/cme/gst/sep), start_date and end_date with YYYY-MM-DD format and default behavior, and limit with default 10 and max 20. This fully compensates for the schema's lack of 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?

The description states a specific verb and resource: 'NASA DONKI の宇宙天気(太陽フレア・CME・地磁気嵐・太陽粒子現象)を返す' (returns NASA DONKI space weather for solar flares, CME, geomagnetic storms, solar particle events). This clearly distinguishes it from sibling astronomy tools like astronomy_weather, weather_satellite_now, and solar_system_now by naming the exact data source and phenomena covered.

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 description gives clear usage context: '天体観測や通信・衛星運用に影響する太陽活動を確認できる' (check solar activity affecting astronomical observation, communications, and satellite operations). It also provides query examples like '最近の太陽フレア' and '地磁気嵐は起きてる?'. However, it does not explicitly name alternatives or state when NOT to use this tool versus a sibling, leaving the when-not-to-use guidance to inference.

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

stac_collectionsA

AWS Earth Search で利用可能な衛星データコレクション一覧を返す(認証不要)。

例:「AWSの衛星データ」「利用できるLandsatコレクション」
Args:
    (なし)
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the burden itself. It usefully discloses that no authentication is required, which is real behavioral context, and "returns a list" implies a read-only, non-destructive call. However it says nothing about the return shape, result volume, or pagination for a collection-listing endpoint.

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?

Short and front-loaded: the core purpose and source come first, with examples and the auth note immediately after. The trailing "Args: (none)" is redundant given the empty schema and slightly dilutes an otherwise tight definition.

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 zero-parameter, read-only listing tool with no output schema, the description covers what it returns, from which source, and that no auth is needed. About the only missing element is guidance on what the returned collection identifiers are for (e.g. feeding stac_search), which would strengthen routing to the sibling search tool.

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?

The tool takes zero parameters and the schema is empty, so the baseline of 4 applies. The description's "Args: (none)" simply restates what the schema already shows, adding no extra meaning, but there is nothing to document.

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

Purpose4/5

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

States a specific verb and resource (returns a list of satellite data collections) scoped to a named source, AWS Earth Search, which partly separates it from the many sibling *_collections tools. It could go further by explicitly contrasting with uk_stac_collections, copernicus_collections, inpe_collections, and eodashboard_collections, but the named endpoint is enough for an agent to distinguish it.

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?

The examples ("AWS satellite data", "available Landsat collections") imply when an agent would reach for this tool, but there is no explicit when-to-use vs when-to-use-an-alternative guidance and no exclusions. Usage is inferable rather than stated.

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

tiangong_nowA

天宮(Tiangong)中国宇宙ステーションの現在位置を返す。

例:「天宮の現在位置」「中国宇宙ステーションは今どこ?」
CelesTrak の最新 TLE を SGP4 で伝播して現在の緯度・経度・高度・速度を計算。
認証不要。content に表示用サマリ+Googleマップリンク、structuredContent に JSON。

Returns:
    CallToolResult: 表示用サマリ + JSON。
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it discloses the data source (latest CelesTrak TLE), the computation method (SGP4 propagation), that no authentication is required, and the output shape (display summary + Google Maps link in content, JSON in structuredContent). It omits rate limits or TLE staleness/caching behavior, which keeps it short of a 5.

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?

Purpose is front-loaded, followed by examples and then implementation/output details, which is a sensible order. The trailing 'Returns: CallToolResult: 表示用サマリ + JSON' largely restates the earlier 'content に表示用サマリ… structuredContent に JSON', adding mild 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?

For a zero-parameter read tool with no output schema, the description covers trigger context, data source, auth, and output channels adequately. It stops short of enumerating the JSON fields an agent would receive, so it is complete enough but not exhaustive.

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?

The tool takes zero parameters, so per the rubric the baseline is 4. There is nothing parameter-related for the description to compensate for.

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?

States a specific verb (return current position) and resource (Tiangong Chinese space station), and the scope is unambiguous against siblings like iss_now and sat_tle. An agent can immediately tell this computes Tiangong's live position rather than returning raw TLEs or another station's 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?

Provides concrete user-phrasing examples ("Tiangong's current position", "where is the Chinese space station now?") that clearly signal when to invoke it. It stops short of naming alternatives (e.g., iss_now for the ISS, sat_tle for raw orbit data) or when-not-to-use conditions, so it is clear context without explicit routing.

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

uk_stac_collectionsB

英国 EO DataHub の利用可能なコレクション一覧を返す(認証不要)。

例:「英国の衛星データコレクション」
Args:
    limit: 返す件数(既定 20、最大 100)。
ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations, the description carries the full burden, but it does add useful behavioral context: authentication is not required and the limit has a maximum of 100. It still does not explicitly state that the operation is read-only/side-effect free or describe result format/pagination beyond the limit.

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 short and front-loads purpose, auth, and the limit. The 'Args:' block partly duplicates the schema and the example line is of unclear relevance for a list-only tool, but overall it is compact.

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?

For a low-complexity list tool, the description covers purpose, auth, and the one parameter. However, with no annotations, no output schema, and 0% schema coverage, it could do more to distinguish itself from uk_stac_search/stac_collections and clarify what a returned collection entry contains.

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 description coverage is 0%, so the description must carry parameter meaning. It documents the sole parameter's purpose, default (20), and maximum (100), adding the max value that the schema lacks.

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

Purpose4/5

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

States a specific verb (返す) and resource (英国 EO DataHub の利用可能なコレクション一覧), with the provider scope distinguishing it from generic or other national collection tools. It does not explicitly contrast with sibling uk_stac_search or stac_collections, so sibling differentiation is implicit rather than spelled out.

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

Usage Guidelines2/5

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

No when-to-use guidance or alternatives are given. '認証不要' is a behavioral note, not routing guidance; it never says to use this instead of uk_stac_search when browsing UK collections.

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

upcoming_launchesA

今後予定されているロケット打ち上げの一覧を返す。

認証不要。content に表示用サマリ、structuredContent に JSON を返す。

Args:
    limit: 返す件数(既定 5、最大 15)。
ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo

TDQS

A3.9/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 explicitly states no authentication required and describes the return format (content summary, structuredContent JSON), which is valuable behavioral context. However, it doesn't disclose rate limits, error behavior, or data recency.

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?

Very concise: one sentence for purpose, one for auth/return format, and a short args section. Front-loaded with core functionality, no wasted words.

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?

Given one optional parameter and no output schema, the description covers the essentials: what it returns, auth need, and parameter constraints. However, it lacks guidance on usage context relative to siblings and doesn't mention pagination or data freshness, leaving minor gaps.

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 0%, so description must compensate. It explains the 'limit' parameter with its purpose (number of results), default (5), and maximum (15), which fully clarifies the parameter beyond the schema's bare type and default.

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?

States a specific verb (返す/return) and resource (今後予定されているロケット打ち上げ/upcoming rocket launches). Clearly scoped to future launches, distinguishing it from siblings like china_launches, russia_launches which are agency-specific and likely past-oriented.

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

Usage Guidelines2/5

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

No guidance on when to use this vs alternatives. It doesn't mention how it differs from china_launches, russia_launches, or other launch-related siblings, leaving the agent to infer.

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

weather_satellite_nowD
ParametersJSON Schema
NameRequiredDescriptionDefault
bandNovisible
sizeNo
satelliteNohimawari9

TDQS

D1/5.0
Behavior1/5

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

Tool has no description.

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

Conciseness1/5

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

Tool has no description.

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

Completeness1/5

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

Tool has no description.

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

Parameters1/5

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

Tool has no description.

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

Purpose1/5

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

Tool has no description.

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

Usage Guidelines1/5

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

Tool has no description.

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. 2 tool updatesv0.30.1
    • Changedastronomy_weather2 fields changed
      • removedInput schema / properties / include_chart
        Removed value: -{
        -  "default": true,
        -  "title": "Include Chart",
        -  "type": "boolean"
        -}
      • addedInput schema / properties / include_rain
        Added value: +{
        +  "default": true,
        +  "title": "Include Rain",
        +  "type": "boolean"
        +}
    • Addedmoon_phase_map
  2. 3 tool updatesv0.29.1
    • Changedastronomy_weather1 field changed
      • addedInput schema / properties / include_chart
        Added value: +{
        +  "default": true,
        +  "title": "Include Chart",
        +  "type": "boolean"
        +}
    • Changedplanetary_orbiter_track1 field changed
      • addedInput schema / properties / sites
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Sites"
        +}
    • Addedweather_satellite_now
  3. 2 tool updatesv0.27.0
    • Changedalma_search3 fields changed
      • addedInput schema / properties / product_type
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Product Type"
        +}
      • addedInput schema / properties / public_only
        Added value: +{
        +  "default": false,
        +  "title": "Public Only",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / with_products
        Added value: +{
        +  "default": false,
        +  "title": "With Products",
        +  "type": "boolean"
        +}
    • Changedsolar_system_now1 field changed
      • addedInput schema / properties / view
        Added value: +{
        +  "default": "system",
        +  "title": "View",
        +  "type": "string"
        +}
  4. 43 tool updatesv0.25.2
    • Addedalma_search
    • Changedapod1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "properties": {
        -    "result": {
        -      "title": "Result",
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "result"
        -  ],
        -  "title": "_nasa_apodOutput",
        -  "type": "object"
        -}New value: +null
    • Addedastronomy_news
    • Addedastronomy_weather
    • Addedcadc_observations
    • Addedchina_launches
    • Addedcnes_status
    • Addedcnsa_status
    • Addedconstellation_now
    • Addedcopernicus_collections
    • Addedcopernicus_search
    • Addedcsa_dataset_search
    • Addedeodashboard_collections
    • Addedeodashboard_detail
    • Addedeso_seeing
    • Addedinpe_collections
    • Addedinpe_search
    • Addedisro_data
    • Addediss_now
    • Addedjaxa_dataset_search
    • Addedjaxa_datasets
    • Addedmars_rover_status
    • Changedneo_today1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "properties": {
        -    "result": {
        -      "title": "Result",
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "result"
        -  ],
        -  "title": "_nasa_neo_todayOutput",
        -  "type": "object"
        -}New value: +null
    • Addedplanetary_orbiter_track
    • Addedplanetary_rover_location_map
    • Addedpower_climate
    • Addedradio_sources_now
    • Changedreverse_lookup1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "properties": {
        -    "result": {
        -      "title": "Result",
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "result"
        -  ],
        -  "title": "reverse_lookupOutput",
        -  "type": "object"
        -}New value: +null
    • Addedrussia_launches
    • Addedsat_ground_track
    • Addedsat_tle
    • Addedsatellite_status
    • Changedsearch_space_images1 field changed
      • addedInput schema / properties / inline_max
        Added value: +{
        +  "default": 1,
        +  "title": "Inline Max",
        +  "type": "integer"
        +}
    • Addedsky_map_with_satellites
    • Addedsolar_eclipse_series
    • Addedsolar_system_now
    • Addedspace_weather
    • Addedstac_collections
    • Addedstac_search
    • Addedtiangong_now
    • Addeduk_stac_collections
    • Addeduk_stac_search
    • Changedupcoming_launches1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "properties": {
        -    "result": {
        -      "title": "Result",
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "result"
        -  ],
        -  "title": "upcoming_launchesOutput",
        -  "type": "object"
        -}New value: +null
  5. 7 tool updatesv0.1.0
    • First observedapod
    • First observedneo_today
    • First observedreverse_lookup
    • First observedsearch_space_audio
    • First observedsearch_space_images
    • First observedsearch_space_videos
    • First observedupcoming_launches

TDQS

C2.9/5.0

Scored across 47 tools

Disambiguation2/5

While many tools target distinct providers, there are large clusters of near-identical tools: four STAC search tools (stac_search, copernicus_search, inpe_search, uk_stac_search) and many collections/list tools that differ only by provider. Position tools like iss_now, tiangong_now, and sat_ground_track also overlap in purpose, making mis-selection likely.

Naming Consistency3/5

All names use snake_case and are generally readable, but there is no consistent verb_noun or search_* pattern across the set. Names like apod, neo_today, iss_now, and weather_satellite_now follow different conventions than stac_search, copernicus_collections, or eodashboard_detail.

Tool Count2/5

At 47 tools, this server is well past the 'too many' threshold for coherent tool selection. The broad space domain partially justifies the count, but many tools are provider-specific variants of the same operations and should be consolidated.

Completeness4/5

The server covers an impressively wide range of space-related needs: imagery, video, audio, launches, satellite tracking, space weather, astronomical observations, and earth observation datasets. Minor gaps exist, such as the empty weather_satellite_now tool and inconsistent auth handling for downloads, but agents can usually find a working path.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    B
    quality
    D
    maintenance
    Enables access to NASA space data and images through Claude Desktop, providing features like astronomy picture of the day, Mars rover photos, near-Earth object information, NASA image search, and Earth satellite imagery.
    5
    -
  • A
    license
    B
    quality
    D
    maintenance
    Provides standardized access to 20+ NASA data sources including astronomy pictures, Mars rover photos, near-Earth objects, satellite imagery, space weather, and planetary data through a unified interface optimized for AI consumption.
    23
    4 npm
    ISC
  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides access to NASA's public APIs including Astronomy Picture of the Day, Mars Rover Images, and Near Earth Objects data, enabling users to query and retrieve space-related information through natural language.
    5
    MIT