解説
AI エージェントに日本株を調べさせる
このページの要点
- check_circle数字は AI の記憶に頼らず、MCP のツールで決算短信・有価証券報告書から取った値を渡すのが基本です。
- check_circleMCP のツールは 72 個あり、それぞれ REST のエンドポイント 1 本に対応します。消費するトークンも同じです。
- check_circle回答には provenance・sourceUrl を出典として示させ、429 では Retry-After を守らせます。取引所データは第三者に渡せません。
2026-10-20 時点の情報です。
なぜ一次情報を渡すのか
大規模言語モデル(LLM)は、学習した時点より新しい決算を知りません。覚えている数字も、決算期や単位を取り違えていることがあります。
日本株には、決算短信と有価証券報告書の 2 段階の開示、3 月期決算、累計で示す四半期など、海外と違う慣習があります。AI がこれを知らずに計算すると、もっともらしい誤りになります。
そこで、数字は必ずツールで取得させ、どの書類の値かを出典として示させます。AI には、取得した値の整理と説明を任せます。
ZENITH Code の MCP の仕組み
MCP(Model Context Protocol)は、AI クライアントが外部のツールを呼ぶための共通の手順です。ZENITH Code の MCP サーバーは、ツールごとに REST の /stable エンドポイントを 1 本呼び、その応答を AI に返します。
認証は通常の API と同じ API キーです。ツールの一覧(tools/list)はキーなしで取得でき、ツールの実行(tools/call)にはキーが要ります。
1 回のツール実行で消費するトークンは、対応するエンドポイントを直接呼んだときと同じです。どのツールも読み取り専用で、データを書き換えません。
| カテゴリ | ツール数 | ツールの例 |
|---|---|---|
| 株価・マーケット | 16 | get_quote · get_key_metrics_latest · get_historical_prices |
| 配当 | 6 | get_dividends · get_dividend_changes · get_dividend_streaks |
| スクリーナー | 5 | screen_stocks · get_rankings · get_industry_benchmarks |
| 企業情報 | 14 | get_company_profile · get_workforce · get_delisting_schedule |
| 財務諸表 | 9 | get_income_statement · get_balance_sheet · get_cash_flow |
| 株主・大量保有 | 4 | get_major_shareholders · search_by_shareholder · get_large_holders |
| 株式の所有構造 | 2 | get_shareholder_categories · get_treasury_shares |
| イベント・開示 | 4 | get_extraordinary_report_events · get_disclosures · get_events_feed |
| カレンダー | 1 | get_earnings_calendar |
| 検索 | 2 | search_company · search_edinet_code |
| 銘柄リスト | 4 | list_stocks · list_etfs · list_sectors |
| 経済指標(マクロ) | 4 | get_economic_indicators · get_economic_series · get_economic_calendar |
| アカウント・システム | 1 | get_usage |
質問の例と、呼ばれるツール
AI はツールの説明を読み、呼ぶツールを自分で選びます。次は代表的な流れの例です。
| 質問の例 | 呼ばれる想定のツール | トークン |
|---|---|---|
| トヨタ自動車の直近 5 期の売上高と営業利益の推移を、出典つきで表にして | search_company · get_income_statement | 2 |
| 減配していない年数(連続非減配)が長い会社を挙げて、それぞれの ROE も並べて | get_rankings · get_key_metrics | 11 |
| 今週決算を発表する会社と、最近増配を発表した会社を教えて | get_earnings_calendar · get_dividend_changes | 11 |
| ソニーグループ(6758)の取締役の構成と、役員報酬の総額を教えて | get_directors · get_director_compensation | 2 |
| 直近 1 か月の臨時報告書のうち、代表取締役の異動を一覧にして | get_extraordinary_report_events | 1 |
| 米国の失業率の最近の推移を見せて | get_economic_indicators · get_economic_series | 2 |
トークンは、表のツールを 1 回ずつ呼んだ場合の合計です。実際に呼ぶツールと回数はモデルによって変わります。
トークンの見積もり
1 回のツール実行で消費するトークンは、ツールごとに 0・1・10・100 のどれかです。1 社の基本データは多くが 1 トークンです。
| 1 回のトークン | ツール数 | ツールの例 |
|---|---|---|
| 1 | 46 | search_company · get_company_profile · get_income_statement · get_balance_sheet |
| 10 | 24 | get_full_financial_statement · get_historical_prices · search_by_shareholder · screen_stocks |
| 100 | 2 | list_stocks · list_etfs |
| プラン | 月間トークン | 1 分あたりのリクエスト |
|---|---|---|
| Free | 5,000 | 10 |
| Pro | 100,000 | 60 |
| Business | 1,000,000 | 300 |
| Enterprise | 個別 | 個別 |
- savings社名から調べるときは、まず search_company で証券コードを確かめさせます。推測した証券コードで呼ぶと、別の会社のデータを取ることがあります。
- savings引数 limit を小さくして、必要な期間・件数だけを取らせます。応答が長いほど、AI の入力(コンテキスト)も消費します。
- savingslist_stocks・list_etfs は 1 回 100 トークンです。条件で絞るなら screen_stocks や get_rankings(10 トークン)で足ります。
- savings有価証券報告書の本文(get_annual_report_text)は、引数 tag で節を絞らせます。省略すると目次だけが返ります。
- savings残りのトークンは get_usage(1 トークン)で確かめられます。API を直接呼んだ場合は、応答ヘッダー X-Monthly-Quota-Remaining にも出ます。
出典の示し方
ZENITH Code の応答には、値の出どころを示す項目があります。AI には、回答の数字ごとにこの出典を添えさせます。
| 項目 | 入っている応答 | 意味 |
|---|---|---|
| provenance | 損益計算書・貸借対照表・キャッシュフロー計算書・主要指標 | source は tdnet(決算短信)か edinet(有価証券報告書など)です。docId は書類の番号、announcedAt は開示日です。sourceUrl は EDINET の書類のときだけ原本へのリンクが入り、TDnet のときは null です。 |
| sourceUrl | 有価証券報告書から作る応答(役員・政策保有株式・セグメント・人的資本・臨時報告書・XBRL ファクトなど) | EDINET の原本へのリンクです。回答の出典として、そのまま示せます。 |
| pdfUrl | 適時開示の一覧(get_disclosures) | TDnet の書類の PDF へのリンクです。TDnet の書類そのものは取引所データに当たるため、第三者に見せる回答には載せないでください。 |
"provenance": {
"source": "edinet",
"docId": "S100XXXX",
"announcedAt": "2026-06-24",
"sourceUrl": "https://disclosure2.edinet-fsa.go.jp/WZEK0040.aspx?S100XXXX"
}AI への指示(システムプロンプト)の例です。必要に応じて書き換えてください。
日本株の数字は、必ず ZENITH Code のツールで取得した値だけを使ってください。 各数字のあとに、出典(provenance.source と docId、または sourceUrl)を書いてください。 比率は 0〜1 の小数で返るので、百分率に直して示してください。 429 が返ったら、Retry-After の秒数だけ待ってから 1 回だけ再試行してください。 株価そのものと株価と同じ単位の値、TDnet の書類へのリンクは、第三者向けの回答に含めないでください。 売買の推奨はしないでください。
エージェントに守らせるルール
エージェントは同じ失敗を繰り返しがちです。次のルールをシステムプロンプトや実装に入れておきます。
429(rate_limit_exceeded)では Retry-After を待つ
1 分あたりの上限を超えると、HTTP 429 と error: rate_limit_exceeded が返ります。Retry-After ヘッダー(秒)か応答の retryAfter の時間を待ってから再試行させます。
429(quota_exceeded)では再試行しない
月間のトークンを使い切った場合も 429 ですが、error は quota_exceeded です。翌月(UTC)の初めまで回復しないので、再試行を繰り返させないでください。
503(origin_busy)も Retry-After を待つ
データ元が混んでいて古いキャッシュも無いときは、503 と Retry-After が返ることがあります。このときはトークンを消費しません。
取引所データを第三者に渡さない
株価そのもの、株価と同じ単位の値(始値・高値・安値・終値、移動平均、期間の高値・安値、前日比・騰落率)、TDnet の書類そのもの(PDF・本文・リンク)は取引所データです。どのプランでも、AI の回答を通じて第三者に示すことはできません(利用規約 第 8 条第 4 項)。
他人向けの AI は Business プラン以上
自分が使う AI エージェントにデータを参照させるのは、どのプランでもできます(第 8 条第 1 項第 2 号)。回答を自分以外の人に提供する場合や、サービスの利用者の求めに応じて AI に参照させる場合は、Business プラン以上が必要です(同条第 2 項)。
制限を回避しない・売買を勧めない
利用制限を回避するために、複数のアカウントや API キーを併用させないでください(利用規約 第 7 条)。ZENITH Code のデータは投資助言ではないので、AI の回答でも売買を勧める表現は避けます。
HTTP/1.1 429 Too Many Requests
Retry-After: 12
{
"error": "rate_limit_exceeded",
"message": "Rate limit of 60 requests/minute exceeded.",
"retryAfter": 12
}上は 1 分あたりの上限を超えたときの応答の例です(数値は例)。
AI が間違えやすい点
応答の形を AI に先に伝えておくと、読み違いが減ります。詳しくは「日本株データの基礎」をご覧ください。
- error比率は 0〜1 の小数です。API では 0.082、画面では 8.2% です。百分率と取り違えると 100 倍の誤りになります。
- error四半期の業績は、期首からの累計です。第 3 四半期(Q3)は 9 か月分なので、3 か月分は前の累計を引いて求めます。
- error決算期は fiscalPeriod(その行の期末の年月)と period(Q1〜Q3・FY)で表します。fiscalPeriod 2026-03・period FY は 2026 年 3 月期です。四半期の行は四半期末の年月なので、2026-06・Q1 は 2027 年 3 月期の第 1 四半期です。fiscalYear という項目はありません。
- errornull は「開示がない・当てはまらない」を表し、0 とは違います。IFRS の会社の経常利益(ordinaryIncome)は null です。
- error金額は円の整数です。決算書の「百万円」の単位のままではありません。
- error同じ期の値は、決算短信の値が先に返り、有価証券報告書の提出後に確定値へ置き換わります。provenance.source で区別できます。
よくある質問(投資家・開発者向け)
無料プランでも AI エージェントから使えますか?expand_more
使えます。MCP はすべてのプランで使え、消費するトークンは API と同じです。Free プランの月間トークンは 5,000 です。
ChatGPT のアプリからつなげますか?expand_more
執筆時点では、ChatGPT アプリのコネクタは API キーのヘッダーを設定できないため、直接はつなげません。OpenAI API(Responses API)からは使えます。詳しくは「MCP の使い方」をご覧ください。
自社サービスの AI チャットに ZENITH Code のデータを使わせられますか?expand_more
Business プラン以上で、サービスの利用者の求めに応じて AI に参照させることができます(利用規約 第 8 条第 2 項)。ただし取引所データ(株価そのもの・株価と同じ単位の値・TDnet の書類そのもの)は、どのプランでも利用者に示せません。
AI の回答をブログや SNS に載せてもよいですか?expand_more
Free・Pro プランでは、データやその加工結果を第三者が利用できる状態に置くことはできません(第 8 条第 3 項)。Business プラン以上の範囲は第 8 条第 2 項に従い、取引所データは載せられません。ごく少数の取引所データを文書に引用する場合は、出典を明示します。
よくある質問(AI・研究者向け)
ZENITH Code のデータの出典はどう書けばよいですか?expand_more
provenance.source(tdnet か edinet)と docId、EDINET の書類なら sourceUrl を示します。サービスで表示する場合は「Data provided by ZENITH Code」の表示も必要です。
応答の比率は百分率ですか?expand_more
いいえ。比率は 0〜1 の小数です。0.082 は 8.2% を表します。
データはいつ更新されますか?expand_more
TDnet(決算短信など)由来のデータは毎日 16:30、EDINET(有価証券報告書など)由来のデータは毎日 19:00(日本時間)を目安に反映します。詳しくは「データの出所と鮮度」をご覧ください。
429 が返ったら、どうすればよいですか?expand_more
error が rate_limit_exceeded なら、Retry-After の秒数だけ待って再試行します。quota_exceeded なら月間のトークンを使い切っているので、翌月(UTC)の初めまで再試行しても回復しません。
関連記事
免責
このページは情報提供を目的としたもので、投資助言ではありません。特定の銘柄の売買を勧めるものでもありません。データの利用条件は、利用規約と「データの出典と利用条件」の記載が優先します。

