株主優待 MCP (Yutai MCP)
Server Details
Japanese shareholder benefits search, cross-trading cost estimates, and trading date calculations.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 4 tools
calc_dates (date/duration computation) and estimate_cross_fee (cost estimation) are both cross-trade related but clearly separated by output type. get_benefit vs search_benefits follow the standard single-lookup vs filtered-search split, so boundaries are mostly clear with only mild conceptual proximity between the two cross-trade tools.
All four names follow a consistent snake_case verb_noun pattern: calc_dates, estimate_cross_fee, get_benefit, search_benefits. Verb choices (calc/estimate/get/search) are distinct and predictable, with no casing or style mixing.
Four tools is a tight, well-scoped set for a specialized cross-trading domain, and each earns its place (dates, fees, single lookup, search). It is on the lean side, but nothing feels redundant or missing at the count level.
The surface covers the core cross-trade workflow end to end: discover candidates (search_benefits), inspect one stock (get_benefit), compute settlement timing (calc_dates), and estimate costs (estimate_cross_fee). Minor gaps exist around aggregating/exporting results or managing broker plan settings persistently, but agents can work around these via parameters.
Available Tools
4 toolscalc_datesAInspect
権利日を入力すると、クロス取引に必要な各種日付・日数を計算して返す。
【入力 vestingDate】 ・"2026-09-30" のような具体的な日付(その年で固定) ・"9月末" / "09" / "9"(月のみ)→ その月末で、次に到来する回 ・"9月20日" / "09-20" / "9/20" / "0920" → その日で、次に到来する回
【tradeDate】省略時は「今注文したとき」の約定日(JST 15:30より前なら当日、以降なら翌営業日、 土日祝はさらに繰り上げ)。「今から」系の日数(interestDays 等)はこの日を起点にする。
【返す主なフィールド】 ・vestingDate: 権利確定日(基準日) ・lastDayWithRights: 権利付最終日 ・exRightsDate: 権利落ち日 ・interestDays: 今建てた場合の信用金利/貸株料の対象日数(決済が間に合わなければ -1) ・negativeInterestDays: 逆日歩の対象日数(権利付最終日が金曜だと土日を挟んで増える) ・managementFeeMonths: 信用売り建玉の事務管理費がかかる月数 ・crossable: 今から建てて権利落ち日までに決済が間に合うか ・shortSellingLiberation: 一般信用「短期」つなぎ売りの解禁スケジュール。
sbiGmo: SBI・GMOは同一ルール(営業日ベース、「権利落ち日を含めて15営業日前」)。 liberationDate=売建可能日、orderAcceptedFrom=その前営業日(19:00頃から新規売り注文を受付、翌営業日に先着約定)。
rakuten: 実効権利確定日の13暦日前を求め、休場日なら翌営業日に調整して最早売建日を計算。orderAcceptedFrom=その前営業日(19時頃から受付)。実際の取扱・在庫・個別期日は別途確認。
auカブコム・SMBC日興は短期一般信用の取扱いが無いため対象外(詳細は note 参照)。 ・prevYear: 前年の同一権利の基準日(get_benefit の negativeInterests / remainingHistories の prev データと突き合わせるのに使う) ・businessDaysUntilLastDayWithRights / calendarDaysUntilLastDayWithRights: 権利付最終日までの残り
日付は "YYYY-MM-DD" 形式の文字列で返す。
| Name | Required | Description | Default |
|---|---|---|---|
| tradeDate | No | 約定日 (YYYY-MM-DD)。省略時は「今」から自動算出 | |
| vestingDate | Yes | 権利日。例: "9月末" / "9月20日" / "2026-09-30" |
Output Schema
| Name | Required | Description |
|---|---|---|
| input | Yes | 入力された権利日指定(正規化前の生テキスト) |
| prevYear | Yes | 前年の同一権利。get_benefit の negativeInterests/remainingHistories の prev データの基準日と突き合わせるのに使う |
| crossable | Yes | interestDays !== -1。今から建てて権利落ち日までに決済が間に合うか |
| tradeDate | Yes | 起点にした約定日 |
| vestingDate | Yes | 権利確定日(基準日) |
| exRightsDate | Yes | 権利落ち日。クロスの決済(現渡し等)を入れる日 |
| interestDays | Yes | 今建てた場合の信用金利/貸株料の対象日数。決済が間に合わなければ-1 |
| deliveredDate | Yes | tradeDateの現物/信用建て分の受渡日 |
| canWeekendOrder | Yes | 今(tradeDate起点)から土日をまたぐ注文ができるか |
| lastDayWithRights | Yes | 権利付最終日。この日までに現物を約定していれば権利が取れる |
| managementFeeMonths | Yes | 信用売り建玉の事務管理費がかかる月数(今から権利まで) |
| negativeInterestDays | Yes | 逆日歩(品貸料)の対象日数。権利付最終日が金曜だと土日を挟んで増える |
| shortSellingLiberation | Yes | 一般信用「短期」つなぎ売りの解禁スケジュール |
| businessDaysUntilLastDayWithRights | Yes | tradeDateから権利付最終日までの営業日数(tradeDate自身は除く) |
| calendarDaysUntilLastDayWithRights | Yes | tradeDateから権利付最終日までの暦日数 |
TDQS
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 sentinel behavior (interestDays = -1 when settlement cannot make it), that negativeInterestDays grows around weekends, broker-specific liberation rules (SBI/GMO vs Rakuten vs au Kabucom/SMBC Nikko being out of scope), and the YYYY-MM-DD return format. It stops short of auth/permission notes, but for a pure date calculator that is a minor omission.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The definition is long but strongly front-loaded with the one-line purpose, then organized under bracketed headings for inputs, tradeDate default, and returned fields. Every sentence carries information; the length is justified by the input-format ambiguity, though some field explanations could be trimmed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given an output schema exists, the return-value explanations are strictly redundant, yet the description still supplies the domain complexity an agent needs: input normalization rules, the tradeDate default, and broker-conditional liberation schedules. It is essentially complete for correct invocation, only mildly over-explaining outputs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is already 100%, so the baseline is 3, but the description adds real meaning beyond the schema: it enumerates accepted vestingDate formats ("2026-09-30", "9月末", "09", "9", "9月20日", "0920") and explains that month-only inputs resolve to the next upcoming cycle, plus the exact default rule for the omitted tradeDate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence gives a specific verb+resource: takes a vesting date and returns the dates/days needed for a cross trade (クロス取引). Scope is clear and it implicitly separates itself from siblings by naming estimate_cross_fee's domain (fees) and explaining how the prevYear field pairs with get_benefit, though it never explicitly contrasts the siblings' purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives concrete when-to-use conditions: tradeDate defaults to 'now' (before/after 15:30 JST, weekends/holidays rolling forward), and prevYear is meant to be matched against get_benefit's negativeInterests / remainingHistories prev data. It does not state when NOT to reach for this tool versus estimate_cross_fee, so it falls short of the explicit-exclusion bar.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
estimate_cross_feeAInspect
株主優待クロス取引(現物買い+信用売りを同時に建てて優待だけ受け取る手法)の手数料を試算する。
【対象範囲】 ・同一証券会社内で「買い」と「売り」の両方を建てるケースのみを計算する。証券会社をまたいだ 組み合わせ(例: 楽天で買ってカブコムで売る)は計算しない。 ・buyMethod: 'spot'=現物買い(sbi/gmo/rakuten/kabucom) / 'system_margin_then_receipt'=制度信用買い+現引き(smbcのみ) ・sellMethod: 'general_short'=一般信用(短期) / 'general_long'=一般信用(無期限・長期) / 'system'=制度信用 ユーザーへの回答時はこれらの値をそのまま出さず、日本語(現物買い、制度信用買い+現引き、短期一般信用、 無期限一般信用、制度信用)に訳して説明すること。
【sellMethod=systemの行について】 逆日歩(金額が事前に確定しない追加費用)が別途発生しうる。total はあくまで「逆日歩が0だった場合の金額」 であり、確定額ではないことを必ず説明すること。前回の逆日歩率が分かる場合は note に参考値として付くが、 将来の逆日歩を予測するものではない。
【note フィールドについて】 一般信用の売り建てが現在できない・残数が無い証券会社も除外せず参考値として計算し、その旨を note に 記載する。note が無い行は現時点で実際にクロス可能。
【日付フィールドについて】 vestingDate=権利確定日(基準日)、lastDayWithRights=権利付最終日、exRightsDate=権利落ち日。 ユーザーが「いつまでに買えばいいか」を知りたいときは lastDayWithRights を案内すること (vestingDate は権利が確定する日そのものであり、買い付けの締切ではない)。
【assumptions フィールドについて】 実際に使用した証券会社プラン設定(ゼロ革命の有無、楽天のコース、カブコムの大口優遇ランク等)を毎回 そのまま返す。呼び出し側のAIは回答時に必ずこの内容(特にユーザーによって異なりうる設定)を明示し、 実際の契約プランと違う場合は指定し直せることを案内すること。 例:「楽天は"ゼロコース"、カブコムは大口優遇なしを前提に計算しています。異なるプランをご利用でしたら教えてください」
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | 銘柄コード。例: "7476" | |
| date | No | 約定日 (YYYY-MM-DD)。省略時は「今注文したとき」の約定日を自動算出する(JST 15:30より前なら当日、以降なら翌営業日。土日祝ならさらに翌営業日まで繰り上げる) | |
| price | No | 実勢株価を上書きする場合に指定。省略時は取得済みの概算株価を使う | |
| units | No | クロスする株数。省略時は minRequiredUnits(優待に必要な最小株数)を使う | |
| gmoVip | No | GMO VIPプラン。既定false | |
| sbiVip | No | SBI大口優遇(建玉5億円以上)。既定false | |
| kabucomSor | No | カブコムSOR(スマート・オーダー・ルーティング)。既定false | |
| rakutenVip | No | 楽天大口優遇。既定false | |
| rakutenCourse | No | 楽天のコース。既定"zero"(ゼロコース) | |
| kabucomLargeLot | No | カブコム大口優遇ランク。既定"none" | |
| sbiZeroRevolution | No | SBIゼロ革命(電子交付設定)。既定true | |
| rakutenPreferentialRate | No | 楽天優遇金利適用。既定false |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | |
| name | No | |
| price | No | 計算に使った株価(円)。入力のpriceを省略した場合は取得済みの概算株価(現在の正確な株価ではない)を使う |
| message | No | 計算できなかった場合の理由。このときcode以外の他フィールドは付かない |
| results | No | 証券会社×売り方式ごとの手数料内訳。totalの昇順 |
| crossUnit | No | クロスする株数 |
| tradeDate | No | 約定日 (YYYY-MM-DD) |
| totalPrice | No | price × crossUnit |
| assumptions | No | 実際に使用した証券会社プラン設定 |
| vestingDate | No | 権利確定日(基準日) |
| exRightsDate | No | 権利落ち日。クロスの決済(現渡し等)を入れる日 |
| interestDays | No | 信用金利/貸株料の対象日数 |
| lastDayWithRights | No | 権利付最終日。買い付けの締切はこちら(vestingDateではない) |
| managementFeeMonths | No | 事務管理費がかかる月数 |
TDQS
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 thoroughly: it warns that sellMethod=system incurs 逆日歩 risk and that total is only the 逆日歩=0 figure, discloses the note-field caveat for brokers that cannot currently short-sell, and explains that assumptions are echoed back each call. This is exactly the non-obvious behavioral context an agent needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Long, but front-loaded with the core purpose and organized under clear 【...】 headings that map to specific concerns. Some segments are instructions to the answering AI about response phrasing rather than tool-selection content, which slightly dilutes focus, but the size is largely justified for a 12-param tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, yet the description goes further and explains the non-self-evident output fields (dates, note, assumptions) and how they should be interpreted. Nothing an agent needs in order to call this tool and interpret the result is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the 12 input parameters are already documented; the baseline is 3. The description adds meaning for output-side fields (vestingDate, lastDayWithRights, exRightsDate, assumptions) but adds little for the actual input parameters beyond what the schema states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (試算する) and resource (株主優待クロス取引の手数料), and the 【対象範囲】 section explicitly bounds the scope to same-broker spot-buy + margin-sell combinations. The siblings (calc_dates, get_benefit, search_benefits) cover entirely different resources, so the agent can route correctly without ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit exclusion (証券会社をまたいだ組み合わせは計算しない) and clarifies which buyMethod/sellMethod cases are in scope. However, it never names an alternative tool for the cases it declines, so the when-not is stated but the redirect 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.
get_benefitAInspect
銘柄コードで株主優待を1件取得する。sections で返す情報を選ぶ(不要なものは返さない)。
basic (既定): 銘柄の基本情報。優待内容・権利確定日(vestingDates)・ 空クロス日(karaDates)・信用区分(lendingType)・制度信用の規制状態(systemLendingStatus: none/warn=注意喚起/prohibited=売禁)・増担保の最高料率倍率(marginRateMultiplier)・ 長期条件・難易度・株価・必要資金・実質利回り(actualYield)・ 現時点の一般信用残数(normalLendingStatus)・details(候補と長期保有条件)。
negativeInterests: 逆日歩(制度信用売りで発生しうる、金額が事前に確定しない追加費用)の履歴。 prev(前回権利付最終日の1件)/ worst10(過去ワースト10、逆日歩/日 の降順)/ latest(直近10日)。 negativeInterestPerDiem / highestNegativeInterestPerDiem は「円/株」の文字列で lendingDays 日分。 1日あたりは negativeInterestPerDiem / lendingDays。balancePrice はその日の建値。 逆日歩は過去実績であり将来を保証・予測するものではない点をユーザーに必ず伝えること。
remainingHistories: 一般信用売りの在庫ステータスの推移。prev(前回権利前3ヶ月)/ latest(直近1ヶ月)。
negativeInterests / remainingHistories は銘柄ごとに個別管理された詳細データが必要で、無い銘柄では notes に理由が入る。 basic のみ(既定)なら詳細データは取得しないため軽量。
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | 銘柄コード。例: "3397" | |
| sections | No | 返す情報の種類(配列)。省略時は ["basic"]。逆日歩履歴が欲しいときは ["basic","negativeInterests"]、在庫推移も含めるなら ["basic","negativeInterests","remainingHistories"] |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | Yes | 銘柄コード |
| name | No | |
| unit | No | 権利確定に必要な通常の株数(1単元) |
| notes | No | 要求されたsectionの一部が取得できなかった場合の理由 |
| price | No | 利回りや手数料の計算で使用している概算株価。現在の正確な株価ではない。取得できない銘柄はundefined |
| anyDay | No | 基準日以外の「任意の日」にも保有状況を抜き打ち確認する旨が長期条件に明記されているか(要注意銘柄) |
| rarity | No | 一般信用クロスの取得難易度(前回権利時の在庫推移から算出)。S(最難)>A>B>C>D>E(最易) |
| update | No | 優待内容(details等)が最後に変更された日(YYYY-MM-DD)。新設や変更(株式分割による区分変更・優待内容の変更・長期優遇の廃止等)があった際に更新される。何が変わったかは updateNote を参照 |
| details | No | 優待内容の詳細条件一覧 |
| message | No | 銘柄が見つからない場合のメッセージ。このときcode以外の他フィールドは付かない |
| siteUrl | No | |
| summary | No | |
| longType | No | 長期条件。通常は none/longAddition/longOnly のいずれか |
| maxValue | No | 優待評価額(円)の最大値。優待の申込単位が複数ある場合、その中の最大の評価額 |
| minValue | No | 優待評価額(円)。優待の申込単位が複数ある場合、その中の最小の評価額 |
| karaDates | No | 空クロスが必要な月/月日パターン(vestingDatesとは別物) |
| updateNote | No | update日時点で何が変わったか(または新設か)を記した短い注記。例: "新設" / "株式分割による区分変更。ポイントアップ。長期優遇を廃止" |
| actualYield | No | 実利回り(%)。優待の申込単位ごとに(評価額 ÷ (株価×その単位の株数)) × 100 を計算し、達成可能な最良の値を採用する(必要な株数がminRequiredUnitsより多い単位が選ばれることがある)。長期保有条件付きの上位ランク・追加分(details[].longType='required'/'additional')はクロス(初回取得)では届かないため対象外。クロスの手数料・貸株料・逆日歩は一切含まない額面利回り |
| description | No | |
| lendingType | No | 制度信用区分。both=制度信用売り可 / buying_only=買いのみ可 / none=不可 |
| benefitTypes | No | |
| nextKaraDate | No | 次回の具体的な空クロス日(ISO文字列) |
| vestingDates | No | 権利確定の月または月日パターン(年に依存しない繰り返しパターン) |
| requiredFunds | No | 最小株数(minRequiredUnits)で優待を得るために必要な資金(円) = price × minRequiredUnits |
| nextVestingDate | No | 次回の具体的な権利確定日(ISO文字列) |
| karaDateConcrete | No | |
| minRequiredUnits | No | この優待を得るために必要な最小株数。申込単位が複数ある場合はその中の最小株数 |
| negativeInterests | No | sections に "negativeInterests" を指定し、この銘柄の逆日歩履歴データが存在するときだけ付く |
| remainingHistories | No | sections に "remainingHistories" を指定し、この銘柄の一般信用在庫推移データが存在するときだけ付く |
| normalLendingStatus | No | 証券会社別の一般信用在庫の現在ステータス |
| prevLendingInterest | No | 前回の逆日歩率。直近1回(前回の権利付き最終日)の実績のみで、複数回の平均ではない。逆日歩額を1日あたり・株価に対する比率に換算した値(0.01=1日あたり1%)で、制度信用クロスのコスト目安に使う。過去複数回分の履歴は sections:["negativeInterests"] を参照 |
| systemLendingStatus | No | 制度信用の規制状態。none=規制なし / warn=注意喚起 / prohibited=売禁。lendingTypeとは別軸で日々変動する |
| vestingDateConcrete | No | 次回権利確定日(ISO文字列。日付フィルタ用の内部値、nextVestingDateとほぼ同じ) |
| marginRateMultiplier | No | 増担保金徴収措置による最高料率倍率(通常の委託保証金率に対する倍率。例: 10=10倍)。systemLendingStatusとは別の措置で、売禁・注意喚起と同時に付くことも単独で付くこともある。措置無しはundefined |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does so well: it discloses that negativeInterests/remainingHistories need individually-managed per-stock data, that missing data surfaces a reason in notes, that basic-only avoids fetching heavy data, and it mandates a user-facing disclaimer that 逆日歩 is past data and not predictive. It omits auth/rate-limit/error behavior, so not 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the one-line purpose before a well-structured bulleted breakdown of sections. The section bullets are dense but each earns its place given the market-specific terminology (vestingDates, karaDates, systemLendingStatus values); nothing is padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 2-param tool with an output schema, the description covers everything an agent needs: default behavior, all section semantics, data-availability caveats and the notes fallback, performance characteristics, and a required disclaimer. No material gap remains.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already documents both code and sections (including the default and example combinations), so baseline 3 applies. The description's deep per-section content breakdown largely duplicates return-value detail, which an output schema already exists to convey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource+scope: "銘柄コードで株主優待を1件取得する" — a single-record fetch by stock code. It is clearly distinct in intent from the search-oriented sibling search_benefits, though it never names a sibling explicitly to force that contrast.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear per-section guidance on what each value returns and when to request it (e.g. "逆日歩履歴が欲しいときは [\"basic\",\"negativeInterests\"]"), plus the default (basic) and the lightweight fallback. No explicit when-not or sibling routing (e.g. vs search_benefits), so it stops short of 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_benefitsAInspect
株主優待を検索する。複数条件を組み合わせて絞り込める。
【重要: vestingDates と karaDates の違い】 vestingDates(権利確定日): 現物保有で優待を得るための権利確定月日。「○月に権利確定する銘柄」はこちら。 karaDates(空クロス日): 権利確定日だけでなく別の日付にも株を一定数保有する必要がある銘柄の、その追加保有日。 端株保有だけでは条件を満たせず、その日付にクロス取引(空クロス)で株数を確保する必要がある。 「○月に空クロスが必要な銘柄」→ karaDate="MM" または karaDateFrom/karaDateTo で検索する。 vestingDate で検索しても空クロス対象の銘柄は正しく絞り込めない。
【信用取引区分 lendingType】 both=制度信用売り可。制度信用でクロスができる buying_only=制度信用買いのみ可、売りが使えないため制度信用ではクロスができない none=信用取引不可
【制度信用の規制 systemLendingStatus】各結果に付く。none=規制なし / warn=注意喚起(増担保・申込停止等) / prohibited=売禁(制度信用の新規売り停止)。lendingType(構造的な区分)とは別で、日々変動する。 ・売禁の銘柄だけ / 除外したい → sellProhibited=true / false ・注意喚起の銘柄だけ / 除外したい → sellCaution=true / false ・売禁または注意喚起(要注意銘柄)だけ / 除外したい → sellRestricted=true / false データ未取得の銘柄は「規制なし」として扱う。
【増担保 marginRateMultiplier】各結果に付く。増担保金徴収措置による最高料率倍率(例: 10=10倍)。 systemLendingStatusとは別の措置で、売禁・注意喚起と同時に付くことも単独で付くこともある。措置無しはundefined。 ・倍率で絞り込みたい → minMarginRateMultiplier / maxMarginRateMultiplier(措置無しの銘柄は対象外になる)
【長期条件】longType: none=なし / longAddition=長期優遇 / longOnly=長期必須 【難易度】rarity: 前回権利時の一般信用在庫の推移(証券会社別)から算出した「一般信用クロスでの 確保しやすさ」。canNormalSelling_* / minRemain_* とは別の、過去実績ベースの総合指標。 S(最難。在庫がほぼ出回らない)>A>B>C>D>E(最易。常時潤沢) ※minRarity='A' → AかSの銘柄のみ 【一般信用売り】canNormalSelling_*: enableSelling=売り可(空売含) / enableLongSelling=長期売りのみ可 / notEnableSelling=不可 【一般信用残】minRemain_sbi/gmo: few=△以上 / remaining=◎のみ。minRemain_rakuten/kabucom/smbc: 数量指定 【利回り】actualYield(%): 優待の申込単位ごとに (評価額 ÷ (株価×その単位の株数)) × 100 を計算し、 達成可能な最良の値を採用する(必要株数がminRequiredUnitsと異なる場合がある)。 長期保有条件(details[].longType='required'/'additional')付きの上位ランク・追加分はクロス (初回取得)では届かないため対象外(longTypeが無い基本額のみで計算)。 クロスの手数料・貸株料・逆日歩は一切含まない額面利回り。 ※minValue/maxValue(評価額の最小値/最大値)・minRequiredUnits(必要株数の最小値)は、それぞれ独立の別統計であり 同じ申込単位の値とは限らない(actualYieldの算出には使わない)。 【手取り利回り】netYield(%): (優待評価額 - 必要クロスコスト)/必要資金×100。必要クロスコストに逆日歩は 含まない(一般信用クロスのみが対象で、逆日歩が発生する制度信用は含まないため)。 ・各結果に crossCost(必要クロスコスト)/crossCostBroker/crossCostSellMethod/netValue/netYield が付く。 ・比較対象は「今この銘柄で実際にできる一般信用クロス」に限る: - その証券会社で一般信用売りの取り扱いがあり(enableShort/enableUnlimited)、かつ残数がある - 短期(general_short)は SBI/GMO/楽天のみ。約定日が売建可能日以降であること - 制度信用クロスは常に対象外(逆日歩リスクがあるため netYield には含めない) ・上記を満たす手段が1つも無い銘柄、株価・優待評価額・権利確定日が無い銘柄、 今からでは決済が間に合わない銘柄には netYield が付かない(= 今すぐ得できる優待の指標)。 ・「手数料を引いても得な優待」は minNetYield / sortBy:netYield で絞る。 ・返す数件には常に付くが、sortBy:netYield / minNetYield / maxNetYield を指定したときだけ 全候補に対して計算する(それ以外は最終ページの数件のみ計算)。 ・使ったプラン設定(ゼロ革命/コース/大口優遇/約定日)はヘッダー行に出る。ユーザーの実際の契約と 違う場合は sbiZeroRevolution / rakutenCourse / kabucomLargeLot / date 等で指定し直せることを案内すること。 【逆日歩】prevLendingInterest: 直近1回(前回の権利付き最終日)の逆日歩実績のみ(平均ではない)を、 1日あたり・株価に対する比率に換算した値(0.01=1日あたり1%)。制度信用クロスのコスト目安に使う。 過去複数回の履歴(ワースト10・直近10日)や一般信用在庫の推移は get_benefit に sections:["negativeInterests"] / ["remainingHistories"] を指定して取得する。 【並べ替え】sortBy / order で並べ替え、件数は limit で指定する(省略時20件。sortByとは独立)。 「手取り利回り順トップ10」→ sortBy:netYield と limit:10 を両方指定する(sortByだけでは10件に絞らない)。 他に「必要資金の少ない順」→ requiredFunds、「前回逆日歩が高い順」→ prevLendingInterest(一般信用推奨候補)。 sortBy 省略時は並べ替えなし。
【出力フィールドの読み方】 unit/minRequiredUnits: 権利確定日に必要な通常の株数 details[]: 優待の詳細条件一覧。各要素に以下が含まれる: candidates[].unit: その条件での必要株数 longType: 'additional'=長期優遇 / 'required'=長期必須 longCondition: 長期保有条件の概要テキスト(例: "継続保有期間1年以上") longConditionDetail: 長期保有条件の詳細テキスト 「空クロスで必要な株数を教えて」→ details[].longConditionDetail のテキストから株数を読み取る 「長期条件を教えて」→ details[].longCondition と details[].longConditionDetail を参照する 「空クロスの有無」→ karaDates の有無を確認する(details の longType とは別物)
【details[].candidates の金額と vestingDates(複数権利月)の対応】 vestingDates が複数ある銘柄(例: ["03","09"]=年2回)で、candidates[].detail に月の但し書き (「3月のみ」「(9月)」等)が無い場合、その金額(value)は権利月ごとに同額が適用される (例: vestingDates=["03","09"], detail="500円分" → 3月に500円分・9月にも500円分もらえる。 年間合計は1000円分であり、「9月分かどうか不明」ではない)。 一方、detail に特定の月が明記されている場合(例:「(3月のみ)クオカード3,000円相当 (9月)クオカード2,000円分」)は、 明記された月にのみその内容が適用され、他の月は別の候補行(candidates の別要素)を参照する。 「○月にもらえる優待は?」と聞かれたら、月の但し書きが無い限り vestingDates に含まれる 全ての月で同じ内容がもらえると回答すること(「不明」「要確認」と答えない)。
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | netYield計算の約定日 (YYYY-MM-DD)。省略時は「今」から自動算出(JST 15:30より前なら当日、以降なら翌営業日) | |
| limit | No | 最大件数 (デフォルト20) | |
| order | No | 並び順。省略時のデフォルトは sortBy 依存(nextVestingDate/requiredFunds は asc、それ以外は desc) | |
| anyDay | No | 長期条件の判定で、決まった基準日以外にも「任意の日」に保有状況を抜き打ちで確認すると明記されている銘柄かどうか。trueにするとそれに該当する銘柄のみ返す(基準日だけクロスで確保しても長期条件を満たせない可能性がある、要注意銘柄) | |
| gmoVip | No | GMO VIPプラン。既定false | |
| sbiVip | No | SBI大口優遇(建玉5億円以上)。既定false | |
| sortBy | No | 並べ替えキー。actualYield=実質利回り(手数料考慮なし) / netYield=手取り利回り(必要クロスコスト〈逆日歩除く〉を引いた後) / minValue=優待評価額 / requiredFunds=必要資金 / prevLendingInterest=前回の逆日歩率 / nextVestingDate=次回権利確定日 / update=優待内容が最後に変更された日。省略時は並べ替えなし。値を持たない銘柄は order によらず末尾 | |
| keyword | No | 部分一致検索。対象: 銘柄コード / 銘柄名 / サマリー / 詳細説明(description) / 更新メモ(updateNote) / 優待内容の各候補テキスト(details[].candidates[].detail)。「コストコ」「株主優待券」など優待の中身でも検索できる。例: "3397", "すかいらーく", "コストコ" | |
| karaDate | No | 空クロスが必要な月または月日で絞り込む。「○月に空クロスが必要な銘柄」を探す場合はここを使う。例: "05"=5月, "05-20"=5月20日。vestingDate(権利確定日)とは別物なので混同しないこと。 | |
| longType | No | 長期保有条件の完全一致。none=なし, longAddition=長期優遇, longOnly=長期必須 | |
| maxValue | No | 絞り込みたい優待評価額の上限 (円)。優待自身の評価額の範囲(出力のminValue〜maxValue)がminValue引数〜この上限の範囲に少しでも重なる銘柄を返す(単一値の一致ではない)。例: 10000 = 10000円以下を含む銘柄 | |
| minValue | No | 絞り込みたい優待評価額の下限 (円)。優待自身の評価額の範囲(出力のminValue〜maxValue)がこの下限〜maxValue引数の範囲に少しでも重なる銘柄を返す(単一値の一致ではない)。例: 1000 = 1000円以上を含む銘柄 | |
| updateTo | No | 優待内容が変更された日(update)の上限 (YYYY-MM-DD)。例: "2026-05-31" → 5月末までに優待内容が変更された銘柄 | |
| maxRarity | No | 一般信用クロスの取得難易度(前回権利時の在庫推移から算出)の上限。例: "C" → C,D,Eの取りやすい銘柄のみ | |
| minRarity | No | 一般信用クロスの取得難易度(前回権利時の在庫推移から算出)の下限。S>A>B>C>D>E。例: "A" → AまたはSの難しい銘柄のみ | |
| kabucomSor | No | カブコムSOR(スマート・オーダー・ルーティング)。既定false | |
| karaDateTo | No | 次回空クロス日の上限 (YYYY-MM-DD)。例: "2026-05-31" → 5月末までに空クロスが必要な銘柄 | |
| rakutenVip | No | 楽天大口優遇。既定false | |
| updateFrom | No | 優待内容が変更された日(update)の下限 (YYYY-MM-DD)。例: "2026-05-01" → 5月1日以降に優待内容が変更された銘柄 | |
| lendingType | No | 信用取引区分。both=制度クロス可, buying_only=空クロス必要, none=クロス不可 | |
| maxNetYield | No | 手取り利回りの上限 (%) | |
| minNetYield | No | 手取り利回りの下限 (%)。例: 0.5 = 手数料を引いても0.5%以上 | |
| requireKara | No | true=空クロスが必要な日付(karaDates)がある銘柄のみ / false=karaDatesがない銘柄のみ | |
| sellCaution | No | 制度信用の注意喚起(増担保・申込停止等)。true=注意喚起中の銘柄のみ / false=注意喚起でない銘柄のみ | |
| vestingDate | No | 権利確定月または月日で単一絞り込み。例: "03"=3月, "03-20"=3月20日 (vestingDates配列に対してマッチ) | |
| benefitTypes | No | 優待種別(OR検索)。例: ["QUO","MealTicket"]。指定した種別のいずれかを持つ銘柄を返す。種別一覧: QUO, RiceVoucher, CashVoucher, JEFVoucher, MealTicket, FacilityTicket, ShoppingTicket, HotelTicket, TransportTicket, OtherTicket, CatalogGift, PYC, Electronics, Fashion, OtherItems, Fruit, Meat, Fish, Drink, Liquor, Rice, Sweets, OtherMeal | |
| excludeCodes | No | 除外する銘柄コード配列 | |
| karaDateFrom | No | 次回空クロス日の下限 (YYYY-MM-DD)。例: "2026-05-01" → 5月以降に空クロスが必要な銘柄 | |
| minRemain_gmo | No | GMO 一般信用残数の下限。few=△以上, remaining=◎のみ | |
| minRemain_sbi | No | SBI 一般信用残数の下限。few=△以上(△または◎), remaining=◎のみ。canNormalSelling_sbi=enableSelling と併用推奨 | |
| rakutenCourse | No | 楽天のコース。既定"zero"(ゼロコース) | |
| vestingDateTo | No | 次回権利確定日の上限 (YYYY-MM-DD)。nextVestingDate <= この値の銘柄を返す | |
| maxActualYield | No | 実利回り上限 (%)。優待の申込単位のうち達成可能な最良の額面利回りで、クロスの手数料・貸株料・逆日歩は含まない。手数料込みで絞るには maxNetYield を使う。株価データが無い銘柄(price未取得)はこの条件では判定できないため除外される。例: 5.0 = 5%以下 | |
| minActualYield | No | 実利回り下限 (%)。優待の申込単位のうち達成可能な最良の額面利回りで、クロスの手数料・貸株料・逆日歩は含まない。手数料込みで絞るには minNetYield を使う。株価データが無い銘柄(price未取得)はこの条件では判定できないため除外される。例: 1.0 = 1%以上 | |
| minRemain_smbc | No | SMBC日興 一般信用残数の下限(株数) | |
| sellProhibited | No | 制度信用の売禁(新規売り停止)。true=売禁の銘柄のみ / false=売禁でない銘柄のみ。データ未取得は「規制なし」扱い | |
| sellRestricted | No | 売禁または注意喚起(制度信用の要注意銘柄)。true=いずれかに該当する銘柄のみ / false=どちらでもない銘柄のみ | |
| kabucomLargeLot | No | カブコム大口優遇ランク。既定"none" | |
| vestingDateFrom | No | 次回権利確定日の下限 (YYYY-MM-DD)。nextVestingDate >= この値の銘柄を返す | |
| hasLongCondition | No | trueにすると長期条件あり銘柄 (longAddition または longOnly) のみ返す | |
| maxRequiredFunds | No | 必要資金の上限 (円)。株価×minRequiredUnits で計算。株価データが無い銘柄(price未取得)はこの条件では判定できないため除外される | |
| minRequiredFunds | No | 必要資金の下限 (円)。株価×minRequiredUnits で計算。株価データが無い銘柄(price未取得)はこの条件では判定できないため除外される | |
| minRemain_kabucom | No | カブドットコム 一般信用残数の下限(株数) | |
| minRemain_rakuten | No | 楽天 一般信用残数の下限(株数)。例: 1000 = 1000株以上 | |
| sbiZeroRevolution | No | SBIゼロ革命(電子交付設定)。既定true | |
| minRemain_any_count | No | 楽天・カブコム・SMBCのいずれかで指定した株数以上の一般信用残数がある銘柄 (OR検索)。例: 1 → どこかに在庫あり, 2000 → どこかに2000株以上 | |
| canNormalSelling_any | No | いずれかの証券会社で条件を満たす銘柄を返す (OR検索)。「どこかで一般信用売りができる銘柄」を探すときに使う。個別の canNormalSelling_* と併用すると AND になる。enableSelling=売り可, enableLongSelling=長期売りのみ | |
| canNormalSelling_gmo | No | GMO 一般信用売り可否 | |
| canNormalSelling_sbi | No | SBI 一般信用売り可否。enableSelling=売り可, enableLongSelling=長期売りのみ, notEnableSelling=不可 | |
| canNormalSelling_smbc | No | SMBC日興 一般信用売り可否 | |
| maxPrevLendingInterest | No | 前回逆日歩率(1日あたり・株価に対する比率)の上限。例: 0.01 = 1日あたり1%以下 | |
| minPrevLendingInterest | No | 前回逆日歩率(1日あたり・株価に対する比率)の下限。例: 0.005 = 1日あたり0.5%以上 | |
| maxMarginRateMultiplier | No | 増担保金徴収措置による最高料率倍率(marginRateMultiplier)の上限。措置が無い銘柄は対象外になる。例: 10 = 10倍以下 | |
| minMarginRateMultiplier | No | 増担保金徴収措置による最高料率倍率(marginRateMultiplier)の下限。措置が無い銘柄は対象外になる。例: 5 = 5倍以上 | |
| rakutenPreferentialRate | No | 楽天優遇金利適用。既定false | |
| canNormalSelling_kabucom | No | カブドットコム 一般信用売り可否 | |
| canNormalSelling_rakuten | No | 楽天 一般信用売り可否 |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | itemsの各要素はrarity等のフィルタで使うのと同じ意味のフィールドを持つ |
| total | Yes | フィルタ後(ページングする前)の全該当件数 |
| assumptions | No | netYield計算に使った証券会社プラン・約定日の前提 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden and does so well. It discloses non-obvious behavior: netYield is computed only for the last few rows unless sortBy:netYield/minNetYield is set, unretrieved regulation data is treated as 'no restriction', and netYield is absent for stocks with no viable general-credit cross. These are exactly the operational caveats an agent needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The size is large but largely justified by a 57-parameter domain, and it is organized with labeled 【…】 sections and front-loads the purpose before the detail blocks. Some passages (e.g., netYield cost rules) repeat adjacent constraints, so it is not maximally tight, but every block maps to a real decision.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given an output schema exists, return-format explanation is optional, yet the description still explains details[]/candidates/month-application rules that materially affect answers. Combined with coverage of lendingType, systemLendingStatus, marginRateMultiplier, yield definitions and sort semantics, nothing an agent needs 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds real meaning beyond the schema: the vestingDates vs karaDates distinction and the warning not to confuse them, how rarity is derived, and that actualYield may use a different unit than minRequiredUnits/minValue. It clarifies cross-parameter semantics rather than merely restating them.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening line states a specific verb and resource (search shareholder benefits) with combinable filters. It also routes history/inventory lookups to the sibling get_benefit, giving partial sibling differentiation. The core sentence itself remains generic, so it doesn't fully distinguish from calc_dates/estimate_cross_fee without reading further.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Extensive when-to-use guidance is embedded per parameter (e.g., '○月に空クロスが必要な銘柄' → karaDate; '手取り利回り順トップ10' → sortBy:netYield + limit:10). It even gives a when-NOT-to-use warning ('vestingDate で検索しても空クロス対象の銘柄は正しく絞り込めない') and points to get_benefit for histories. It lacks explicit sibling-level exclusion criteria, but condition-to-parameter routing is strong.
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.
4 tool updates
- First observed
calc_dates - First observed
estimate_cross_fee - First observed
get_benefit - First observed
search_benefits
Related MCP Connectors
Japan business days & holidays (official Cabinet Office data). Free tool + x402 USDC paid tools.
Verified Japanese equity studies: 50 anomalies, 26 indicators, 12 candlesticks, events, ETF decay.
Search Japanese subsidies and public company data using J-Grants, gBizINFO, and EDINET.
Japanese holidays, business days, eras, postal codes, addresses and corporate numbers.
Related MCP Servers
- AlicenseAqualityBmaintenanceProvides accurate Japanese business day utilities including holiday checks, settlement day calculations, and fiscal period determination, all with embedded holiday data from 2020-2030.759 npmMIT
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to retrieve Japanese stock quotes, price history, PTS quotes, and symbol lookups from Yahoo! Finance Japan, along with current prices, trading volumes, and valuation metrics across domestic equities, ETFs, REITs, indices, and US stocks.108 npmMIT
- AlicenseNot gradedqualityDmaintenanceEnables access to Japanese stock market data via the free J-Quants API, providing tools for company search, daily quotes, and financial statements.1MIT
- AlicenseNot gradedqualityCmaintenanceProvides programmatic access to Japan's EDINET system to search for listed companies and retrieve annual or quarterly financial reports. It parses XBRL filings into structured data, enabling AI assistants to analyze balance sheets, income statements, and cash flows.18Apache 2.0
Glama MCP Gateway
Add one secure layer between your agents and this server.