jquants-mcp
The jquants-mcp server provides MCP tools to retrieve and analyze Japanese stock market data via the J-Quants API v2, with robust caching and multi-user authentication support.
Stock & Price Data
Daily/minute OHLCV bars, morning session prices (Premium), adjusted prices, and bulk CSV downloads
Index data: TOPIX, Nikkei 225, and other indices
Derivatives: futures and options (Nikkei 225, TOPIX) — Premium/Standard+
Financials & Dividends
Quarterly summaries (EPS, BPS, revenue, profit, dividends, forecasts)
Detailed BS/PL/CF statements (Premium) and dividend history
Trading calendar (trading days and market holidays)
Market Overview & Valuation
Advance/decline counts and 25-day ADR ratio (騰落レシオ)
Top movers (price gain/loss), top volume/turnover rankings
Sector performance (TSE 33/17 sectors), sector valuation (median PER/PBR/ROE)
High-dividend yield and cheapest-valuation (PER/PBR) rankings
Margin trading balances, short-selling ratios, institutional short positions, investor-type trading flows
Composite daily market briefing (one-call summary)
Offline Screener (cache-only)
Price limit detection (ストップ高/安), 52-week and YTD highs/lows
Volume surges (vs. 20-day baseline), VWAP vs. close comparison
IBD-style distribution days and follow-through day signals
Consecutive dividend increase screening (10+ years, 連続増配)
Single-Stock Analysis
One-page briefing: latest price, FY financials, PER/PBR/ROE, dividend yield, margin ratio
Technical indicators: SMA (5/25/75), Bollinger Bands (bb20), RSI (rsi14)
Charting (JSON output)
Candlestick data with SMA/Bollinger overlays for React/Plotly rendering
Multi-stock comparison charts (return % or raw price, up to 10 stocks) for Recharts LineChart
Search & Lookup
Company name search (Japanese/English), equities master metadata
Earnings calendar, earnings-this-week grouping, and recent earnings results
Server Utilities
Health check, cache status/clear (SQLite), API key registration/deletion
Multi-user mode: OAuth 2.1 (GitHub/Google), per-user encrypted API key storage, independent rate limiting
Supports stdio and Streamable HTTP transports with TLS and bearer token authentication
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@jquants-mcpWhat are the sector performance rankings today?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
jquants-mcp
English | 日本語
An MCP (Model Context Protocol) server that retrieves Japanese stock market data via J-Quants API v2.
User-facing documentation site: https://shigechika.github.io/jquants-mcp/ (also available in 日本語) — start there if you want a gentler 5-minute introduction. This README is the technical reference (config schema, all 55 tools with parameter tables, deployment).
Release history and changelog: GitHub Releases.
Deployment shapes and how to pick between them: see docs/deploy/.
Demo
24-second loop showing real output from the Claude iPhone app calling jquants-mcp tools:
Sector performance ranking (業種別騰落率) —
get_sector_performanceTop turnover by trading value (売買代金ランキング) —
get_top_turnover_valueCandlestick chart with SMA —
get_candlestick_dataQuarterly financial summary (決算ダイジェスト) —
get_fins_summary5-stock return comparison —
get_comparison_chart_data
Individual frames are in docs/screenshots/.
Related MCP server: AlphaVantage MCP Server
Features
55 MCP tools — 22 J-Quants API v2 endpoints, 11 market overview + valuation, 10 offline screener, 1 technical indicators, 1 single-stock summary, 3 cache-only equity search + earnings (schedule + results), 2 chart tools (JSON, no optional dependencies), and 5 server utilities
Two-tier SQLite cache — row-level cache for time-series data, response-level cache with TTL for others
Stock split detection — automatic cache invalidation when AdjFactor changes
Rate limiting — plan-aware sliding window (Free: 5/min, Light: 60, Standard: 120, Premium: 500)
Retry with backoff — automatic retry for 429/5xx errors
Pagination — transparent multi-page fetching
Plan-aware — all tools registered regardless of plan; graceful error messages on restriction
Requirements
Python 3.10+
J-Quants API key (Free plan or above)
Installation
# Using uv (recommended)
uv pip install jquants-mcp
# Using pip
pip install jquants-mcpFrom source
git clone https://github.com/shigechika/jquants-mcp.git
cd jquants-mcp
uv sync --devConfiguration
Settings are loaded with the following priority (later wins):
~/.jquants-api/jquants-api.toml— API key only (J-Quants official config)~/.config/jquants-mcp/config.ini(user global)./config.ini(current directory)Environment variables (from MCP client or shell)
API Key (zero-config)
If you already use jquants-api-client, your API key is automatically read from ~/.jquants-api/jquants-api.toml. No extra configuration needed.
API Key via browser login
jquants-mcp loginOpens a browser to J-Quants (AWS Cognito, PKCE flow), and on success writes the API key to ~/.config/jquants-mcp/config.ini (mode 0600). Same auth backend as the official jquants-cli. Use jquants-mcp logout to clear the saved key.
config.ini
MCP-specific settings (cache, client behavior):
[jquants]
# cache_dir = ~/.cache/jquants-mcp
# base_url = https://api.jquants.com/v2
[client]
# max_retries = 5
# retry_base_delay = 1.0
# max_pages = 10
[server]
# encryption_key = <random-secret> # enables per-user API key storage (multi-user mode)
# allowed_emails = alice@example.com,bob@example.comEnvironment Variables
Variable | Required | Default | Description |
| No* | — | J-Quants API key |
| No |
| Path to the J-Quants official config file. Override to avoid macOS 26+ launchd sandbox restrictions (see macOS launchd note below) |
| No | auto-detect | Plan: |
| No |
| Cache directory path |
| No |
| API base URL |
| No |
| Max retry attempts for failed requests |
| No |
| Base delay (seconds) for exponential backoff |
| No |
| Max pages to fetch per paginated request |
| No | — | Identity of the authenticated user, injected by the gateway (see Authentication). Never set this by hand |
| No | — | Passphrase for AES-256-GCM encryption of per-user API keys |
| No | — | Previous encryption passphrase — enables dual-key decrypt during a rotation window. See secrets rotation runbook |
| No |
| Per-user request ceiling (multi-user mode). Applies per |
| No |
| Per-user burst allowance (token-bucket capacity) |
| No | — | Comma-separated allowlist of emails. Empty = allow any user the gateway authenticated (self-host default). Set this on public Cloud Run instances to restrict access; unauthorized users get a 403-style message pointing them to self-host |
* API key is auto-detected from ~/.jquants-api/jquants-api.toml. Set JQUANTS_API_KEY only to override.
Environment variables override both config.ini and jquants-api.toml. This allows MCP clients (Claude Desktop, Claude Code) to pass settings via their env block while keeping defaults elsewhere.
macOS launchd note
If you run jquants-mcp as a macOS LaunchAgent and the API key lives in ~/.jquants-api/jquants-api.toml, the server may silently hang during startup on macOS 26 or later. The TCC sandbox applied to launchd-spawned processes blocks open() on some dotfiles under $HOME (mode 600), and the process never finishes starting.
Workaround: copy the toml outside the sandboxed home hierarchy and point the server at it via JQUANTS_API_TOML_PATH:
sudo mkdir -p /usr/local/etc/jquants-mcp
sudo cp ~/.jquants-api/jquants-api.toml /usr/local/etc/jquants-mcp/jquants-api.toml
sudo chown "$USER":staff /usr/local/etc/jquants-mcp/jquants-api.toml
sudo chmod 600 /usr/local/etc/jquants-mcp/jquants-api.tomlThen add the following to your LaunchAgent plist's EnvironmentVariables dict:
<key>JQUANTS_API_TOML_PATH</key>
<string>/usr/local/etc/jquants-mcp/jquants-api.toml</string>Alternatives: set JQUANTS_API_KEY directly in the plist (simpler but puts the key in a plist file that Time Machine / iCloud may back up), or put api_key = directly in ~/.config/jquants-mcp/config.ini (if that path is not sandbox-blocked on your macOS version).
Linux/systemd and other init systems are not affected.
Authentication
The server speaks stdio only and binds no network socket, so it performs no authentication of its own — there is no listener to authenticate against. Access control is a property of whoever starts the process:
Deployment | Who controls access |
Local (Claude Code, Claude Desktop) | The OS. The MCP client spawns the server as a subprocess; the API key comes from |
Remote | A gateway in front of the server. The gateway terminates authentication and spawns the stdio server per session |
Gateway identity
For remote or multi-user deployments, put a gateway in front of the stdio server. mcp-stdio serve is the gateway both production deployments use: it accepts MCP over HTTP, authenticates the caller, and spawns one jquants-mcp child process per session.
The gateway passes the authenticated identity down to that child as the JQUANTS_MCP_USER environment variable (mcp-stdio serve --trusted-user-header X-Forwarded-Email --user-env JQUANTS_MCP_USER). One child process serves exactly one principal for its whole lifetime, and the server reads JQUANTS_MCP_USER as that principal's verified email — it applies the JQUANTS_ALLOWED_EMAILS allowlist and per-user rate limits to it, and looks up that user's stored API key.
Trust model:
JQUANTS_MCP_USERis trusted as-is; the server does no verification of its own. Whoever can set the child process's environment is that user, so the variable must be injected by the gateway and never by a user-supplied value.
When JQUANTS_MCP_USER is absent — the normal local case — the server runs single-user against the globally configured API key.
A worked example of the whole shape (auth proxy in front, gateway, stdio child, cache download) is scripts/entrypoint-stdio.sh, the entrypoint of the Cloud Run deployment described below. There is no other documented remote-access story: the server itself has no transport, TLS, or token options.
Multi-user Mode
When the server receives a gateway identity (JQUANTS_MCP_USER, see Authentication) and MCP_ENCRYPTION_KEY is configured, it operates in multi-user mode: each user stores their own J-Quants API key on the server, and all data tools use that key automatically. All users share the read cache; each user gets an independent J-Quants client with isolated rate limiting and their own plan's date-range window.
User flow
sequenceDiagram
participant U as User
participant C as Claude
participant G as Gateway (mcp-stdio serve)
participant S as jquants-mcp (stdio child)
participant J as J-Quants API
U->>C: Connect
C->>G: Authenticate (gateway's own auth layer)
G->>S: Spawn child with JQUANTS_MCP_USER = verified email
U->>C: "Register my J-Quants API key: <key>"
C->>G: register_api_key(api_key="<key>")
G->>S: forward over stdio
S->>J: Probe plan-specific endpoints (auto-detect)
J-->>S: Detected plan
S->>S: Encrypt & store key + plan (AES-256-GCM)
S-->>C: {"status": "ok", "plan": "<detected>"}
U->>C: "Get TOPIX daily prices"
C->>S: get_indices_bars_daily_topix(...)
S->>J: API call with user's key
J-->>S: Data
S-->>C: ResultTools for multi-user mode
Tool | Required | Description |
|
| Encrypt and store your J-Quants API key |
|
| Remove your stored key |
Both tools return an explanatory error instead of failing silently when either requirement is missing.
Registering a key (tell Claude):
"Register my J-Quants API key:
<your-api-key>"
Claude calls register_api_key(api_key="..."). The server probes plan-specific endpoints with the key to auto-detect the plan (free / light / standard / premium) and stores it alongside the encrypted key — no manual selection needed. Subsequent tool calls use the detected plan for rate limiting and date-range restrictions.
This is the only way to register a key on a multi-user deployment; the server exposes no web form and no HTTP endpoint of any kind.
Security
API keys are encrypted with AES-256-GCM (authenticated encryption — integrity-protected)
The encryption key is derived via PBKDF2-HMAC-SHA256 (200,000 iterations) from
MCP_ENCRYPTION_KEY, with a random 16-byte salt per encryptionEach ciphertext uses a unique random 12-byte nonce — encrypting the same key twice produces different ciphertext
Tampered or truncated ciphertexts are rejected before decryption
Single-user fallback
Configuration | Behavior |
No | Single-user: global |
| Gateway-authenticated, but all users share the global |
| Full multi-user: each user has an independent encrypted API key |
Usage
Claude Code (plugin)
This repository doubles as a single-plugin marketplace, so Claude Code can install the server for you:
/plugin marketplace add shigechika/jquants-mcp
/plugin install jquants-mcp@jquants-mcpThe plugin launches uvx, so it must be on the PATH of the process that
runs Claude Code — a login shell usually has it, but a GUI-launched app may
not; install uv system-wide if the plugin
fails to start.
The plugin launches uvx jquants-mcp and reads the same environment variables
described in Configuration. JQUANTS_API_KEY is deliberately
left out of the plugin's own .mcp.json so the key you already have — from
jquants-mcp login (~/.config/jquants-mcp/config.ini) or the J-Quants
official ~/.jquants-api/jquants-api.toml — is still found; export it
yourself before starting Claude Code only if you want to override both of
those.
Claude Code (manual)
Register the MCP server with claude mcp add:
claude mcp add jquants-mcp -- jquants-mcpOr if installed from source:
claude mcp add jquants-mcp \
-- /path/to/jquants-mcp/.venv/bin/jquants-mcpThe --scope (-s) option controls where the configuration is stored:
Scope | Description | Config location |
| Current project, current user only |
|
| Current project, shared with team |
|
| All projects, current user only |
|
API key is auto-detected from ~/.jquants-api/jquants-api.toml. Set --env JQUANTS_API_KEY=... only to override.
AI Agent Skills
Install the operational guidance Skill into your Claude Code project:
npx skills add shigechika/jquants-mcpThis adds skills/jquants-mcp-usage/SKILL.md to your project, giving Claude Code the daily workflows (one-call briefings, value screening, single-stock deep dives) plus practical tips on cache tiers, plan-based date limits, screener patterns, and safe cache management — without touching the tool definitions.
Claude Desktop
Add to Claude Desktop config file:
OS | Config file |
macOS |
|
Windows |
|
Linux |
|
{
"mcpServers": {
"jquants-mcp": {
"command": "/path/to/jquants-mcp/.venv/bin/jquants-mcp"
}
}
}The server auto-detects the plan from your API key on startup — no need to set it manually. Add an env block only if you want to override the detection or point to a different API key.
Note: Claude Desktop has a limited
PATH(/usr/local/bin,/usr/bin, etc.), so you must specify the full path to the executable.
Restart Claude Desktop after editing.
Standalone (stdio)
jquants-mcpRemote access
The server has no network transport of its own — no --transport, no --host/--port, no TLS options. To reach it from another machine, front the stdio server with a gateway that terminates authentication and spawns jquants-mcp per session. With mcp-stdio serve that looks like:
mcp-stdio serve --host 127.0.0.1 --port 8081 --path /mcp \
--enable-oauth --public-url https://mcp.example.com \
--trusted-user-header X-Forwarded-Email --user-env JQUANTS_MCP_USER \
-- jquants-mcp
--trusted-user-headerrequires an authenticating proxy in front — not merely a TLS-terminating one. The gateway trusts that header without verifying it. A plain TLS proxy passes client headers through, so anyone could sendX-Forwarded-Email: victim@example.comand be served as that user, reaching their stored API key. The proxy must authenticate the caller and overwrite the header with the verified identity, discarding whatever the client sent.oauth2-proxydoes this (itsskip_auth_strip_headersdefault strips client-supplied headers on pass-through routes). Bind the gateway to loopback, as above, so it is reachable only via that proxy.Omit
--trusted-user-headerand--user-envif you have no such proxy: the server then runs single-user against the configured API key, which is safe.
scripts/entrypoint-stdio.sh is the worked example. It is the entrypoint of the Cloud Run deployment described below, and shows the gateway running behind an oauth2-proxy sidecar together with the startup cache download.
That is the whole remote-access story. How clients connect depends only on the gateway you chose; the sections below cover the two shapes used with mcp-stdio serve.
Claude Code / Claude Desktop (remote via mcp-stdio)
Claude Desktop does not speak Streamable HTTP directly, and claude mcp add --transport http --header "Authorization: Bearer ..." drops the header during health checks (claude-code#28293). The mcp-stdio client bridges stdio to the remote endpoint in both cases:
pip install mcp-stdio # or: uvx mcp-stdio
# Claude Code — --oauth drives the gateway's OAuth flow in your browser
claude mcp add jquants-mcp -- mcp-stdio --oauth https://mcp.example.com/mcp{
"mcpServers": {
"jquants-mcp": {
"command": "mcp-stdio",
"args": ["--oauth", "https://mcp.example.com/mcp"]
}
}
}Restart Claude Desktop after editing. Use --bearer-token <TOKEN> instead of --oauth if your gateway authenticates with a static token.
Claude Desktop Connectors
When the gateway speaks OAuth 2.1 over HTTPS (mcp-stdio serve --enable-oauth), Claude Desktop's Connectors panel can connect natively — click Connect and complete the login in the browser; the token is stored and reused silently.
{
"mcpServers": {
"jquants-mcp": {
"type": "http",
"url": "https://mcp.example.com/mcp"
}
}
}Per-user API keys additionally require MCP_ENCRYPTION_KEY on the server — see Multi-user Mode. If "type": "http" is not yet available in your Claude Desktop version, use the mcp-stdio bridge above instead.
Available Tools
Equities (8 tools)
Tool | Endpoint | Plan | Description |
|
| Free+ | Listed issue information |
|
| Free+ | Daily stock prices (OHLC) |
|
| Light+ | Minute-level stock prices |
|
| Premium | Morning session prices |
|
| Light+ | Trading by investor type |
|
| Free+ | Earnings schedule (single date or by code); Light+ covers all listed issues incl. REITs, Free is limited to March/September fiscal-year issues |
| (cache only) | Free+ | Companies reporting earnings in a date window, grouped by day (default today..+7d) |
| (cache only) | Free+ | Reverse lookup by company name (e.g. |
Financials (4 tools)
Tool | Endpoint | Plan | Description |
|
| Free+ | Financial summary (quarterly) |
|
| Premium | Detailed statements (BS/PL/CF) |
|
| Premium | Cash dividend data |
| (cache only) | Free+ | Earnings results disclosed in a date window (default last 7d), grouped by day with headline P&L + forecast progress |
Indices (2 tools)
Tool | Endpoint | Plan | Description |
|
| Standard+ | Index daily prices |
|
| Light+ | TOPIX daily prices |
Derivatives (3 tools)
Tool | Endpoint | Plan | Description |
|
| Premium | Futures daily prices |
|
| Premium | Options daily prices |
|
| Standard+ | Nikkei 225 options prices |
Markets (6 tools)
Tool | Endpoint | Plan | Description |
|
| Standard+ | Margin trading data |
|
| Standard+ | Margin trading alerts |
|
| Standard+ | Short selling ratio |
|
| Standard+ | Short sale position report |
|
| Premium | Market breakdown by investor |
|
| Free+ | Trading calendar |
Bulk Download (2 tools)
Tool | Endpoint | Plan | Description |
|
| Light+ | List downloadable CSV files |
|
| Light+ | Get signed download URL |
Market Overview & Valuation (11 tools)
Cross-sectional cache-only tools that scan all listed equities. No extra API calls, useful for "what's the overall market doing today?" and sector valuation queries.
Tool | Description |
| Daily advance/decline summary (値上がり/値下がり銘柄数) and advance-decline ratio. |
| Cumulative advance/decline ratio (騰落レシオ) over the last period trading days. Default 25 (overbought >120, oversold <70). |
| Top gainers/losers ranked by percentage price change. Returns code + name + change_pct. |
| Top stocks by trading volume (出来高ランキング, share count). Returns code + name + volume + turnover_value. |
| Top stocks by turnover value (売買代金ランキング, yen). Surfaces high-priced large-caps that dominate institutional flow, distinct from |
| Sector-level average daily change (業種別騰落率) grouped by TSE 33 sectors (default) or 17 sectors ( |
| Sector-level median PER, PBR, and ROE (業種別ブリーフィング) aggregated from the most recent FY financials. Split-adjusted. Sorted by PER ascending (cheapest first). |
| High dividend yield stock ranking (高配当利回りランキング). Joins |
| PER/PBR valuation ranking (バリュエーションランキング). Joins latest-FY |
| Combined value screen (年安・割安・高配当・好決算スクリーニング) — ALL criteria must hold: close within |
| Composite daily briefing (相場ブリーフィング) — advance/decline + 25-day ADR + sector top/bottom + top movers + top turnover + screener highlights + value screen + TOPIX change in one call. |
Screener (10 tools)
Offline tools that compute signals directly from the SQLite cache. No extra API calls, pure Python, no numpy/pandas. Intended for Claude-assisted stock screening without hitting rate limits.
Tool | Description |
| Find stocks that touched the daily upper/lower price limit (ストップ高/安) using the |
| Compute the daily VWAP ( |
| New 52-week rolling high/low (Yahoo / Bloomberg / TradingView convention). Returns |
| Same as above but across a date range ( |
| New year-to-date (年初来) high/low (Kabutan / JPX / Yahoo!ファイナンス convention). Same four signals against the YTD prior window plus |
| Same as above but across a date range ( |
| List stocks whose volume on |
| Identify distribution days (機関投資家の売り圧力) using TOPIX as the market proxy and total market turnover ( |
| Confirm a new uptrend (フォロースルーデイ). TOPIX must rise ≥ |
| Screen for stocks with at least |
Single Stock Briefing (1 tool)
Cache-only tool that assembles a one-page snapshot for a single stock from cached data. No extra API calls.
Tool | Description |
| One-page briefing for a single stock (株式ブリーフィング): latest price (close, change_pct, volume, OHLC), most recent FY financials (revenue, operating profit, net income), and valuation ratios (PER, PBR, ROE, EPS, BPS, dividend yield). All figures are split-adjusted. PER is null when EPS ≤ 0 (net-loss period); ROE is null when EPS ≤ 0 and no native ROE value is cached (a native ROE, when present, is returned regardless of EPS sign). Dividend yield uses the most recent DivAnn disclosed within the past 18 months. |
Technical Indicators (1 tool)
Pure-Python SMA / Bollinger Bands / RSI computation over the cached daily bars. No extra API call for codes already in cache; falls back to the J-Quants API on a cache miss and stores the result.
Tool | Description |
| Compute SMA (5/25/75), Bollinger Bands (bb20, ±2σ sample std), and RSI (rsi14, Wilder smoothing) for a single code over a date or date range. Returns numeric values — useful for "is close above SMA25?" or "is RSI overbought?" without rendering a chart. All values use split-adjusted close (AdjC). Indicators not yet warmed up are returned as |
RSI in charts: RSI sub-panel is not yet available. Use
get_technical_indicatorsfor numeric RSI values.
Charts (2 tools)
Both tools return JSON for React artifact / Plotly rendering (no optional dependencies).
Tool | Description |
| OHLCV + indicator data as JSON parallel arrays for a single code. Returns |
| Multi-stock time-series data as JSON wide-format records (up to 10 codes). Default |
Indicator options for get_candlestick_data:
Indicators:
volume,sma5,sma20,sma25,sma60,sma75,sma200,bb20(20-day Bollinger band; expands tobb20_upper/bb20_mid/bb20_lower)Adjusted prices: split-adjusted by default (
adjusted=True); setFalsefor raw OHLC
Utility (5 tools)
Tool | Auth required | Description |
| — | Server health and API key status |
| — | Cache statistics |
| — | Clear cached data |
| Gateway identity | Store your J-Quants API key (multi-user mode) |
| Gateway identity | Remove your stored J-Quants API key |
Caching
The server uses a two-tier SQLite cache:
Tier 1 (Row-level): Time-series data cached by date and code. Supports incremental fetching and stock split detection via AdjFactor comparison.
equities_bars_daily,equities_master,fins_summary,indices_bars_daily_topix,investor_types,markets_margin_interest,markets_margin_alert,markets_short_ratio,markets_breakdown,markets_calendar
Tier 2 (Response-level): Full API responses cached with configurable TTL (6h / 24h / 7d).
Cache is stored at ~/.cache/jquants-mcp/cache.db by default.
Expected disk usage after a full historical fetch (approximate; varies by market data availability):
Plan | Retention | Approx. size |
Free | 2 years | ~500 MB |
Light | 5 years | ~2.9 GB |
Standard | 10 years | ~3.5 GB |
Premium | All available | ~4 GB+ |
Bulk Data Import
The scripts/bulk_fetch_all.py script downloads all available bulk CSV data from the J-Quants Bulk API and imports it into the SQLite cache. This is the fastest way to populate the local cache with historical data.
# Fetch all available data for your plan
uv run python scripts/bulk_fetch_all.py
# Fetch specific endpoints only
uv run python scripts/bulk_fetch_all.py --endpoints fins_summary topix margin_interest
# Dry run — show file list and sizes without downloading
uv run python scripts/bulk_fetch_all.py --dry-runThe script respects the plan-based rate limit (e.g. 60 req/min for Light) and retries on 429 errors. A full historical fetch takes roughly 1 hour; use health_check to monitor progress.
CSV Import
The CSV sideload script (import_csv_to_cache.py) is maintained by the publisher pipeline that feeds this cache. If you are building your own pipeline, implement sideloading by inserting directly into the equities_bars_daily / equities_master tables following the schema defined in src/jquants_mcp/cache/schema.py.
Daily Fetch
scripts/daily_fetch.py fetches additional J-Quants data via jquantsapi.ClientV2 and inserts it directly into the SQLite cache. Designed to be called from an external daily pipeline (e.g. a cron job or shell script).
jquants-api-client is not a core dependency (the MCP server itself never imports it) — install it with the fetch extra: uv sync --extra fetch. Without it, a routine uv sync on a self-hosted deployment will silently remove a manually-installed copy.
The script reads the plan from ~/.config/jquants-mcp/config.ini (or JQUANTS_PLAN env var) and automatically determines which endpoints to fetch:
Plan | Endpoints |
Free |
|
Light | + |
Standard | + |
Premium | + |
# Fetch all endpoints available for your plan
python3 scripts/daily_fetch.py
# Fetch specific endpoints only
python3 scripts/daily_fetch.py --topix --investor-types
# Fetch trading calendar
python3 scripts/daily_fetch.py --calendar
# Backfill historical Markets data (past N days)
python3 scripts/daily_fetch.py --backfill 90
# Use a custom cache DB path
python3 scripts/daily_fetch.py --db /path/to/cache.dbPermission errors (403) are handled gracefully — the script logs the error and continues to the next endpoint without crashing.
Cache Health Check
scripts/verify_cache_completeness.py audits the local cache and reports which tables are up-to-date, stale, or missing for the current plan.
# Quick freshness check (text output)
uv run python scripts/verify_cache_completeness.py
# Machine-readable JSON (for CI / monitoring)
uv run python scripts/verify_cache_completeness.py --output json
# Detect date-level gaps (days where only a fraction of stocks were fetched)
uv run python scripts/verify_cache_completeness.py --check-gaps
# Show what --auto-fix would repair, without making API calls
uv run python scripts/verify_cache_completeness.py --check-gaps --auto-fix --dry-run
# Re-fetch gap days automatically
uv run python scripts/verify_cache_completeness.py --check-gaps --auto-fixExit codes: 0 = all tables healthy, 1 = stale or missing tables, 2 = fatal (DB unreadable).
The plan is auto-detected from your API key (same probe as daily_fetch.py); pass --plan <plan> or set JQUANTS_PLAN to override (skips the probe).
Useful before a plan downgrade to confirm all currently-covered data has been fetched, and as a periodic check to catch silent fetch failures early.
Cloud Run Deployment
This server can be deployed to Google Cloud Run. Because the server is stdio-only, the service is two containers: an oauth2-proxy sidecar handles Google login, and the app container runs scripts/entrypoint-stdio.sh — mcp-stdio serve fronting a per-session jquants-mcp child process (see Authentication).
State is split across two managed stores:
cache.db— published to a GCS bucket by the self-hosted server and downloaded to/tmp(tmpfs) on every cold start. Cloud Run reads it but never writes back.users— per-user encrypted J-Quants API keys, stored in Firestore (Native mode). Strongly consistent and multi-writer safe, so no SQLite write conflicts. The gateway keeps its own OAuth token state in a separate Firestore collection.
Details: see GCS and Firestore integration below.
For a fork-and-deploy walkthrough (WIF, OAuth client, custom domain, Claude mobile setup, allowlist), see docs/deploy/gcp.md. The sections below summarise the moving parts; the deploy guide is the canonical step-by-step.
Prerequisites
A GCS bucket holding a read-only snapshot of
cache.db(updated out-of-band by the self-hosted server)Firestore in Native mode enabled on the project (stores per-user API keys, and the gateway's OAuth token state)
A service account with:
roles/storage.objectVieweron the GCS bucket (read-only access tocache.db)roles/datastore.useron the project (Firestore read/write)roles/secretmanager.secretAccessorif using Secret Manager for API keys
Create a GCS bucket
gcloud storage buckets create gs://YOUR_BUCKET \
--location asia-northeast1Enable Firestore
gcloud firestore databases create \
--location=us-west1 \
--type=firestore-nativeDeploy
The recommended path is to fork the repository and rely on the GitHub Actions CD workflow at .github/workflows/cd.yml. It builds the image with Cloud Build and then updates only the app container's image (gcloud run services update --container app --image …); the sidecar, scaling, CPU, env vars and secrets are set once by hand and deliberately never touched by CD.
The two-container service itself is created once, out of band, with the app container started as --command /app/scripts/entrypoint-stdio.sh. docs/deploy/gcp.md is the canonical step-by-step for that initial setup.
Memory and scaling sizing notes are in Memory requirements below.
Environment variables
Variable | Required | Default | Description |
| Yes | — | GCS bucket holding the |
| No |
| Object key prefix in the bucket |
| No |
| Local directory where |
| Yes | — | Public base URL of the service (e.g. |
| No |
| Port the gateway listens on (the |
| No |
| Firestore path for the gateway's OAuth token store |
| Yes | — | J-Quants API key (use Secret Manager) |
| No | auto-detect | Plan: |
| No | — | Enables per-user API key storage (multi-user mode); use Secret Manager |
| No | — | Restrict which authenticated users may use the service |
| Yes | — | GCP project ID. Required for Firestore (user DB) and Secret Manager access. Set via |
Firestore uses Application Default Credentials from the Cloud Run service account. The oauth2-proxy sidecar carries its own configuration (Google OAuth client, cookie secret) — see docs/deploy/gcp.md.
GCS and Firestore integration
Cloud Run deployments depend on two managed stores, not an in-container SQLite set:
Data | Where it lives | Access mode |
| GCS object, materialized to | Read-only from Cloud Run |
| Firestore | Read/write |
OAuth tokens and client registrations | Firestore, | Read/write |
cache.db is owned by a self-hosted publisher (a cron / scheduled task running scripts/daily_fetch.py or scripts/bulk_fetch_all.py + scripts/gcs_export_cache.py) that pushes a fresh snapshot to GCS on each run. Cloud Run never writes back to GCS.
Startup flow
sequenceDiagram
participant E as entrypoint-stdio.sh
participant G as GCS
participant M as mcp-stdio serve
E->>G: download cache.db.zst to /tmp (synchronous)
Note right of E: runs in the startup window,<br/>where CPU is fully allocated
G-->>E: ~1.2 GiB compressed
Note right of E: stream-decompressed to ~3 GiB;<br/>falls back to uncompressed cache.db
E->>M: start gateway (cache.db already present)
activate M
Note right of M: each session spawns a stdio child<br/>serving from the Tier 1 cache<br/>(live J-Quants API only if the<br/>download was skipped/failed)
deactivate MNotes:
cache.dbis downloaded synchronously during container startup, before the gateway starts accepting sessions. It is published zstd-compressed ascache.db.zst(~1.2 GiB on the wire, stream-decompressed to ~3 GiB) because the Cloud Run instance's GCS read bandwidth (~60 MB/s) is the bottleneck; the downloader falls back to the uncompressedcache.dbwhen.zstis absent. It runs in the container-startup window, where CPU is fully allocated (plus--cpu-boost): under Cloud Run's request-based CPU allocation a download started after the server is ready can be throttled to ~0 between requests and never finish. The trade-off is a longer cold start — the first request after a scale-to-zero waits for the download.If the download fails, startup continues and the server serves via the live J-Quants API (slower, counts against rate limits).
cache_statusthen returns a minimal payload (db_path+planonly) until a cache is loaded.Firestore is strongly consistent, so per-user data survives instance recycling and is safe against concurrent writers. Sessions, however, are held in-instance by the gateway (one child process per session), so the production service runs with
max-instances=1; scaling out is a gateway-level concern, not a storage one.
Daily cache refresh
After startup, cache.db is refreshed daily by the publisher. How that update reaches a
running server depends on the deployment.
Cloud Run — instance recycling
There is no in-container refresh mechanism. With min-instances=0 every cold start
downloads a current cache.db, so the only window in which a running instance can hold a
stale copy is one that stays warm across the publisher's export. In that window, days not
yet cached fall through to the live J-Quants API (correct, just slower), while corrections
to already-cached rows do stay stale — the cache-vs-API decision is presence-based and the
row-level tier applies no TTL. Measured instance lifetimes under min-instances=0 are
15–26 minutes, so the exposure is bounded by recycling. A push-based reload endpoint
existed until v1.0.0; it was removed after the design was evaluated and rejected as not
worth the moving parts (#584).
Local process
The publisher and the server share a filesystem, so an updated cache.db is visible to
the next query with no signal required. Behind a gateway such as mcp-stdio serve, each
session spawns a fresh child process that opens the file as it stands at that moment.
Troubleshooting
Permission error on startup (403 Forbidden or storage.objects.get denied):
gcloud storage buckets get-iam-policy gs://YOUR_BUCKET \
--format="table(bindings.role, bindings.members)"The service account needs roles/storage.objectViewer on the bucket — see IAM setup.
Firestore permission errors:
gcloud projects get-iam-policy "${PROJECT_ID}" \
--flatten="bindings[].members" \
--filter="bindings.members:serviceAccount:jquants-mcp@*"The service account needs roles/datastore.user on the project.
cache_status returns only db_path and plan (no row counts):
The startup download did not complete, or the integrity prewarm is still running. Check the container log for cache.db download complete (emitted by entrypoint-stdio.sh after the synchronous download); its absence means the download was skipped or failed and the server is on the live-API fallback.
cache.db not found in GCS on first deploy:
There is no "empty cache" fallback mode beyond API fallback — the server will keep serving requests directly from the J-Quants API. Upload a cache.db snapshot from your self-hosted server to GCS to enable Tier 1 caching (see Initial cache.db upload).
IAM setup
SA="jquants-mcp@${PROJECT_ID}.iam.gserviceaccount.com"
# Create service account
gcloud iam service-accounts create jquants-mcp \
--display-name "jquants-mcp Cloud Run SA"
# Read-only access to the cache.db snapshot in GCS
gcloud storage buckets add-iam-policy-binding gs://YOUR_BUCKET \
--member "serviceAccount:${SA}" \
--role "roles/storage.objectViewer"
# Firestore access for the users collection and the gateway's token store
gcloud projects add-iam-policy-binding "${PROJECT_ID}" \
--member "serviceAccount:${SA}" \
--role "roles/datastore.user"
# Secret Manager access (if using Secret Manager for JQUANTS_API_KEY etc.)
gcloud projects add-iam-policy-binding "${PROJECT_ID}" \
--member "serviceAccount:${SA}" \
--role "roles/secretmanager.secretAccessor"Note: if the self-hosted server that publishes cache.db uses a different service account, only that account needs write access to the bucket. The Cloud Run service account remains viewer-only.
Initial cache.db upload
Cloud Run reads cache.db as a read-only snapshot. Publish a snapshot from your self-hosted server (which has been warming the cache) before the first deploy:
gcloud storage cp ~/.cache/jquants-mcp/cache.db \
gs://YOUR_BUCKET/jquants-mcp/cache.db \
--no-gzip-in-flightImportant: disable parallel composite uploads (the default for large files). They corrupt SQLite files because the reassembled object contains byte ranges that do not form a valid database page layout. On the publishing host, set:
gcloud config set storage/parallel_composite_upload_enabled False
No manual Firestore setup is required — collections are created on first write.
Memory requirements
Cloud Run materializes cache.db into /tmp (a tmpfs, i.e. RAM). The memory limit therefore must cover:
cache.dbsize (currently ~3 GiB)Python runtime + mcp SDK + sqlite + httpx overhead (~300 MiB)
Request-time JSON serialization headroom
Current production sizing is --memory 8Gi --cpu 2, with min-instances=0 (scale to zero), max-instances=1, and CPU always allocated. Those three billing-relevant settings are never passed by the CD workflow; they are set once by hand and asserted before and after every deploy by .github/workflows/scripts/assert-jquants-billing-settings.sh, so an out-of-band change fails the next deploy instead of persisting silently. Scale-to-zero is load-bearing for correctness as well as cost — every cold start re-downloads a current cache.db (see Daily cache refresh). Cloud Run gen2 is required for memory allocations above 4 Gi, and >4 GiB also forces ≥2 vCPU (8 GiB is the ceiling for 2 vCPU).
Memory is 8 GiB because a cache reload briefly holds ~2× cache.db in /tmp (which is tmpfs, i.e. RAM): the new snapshot downloads to a temp file while the current cache.db is still mapped, then atomically replaces it. At ~3 GiB per snapshot that peak (~6 GiB) plus the Python/SQLite RSS exceeds a 6 GiB limit and tmpfs writes fail with SIGBUS (observed as Container terminated on signal 7), so the limit is 8 GiB. If cache.db grows materially, raise the limit further (and keep ≥2 vCPU; >8 GiB needs ≥4 vCPU).
Operations
For production incidents on the Cloud Run deployment, see the runbooks:
Alert policies that trigger these are in ops/alerts/; each policy's documentation links back to the matching runbook.
The disaster recovery posture documents the current single-region deployment, RTO/RPO expectations, and the (undrilled) standby-region procedure.
Service-level objectives — availability and latency targets with an error-budget policy — are in docs/slo.md.
Development
# Install dev dependencies
uv sync --dev
# Run tests
uv run pytest -v
# Lint
uv run ruff check src/ tests/
# Format
uv run ruff format src/ tests/Disclaimer
This software (jquants-mcp) is a technical tool for retrieving Japanese stock data from the J-Quants API v2 for use with Claude and other MCP clients. It is intended to provide reference information for your own investment research, and:
This software and its output do not constitute investment advice or recommendations.
We make no warranty regarding the accuracy, completeness, or timeliness of the information provided.
Investment decisions are made at your own risk and responsibility.
Past performance does not guarantee future results.
The author is not registered as a financial instruments business operator under Japanese law.
Use is subject to the terms and conditions of J-Quants, the underlying data provider.
The author disclaims all liability for any damages arising from the use of this software.
License
Available Tools
55 toolscache_clearADestructiveIdempotent
Clear cached data.
Offloaded to a worker thread (see _cache_clear_impl): this does a
bulk DELETE, and the official mcp SDK runs sync tool bodies directly on
the event loop (see health_check's docstring for why an explicit
offload is needed here).
Args: table: Table name to clear. Clears all tables when omitted.
| Name | Required | Description | Default |
|---|---|---|---|
| table | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=true. The description adds important behavioral context: it performs a 'bulk DELETE,' clears all tables when table is omitted, and offloads to a worker thread to avoid blocking the event loop. These details go beyond the annotations and are valuable for an agent assessing side effects.
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 description is front-loaded with a one-line purpose, followed by a brief implementation note and an Args section. The offload explanation references internal docstrings (`_cache_clear_impl`, `health_check`) that may not be available to the agent, but it is still compact and contains no redundant filler.
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 the tool's simplicity—one optional parameter, no enums, and an output schema—the description adequately covers purpose, destructive scope, and parameter behavior. It does not enumerate available table names, but that is likely an external concern and not needed for correct selection and invocation.
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?
The input schema only defines an optional table parameter with a string or null type and a default of null. The description provides the essential semantic meaning: 'Table name to clear. Clears all tables when omitted.' This fully compensates for the schema's 0% description coverage.
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 description opens with 'Clear cached data,' a specific verb+resource statement. This clearly distinguishes it from sibling tools such as cache_status, making the tool's purpose immediately obvious.
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?
There is no explicit when-to-use guidance or mention of alternatives. The intended usage is implied by the tool name and the first sentence, but the description does not state, for example, when cache clearing is preferable to cache inspection or what preconditions apply.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cache_statusARead-onlyIdempotent
Show database metadata: table row counts, file size, and detected plan.
This tool returns cache metadata — it does NOT query screener signals. To detect
52-week highs/lows use detect_52w_high_low; for YTD highs/lows use
detect_ytd_high_low; for volume spikes use detect_volume_surge; for price
limits use detect_price_limit. Do not call this tool to look up market data or
screener results.
In multi-user mode, returns the authenticated user's plan instead of the global default.
Offloaded to a worker thread (see _cache_status_impl): this does a
multi-GB row-count scan, and the official mcp SDK runs sync tool bodies
directly on the event loop (see health_check's docstring for why an
explicit offload is needed here).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only and idempotent, but the description adds valuable context beyond that: the multi-user mode nuance (returns authenticated user's plan), the fact that it performs a multi-GB row-count scan, and the explicit offload to a worker thread to avoid blocking the event loop. These are meaningful behavioral disclosures not present in annotations.
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 description is efficiently structured: the first sentence states the core purpose, followed by exclusion/alternative guidance, then a context nuance, and finally an implementation detail. Each sentence earns its place without redundancy. While longer than average, it is front-loaded and every sentence adds unique value.
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 zero parameters, an output schema, and rich sibling context, the description is complete. It covers return content (metadata), exclusions, alternative tools, multi-user behavior, and performance characteristics. No important context is missing for an agent to select and invoke this tool correctly.
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?
The tool has zero parameters, so there is no parameter semantics to explain. Per the rubric, 0 params baseline is 4. The description doesn't need to add parameter meaning, and it correctly focuses on what the tool returns and how it behaves.
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 description opens with a specific verb+resource: 'Show database metadata: table row counts, file size, and detected plan.' It clearly distinguishes itself from sibling detection tools by explicitly stating it does NOT query screener signals and lists alternative tools for that purpose. This is a model of purpose clarity.
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?
The description gives explicit when-to-use context (cache metadata) and when-not-to-use context ('Do not call this tool to look up market data or screener results'). It names specific sibling tools for alternative detection tasks (detect_52w_high_low, detect_ytd_high_low, etc.), fulfilling the alternatives requirement perfectly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_close_vs_vwapARead-onlyIdempotent
Compare a stock's close to its daily VWAP (買い圧力・売り圧力) for one code. All plans.
Use for VWAP・買い圧力・売り圧力 queries on a specific stock; not a cross-sectional screener. Close above VWAP = buying pressure; below = selling pressure. VWAP = Va/Vo (None when Vo=0). Data available ~17:15 JST on trading days.
[Supported plans] Free / Light / Standard / Premium (cache-only, no API call)
Args: code: Stock code (required). date: Single trading date (YYYYMMDD or YYYY-MM-DD). Overrides date_from/date_to. date_from: Range start inclusive (YYYYMMDD or YYYY-MM-DD). date_to: Range end inclusive (YYYYMMDD or YYYY-MM-DD).
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | ||
| date | No | ||
| date_to | No | ||
| date_from | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnly, openWorld, idempotent, and non-destructive hints. The description adds valuable behavioral context beyond these: the formula VWAP=Va/Vo (None when Vo=0), the interpretation of close vs VWAP, data availability timing, and cache-only behavior (no API call). This extra context significantly helps the agent understand what the tool does and its data nuances. No contradiction with annotations.
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 description is well-organized and front-loaded, starting with the primary purpose. It then provides usage guidance, formula, data timing, plan support, and an argument list. Every sentence adds unique value, and the structure makes it easy to scan. Despite having several sections, it remains appropriately concise without redundancy.
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 single-stock VWAP comparison tool, the description covers purpose, scope, usage, interpretation, formula, data timing, supported plans, cache behavior, and all parameters. An output schema is indicated as present, so the description need not explain return values. The context is complete for an agent to correctly select and invoke the tool.
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 0%, so the description carries the full burden. It thoroughly explains every parameter: 'code' as required stock code, 'date' as a single date that overrides the range, and 'date_from'/'date_to' as an inclusive range. It also provides accepted date formats (YYYYMMDD or YYYY-MM-DD). This fully compensates for the missing schema descriptions.
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 description clearly states the tool's function with a specific verb ('Compare'), resource ('a stock's close to its daily VWAP'), and scope ('for one code'). It explicitly distinguishes from cross-sectional screeners, making it easy to differentiate from siblings. The additional explanation of buying/selling pressure reinforces the purpose.
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?
The description provides explicit usage context: 'Use for VWAP・買い圧力・売り圧力 queries on a specific stock; not a cross-sectional screener.' It clearly states when to use and when not to, and also includes data availability timing (~17:15 JST on trading days). No alternative tool is named, but the 'when-not' clause is sufficient for effective selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_api_keyADestructiveIdempotent
Delete your registered J-Quants API key (multi-user mode).
Removes your API key from the server. Subsequent tool calls will fail until you register a new key with register_api_key.
This tool requires OAuth 2.1 authentication.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes beyond annotations by disclosing the operational consequence (subsequent tool calls fail) and the recovery path (register a new key). It also specifies the OAuth 2.1 authentication requirement, which is not present in the annotations, adding meaningful behavioral context without contradicting the destructiveHint and idempotentHint flags.
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 description is three sentences, deliberately structured to lead with the core action, then the consequence, then the authentication requirement. Every sentence adds necessary information without redundancy, making it exceptionally efficient.
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 the tool's simplicity (no parameters, clear destructive action, existing output schema), the description fully covers the purpose, consequences, auth requirements, and relationship to sibling tools. It is complete and self-contained for an agent to invoke correctly.
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?
With zero parameters in the schema, there are no parameter semantics to explain. The description appropriately focuses on the tool's action and effects, and the baseline score for 0-parameter tools is 4.
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 description clearly states the tool deletes the user's registered J-Quants API key in multi-user mode, using the specific verb 'delete' and naming the exact resource. It distinctly contrasts with sibling tools like register_api_key, leaving no ambiguity about its function.
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?
The description provides clear context for use: it removes the API key, and explicitly notes that subsequent tool calls will fail until a new key is registered with register_api_key. This references the alternative tool and establishes a usage sequence, though it does not explicitly state 'when not to use' scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
detect_52w_high_lowARead-onlyIdempotent
Screen for 52-week rolling high/low breakouts (52週高値/安値 ブレイク). All plans.
Use for 52週高値, 52週安値, 年間高値, 年間安値, 52-week high/low breakout. For multi-date scans use detect_52w_high_low_range (not repeated calls here). For YTD high/low use detect_ytd_high_low instead.
Default params hit the nightly pre-computed cache (sub-second). Custom params or code filter compute on-demand (~10–30s cross-sectional on Cloud Run). date must be within the past 52 weeks. Data available ~17:15 JST on trading days.
[Supported plans] Free / Light / Standard / Premium (cache-only, no API call)
Args: date: Trading date (YYYYMMDD or YYYY-MM-DD). Within past 52 weeks. code: Optional stock code. Omit to scan all codes (cross-sectional). window_sessions: Trailing session window (default 252 = 52 weeks). min_prior_sessions: Drop codes with fewer prior sessions in window (default 60; set 1 to disable). detail: Include full per-stock data array (default False = summary counts only).
| Name | Required | Description | Default |
|---|---|---|---|
| code | No | ||
| date | Yes | ||
| detail | No | ||
| window_sessions | No | ||
| min_prior_sessions | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, and non-destructive, but the description adds meaningful behavioral details: default params hit a nightly pre-computed cache (sub-second) versus custom params computing on-demand (10-30s), data available ~17:15 JST, and plan restrictions. This goes well beyond the annotation signal and sets proper expectations for performance and availability.
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 description is well-structured with sections for use cases, performance, plans, and arguments, and every section earns its place. Minor redundancy exists (e.g., 'All plans' and '[Supported plans]' repeat plan info, and date constraint appears both in prose and in Args), but overall it remains readable and efficient.
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 the tool's complexity (5 parameters, output schema present, clear annotations), the description covers the core function, alternatives, performance trade-offs, data timing, plan support, and parameter semantics. The output schema covers return values, so the description's focus on invocation and behavior makes it complete.
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 0%, but the description fully compensates by explaining each argument: date format and constraint, optional code, window_sessions meaning and default, min_prior_sessions behavior and default, and detail's summary-vs-full toggle. Every parameter is given semantic meaning beyond the raw schema.
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 description opens with a specific action and resource: 'Screen for 52-week rolling high/low breakouts', supported by Japanese equivalents for clarity. It explicitly distinguishes itself from sibling tools by naming detect_52w_high_low_range for multi-date scans and detect_ytd_high_low for YTD scans, leaving no ambiguity about its purpose.
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?
Usage context is highly explicit: the description states when to use this tool ('Use for 52週高値, 52週安値...'), when to use alternatives ('For multi-date scans use detect_52w_high_low_range', 'For YTD high/low use detect_ytd_high_low'), and adds constraints like date range and data availability. This fully guides selection among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
detect_52w_high_low_rangeARead-onlyIdempotent
Scan 52-week high/low breakouts (52週高値/安値) across a date range. All plans.
Use this instead of repeated detect_52w_high_low calls for multi-day queries. Issue one range call — splitting into parallel range calls defeats the purpose. date_from must be within the past 52 weeks. Data available ~17:15 JST on trading days.
[Supported plans] Free / Light / Standard / Premium (cache-only, no API call)
Args: date_from: Range start inclusive (YYYYMMDD or YYYY-MM-DD). Within past 52 weeks. date_to: Range end inclusive (YYYYMMDD or YYYY-MM-DD). code: Optional stock code (bypasses pre-computed cache when set). window_sessions: See detect_52w_high_low (default 252). min_prior_sessions: See detect_52w_high_low (default 60). detail: Include full per-stock data array (default False).
| Name | Required | Description | Default |
|---|---|---|---|
| code | No | ||
| detail | No | ||
| date_to | Yes | ||
| date_from | Yes | ||
| window_sessions | No | ||
| min_prior_sessions | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, and the description adds valuable context: cache-only execution with no API call, supported plan availability, data timing, and the 52-week constraint on date_from. No contradiction with annotations.
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 description is well-structured with a clear opening, usage guidance, and an Args block. Minor redundancy exists, such as stating 'All plans' in the first line and then listing supported plans again, and repeating the 52-week constraint in the description and parameter detail.
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?
With strong annotations and an output schema present, the description covers the essential operational aspects: core behavior, parameter semantics, data availability, and plan support. It omits no critical details for using the tool correctly.
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?
All 6 parameters are described, with date formats, inclusivity, and constraints clearly stated, and detail/code behaviors explained. However, window_sessions and min_prior_sessions defer to another tool ('See detect_52w_high_low') rather than fully self-contained definitions, which is a minor gap given 0% schema coverage.
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 first sentence clearly states the tool scans 52-week high/low breakouts across a date range, which is a specific verb+resource+scope. It distinguishes itself from the sibling detect_52w_high_low by explicitly referencing it for multi-day queries.
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 explicitly instructs to use this tool instead of repeated detect_52w_high_low calls for multi-day queries and warns against splitting into parallel range calls. It also provides data availability timing (~17:15 JST), giving clear when-to-use context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
detect_consecutive_dividend_increaseARead-onlyIdempotent
Screen for stocks with consecutive annual dividend increases (連続増配). All plans.
Use for 連続増配・dividend growth・増配継続 queries. NOTE: consecutive dividend growth alone does NOT guarantee outperformance on a risk-adjusted basis. Consider combining results with yield and payout ratio filters for investment decisions.
[Supported plans] Free / Light / Standard / Premium (cache-only, no API call)
Args: min_years: Minimum number of consecutive years of dividend increase (default 10). as_of_date: Cut-off date for disclosures (YYYY-MM-DD or YYYYMMDD). Disclosures after this date are excluded, enabling lookahead-free back-testing. Defaults to all available data.
Returns: Matching stocks sorted by consecutive_years descending. Each item contains code, name, consecutive_years, latest_div_ann (split-adjusted, current per-share), latest_fy_end, and a history list of recent years.
| Name | Required | Description | Default |
|---|---|---|---|
| min_years | No | ||
| as_of_date | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, but the description goes further by disclosing key behaviors: lookahead-free backtesting via as_of_date, sorted output by consecutive_years descending, return field details, and cache-only operation with no API call. It also adds an investment caveat about performance guarantees, which is valuable context beyond the annotations.
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 description is well-structured with front-loaded purpose, explicit usage guidance, supported plans, and clearly separated Args/Returns sections. Each sentence adds useful information, and the minor redundancy of 'All plans' followed by the supported plans list does not detract from overall efficiency.
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?
Despite having an output schema, the description still explains return fields and ordering, covers both parameters thoroughly, mentions supported plans and API behavior, and provides a realistic investment caveat. It is complete for an agent to decide when and how to invoke the tool correctly.
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 0%, but the description's Args section fully compensates by explaining min_years as 'Minimum number of consecutive years of dividend increase' and as_of_date as a cut-off date with format examples and lookahead-free semantics. This adds substantial meaning beyond the raw schema properties.
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 description opens with a specific verb and resource: 'Screen for stocks with consecutive annual dividend increases (連続増配).' This clearly distinguishes the tool from siblings like get_dividend_yield_ranking and other detect_* screeners by focusing on consecutive growth rather than yield or price patterns.
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?
The description explicitly states use cases ('Use for 連続増配・dividend growth・増配継続 queries') and provides a caution about not relying on dividend growth alone, suggesting combining with yield/payout filters. It does not name alternative tools or state explicit when-not conditions, but the context is clear enough for an agent to select it appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
detect_distribution_daysARead-onlyIdempotent
Count TOPIX distribution days (機関投資家の売り) in a rolling window. All plans.
Use for ディストリビューションデイ・institutional selling・market under distribution queries (IBD method). Check this before confirming a follow-through day. ≥4 days in 25 sessions = failing uptrend. See also detect_follow_through_day.
[Supported plans] Free / Light / Standard / Premium (cache-only, no API call)
Args: date: Target date (YYYYMMDD or YYYY-MM-DD). Defaults to latest cached date. sigma_multiplier: z-score threshold for a distribution day (default 2.0). window_sessions: Rolling session window (default 25, IBD convention). min_dist_days: Count threshold for warning=true (default 4, IBD convention).
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | ||
| min_dist_days | No | ||
| window_sessions | No | ||
| sigma_multiplier | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false. The description adds substantial context beyond annotations: cache-only behavior, no API call, supported plans, and the IBD interpretation of the count. This provides clear expectations for how the tool executes and what the result means.
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 description is well-structured with a clear opening, usage context, supported plans, and a labeled Args block. Every section adds value, and the content is appropriately sized for the tool's complexity. The slight redundancy of 'All plans' is minor and does not detract from the overall efficiency.
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 the tool's moderate complexity and the presence of an output schema, the description covers all necessary aspects: purpose, when to use, parameter semantics, plan restrictions, and relationship to a sibling tool. The agent has enough context to select and invoke the tool correctly without needing further documentation.
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?
The schema has 0% description coverage, but the description's Args section fully explains each parameter: date format and default, sigma_multiplier as z-score threshold, window_sessions as rolling window with IBD convention, and min_dist_days as the warning threshold. This directly compensates for the schema's lack of descriptions and adds domain meaning.
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 description uses a specific verb ('Count') with a precise resource ('TOPIX distribution days') and explicitly identifies the IBD method. It distinguishes itself from sibling tools by referencing 'detect_follow_through_day' and explaining its role in confirming follow-through days.
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 explicitly states when to use this tool (for distribution day/institutional selling queries), provides a concrete rule (≥4 days in 25 sessions = failing uptrend), and directs the agent to check it before confirming a follow-through day. It also references an alternative tool, making the guidance actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
detect_follow_through_dayARead-onlyIdempotent
Check whether a follow-through day (フォロースルーデイ) confirms a new uptrend. All plans.
Use when asking if a rally attempt is confirmed (IBD method): TOPIX z-score ≥ +sigma on session 4+ from rally_start, with higher market turnover. See also detect_distribution_days. Data available ~17:15 JST on trading days.
[Supported plans] Free / Light / Standard / Premium (cache-only, no API call)
Args: rally_start: Rally attempt start — the low/reversal day (YYYYMMDD or YYYY-MM-DD). date: Date to check (YYYYMMDD or YYYY-MM-DD). Defaults to latest cached date. sigma_multiplier: z-score threshold (default 2.0).
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | ||
| rally_start | Yes | ||
| sigma_multiplier | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive. The description adds meaningful context: it is cache-only with no API call, and data arrives ~17:15 JST. This enriches behavioral understanding beyond the structured hints, though it doesn't discuss failure modes or edge cases like missing data.
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 description is somewhat long but well-structured: purpose, use case, data availability, supported plans, and args. Every section serves a purpose, though the 'All plans' line is redundant with the subsequent '[Supported plans]' line. Still, it's efficiently organized and easy to parse.
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?
The tool is moderately complex, but the description covers the detection logic, parameter formats, defaults, data timing, and plan restrictions. An output schema exists, so return values need no explanation. This description is complete enough 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description carries full responsibility for explaining parameters. It does so thoroughly: rally_start is described as 'the low/reversal day' with accepted formats, date defaults to latest cached, and sigma_multiplier threshold with default 2.0. This fully compensates for the empty schema descriptions.
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 description clearly states the tool's function: 'Check whether a follow-through day confirms a new uptrend.' It specifies the IBD method and the exact condition (TOPIX z-score ≥ +sigma on session 4+ from rally_start). This distinguishes it from sibling tools, and it even references detect_distribution_days as a related alternative.
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?
Explicitly states when to use: 'Use when asking if a rally attempt is confirmed (IBD method).' It provides concrete criteria (session 4+, higher market turnover) and points to an alternative tool. It also notes the data availability time, which helps set expectations for usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
detect_price_changeARead-onlyIdempotent
Return the daily advance/decline summary for all listed equities (騰落集計). All plans.
Use for 値上がり銘柄数・値下がり銘柄数・騰落集計 queries. For rolling ADR ratio use get_advance_decline_ratio; for sector breakdown use get_sector_performance. Data available ~17:15 JST on trading days.
[Supported plans] Free / Light / Standard / Premium (cache-only, no API call)
Args: date: Trading date (YYYY-MM-DD or YYYYMMDD).
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnly, idempotent, and non-destructive, so the baseline is covered. The description adds valuable context: cache-only (no API call), supported plans, and data availability timing. This goes beyond annotations, though it doesn't specify edge-case behavior like invalid or non-trading dates.
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 description is well-structured and front-loaded with the core purpose. However, there is minor redundancy between 'All plans.' and the later '[Supported plans]' list. Otherwise each section serves a purpose, and the length is appropriate.
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 simple one-parameter tool with an output schema, the description covers purpose, scope, usage, alternatives, availability timing, cache behavior, and parameter format. It is complete enough for an agent to select and invoke correctly without needing additional documentation.
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 provides only type and title for the date parameter, with 0% description coverage. The description compensates by specifying accepted formats (YYYY-MM-DD or YYYYMMDD), which is essential. It doesn't add more context (like trading-day restrictions), but for a single parameter this is sufficient.
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 first sentence clearly states the tool returns the daily advance/decline summary for all listed equities, using a specific verb and resource. It also distinguishes from siblings by naming get_advance_decline_ratio and get_sector_performance for related but different queries.
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?
Explicitly states when to use this tool ('Use for 値上がり銘柄数・値下がり銘柄数・騰落集計 queries') and provides alternatives for other use cases. Also includes a practical timing detail (data available ~17:15 JST on trading days), giving the agent clear selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
detect_price_limitARead-onlyIdempotent
Find stocks that hit the daily price limit (ストップ高/安) on a trading day. All plans.
Use for ストップ高・ストップ安・値幅制限 queries. UL=1 → upper limit touched; LL=1 → lower. For volume spikes use detect_volume_surge; for VWAP pressure use compare_close_vs_vwap. Data available ~17:15 JST on trading days.
[Supported plans] Free / Light / Standard / Premium (cache-only, no API call)
Args: date: Trading date (YYYYMMDD or YYYY-MM-DD). code: Optional stock code. Omit to scan all stocks (returns only triggered rows). When a code is given, that stock's row is always returned, even if it did not hit the limit, so callers can read its UL/LL state directly. detail: Include full per-stock data array (default False).
| Name | Required | Description | Default |
|---|---|---|---|
| code | No | ||
| date | Yes | ||
| detail | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite strong annotations (readOnlyHint, idempotentHint, destructiveHint), the description adds substantial context: data available ~17:15 JST, cache-only (no API call), supported plans, and the behavioral nuance that when a code is provided the row is always returned even if no limit hit. This goes well beyond the annotations.
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 description is organized into clear sections (purpose, usage, alternatives, timing, plans, args) and front-loaded with the main action. It is slightly longer than strictly necessary due to the plan list and detailed param explanations, but every sentence contributes value.
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 the output schema exists, return values need not be detailed. The description covers usage, exclusions, timing, plan availability, cache behavior, and parameter semantics, making it complete for successful invocation. The only minor omission is a direct statement about the output schema, but it's not required.
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 0%, but the description fully compensates by explaining each parameter: date format (YYYYMMDD or YYYY-MM-DD), code's optional behavior and the consequence of omitting vs specifying it, and detail's purpose (include full per-stock data array). This adds meaning the schema alone lacks.
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 description opens with a specific verb and resource: 'Find stocks that hit the daily price limit (ストップ高/安) on a trading day.' It clearly distinguishes this tool from siblings by explicitly naming detect_volume_surge and compare_close_vs_vwap as alternatives for different queries.
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?
Provides explicit when-to-use guidance: 'Use for ストップ高・ストップ安・値幅制限 queries.' It also names alternatives for other scenarios ('For volume spikes use detect_volume_surge; for VWAP pressure use compare_close_vs_vwap'), making the choice between tools unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
detect_volume_surgeARead-onlyIdempotent
Identify stocks with abnormally high trading volume (出来高急増) on a given day. All plans.
Use for 出来高急増・出来高異常・売買活況・volume spike queries. surge_ratio = Vo / mean(prior baseline_days). For price extremes use detect_52w/ytd_high_low; for price limits use detect_price_limit. Data available ~17:15 JST on trading days.
[Supported plans] Free / Light / Standard / Premium (cache-only, no API call)
Args: date: Trading date (YYYYMMDD or YYYY-MM-DD). multiplier: surge_ratio threshold (default 2.0). baseline_days: Trailing sessions for baseline average (default 20). code: Optional stock code. Omit to scan all stocks. detail: Include full per-stock data array (default False).
| Name | Required | Description | Default |
|---|---|---|---|
| code | No | ||
| date | Yes | ||
| detail | No | ||
| multiplier | No | ||
| baseline_days | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint/idempotentHint annotations, the description discloses the detection formula (surge_ratio = Vo / mean(prior baseline_days)), the cache-only behavior with 'no API call', and data availability ('~17:15 JST on trading days'). It also explains that 'detail' controls the return of the full per-stock data array, adding valuable behavioral context.
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 description is well-structured and concise: it opens with the core purpose, then usage guidance, formula, sibling alternatives, data availability, plan support, and a clear Args list. Every sentence adds value without unnecessary verbosity.
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 screening tool with five parameters and no sibling ambiguity, the description covers purpose, usage, parameter semantics, data timing, plan support, and cache behavior. Since an output schema exists, not detailing return structures is acceptable. The description is sufficiently complete for correct selection and invocation.
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?
Although the schema has 0% description coverage, the description's Args section thoroughly explains every parameter: date format, multiplier threshold, baseline_days meaning, code optionality, and detail flag behavior. 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Identify stocks with abnormally high trading volume (出来高急増) on a given day.' It also provides Japanese synonyms and distinct criteria (surge_ratio), and explicitly differentiates from sibling tools like detect_52w/ytd_high_low and detect_price_limit, making the purpose unambiguous.
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?
Explicitly states when to use: 'Use for 出来高急増・出来高異常・売買活況・volume spike queries.' It also gives clear alternatives: 'For price extremes use detect_52w/ytd_high_low; for price limits use detect_price_limit.' Additionally, it notes data availability timing, which informs usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
detect_ytd_high_lowARead-onlyIdempotent
Screen for year-to-date high/low records (年初来高値/安値 更新). All plans.
Use for 年初来高値, 年初来安値, YTD high/low, 年初来高値更新. For multi-date scans use detect_ytd_high_low_range (not repeated calls here). For 52-week rolling window use detect_52w_high_low instead.
Compares today against every session since the first trading day of the same calendar year — matches Kabutan / Yahoo!ファイナンス convention. Default params hit the nightly pre-computed cache (sub-second). date must be within the past 52 weeks. Data available ~17:15 JST on trading days.
[Supported plans] Free / Light / Standard / Premium (cache-only, no API call)
Args: date: Trading date (YYYYMMDD or YYYY-MM-DD). Within past 52 weeks. code: Optional stock code. Omit to scan all codes (cross-sectional). min_prior_sessions: Drop codes with fewer YTD prior sessions (default 60; set 1 to disable). detail: Include full per-stock data array (default False = summary counts only).
| Name | Required | Description | Default |
|---|---|---|---|
| code | No | ||
| date | Yes | ||
| detail | No | ||
| min_prior_sessions | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/idempotent annotations, the description discloses substantial behavioral context: it compares today against every session since the first trading day of the calendar year, matches Kabutan/Yahoo! conventions, uses a nightly pre-computed cache for default params (sub-second), requires date within the past 52 weeks, and notes data availability at ~17:15 JST. This fully informs the agent of performance and data freshness characteristics.
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 description is well-structured and front-loaded, but it contains slight redundancy: 'All plans.' appears both in the first sentence and again in the '[Supported plans]' line. Otherwise, every sentence earns its place, and the Args section is clear. A minor deduplication would make it perfect.
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 is present, the description does not need to document return fields. It covers purpose, usage boundaries, behavior, supported plans, and all parameters with semantics and defaults. It also explains the historical comparison convention and cache behavior. No critical information is missing for correct tool selection and invocation.
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?
The input schema provides only types and defaults (0% description coverage). The description's Args section fully compensates by explaining each parameter: date format and range, code's optionality and cross-sectional behavior, min_prior_sessions meaning including the disable value (1), and detail's effect on output (summary counts vs full array). This is exemplary parameter documentation.
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 description opens with a specific verb-resource pair: 'Screen for year-to-date high/low records.' It also provides Japanese equivalents (年初来高値/安値) and explicitly differentiates from sibling tools by naming detect_ytd_high_low_range and detect_52w_high_low, making the purpose unmistakable.
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?
The description gives explicit usage guidance: 'Use for 年初来高値, 年初来安値, YTD high/low, 年初来高値更新.' It also states when NOT to use it: 'For multi-date scans use detect_ytd_high_low_range (not repeated calls here). For 52-week rolling window use detect_52w_high_low instead.' This is a model of clear when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
detect_ytd_high_low_rangeARead-onlyIdempotent
Scan year-to-date high/low records (年初来高値/安値) across a date range. All plans.
Use this instead of repeated detect_ytd_high_low calls for multi-day queries. Issue one range call — splitting into parallel range calls defeats the purpose. date_from must be within the past 52 weeks. Data available ~17:15 JST on trading days.
[Supported plans] Free / Light / Standard / Premium (cache-only, no API call)
Args: date_from: Range start inclusive (YYYYMMDD or YYYY-MM-DD). Within past 52 weeks. date_to: Range end inclusive (YYYYMMDD or YYYY-MM-DD). code: Optional stock code (bypasses pre-computed cache when set). min_prior_sessions: See detect_ytd_high_low (default 60). detail: Include full per-stock data array (default False).
| Name | Required | Description | Default |
|---|---|---|---|
| code | No | ||
| detail | No | ||
| date_to | Yes | ||
| date_from | Yes | ||
| min_prior_sessions | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnly, idempotent, non-destructive), the description discloses caching behavior ('cache-only, no API call'), data availability time, and the cache-bypass effect when 'code' is set. These are significant behavioral traits that the annotations do not cover.
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 structure is clear with sections for purpose, usage, plans, and arguments, and it is front-loaded. However, the 'date_from within 52 weeks' constraint appears twice (in the intro and in the Args), creating minor redundancy, and the reference to another tool for min_prior_sessions is a slight detour.
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?
The description covers purpose, alternatives, constraints, parameter semantics, caching, and availability. The only gap is the reliance on detect_ytd_high_low for min_prior_sessions, but the output schema likely handles return structure, so the core contextual needs are satisfied.
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?
With 0% schema coverage, the description fully compensates by documenting all five parameters: formats, inclusive ranges, defaults, and the special effect of 'code'. The Args section turns an otherwise opaque schema into a usable reference.
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 description opens with a specific verb ('Scan') and resource ('year-to-date high/low records') scoped to a date range, which clearly distinguishes it from the sibling detect_ytd_high_low (single date) and detect_52w_high_low_range (52-week range). The Japanese annotation further clarifies the concept.
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 explicitly advises using this tool instead of repeated detect_ytd_high_low calls for multi-day queries and warns against splitting into parallel range calls. It also provides concrete constraints (date_from within past 52 weeks) and data availability timing (~17:15 JST), which are directly actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_advance_decline_ratioARead-onlyIdempotent
Return the advance/decline ratio (騰落レシオ) over the last period trading days. All plans.
Use for 騰落レシオ・市場過熱感 queries. >120 = overbought; <70 = oversold (general convention). For daily advance/decline counts use detect_price_change; for sector breakdown use get_sector_performance.
[Supported plans] Free / Light / Standard / Premium (cache-only, no API call)
Args: date: End date (YYYY-MM-DD or YYYYMMDD). period: Trailing trading days to accumulate (default 25).
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | ||
| period | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the read-only and idempotent annotations, the description adds important context: cache-only (no API call), supported plans, and the overbought/oversold thresholds (>120, <70) that guide interpretation. This provides substantial behavioral and interpretive value beyond the structured annotation data.
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 description is structured with clear sections: purpose, usage context, thresholds, alternatives, supported plans, and parameters. Every sentence serves a purpose, and the information is front-loaded with the essential purpose.
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 the tool's simplicity, the annotations, and the presence of an output schema, the description covers all necessary aspects: purpose, when to use, parameter semantics, and plan restrictions. Nothing else is needed for correct invocation.
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?
The input schema has 0% description coverage, but the description fully compensates by listing both parameters: date (End date, format YYYY-MM-DD or YYYYMMDD) and period (trailing trading days, default 25). This gives complete meaning beyond the schema's minimal type definitions.
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 description clearly states the tool returns the advance/decline ratio (騰落レシオ) over the last period trading days, with a specific verb and resource. It also distinguishes from siblings by explicitly directing daily counts to detect_price_change and sector breakdowns to get_sector_performance.
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?
Explicit when-to-use guidance is provided: 'Use for 騰落レシオ・市場過熱感 queries.' It also names alternatives with clear distinctions, and notes supported plans and cache-only behavior.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_bulk_download_urlARead-onlyIdempotent
Step 2 of bulk CSV download: get a signed URL for a specific file. Light+.
Use after get_bulk_list; pass the Key returned there to get a time-limited download URL. The URL expires in approximately 5 minutes — download immediately after calling.
[Supported plans] Light / Standard / Premium
Args: key: File key obtained from get_bulk_list
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, and non-destructive hints. The description adds valuable context about the signed URL's expiration and the dependency on a prior get_bulk_list call, enhancing behavioral understanding beyond annotations.
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?
Compact and well-organized: summary, usage, plans, and args. Every sentence is actionable and non-redundant, with critical details front-loaded.
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 single-parameter tool with an output schema, the description covers prerequisites, timing, and invocation, leaving no critical gaps for an agent to select or call it correctly.
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 has 0% description coverage, but the description fully defines the 'key' parameter as 'File key obtained from get_bulk_list', adding provenance and type context that the schema lacks.
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?
Description clearly states 'get a signed URL for a specific file' and identifies itself as 'Step 2 of bulk CSV download', distinguishing it from sibling get_bulk_list and other get_* tools with a specific verb and resource.
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?
Explicitly instructs 'Use after get_bulk_list; pass the Key returned there', providing sequencing and parameter source. Also notes time-sensitive behavior ('URL expires in approximately 5 minutes'), guiding immediate use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_bulk_listARead-onlyIdempotent
Step 1 of bulk CSV download: list available files for a dataset (一括DL). Light+.
Use for 全データ一括ダウンロード, bulk download, CSV ダウンロード, 全銘柄データ取得. Workflow: get_bulk_list → get_bulk_download_url(Key) → download URL within 5 minutes.
Returns file keys (Key), last-modified timestamps, and file sizes.
[Supported plans] Light / Standard / Premium
Args: endpoint: Dataset endpoint name (e.g. /equities/bars/daily). Accepted values: /equities/master, /equities/bars/daily, /equities/bars/minute, /equities/investor-types, /fins/summary, /fins/details, /fins/dividend, /indices/bars/daily, /indices/bars/daily/topix, /derivatives/bars/daily/futures, /derivatives/bars/daily/options, /derivatives/bars/daily/options/225, /markets/margin-interest, /markets/margin-alert, /markets/short-ratio, /markets/short-sale-report, /markets/breakdown, /equities/trades
| Name | Required | Description | Default |
|---|---|---|---|
| endpoint | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the read-only and idempotent annotations, the description discloses the exact return contents (file keys, timestamps, file sizes) and the 5-minute URL validity from the subsequent step. It also clarifies that this is a list operation, not the actual download. This adds useful context that annotations do not cover.
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 description is well-organized with clearly labeled sections (Step, Use for, Workflow, Returns, Supported plans, Args). It front-loads the primary purpose and workflow, and while the endpoint list is lengthy, it is necessary and presented in a clean bullet format. Every sentence delivers functional information without redundancy.
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 the tool's simple single-parameter signature, the description covers all essential context: the workflow step, supported plan tiers, exact return fields, and the full set of valid endpoint values. The presence of an output schema means return value details don't need to be spelled out, but the description still provides them, making it complete for an agent to select and invoke correctly.
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?
The schema only specifies 'endpoint' as a required string with no description. The tool description compensates fully by explaining the parameter as a dataset endpoint name and enumerating all 20 accepted endpoint values, providing concrete examples. This transforms an ambiguous parameter into a highly actionable one.
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 description clearly states 'Step 1 of bulk CSV download: list available files for a dataset,' which identifies the specific action and resource. It distinguishes itself from sibling tools like get_bulk_download_url and other data-fetching endpoints by emphasizing its role as the initial listing step in a bulk download workflow.
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?
The description explicitly states when to use the tool: for bulk download scenarios (全データ一括ダウンロード, bulk download, CSV ダウンロード) and provides a clear workflow (get_bulk_list → get_bulk_download_url). However, it does not explicitly mention when not to use it or directly compare it with alternative per-dataset fetch tools, so it stops short of full exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_candlestick_dataARead-onlyIdempotent
Return candlestick OHLCV + indicator data as JSON (ローソク足データJSON). All plans.
Use for ローソク足・株価チャート・React artifact チャート queries (JSON format). Returns parallel arrays for Plotly/Recharts React artifact rendering. For multi-stock comparison use sibling get_comparison_chart_data.
[Supported plans] Free / Light / Standard / Premium (cache-only, no API call)
Args: code: Stock code (e.g. "7203" or "72030"). from_date: Range start (YYYYMMDD or YYYY-MM-DD). Default: 91 days before to_date. to_date: Range end (YYYYMMDD or YYYY-MM-DD). Default: today. indicators: Overlays list. Default ["volume","sma5","sma25"]. Options: volume, sma5, sma20, sma25, sma60, sma75, sma200, bb20. adjusted: Use split-adjusted prices (default True).
Returns: dict with keys: code — normalised 5-char code display_code — 4-char display code (e.g. "7203") company — brief company name or null from_date — YYYY-MM-DD display start to_date — YYYY-MM-DD display end adjusted — bool dates — list[str] YYYY-MM-DD ohlcv — {open, high, low, close, volume} each list[float] indicators — {sma5, ..., bb20_upper, bb20_mid, bb20_lower} list[float|null] lock_days — list[{date, direction, price}] earnings_dates — list[str] YYYY-MM-DD within the display window On error: {"error": ""}
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | ||
| to_date | No | ||
| adjusted | No | ||
| from_date | No | ||
| indicators | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only and idempotent behavior; the description adds valuable context such as 'cache-only, no API call', the return format (parallel arrays for Plotly/Recharts), detailed return keys including lock_days and earnings_dates, and the error response format. This goes well beyond the structured annotations.
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?
Although the description is lengthy, it is well-structured with clear sections (Args, Returns) and every sentence adds value. The parameter details and return schema are necessary given the tool's complexity, and the formatting enhances scannability.
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 no output schema and 5 parameters, the description provides a complete picture: all parameters, return structure, error handling, plan coverage, and cache behavior. There is no missing critical information for correct invocation and interpretation of results.
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 has 0% coverage, so the description fully compensates by explaining every parameter: code with examples, from_date/to_date formats and defaults, indicators default and options list, and adjusted default. All 5 parameters receive clear semantic meaning.
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?
Description clearly states 'Return candlestick OHLCV + indicator data as JSON' with a specific verb and resource, and further specifies use cases (ローソク足・株価チャート・React artifact queries). It distinguishes itself from sibling tools by explicitly directing multi-stock comparison users to get_comparison_chart_data.
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?
Explicit usage guidance is provided: 'Use for ローソク足・株価チャート・React artifact チャート queries (JSON format)' and 'For multi-stock comparison use sibling get_comparison_chart_data.' It also states plan support and cache-only behavior, helping the agent decide when to invoke this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_comparison_chart_dataARead-onlyIdempotent
Return time-series data for a multi-stock comparison (複数銘柄比較データ). All plans.
Use for 比較チャート・パフォーマンス比較・リターン比較・relative performance queries (up to 10 codes). Returns JSON records suitable for React artifact rendering with Recharts LineChart. For ローソク足・candlestick charts use sibling get_candlestick_data (returns JSON).
[Supported plans] Free / Light / Standard / Premium (cache-only, no API call)
Args: codes: 1–10 stock codes (e.g. ["7203", "8697"]). from_date: Range start (YYYYMMDD or YYYY-MM-DD), inclusive. to_date: Range end (YYYYMMDD or YYYY-MM-DD), inclusive. mode: "return_pct" (default, normalised to 0% at first bar) or "price" (raw adjusted close). labels: Custom legend labels per code. Omit for auto-generated names.
Returns: dict with keys: mode — echoes the requested mode from_date — normalised YYYY-MM-DD to_date — normalised YYYY-MM-DD records — list of {"date": str, : float, ...} rows (Recharts dataKey format) series_keys — ordered list of label strings matching records keys On error: {"error": ""}
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | return_pct | |
| codes | Yes | ||
| labels | No | ||
| to_date | Yes | ||
| from_date | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds valuable context beyond annotations: cache-only behavior ('cache-only, no API call'), plan support, and the exact return format including error shape. This enriches the agent's understanding of performance and side-effect profile.
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 description is well-organized with clear sections for purpose, use cases, plan support, arguments, and return values. Every sentence adds meaningful information—no filler. The structure is front-loaded with the core purpose and use cases, then detailed parameters.
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?
Despite having no output schema, the description fully specifies the return dictionary keys, the shape of records (Recharts-ready), series_keys, and error format. It covers all necessary context: when to use, parameter details, data shape, and behavioral notes (cache-only). Nothing critical 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?
The input schema has 0% description coverage, so complete burden falls on the description. It fully explains each parameter: codes (1-10, with examples), date formats and inclusivity, mode options with default and meaning, and labels as optional custom legend. This exceeds what the schema alone provides.
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 description uses a specific verb ('Return time-series data') with a clear resource ('multi-stock comparison') and scope ('up to 10 codes'), instantly distinguishing it from the sibling candlestick tool. The Japanese labels reinforce the exact purpose, leaving no ambiguity about what this tool does.
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?
Explicitly states when to use: 'Use for 比較チャート・パフォーマンス比較・リターン比較・relative performance queries', and provides an explicit alternative: 'For ローソク足・candlestick charts use sibling get_candlestick_data (returns JSON)'. This is a model example of usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_derivatives_bars_daily_futuresARead-onlyIdempotent
Daily futures OHLC bars (先物日足). Premium only.
Use for 先物, 日経先物, TOPIX先物, マザーズ先物, futures OHLC, 先物建玉. Returns OHLC, volume, and open interest for futures contracts.
[Supported plans] Premium
Args: date: Date (YYYYMMDD or YYYY-MM-DD) (required) category: Product category (e.g. Futures225 (日経225先物), FuturesTOPIX (TOPIX先物)). Omit for all categories. contract_flag: Contract month flag (0 = all, 1 = front month, 2 = back month)
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | ||
| category | No | ||
| contract_flag | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so safety is covered. The description adds valuable context beyond annotations by disclosing the Premium-only access requirement and specifying the output includes OHLC, volume, and open interest, which is not otherwise communicated.
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 description is efficiently structured with a title line, use-case keywords, returns summary, plan note, and a clear Args list. It is slightly longer than the ideal but every section earns its place, and the parameter list is essential given the zero schema coverage.
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?
The tool is simple with only 3 parameters and an output schema exists. The description covers the data returned (OHLC, volume, open interest), the Premium requirement, and all parameters thoroughly. Minor omissions like timezone handling or date edge cases are not critical given the available output schema.
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 0%, so the description must fully explain parameters. It does so excellently: date format (YYYYMMDD or YYYY-MM-DD), category examples (Futures225, FuturesTOPIX) with 'omit for all', and contract_flag meaning (0=all, 1=front, 2=back). This adds complete meaning beyond the bare schema.
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 description clearly states the tool provides daily futures OHLC bars, listing specific contract types (日経先物, TOPIX先物, etc.) and explicitly distinguishes it from sibling tools like options and equities by the 'futures' keyword. The resource and data type are unambiguous.
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?
The description provides explicit 'Use for' keywords (先物, 日経先物, etc.) and notes the Premium plan requirement, giving clear context for when to invoke this tool. However, it does not explicitly mention when not to use it or name alternatives (e.g., the options tool), though sibling names imply this.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_derivatives_bars_daily_optionsARead-onlyIdempotent
Daily options OHLC bars with IV (オプション日足). Premium only.
Use for オプション, 日経オプション, TOPIXオプション, IV, implied volatility, オプション建玉. Returns OHLC, volume, open interest, and implied volatility. For Nikkei 225 options only (Standard+), use get_derivatives_bars_daily_options_225.
[Supported plans] Premium
Args: date: Date (YYYYMMDD or YYYY-MM-DD) (required) category: Product category (e.g. Options225 (日経225オプション), OptionsTOPIX (TOPIXオプション)). Omit for all categories. code: Issue code contract_flag: Contract month flag (0 = all, 1 = front month, 2 = back month)
| Name | Required | Description | Default |
|---|---|---|---|
| code | No | ||
| date | Yes | ||
| category | No | ||
| contract_flag | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, openWorld, idempotent, and non-destructive, so the description doesn't need to repeat these. It adds useful context about return fields (OHLC, volume, open interest, implied volatility) and the Premium plan restriction. No contradiction with annotations, but rate limits or pagination are not disclosed; still, annotations cover the main safety profile.
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 description is well-structured with a clear Args section, but the 'Use for' list introduces some redundancy (e.g., repeating IV and implied volatility, and 'Premium only' appears twice). Despite minor repetition, every section serves a purpose and the description remains reasonably concise.
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 the tool has an output schema, the description correctly omits detailed return formatting. It covers purpose, usage, parameters, returns, plan restriction, and a sibling alternative, making it complete for the tool's moderate complexity.
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 0%, but the description explains all four parameters in detail: date format and requiredness, category with concrete examples and omit-all instruction, code as issue code, and contract flag with value meanings. 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it returns daily options OHLC bars with IV, and explicitly names the sibling tool for Nikkei 225 options only, providing strong differentiation. The verb 'Returns' and resource 'options OHLC bars' are specific and unambiguous.
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?
Provides explicit usage guidance with a list of supported contexts (e.g., オプション, 日経オプション, TOPIXオプション, IV) and directly points to get_derivatives_bars_daily_options_225 for Nikkei 225 options only. Also notes the Premium plan requirement and category omission behavior.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_derivatives_bars_daily_options_225ARead-onlyIdempotent
Daily Nikkei 225 options OHLC bars (日経225オプション). Standard+.
Use for 日経225オプション, オプション日足 (simplified). Standard plan accessible. For full options data including TOPIX options and IV, use get_derivatives_bars_daily_options (Premium only) instead.
[Supported plans] Standard / Premium
Args: date: Date (YYYYMMDD or YYYY-MM-DD) (required)
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, so the safety profile is well covered. The description adds useful behavioral context by explaining this is the 'simplified' variant and listing supported plans (Standard/Premium). It does not contradict any annotation, and the plan accessibility note is valuable beyond what annotations provide.
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 description is compact, front-loaded with the core purpose, and includes plan info, an alternative reference, and an args list. The only minor issue is the ambiguous phrase 'Standard+' followed by 'Standard plan accessible', which creates slight redundancy and could confuse readers about the actual plan tier.
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?
This is a simple single-parameter read-only tool with an output schema available, so the description does not need to explain return values. It covers purpose, target instrument, plan accessibility, alternative usage, and the date parameter format. The 'Standard+' ambiguity is a minor gap, but overall the context is sufficient for correct invocation.
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?
The input schema has zero description coverage for the single 'date' parameter, but the description compensates by specifying the accepted date formats (YYYYMMDD or YYYY-MM-DD) and marking it required. This gives the agent clear syntax guidance that is not present in the schema alone.
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 description clearly identifies the tool as providing daily Nikkei 225 options OHLC bars, including the Japanese term 日経225オプション for disambiguation. It also distinguishes itself from the sibling get_derivatives_bars_daily_options by noting this is the simplified version for Nikkei 225 only, while the sibling covers TOPIX options and IV.
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?
The description explicitly states the intended use: 'Use for 日経225オプション, オプション日足 (simplified)' and notes it is accessible on the Standard plan. It also directs users needing full options data including TOPIX options and IV to get_derivatives_bars_daily_options (Premium only), providing a clear alternative and when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_dividend_yield_rankingARead-onlyIdempotent
High dividend yield stock ranking (高配当利回りランキング). All plans.
Use for 高配当, 配当利回り, dividend yield ranking, 高利回り銘柄. For single-stock yield see get_stock_briefing instead.
Default (include_trailing=False) matches Kabutan 予想配当利回りランキング: only stocks with a forward forecast (FDivAnn / NxFDivAnn) appear. Set include_trailing=True to also include trailing-DivAnn-only stocks. Dividend priority: NxFDivAnn (next-FY forecast, annual filings only) > FDivAnn (current-FY forecast) > DivAnn (trailing; only when include_trailing=True).
[Supported plans] Free / Light / Standard / Premium (cache-only, no API call)
Args: n: Stocks to return (1–100, default 20). min_yield: Minimum yield % (default 3.0). max_yield: Maximum yield % cap (default null). disc_months: Max disclosure age in months (default 18). include_trailing: Include DivAnn-only stocks (default False = Kabutan-equivalent). market: "prime" / "standard" / "growth" / "tokyo_pro" (default all). sector: S33 sector code filter (default all). date: Trading date (YYYY-MM-DD or YYYYMMDD, default latest cached).
| Name | Required | Description | Default |
|---|---|---|---|
| n | No | ||
| date | No | ||
| market | No | ||
| sector | No | ||
| max_yield | No | ||
| min_yield | No | ||
| disc_months | No | ||
| include_trailing | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, but the description adds significant behavioral context: the dividend priority order (NxFDivAnn > FDivAnn > DivAnn), the Kabutan-equivalent default behavior, the effect of include_trailing, and the cache-only/no-API-call plan note. This goes well beyond the structured annotations.
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 description is well-structured with clear sections and bullet-like argument definitions. Every sentence adds value: purpose, usage, behavior, plan support, and parameters. Despite its length, it remains focused and scannable, earning each line.
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 8 parameters, no required fields, and an existing output schema, the description covers all necessary aspects: purpose, usage, behavioral nuances, parameter details, and supported plans. It provides complete context 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must provide parameter meaning. It does so thoroughly: each parameter is listed with its purpose, default, and allowed values (e.g., n: 1–100, market enum, date format). This fully compensates for the missing schema descriptions.
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 description clearly states the tool's purpose: 'High dividend yield stock ranking (高配当利回りランキング)'. It specifies the resource (stocks) and the action (get ranking), and differentiates from siblings by pointing to get_stock_briefing for single-stock yield. The purpose is unambiguous and specific.
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?
Explicit usage guidance is provided: 'Use for 高配当, 配当利回り, dividend yield ranking, 高利回り銘柄.' and 'For single-stock yield see get_stock_briefing instead.' This gives clear when-to-use and an explicit alternative, exceeding the minimum requirement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_earnings_results_this_weekARead-onlyIdempotent
Earnings results actually disclosed in a date window, grouped by day (今週の決算実績). All plans.
Use for 今週発表された決算, 直近の決算結果, この期間に出た決算の中身, 決算実績一覧, earnings results this week. Default window = today-7d .. today (results are disclosed in the past). Each filing carries headline P&L (売上/営業利益/純利益/EPS), annual dividend, and — for quarterly filings — progress vs the full-year forecast. For the upcoming SCHEDULE use get_earnings_this_week; for one stock's full financials use get_fins_summary.
[Supported plans] Free / Light / Standard / Premium (cache-only, no API call) Note: Free plan results are delayed 12 weeks, so the recent window is empty for Free.
Args: date_from: Window start inclusive (YYYYMMDD or YYYY-MM-DD). Defaults to date_to - 7 days. date_to: Window end inclusive (YYYYMMDD or YYYY-MM-DD). Defaults to today.
| Name | Required | Description | Default |
|---|---|---|---|
| date_to | No | ||
| date_from | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint, idempotentHint, destructiveHint false), the description adds meaningful behavioral details: results are 'disclosed in the past', each filing carries 'headline P&L' and other specifics, it is 'cache-only, no API call', and Free plan results are 'delayed 12 weeks, so the recent window is empty for Free.' This enriches the safety and data-freshness profile.
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 description is structured into clear logical segments: purpose, usage examples, alternative tools, supported plans, and argument definitions. Every sentence contributes critical information without fluff, making it both compact and highly informative.
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 the tool's moderate complexity (2 optional params, output schema present), the description is complete. It covers purpose, usage, plans, edge cases (Free delay), defaults, and alternatives, leaving no significant gaps for an agent to invoke it correctly.
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?
The schema provides no parameter descriptions (coverage 0%), but the description compensates with an 'Args' section that explains date_from and date_to, including inclusive window, accepted formats (YYYYMMDD or YYYY-MM-DD), and defaults. This fully covers the parameter semantics.
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 description clearly states the tool's function: 'Earnings results actually disclosed in a date window, grouped by day', which is a specific verb+resource+scope. It also distinguishes from siblings by explicitly naming get_earnings_this_week for upcoming schedules and get_fins_summary for one stock's full financials.
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?
The description provides explicit usage contexts: 'Use for 今週発表された決算, 直近の決算結果...' and directly states alternatives: 'For the upcoming SCHEDULE use get_earnings_this_week; for one stock's full financials use get_fins_summary.' This is clear when-to-use and when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_earnings_this_weekARead-onlyIdempotent
Companies reporting earnings in a date window, grouped by day (今週の決算予定). All plans.
Use for 今週決算がある銘柄, 直近の決算スケジュール, この期間に決算発表する会社一覧, 決算前スクリーニング, earnings this week. Default window = today .. today+7d. Enriches each company with its name and 33-sector from the equities master. For a single stock's next earnings date use get_equities_earnings_calendar(code=...).
[Supported plans] Free / Light / Standard / Premium (cache-first; falls back to one live fetch when the today-or-later part of the window has no cached rows, or today's rows are missing, #523)
Args: date_from: Window start inclusive (YYYYMMDD or YYYY-MM-DD). Defaults to today. date_to: Window end inclusive (YYYYMMDD or YYYY-MM-DD). Defaults to date_from + 7 days.
| Name | Required | Description | Default |
|---|---|---|---|
| date_to | No | ||
| date_from | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly=true, openWorld=true, idempotent=true, and destructive=false. The description adds valuable context beyond that: cache-first behavior with a fallback to live fetch under specific conditions (#523), enrichment with company name and 33-sector data, and supported plans. This is exactly the kind of behavioral clarification that helps an agent predict side effects.
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 description is well-organized into clear sections: purpose, use cases, defaults, enrichment, alternative, plan/cache note, and args. It is front-loaded with the core function, and every sentence earns its place without redundancy. The length is appropriate for the amount of behavioral detail provided.
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 that an output schema exists, the description does not need to explain return values. It covers essential contextual aspects: supported plans, caching fallback behavior, data enrichment, and parameter defaults. The tool is simple (2 optional params, read-only, list-style), and the description leaves no critical gaps for invocation or interpretation.
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 0%, but the description fully compensates with an explicit Args section. It details both parameters with inclusive bounds, accepted formats (YYYYMMDD or YYYY-MM-DD), and defaults (today for date_from, date_from+7d for date_to). This is far more informative than the bare schema, which only shows string/null types.
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 description opens with a specific verb-resource phrase: 'Companies reporting earnings in a date window, grouped by day', and the Japanese '今週の決算予定' clarifies the weekly scope. It distinguishes from sibling get_equities_earnings_calendar by explicitly noting that tool is for a single stock's next earnings date.
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 lists concrete use cases in both Japanese and English ('今週決算がある銘柄', 'earnings this week') and explicitly points to an alternative for single-stock queries: 'For a single stock's next earnings date use get_equities_earnings_calendar(code=...).' This gives clear when-to-use and when-to-use-otherwise guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_equities_bars_dailyARead-onlyIdempotent
Per-stock or per-day OHLC bars (日足株価). All plans.
Use for 株価・日足・OHLC・終値・出来高・調整株価 (AdjC/AdjO etc.), 時価総額 (MktCap), 権利落ち (ExRT) queries. MktCap: market cap in millions of yen (unadjusted close x listed shares, corporate-action aware); null for ETF/ETN and non-trading days. ExRT: ex-rights corporate action on that date (1=split/free share allotment, 2=merger, 3=rights issue); null when none. For multi-stock bulk downloads use get_bulk_list (date-only queries are very slow). code only → full history; code+range → period; date only → all stocks on that date.
[Supported plans] Free / Light / Standard / Premium (API fallback on cache miss) Retention: Free=2y (12w delay), Light=5y, Standard=10y, Premium=all.
Args: code: Stock code (5 digits, e.g. 27800; 4-digit codes match ordinary shares only). date: Single date (YYYYMMDD or YYYY-MM-DD). date_from: Range start inclusive (YYYYMMDD or YYYY-MM-DD). date_to: Range end inclusive (YYYYMMDD or YYYY-MM-DD).
| Name | Required | Description | Default |
|---|---|---|---|
| code | No | ||
| date | No | ||
| date_to | No | ||
| date_from | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnly, idempotent, non-destructive), the description reveals important behavioral details: MktCap is null for ETF/ETN and non-trading days, ExRT encodes specific corporate action types, and data retention varies by plan. It also notes that date-only queries are slow and API fallback on cache miss, which are not conveyed by annotations alone.
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 description is dense yet well-organized, with clear sections for overview, usage, data nuances, plan limitations, and argument definitions. Every sentence adds value—no filler—and the structure makes it easy to scan, despite the length.
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 the tool's complexity (4 optional parameters, multiple usage modes), the description covers all critical aspects: parameter combinations, special field behaviors (MktCap, ExRT), plan retention limits, performance warnings, and alternatives. The presence of an output schema means return format details are not needed, so the description is complete.
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 0%, but the description fully compensates by defining each parameter's format and semantics (e.g., code: 5-digit stock code, date: YYYYMMDD or YYYY-MM-DD). It also explains the interaction between parameters (code only → full history, code+range → period, date only → all stocks), which is crucial for correct usage and not derivable from the schema.
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 description clearly identifies the tool as providing per-stock or per-day OHLC bars for equities, with a specific verb and resource. It also lists the exact query types it supports (株価, 日足, OHLC, etc.), making it distinct from sibling tools like get_equities_bars_minute or get_indices_bars_daily.
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?
The description explicitly states what queries to use this tool for and points to an alternative for bulk downloads: 'For multi-stock bulk downloads use get_bulk_list'. It also explains parameter combination patterns (code only, code+range, date only), giving clear context on when this tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_equities_bars_daily_amARead-onlyIdempotent
Today's morning session OHLC bars (前場株価). Premium only.
Use for 前場, 前場終値, 午前の株価, morning session OHLC, 前場引け. Updated around 12:00 JST; expires around 6:00 JST next day. For historical morning session data (MO/MH/ML/MC columns), use get_equities_bars_daily instead.
[Supported plans] Premium
Args: code: Stock code (5 digits, e.g. 27800; 4-digit codes match ordinary shares only). Omit to retrieve all stocks.
| Name | Required | Description | Default |
|---|---|---|---|
| code | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare safe operation (readOnlyHint=true, destructiveHint=false), so the description goes beyond by disclosing update and expiry times (updated around 12:00 JST; expires around 6:00 JST next day). This temporal behavior is not available through annotations or schema, adding genuine value. No contradiction.
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 description is well-organized into clear sections: purpose, usage keywords, update/expiry schedule, alternative tool, supported plan, and args. Every sentence contributes unique information, and the most critical facts (what it does, when to use it) are front-loaded. No redundancy.
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?
With only one optional parameter, an output schema present, and extensive annotations, the description covers all essential aspects: purpose, usage scenarios, schedule, alternative, plan restriction, and parameter semantics. It is complete 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, but the description fully compensates with a dedicated Args section. It explains the code parameter's format (5 digits), the special behavior for 4-digit codes (ordinary shares only), and the effect of omission (retrieve all stocks). This is more than sufficient for the single optional parameter.
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 description clearly states the tool returns 'Today's morning session OHLC bars' and includes Japanese equivalents, making the resource and verb explicit. It also distinguishes itself from the sibling tool get_equities_bars_daily by specifying that it is for current morning session data, not historical.
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 provides explicit usage contexts ('Use for 前場, 前場終値, 午前の株価, morning session OHLC, 前場引け') and names the alternative for historical data ('get_equities_bars_daily'). It also notes the premium plan requirement, which is a key access constraint.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_equities_bars_minuteARead-onlyIdempotent
Per-stock 1-minute OHLC bars (分足株価). Light+ with tick add-on.
Use for 分足, 1分足, 分足データ, minute-level price, intraday OHLC. Data is available for up to 2 years in the past.
[Supported plans] Light / Standard / Premium (requires minute/tick data add-on)
Args: code: Stock code (5 digits, e.g. 27800; 4-digit codes match ordinary shares only) date: Date (YYYYMMDD or YYYY-MM-DD) date_from: Start date for range query date_to: End date for range query
| Name | Required | Description | Default |
|---|---|---|---|
| code | No | ||
| date | No | ||
| date_to | No | ||
| date_from | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
While annotations already declare readOnly, openWorld, idempotent, and non-destructive hints, the description adds valuable operational context: data is only available for up to 2 years, a minute/tick data add-on is required on certain plans, and 4-digit codes match ordinary shares only. This goes beyond the structured annotations to guide correct usage.
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 description is compact and well-organized: a one-line core definition, usage hints, plan info, and a labeled Args section. Every sentence provides useful information without redundancy or filler, achieving high information density in a short space.
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 the tool's moderate complexity (4 optional parameters, output schema present), the description covers purpose, use case, data limits, parameter formats, and plan constraints. It integrates seamlessly with annotations and schema, leaving no significant gaps for an agent to select and invoke it correctly.
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?
The input schema has 0% description coverage, but the description fully compensates by documenting all four parameters: code format (5 digits, with special note on 4-digit codes), date formats (YYYYMMDD or YYYY-MM-DD), and clear definitions for date_from/date_to as range query endpoints. This is a complete semantic mapping with no ambiguity.
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 description clearly states the tool returns per-stock 1-minute OHLC bars, using the Japanese term 分足 to reinforce the granularity. It distinguishes itself from siblings like get_equities_bars_daily by explicitly focusing on minute-level intraday data, leaving no ambiguity about its function.
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?
The description provides explicit use cases ('Use for 分足, 1分足, 分足データ, minute-level price, intraday OHLC') and adds operational context like 2-year data availability and plan requirements. However, it does not explicitly name alternative tools (e.g., daily bars) or state when NOT to use this tool, which prevents a perfect score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_equities_earnings_calendarARead-onlyIdempotent
Find upcoming/past earnings announcement dates (決算発表日). Free / all plans.
Use for 決算発表, 決算日, 決算スケジュール, earnings calendar, 今週決算がある銘柄, 〇〇の次の決算はいつ, days to earnings, 決算前銘柄スクリーニング. Pair with get_markets_short_sale_report for 決算またぎ空売り残 / 踏み上げリスク screening. Light+: all listed issues incl. REITs, any fiscal year-end (daily_fetch sweeps /fins/earnings-date). Free: falls back to March/September fiscal-year issues only (the older /equities/earnings-calendar), since the newer endpoint's Free-tier window excludes the last 12 weeks by publication date. No-argument query defaults to a -7/+14 day window around today. The Light+ all-issues coverage described above assumes daily_fetch's /fins/earnings-date sweep has already populated the cache; a same-plan live-fallback still queries the narrower legacy endpoint (jquants-mcp#621). Falls back to one live fetch on a cache miss (code queries always; date queries only for today/future dates, #523; the no-argument query when nothing is scheduled from today onwards, #536).
[Supported plans] Free / Light / Standard / Premium
Args: date: Announcement date (YYYYMMDD or YYYY-MM-DD). Returns latest data when omitted. code: Stock code (5 digits, e.g. 72030; 4-digit codes are padded with trailing 0). When specified, searches accumulated data for the matching stock's earnings dates.
| Name | Required | Description | Default |
|---|---|---|---|
| code | No | ||
| date | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnly, idempotent), the description discloses fallback behavior (live fetch on cache miss), date-window defaults, plan-specific coverage differences, and internal dependencies (daily_fetch sweeps). This adds substantial context for the agent about how the tool behaves in various scenarios.
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 description is long but well-structured with clear sections and bullet points. It front-loads the purpose and use cases, then dives into technical details. While some internal references (e.g., jquants-mcp#621) are niche, they don't detract significantly from clarity. It could be slightly tightened, but every part adds value.
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 the tool's complexity (plan differences, fallbacks, multiple query modes) and the presence of an output schema, the description covers all necessary context: parameter semantics, plan limitations, default behavior, and edge cases (cache misses). It is complete for an agent to decide when and how to use it.
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 0%, and the description fully compensates by explaining the date format (YYYYMMDD or YYYY-MM-DD), code format (5 digits, trailing 0 padding), and the behavior when omitted (latest data for date, accumulated search for code). This is essential for correct invocation.
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 description clearly states the tool finds upcoming/past earnings announcement dates (決算発表日) and provides a list of query phrases, but it does not explicitly differentiate it from sibling tools like get_earnings_this_week or get_earnings_results_this_week, relying on the name and usage examples to distinguish.
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?
Provides explicit usage guidance: lists query phrases (決算発表, earnings calendar, etc.), pairs with get_markets_short_sale_report for specific screening, and explains plan-dependent behavior (Free vs Light+). This goes beyond a simple when-to-use by offering context and alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_equities_investor_typesARead-onlyIdempotent
Weekly trading value by investor type (投資家別売買動向). Light+.
Use for 投資家別売買, 外国人買い, 個人投資家動向, 信託銀行売買, investor flow. Updated weekly (typically Thursdays). Covers proprietary, brokered, foreign investors, individuals, trust banks, etc.
[Supported plans] Light / Standard / Premium
Args: section: Market section (e.g. TSEPrime, TSEStandard, TSEGrowth) date_from: Start date for range query (YYYYMMDD or YYYY-MM-DD) date_to: End date for range query (YYYYMMDD or YYYY-MM-DD)
| Name | Required | Description | Default |
|---|---|---|---|
| date_to | No | ||
| section | No | ||
| date_from | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds valuable behavioral context beyond annotations: the weekly update schedule (typically Thursdays), data coverage scope (proprietary, brokered, foreign investors, etc.), and supported plan levels (Light+).
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 description is compact and well-structured: a one-line summary, followed by use cases, update frequency, coverage list, plan info, and then argument descriptions. Every sentence earns its place; no wasted words or redundant repetition of schema fields.
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?
With an output schema present and annotations covering safety, the description need not detail return structures. It adequately covers the tool's purpose, usage context, update cadence, parameter semantics, and data coverage. It omits potential error conditions or timezone nuances, but those are lower-priority gaps.
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 0%, so the description fully compensates by explaining each parameter: section with examples (TSEPrime, TSEStandard, TSEGrowth) and date_from/date_to with format examples (YYYYMMDD or YYYY-MM-DD). This adds meaning the schema lacks, though it could be more exhaustive on valid section values.
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 description clearly identifies the resource: 'Weekly trading value by investor type' with a specific, non-generic data focus. It distinguishes itself from all sibling tools by specifying investor-type breakdowns, and the Japanese keywords ('投資家別売買動向') and use cases make the purpose unmistakable.
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?
The description explicitly lists use cases ('Use for 投資家別売買, 外国人買い, 個人投資家動向, 信託銀行売買, investor flow'), providing clear context for when to select this tool. It does not mention exclusions or alternatives, but the explicit use-case list is strong guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_equities_masterARead-onlyIdempotent
Listed stock master: company name, industry code, market segment (上場銘柄マスタ). Free.
Use for 銘柄名, 会社名, 業種, 市場区分, 上場銘柄一覧, S17/S33 sector code, ticker lookup. When parameters are omitted, returns all listed stocks for today.
[Supported plans] Free / Light / Standard / Premium
Args: code: Stock code (5 digits, e.g. 27800; 4-digit codes match ordinary shares only) date: Base date (YYYYMMDD or YYYY-MM-DD)
| Name | Required | Description | Default |
|---|---|---|---|
| code | No | ||
| date | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, and non-destructive behavior. The description adds useful behavioral details: no-parameter invocation returns all listed stocks for today, 4-digit codes match ordinary shares only, and accepted date formats. It does not mention pagination or rate limits, but it goes beyond the annotation baseline.
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 description is front-loaded with the core definition, followed by short use-case, default behavior, supported plan, and argument lines. Every line adds information without unnecessary prose, making it appropriately sized and well-structured.
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?
The tool is simple with two optional string parameters, a read-only operation, and an output schema present. The description covers purpose, parameters, default behavior, and supported plans, which 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides only defaulted nullable string properties with no descriptions, and schema coverage is 0%. The description fully compensates by explaining the 5-digit code format with an example, the 4-digit ordinary-share behavior, and the accepted date formats (YYYYMMDD or YYYY-MM-DD).
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 description clearly identifies the tool as a listed stock master ('上場銘柄マスタ') returning company name, industry code, and market segment, and lists concrete use cases such as ticker lookup and sector code lookup. This distinguishes it from sibling tools by emphasizing static master data rather than bars, search, or derivatives.
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 provides explicit 'Use for' scenarios (銘柄名, 会社名, 業種, 市場区分, ticker lookup) and states the default behavior when parameters are omitted. It does not name alternative tools or when-not-to-use conditions, so it stops short of a full 5, but the usage context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_fins_detailsARead-onlyIdempotent
Use only when individual BS/PL/CF line items are needed (Premium plan only).
For common financial metrics (EPS, BPS, revenue, profit, dividends, 業績予想), use
get_fins_summary instead — it is faster (cached) and available to all plans.
Returns detailed financial statement line items: balance sheet (BS), income statement (PL), and cash flow (CF), supporting both Japanese GAAP and IFRS. Either 'code' or 'date' must be specified.
[Supported plans] Premium
Args: code: Stock code (5 digits, e.g. 27800; 4-digit codes match ordinary shares only) date: Date (YYYY-MM-DD). Returns financial statements disclosed on that date.
| Name | Required | Description | Default |
|---|---|---|---|
| code | No | ||
| date | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so safety is covered. The description adds meaningful behavioral context: Premium plan restriction, the nuance that 4-digit codes match ordinary shares only, and that 'date' returns statements disclosed on that date. This goes beyond annotations, though it does not cover error conditions 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and front-loaded: it starts with the primary use case, then the alternative, then return details, then parameter constraints. Every sentence serves a purpose, and the Args section is concise yet complete. No fluff.
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 the tool's complexity (2 params with optional/nullable types, annotations, output schema), the description covers purpose, usage, parameters, plan restrictions, and GAAP/IFRS support. The output schema exists, so return format needs no description. It is complete for an agent to invoke correctly.
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 0%, but the description fully compensates with detailed Arg explanations: code format (5 digits, examples, 4-digit meaning), date format (YYYY-MM-DD) and semantics, plus the requirement that exactly one of them must be specified. This is essential and well done.
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 description states clearly that the tool returns detailed financial statement line items (BS, PL, CF) and explicitly distinguishes it from the sibling tool get_fins_summary, noting when to use which. It uses a specific verb 'returns' with a clear resource and scope.
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?
The description provides explicit usage guidance: 'Use only when individual BS/PL/CF line items are needed' and points to get_fins_summary for common metrics, including comparative advantages (faster/cached, available to all plans). It also states a precondition: 'Either code or date must be specified.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_fins_dividendARead-onlyIdempotent
Retrieve cash dividend data.
Returns dividend data including record date, ex-dividend date, dividend amount (forecast and actual), expected payment start date, and commemorative/special dividends.
[Supported plans] Premium
Args: code: Stock code (5 digits, e.g. 27800; 4-digit codes match ordinary shares only) date: Date (YYYYMMDD or YYYY-MM-DD) date_from: Start date for range query date_to: End date for range query
| Name | Required | Description | Default |
|---|---|---|---|
| code | No | ||
| date | No | ||
| date_to | No | ||
| date_from | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, and non-destructive behavior, lowering the burden. The description adds meaningful context beyond annotations: it lists the specific dividend fields returned, the Premium plan requirement, and a nuance about 4-digit codes matching ordinary shares only. It does not mention rate limits or error behavior, but the provided additions are valuable and consistent.
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 description is tightly written with no redundant phrases. It opens with a clear one-sentence purpose, follows with a compact list of return fields, a short plan note, and a structured Args block. Every sentence adds value, and the layout is easy to scan.
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, so return format is covered. However, the description does not clarify parameter relationships or requirements: all parameters are optional in the schema, but it is unclear whether a code and a date/range are expected, or if date excludes date_from/date_to. This ambiguity could lead an agent to invoke the tool with an invalid parameter combination. Given the tool complexity, a few more usage constraints would make it complete.
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 0%, so the description must fully compensate for parameter semantics. It does: code is explained with an example and a note about ordinary shares; date format is specified; date_from and date_to are clearly labeled as range query boundaries. Each parameter gains meaning beyond the bare schema, making this parameter documentation complete and self-sufficient.
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 description starts with a clear verb and resource: 'Retrieve cash dividend data.' It then lists the specific data fields returned (record date, ex-dividend date, dividend amount, expected payment start date, and commemorative/special dividends), which distinguishes it from other tools like get_dividend_yield_ranking or detect_consecutive_dividend_increase. The purpose is unambiguous and specific.
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?
The description implies when to use this tool (when you need cash dividend data for a stock) and provides constraints like '4-digit codes match ordinary shares only' and '[Supported plans] Premium'. However, it does not explicitly contrast this tool with alternatives or state when NOT to use it, such as pointing to get_dividend_yield_ranking for yields. The usage context is clear but lacks exclusionary guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_fins_summaryARead-onlyIdempotent
Use this first for any financial metric query (EPS, BPS, 売上, 利益, 配当, 業績予想). All plans.
Returns quarterly financials: revenue, operating profit, net income, EPS/BPS/CF, dividends, and earnings forecasts. FiscalPeriod label: "1Q"/"2Q"/"3Q"/"FY"/"Other"/null. Either code or date must be specified.
[Supported plans] Free / Light / Standard / Premium Note: Free plan data is delayed by 12 weeks.
Args: code: Stock code (5 digits, e.g. 27800; 4-digit codes match ordinary shares only). date: Date (YYYYMMDD or YYYY-MM-DD). Returns financials disclosed on that date.
| Name | Required | Description | Default |
|---|---|---|---|
| code | No | ||
| date | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior. The description adds useful context beyond these: supported plans, the 12-week delay for free plan data, and the requirement that either code or date must be specified. It also notes the FiscalPeriod label values, which helps set expectations. It does not mention rate limits or authentication, but the annotation coverage lowers the burden.
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 description is well-structured and front-loaded. The opening line is immediately actionable, followed by a compact list of return fields, then plan/delay notes, then parameter details. Every sentence provides necessary information without fluff or redundancy.
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 the tool has only two optional parameters, an output schema, and strong annotations, the description covers all essential aspects: what it returns, usage priority, data freshness caveats, and parameter formats. It explains the 'either code or date' constraint. Nothing critical is missing for an effective invocation.
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 0%, so the description carries the full burden. It does an excellent job: code is explained with format (5 digits), an example (27800), and a nuance (4-digit codes match ordinary shares only). Date is explained with accepted formats (YYYYMMDD or YYYY-MM-DD) and the meaning of the parameter. This goes far beyond the bare schema.
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 description opens with 'Use this first for any financial metric query' and immediately specifies the exact output: 'quarterly financials: revenue, operating profit, net income, EPS/BPS/CF, dividends, and earnings forecasts.' This clearly states the verb (returns), resource (quarterly financials), and scope, distinguishing it from siblings like get_fins_details or get_fins_dividend by positioning it as the entry point for financial metrics.
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?
The description gives an explicit usage instruction ('Use this first for any financial metric query') and lists concrete examples (EPS, BPS, 売上, 利益, 配当, 業績予想). It also mentions supported plans and the free-plan delay. However, it does not explicitly name alternatives or state when not to use this tool, so it stops short of the highest tier.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_indices_bars_dailyBRead-onlyIdempotent
Retrieve daily index bars (OHLC).
Returns daily OHLC and volume for indices including TOPIX, Nikkei 225, and Growth 250.
[Supported plans] Standard / Premium
Args: code: Index code (e.g. 0000 = TOPIX, 0010 = Nikkei 225) date: Date (YYYYMMDD or YYYY-MM-DD) date_from: Start date for range query date_to: End date for range query
| Name | Required | Description | Default |
|---|---|---|---|
| code | No | ||
| date | No | ||
| date_to | No | ||
| date_from | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint, covering the safety profile. The description adds context about the included indices and supported plans, but does not disclose behaviors such as default parameter handling, date range interactions, or pagination. This is adequate but not rich beyond annotations.
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 description is well-structured with a clear purpose statement, return summary, plan note, and Args section. It is concise, though the first two sentences are slightly redundant ('Retrieve daily index bars (OHLC)' and 'Returns daily OHLC and volume').
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?
The tool has 4 optional parameters and an output schema, so return values are covered by the schema. However, the description does not clarify how parameters interact (e.g., using date plus date_from/date_to) or what happens when no parameters are provided. It also doesn't mention which indices are returned if code is omitted. This leaves gaps for a flexible retrieval tool.
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 0%, so the description must compensate. It provides useful examples for code (e.g., 0000 = TOPIX) and date format (YYYYMMDD or YYYY-MM-DD), but leaves date_from and date_to with only names and no explanation of their relationship or usage. This partially compensates for the schema gap.
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 description clearly states the tool retrieves daily index bars (OHLC) and names specific indices (TOPIX, Nikkei 225, Growth 250), which distinguishes it from equity and derivative bar tools. However, it does not differentiate itself from the sibling get_indices_bars_daily_topix, leaving a minor 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?
The description implies usage for daily index bar data but provides no explicit guidance on when to use this tool versus alternatives like get_indices_bars_daily_topix or get_equities_bars_daily. It does mention supported plans, which is a usage constraint, but lacks when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_indices_bars_daily_topixARead-onlyIdempotent
Retrieve daily TOPIX bars (OHLC) with Tier 1 cache.
Returns daily OHLC data for TOPIX using a dedicated endpoint. Supports efficient incremental fetching via row-level (Tier 1) cache.
[Supported plans] Light / Standard / Premium
Args: date_from: Start date for range query (YYYYMMDD or YYYY-MM-DD) date_to: End date for range query (YYYYMMDD or YYYY-MM-DD)
| Name | Required | Description | Default |
|---|---|---|---|
| date_to | No | ||
| date_from | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, and non-destructive behavior. The description adds valuable context beyond annotations: row-level Tier 1 caching, efficient incremental fetching, and supported plans, which helps the agent understand performance and access constraints.
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 description is fairly concise but has redundancy: 'Retrieve daily TOPIX bars (OHLC)' and 'Returns daily OHLC data for TOPIX' convey the same information, and the cache detail is repeated. It could be tightened without losing meaning.
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 the output schema and annotations, the description covers the essential aspects: purpose, date formats, caching behavior, and plan restrictions. It is sufficiently complete for a simple two-parameter read-only tool.
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?
The schema has no parameter descriptions (0% coverage), but the description compensates fully by documenting date_from and date_to with formats (YYYYMMDD or YYYY-MM-DD) and their roles as start/end dates for the range query.
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 description clearly states the action and resource: 'Retrieve daily TOPIX bars (OHLC)' and mentions a dedicated endpoint, distinguishing it from generic index bar tools like get_indices_bars_daily.
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 provides clear context for when to use the tool: for daily TOPIX OHLC data with efficient incremental fetching via Tier 1 cache, and lists supported plans. However, it does not explicitly mention alternatives or when-not conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_market_briefingARead-onlyIdempotent
Daily market briefing: ADR, sector ranking, top movers, turnover, screener highlights (相場ブリーフィング).
Use for 相場ブリーフィング, 市場概況, 今日の相場, daily briefing, market summary. For sector valuation (PER/PBR) use get_sector_briefing instead. For single-stock detail use get_stock_briefing instead.
[Supported plans] Free / Light / Standard / Premium (cache-only, no API call)
Returns: summary (ADR 25d, TOPIX change, margin ratio), sector top/bottom n, sector_short_ratios (S33 空売り比率, Standard+), top movers, top turnover, screener highlights (52w/YTD highs/lows, volume surges, price limits, notable stocks by RSI14), value_screen (年安・割安・高配当・好決算 top n, null when unavailable), trend signals (distribution days, follow-through). Margin/short-ratio fields are null when those caches are absent.
Args: date: Trading date (YYYY-MM-DD or YYYYMMDD). sector_type: "s33" (default, 33 TSE sub-sectors) or "s17" (17 top-level). n: TopN size for movers/turnover sections (1–100, default 5).
| Name | Required | Description | Default |
|---|---|---|---|
| n | No | ||
| date | Yes | ||
| sector_type | No | s33 |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only and idempotent, but the description adds valuable context: 'cache-only, no API call' and plan restrictions (e.g., sector_short_ratios requires Standard+). It also discloses null behavior when caches are absent, which goes beyond the safety profile.
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?
Although lengthy, the description is highly structured with clear sections: purpose, usage, supports, returns, and args. Every sentence adds actionable information, and the essential purpose is front-loaded. No fluff or repetition.
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?
The description covers all parameters, return fields, plan limitations, and null behavior. With an output schema present, it doesn't need to detail every field but still provides a useful summary. It also explains when to use the tool, making it complete for an agent.
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 0%, so the description must document parameters. It does this thoroughly: 'date' with format examples, 'sector_type' with allowed values and default, and 'n' with range and default. This fully compensates for the bare schema.
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 description clearly states the tool's purpose as a daily market briefing covering ADR, sector ranking, top movers, turnover, and screener highlights. It uses a specific verb-resource combination and explicitly differentiates from sibling tools by naming get_sector_briefing and get_stock_briefing as alternatives for different use cases.
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?
Explicit usage guidance is provided: 'Use for 相場ブリーフィング, 市場概況, 今日の相場, daily briefing, market summary.' It also gives clear exclusions and alternatives: 'For sector valuation (PER/PBR) use get_sector_briefing instead. For single-stock detail use get_stock_briefing instead.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_markets_breakdownARead-onlyIdempotent
Retrieve market breakdown data (sell/buy by investor type per issue).
Returns daily buy/sell breakdown by investor type (proprietary, brokered, foreign, etc.) per individual issue.
[Supported plans] Premium
Args: code: Stock code (5 digits, e.g. 27800; 4-digit codes match ordinary shares only) date: Date (YYYYMMDD or YYYY-MM-DD) date_from: Start date for range query date_to: End date for range query
| Name | Required | Description | Default |
|---|---|---|---|
| code | No | ||
| date | No | ||
| date_to | No | ||
| date_from | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is clear. The description adds valuable context beyond annotations: return scope ('daily buy/sell breakdown'), data granularity ('per individual issue'), code format nuances (5-digit vs 4-digit), and date format examples. This enriches the behavioral understanding without contradiction.
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 description is well-structured with a summary, return details, plan support, and a parameter list. It is front-loaded with the main purpose. Minor redundancy exists between the first two sentences ('sell/buy by investor type' is repeated), but overall it remains concise and scannable.
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?
The description covers the tool's purpose, parameters, and a return overview. It does not explain how parameters interact (e.g., whether code is required, whether date and date_from/date_to are mutually exclusive, or if a valid query must include at least one date). Since an output schema exists, return structure is covered elsewhere, but input constraints remain ambiguous.
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 0%, meaning the JSON schema provides no property descriptions. The description fully compensates by explaining all four parameters with formats, examples, and edge cases ('4-digit codes match ordinary shares only'). This is essential for an agent to invoke the tool correctly.
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 description clearly states the tool's purpose: retrieving market breakdown data (sell/buy by investor type per issue). It uses a specific verb ('Retrieve') and resource, and distinguishes it from generic list tools by mentioning 'per individual issue' and investor types. However, it does not explicitly differentiate from the sibling tool 'get_equities_investor_types', which may cover similar ground.
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?
The description provides no explicit guidance on when to use this tool versus alternatives. It mentions a supported plan (Premium) but does not state any exclusions, prerequisites, or comparative use cases. The only implied usage is 'if you need market breakdown data', but no alternative is referenced or distinguished.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_markets_calendarARead-onlyIdempotent
Retrieve market calendar (trading days and holidays).
Returns trading calendar data including trading days, holidays, and half-day classifications. All data is returned in a single response without pagination.
[Supported plans] Free / Light / Standard / Premium
Args: hol_div: Filter by holiday division code (1 = trading day / 営業日, 0 = non-trading weekend / 週末, 3 = national holiday on weekday / 祝日; other values may exist) date_from: Start date for range query (YYYYMMDD or YYYY-MM-DD) date_to: End date for range query (YYYYMMDD or YYYY-MM-DD)
| Name | Required | Description | Default |
|---|---|---|---|
| date_to | No | ||
| hol_div | No | ||
| date_from | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, and non-destructive. The description adds meaningful behavioral traits beyond annotations: 'All data is returned in a single response without pagination' and the supported plans restriction. It does not contradict annotations, though it omits potential context like response size, timezone, or error behavior.
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 description is well-structured with a clear one-line summary, then supporting details. There is some redundancy between the first line ('trading days and holidays') and the second line ('trading days, holidays, and half-day classifications'), but overall it remains compact and each section serves a purpose.
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 the output schema and annotations, the description covers purpose, parameters, and a key behavioral detail (no pagination). It lacks explicit usage alternatives and date range inclusivity details, but for a read-only calendar tool with a rich output schema, it is sufficiently complete for an AI agent to invoke correctly.
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?
The input schema has no parameter descriptions (0% coverage), but the description compensates thoroughly. It explains hol_div codes (1, 0, 3) and exact date formats for date_from/date_to, which is essential for correct invocation. This goes well beyond the schema's bare type information.
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 description opens with a specific verb phrase 'Retrieve market calendar (trading days and holidays)' and clearly distinguishes it from earnings-oriented siblings like get_equities_earnings_calendar by focusing on trading days, holidays, and half-day classifications. No ambiguity about what resource is accessed.
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?
The description provides context such as 'All data is returned in a single response without pagination' and supported plans, but it does not explicitly state when to use this tool versus alternatives like earnings calendars. Usage is implied by the tool's name and content, but no direct alternatives or exclusions are mentioned, so it falls short of clear guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_markets_margin_alertARead-onlyIdempotent
Per-stock margin trading restriction status: 増担保規制・信用規制. Standard+ only.
Use for 追証, 規制銘柄, 増担保規制, 信用規制, margin restriction/alert. For margin balances (買残・売残・貸借倍率), use get_markets_margin_interest instead.
[Supported plans] Standard / Premium
Args: code: Stock code (5 digits, e.g. 27800) date: Date (YYYYMMDD or YYYY-MM-DD) date_from: Start date for range query date_to: End date for range query
| Name | Required | Description | Default |
|---|---|---|---|
| code | No | ||
| date | No | ||
| date_to | No | ||
| date_from | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already convey read-only, idempotent, and non-destructive behavior. The description adds valuable context by noting 'Standard+ only' and '[Supported plans] Standard / Premium', which is a plan restriction not present in annotations. It also clarifies the data scope (per-stock restriction status). This goes beyond annotation-only disclosure, though it doesn't describe every behavioral nuance (e.g., rate limits, pagination).
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 description is compact and well-organized: a one-line summary, a usage line with relevant keywords, an explicit alternative, a plan note, and a clear argument list. Every sentence adds value without redundancy. The structure makes it easy to scan.
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 the tool's moderate complexity (4 optional params, no nested objects) and the presence of an output schema, the description covers purpose, usage boundaries, plan requirements, and parameter formats. Minor gaps remain about parameter combinations and return value specifics, but the output schema handles return details. Overall, it 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With schema description coverage at 0%, the description compensates by covering all four parameters: code format ('5 digits, e.g. 27800'), date format ('YYYYMMDD or YYYY-MM-DD'), and the semantics of date_from/date_to as 'range query'. It would benefit from explaining how parameters interact (e.g., whether date vs. date range are mutually exclusive), but it provides substantial meaning beyond the bare schema.
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 description opens with a specific verb and resource: 'Per-stock margin trading restriction status: 増担保規制・信用規制.' It clearly indicates what data is returned and explicitly distinguishes itself from a related sibling tool by stating 'For margin balances... use get_markets_margin_interest instead.' This fully differentiates it from other tools.
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?
The description provides explicit when-to-use context ('Use for 追証, 規制銘柄, 増担保規制, 信用規制, margin restriction/alert') and names an alternative tool for a different use case ('For margin balances... use get_markets_margin_interest instead'). This leaves no ambiguity about which tool to select for margin alert versus balance queries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_markets_margin_interestARead-onlyIdempotent
Per-stock margin balance: 買残・売残・貸借倍率 (信用残). Standard+ only.
Use for 信用残, 買い残, 売り残, 貸借倍率, margin loan/short balance. For margin trading restrictions (追証・増担保規制), use get_markets_margin_alert instead.
When called with no parameters, returns a compact summary by default
(detail=False): {count, latest_date, source, note}. Pass detail=True
to retrieve full row data for the latest available date. Specifying any
filter parameter (code, date, etc.) always returns full data.
[Supported plans] Standard / Premium
Args: code: Stock code (5 digits, e.g. 27800) date: Date (YYYYMMDD or YYYY-MM-DD) date_from: Start date for range query date_to: End date for range query detail: When True and no filter params given, return full row data instead of summary.
| Name | Required | Description | Default |
|---|---|---|---|
| code | No | ||
| date | No | ||
| detail | No | ||
| date_to | No | ||
| date_from | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds significant behavioral context beyond annotations: default summary mode vs full data with detail=True, and that any filter parameter triggers full data. Annotations already declare read-only/idempotent, so the bar is lower; this description adds useful return-shape behavior.
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?
Well-structured with purpose line, usage guidance, behavior explanation, supported plans, and args list. Slightly dense but every sentence is informative; the length is justified by the tool's complexity.
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 read-only data tool with five optional parameters and an output schema, the description covers plan prerequisites, default vs detailed output, parameter formats, and the relevant sibling alternative. No significant gaps.
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 0%, so the description fully documents each parameter in Args: code (5-digit example), date formats, date_from/to, and detailed effect of detail flag. This entirely compensates for the schema gap.
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?
Clearly identifies the tool as returning per-stock margin balance (買残・売残・貸借倍率) with a specific resource. Distinguishes from sibling get_markets_margin_alert by stating that tool is for margin trading restrictions.
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?
Explicitly states when to use: 'Use for 信用残...' and provides alternative: 'For margin trading restrictions, use get_markets_margin_alert instead.' Also mentions 'Standard+ only' plan requirement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_markets_short_ratioARead-onlyIdempotent
TSE 33-sector short selling ratio (業種別空売り比率). Standard+ only.
Use for 業種別空売り比率, sector-level 空売り動向, industry short selling trends. Keyed by s33 sector code — not per stock. For per-stock institutional short positions (大量空売り残高), use get_markets_short_sale_report instead.
When called with no parameters, returns a compact summary by default
(detail=False): {count, latest_date, source, note}. Pass detail=True
to retrieve full row data for the latest available date. Specifying any
filter parameter (s33, date, etc.) always returns full data.
[Supported plans] Standard / Premium
Args: s33: TSE 33-sector code (e.g. 0050 = Fishery, Agriculture & Forestry) date: Date (YYYYMMDD or YYYY-MM-DD) date_from: Start date for range query date_to: End date for range query detail: When True and no filter params given, return full row data instead of summary.
| Name | Required | Description | Default |
|---|---|---|---|
| s33 | No | ||
| date | No | ||
| detail | No | ||
| date_to | No | ||
| date_from | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds significant behavioral context beyond the annotations: default returns a compact summary, detail=True returns full rows, and any filter parameter returns full data. It also discloses plan restrictions. No contradiction with annotations.
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 description is well-organized with a clear purpose statement, usage guidance, behavior explanation, plan note, and parameter list. Each section adds necessary information without redundancy, and the most important information is front-loaded.
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 the tool's moderate complexity, the description covers all essential aspects: what it does, when to use it, alternatives, parameter semantics, plan requirements, and default output behavior. The presence of an output schema means return value details are not required in the description.
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?
Although schema description coverage is 0%, the description's Args block thoroughly documents every parameter: s33 with an example code, date formats, range parameters, and the detail flag's conditional behavior. This fully compensates for the schema.
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 description clearly identifies the tool as retrieving the TSE 33-sector short selling ratio, with both English and Japanese labels. It explicitly distinguishes itself from the sibling tool get_markets_short_sale_report by contrasting sector-level vs per-stock data.
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 states when to use the tool ('Use for 業種別空売り比率, sector-level 空売り動向') and explicitly names the alternative tool for per-stock short positions. It also notes the plan requirement (Standard+ only) and explains the default vs detail behavior.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_markets_short_sale_reportARead-onlyIdempotent
Per-stock institutional short sale positions (大量空売り残高). Standard+ only.
Use for 大量空売り残高, 空売り残, institutional short positions, short squeeze screening. Positions disclosed weekly per institution. Pair with get_equities_earnings_calendar for 決算またぎ空売り残 / 踏み上げリスク screening. For sector-level short ratios (業種別空売り比率), use get_markets_short_ratio instead.
[Supported plans] Standard / Premium
Args: code: Stock code (5 digits, e.g. 27800) disc_date: Disclosure date (YYYYMMDD or YYYY-MM-DD) disc_date_from: Start disclosure date for range query disc_date_to: End disclosure date for range query calc_date: Calculation date (YYYYMMDD or YYYY-MM-DD)
| Name | Required | Description | Default |
|---|---|---|---|
| code | No | ||
| calc_date | No | ||
| disc_date | No | ||
| disc_date_to | No | ||
| disc_date_from | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, and openWorld. The description adds valuable context beyond that: 'Positions disclosed weekly per institution' (data cadence) and 'Standard+ only' (plan restriction). No contradictions. Minor gap: it doesn't mention pagination or response structure, but that's covered by output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured: opening purpose, usage guidance, plan note, and organized argument list. It's slightly verbose due to the args duplication (though necessary given schema coverage) and a minor redundancy in mentioning 'Standard+ only' twice. Overall it earns its length.
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 the tool's complexity (5 optional params, no required) and presence of an output schema, the description covers purpose, usage, alternatives, parameter formats, and plan restrictions. It doesn't clarify which parameter combinations are valid (e.g., range vs single date), but for a read-only look-up tool this is a minor gap.
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 has zero descriptions for its 5 parameters, but the description fully compensates by documenting each arg with format and example (e.g., 'code: Stock code (5 digits, e.g. 27800)', 'disc_date: Disclosure date (YYYYMMDD or YYYY-MM-DD)'). This provides the semantic meaning the schema lacks.
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 description clearly states the tool provides 'Per-stock institutional short sale positions (大量空売り残高)' with a specific verb and resource. It explicitly differentiates from the sibling tool 'get_markets_short_ratio' (sector-level short ratios), making its unique purpose unmistakable.
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?
The description gives explicit use cases ('Use for 大量空売り残高, 空売り残, institutional short positions, short squeeze screening'), names an alternative ('For sector-level short ratios... use get_markets_short_ratio instead'), and even suggests a pairing ('Pair with get_equities_earnings_calendar...'). This is exemplary guidance for tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_sector_briefingARead-onlyIdempotent
Return sector-level median PER, PBR, ROE, and margin ratio (業種別ブリーフィング). All plans.
Use for セクターバリュエーション・業種別PER/PBR・割安セクター・業種別信用倍率 queries. PER excludes net-loss stocks (EPS≤0); PBR excludes negative-book stocks. ROE does not exclude net-loss stocks -- neither the native ROE value (returned regardless of EPS sign) nor the EPS/BPS fallback (unlike PER's guard, it never required EPS>0) filters them out. See also get_market_briefing (market-wide), get_stock_briefing (single stock), get_sector_performance (騰落率).
[Supported plans] Free / Light / Standard / Premium (cache-only, no API call) Note: margin_ratio fields are null unless Standard/Premium margin cache is populated.
Args: sector_type: "s33" (default, 33 TSE sub-sectors) or "s17" (17 top-level sectors).
| Name | Required | Description | Default |
|---|---|---|---|
| sector_type | No | s33 |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, non-destructive, idempotent behavior. The description adds substantial context: cache-only with no API call, supported plans, margin_ratio null unless Standard/Premium cache is populated, and detailed PER/PBR/ROE exclusion rules. This goes far beyond the annotations.
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 description is structured into clear sections (purpose, usage, plan support, args) and every sentence carries relevant info. It is slightly dense but not wasteful; no filler. A 4 is appropriate as it is informative without being bloated.
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 single-parameter tool with an output schema, the description covers plan limitations, data nullability, filtering rules, and sibling references. It gives the agent complete enough context to decide when and how to invoke the tool correctly.
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?
The input schema provides no description for sector_type (0% coverage), but the description compensates fully by explaining the two possible values ('s33' default, 33 TSE sub-sectors; 's17' 17 top-level sectors). This gives the agent all necessary parameter context.
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?
Begins with a specific verb and resource: 'Return sector-level median PER, PBR, ROE, and margin ratio', which clearly states the tool's function. It distinguishes itself from siblings by explicitly naming get_market_briefing (market-wide), get_stock_briefing (single stock), and get_sector_performance (騰落率), making the purpose unmistakable.
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?
Provides explicit use cases ('Use for セクターバリュエーション・業種別PER/PBR・割安セクター・業種別信用倍率 queries') and lists alternative tools with their scopes. However, it lacks an explicit 'when-not' statement, though the context and alternatives clearly guide selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_sector_performanceARead-onlyIdempotent
Sector-level average price change ranking (業種別騰落率). All plans.
Use for 業種別騰落率, セクター別パフォーマンス, 業種別ランキング, sector performance. For sector valuation (PER/PBR) use get_sector_briefing instead. For full market briefing use get_market_briefing instead.
[Supported plans] Free / Light / Standard / Premium (cache-only, no API call)
Args: date: Trading date (YYYY-MM-DD or YYYYMMDD). sector_type: "s33" (default, 33 sub-sectors) or "s17" (17 top-level).
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | ||
| sector_type | No | s33 |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, and non-destructive. The description adds behavioral context: 'All plans' and 'cache-only, no API call', which informs the agent about data freshness and plan availability. While it doesn't detail return structure, the output schema covers that. This goes beyond annotations without contradiction.
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 description is compact and well-organized: purpose sentence, usage keywords, alternatives, plan info, then arg definitions. No wasted words; front-loaded with the core purpose.
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 simple read-only data tool with 2 parameters, the description covers purpose, exact use cases, alternatives, plan restrictions, cache behavior, and parameter formats. Combined with annotations and output schema, it is complete.
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 has only titles and defaults, with 0% coverage, so the description carries the full burden. It explains date format (YYYY-MM-DD or YYYYMMDD) and sector_type options ('s33' default, 's17') clearly, making both parameters fully understandable.
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 precisely: 'Sector-level average price change ranking' with Japanese equivalent, and distinguishes itself from get_sector_briefing (valuation) and get_market_briefing (full market briefing). The verb 'get' plus resource and the ranking nature are clear.
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?
Explicitly lists use cases (業種別騰落率, セクター別パフォーマンス, etc.) and provides alternatives for different needs: 'For sector valuation (PER/PBR) use get_sector_briefing instead. For full market briefing use get_market_briefing instead.' This is exemplary guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_stock_briefingARead-onlyIdempotent
One-page briefing for a single stock: price, financials, valuation, and margin (株式ブリーフィング). All plans.
Returns latest price, FY financials, PER/PBR/dividend yield, margin ratio, and sector short-sale ratio. PER null when EPS≤0. ROE null when EPS≤0 and no native ROE is cached; when a native ROE value is present it is returned regardless of EPS sign (a net-loss period can still report a native ROE). Margin fields null without Standard/Premium cache. See also get_sector_briefing, get_market_briefing.
[Supported plans] Free / Light / Standard / Premium (cache-only, no live API call)
Args: code: Stock code (5 digits, e.g. 27800; 4-digit codes match ordinary shares only).
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint, idempotentHint, destructiveHint), the description discloses important runtime behaviors: null conditions for PER, ROE, and margin fields, plus cache-only execution and plan-level support. This rich context goes far beyond the annotations and clarifies edge cases.
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 description is well-structured: a one-line purpose, then the return contents, edge-case details, supported plans, and argument explanation. Every sentence contributes necessary information without redundancy, making it both thorough and concise.
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 tool with one parameter and an output schema (not shown), the description covers the main return fields, null semantics, plan restrictions, code rules, and related briefing tools. It provides enough context for an agent to select and invoke the tool correctly without requiring additional lookup.
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?
The input schema provides only the parameter name and type with no description, so schema coverage is 0%. The description compensates fully by explaining the code format: 'Stock code (5 digits, e.g. 27800; 4-digit codes match ordinary shares only).' This gives complete semantic meaning for the single parameter.
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 description opens with 'One-page briefing for a single stock: price, financials, valuation, and margin,' clearly identifying the resource (a stock) and the deliverable (briefing). It distinguishes the tool by scope and explicitly references related siblings get_sector_briefing and get_market_briefing, making its purpose unambiguous.
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?
The description states it works for 'All plans' and provides input format rules (5-digit codes, 4-digit for ordinary shares), giving clear context for when to use it. However, it only says 'See also' without explicit when-not-to-use instructions or direct comparisons to alternatives, so it stops short of the highest bar.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_technical_indicatorsARead-onlyIdempotent
Compute technical indicators (SMA, Bollinger Bands, RSI) for a single stock (テクニカル指標). All plans.
Use for SMA・移動平均・ボリンジャーバンド・RSI queries on a specific stock. For charting use get_candlestick_data; for VWAP pressure use compare_close_vs_vwap. Supported: sma5, sma25, sma75, bb20 (→ bb20_mid/upper/lower ±2σ), rsi14. Null when not warmed up.
[Supported plans] Free / Light / Standard / Premium (API fallback on cache miss)
Args: code: Stock code (required). date: Single trading date (YYYYMMDD or YYYY-MM-DD). Overrides date_from/date_to. date_from: Range start inclusive (YYYYMMDD or YYYY-MM-DD). date_to: Range end inclusive (YYYYMMDD or YYYY-MM-DD). indicators: Indicator names list. Default ["sma5","sma25","bb20","rsi14"].
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | ||
| date | No | ||
| date_to | No | ||
| date_from | No | ||
| indicators | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, idempotent, non-destructive behavior. The description adds valuable context: results are null when not warmed up, supported plans include Free/Light/Standard/Premium, API fallback on cache miss, and the specific bb20 ±2σ convention. This goes beyond what the annotations alone provide.
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 description is well-organized into sections (usage, alternatives, supported indicators, plans, arguments) and is front-loaded with a clear summary. Slight redundancy exists ('All plans' repeated in the first line and later in [Supported plans]), but it remains efficient and scannable.
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?
The description is complete for a 5-parameter tool: it covers purpose, when to use, alternatives, parameter semantics, plan limitations, and edge-case behavior (null when not warmed up). An output schema exists, so returning detailed return values is not required, and the description still provides enough context for reliable invocation.
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?
Despite 0% schema description coverage, the description thoroughly explains every parameter: code is required, date overrides date_from/date_to, date formats are specified, range boundaries are inclusive, and indicators has a documented default list. This fully compensates for the missing schema descriptions.
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 description clearly identifies the tool's action ('Compute technical indicators') and its target resource ('a single stock'), naming specific indicators (SMA, Bollinger Bands, RSI). It also differentiates from siblings by directing charting queries to get_candlestick_data and VWAP pressure to compare_close_vs_vwap.
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 explicitly states when to use the tool ('Use for SMA・移動平均・ボリンジャーバンド・RSI queries on a specific stock') and names alternative tools for other use cases. It also clarifies supported plans and API fallback behavior, giving clear context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_top_moversARead-onlyIdempotent
Return top stocks by percentage price change on a given trading date.
Uses split-adjusted closing prices (AdjC) to compute change_pct = (today - prev) / prev * 100.
Args: date: Trading date in YYYY-MM-DD or YYYYMMDD format. direction: "up" for top gainers, "down" for top losers. Default: "up". n: Number of stocks to return (1–100). Default: 10.
Returns: dict with keys: - date: the requested trading date - previous_date: the comparison base date - direction: "up" or "down" - items: list of up to n dicts, each with: - code: stock code (5-digit) - close: today's closing price - prev_close: previous day's closing price - change_pct: percentage price change
| Name | Required | Description | Default |
|---|---|---|---|
| n | No | ||
| date | Yes | ||
| direction | No | up |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true. The description supplements this by explaining the split-adjusted price calculation, the formula, and the inclusion of previous_date in the return object. No contradictions and useful extra behavioral context.
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 description is concisely structured with a purpose statement, formula, Args list, and Returns list. Every sentence adds essential information without redundancy or verbosity.
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 read-only market data tool, the description covers input parameters, output keys, data types, and calculation logic. The return format is fully specified, and the context provided by annotations and sibling tool names further enriches the completeness.
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?
With 0% schema description coverage, the description fully documents all three parameters: date format (YYYY-MM-DD or YYYYMMDD), direction values ('up'/'down' with default), and n range (1-100 with default). It exactly compensates for the missing schema descriptions.
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 description clearly states it returns top stocks by percentage price change on a given trading date, with a specific verb and resource. This distinguishes it from related tools like get_top_volume and get_top_turnover_value.
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?
The description provides clear context for when to use this tool (when needing top gainers/losers by percentage change) but does not explicitly mention alternatives or when-not-to-use. This is sufficient for an agent to infer usage among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_top_turnover_valueARead-onlyIdempotent
Return top stocks by turnover value (売買代金ランキング) on a given date. All plans.
Use for 売買代金ランキング・売買代金・turnover・trading value queries. Ranks by price×volume (get_top_volume ranks by share count instead).
[Supported plans] Free / Light / Standard / Premium (cache-only, no API call)
Args: date: Trading date (YYYY-MM-DD or YYYYMMDD). n: Number of stocks to return (1–100). Default 10.
| Name | Required | Description | Default |
|---|---|---|---|
| n | No | ||
| date | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so the description doesn't need to re-state safety. It adds valuable context beyond annotations: 'cache-only, no API call' and supported plans (Free/Light/Standard/Premium), plus the ranking basis being price×volume. This is helpful behavioral information without contradicting the annotations.
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 description is well-structured and front-loaded, with the primary purpose in the first sentence, then usage guidance, ranking clarification, and arg details. Slight redundancy exists: 'All plans' and then '[Supported plans] Free / Light / Standard / Premium' repeat the same information. Minor, but keeps it from a perfect score.
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?
The tool is simple (2 params, output schema exists), and the description covers everything needed: what it returns, how it ranks, when to use it, parameter formats, and plan limitations. Combined with annotations (read-only, idempotent) and an output schema, the description is fully adequate for the agent to select and invoke this tool.
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 0%, so the description must fully explain parameters. It does this well: date format is specified as 'YYYY-MM-DD or YYYYMMDD', and n is documented with range and default ('1–100, Default 10'). This adds meaning the schema lacks.
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 description uses a specific verb and resource: 'Return top stocks by turnover value on a given date.' It clearly distinguishes itself from the sibling tool get_top_volume by stating 'Ranks by price×volume (get_top_volume ranks by share count instead).' This makes the tool's unique purpose unmistakable.
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?
The description provides explicit usage direction: 'Use for 売買代金ランキング・売買代金・turnover・trading value queries.' It also names the alternative tool for a different metric (get_top_volume for share count), giving clear when-to-use and when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_top_volumeARead-onlyIdempotent
Return top stocks by trading volume on a given date.
Args: date: Trading date in YYYY-MM-DD or YYYYMMDD format. n: Number of stocks to return (1–100). Default: 10.
Returns: dict with keys: - date: the requested trading date - items: list of up to n dicts, each with: - code: stock code (5-digit) - volume: number of shares traded - turnover_value: trading value in yen - close: closing price
| Name | Required | Description | Default |
|---|---|---|---|
| n | No | ||
| date | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so safety is covered. The description adds valuable behavioral context: accepted date formats, the n parameter range and default, and the exact return structure (up to n items, each with code, volume, turnover_value, close). This exceeds minimal expectations, though it could mention potential edge cases like non-trading dates.
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 description is well-structured: a one-sentence summary followed by a clear Args/Returns breakdown. It is concise, front-loaded, and every sentence adds value. No unnecessary repetition.
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 simple tool with two parameters and an output schema, the description provides sufficient detail for an agent to select and invoke it correctly. It explains the return format and parameter constraints. Minor gaps include no mention of error behavior or when to use alternatives, but these are not critical given the annotations and simplicity.
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 0%, so the description carries the full burden. It fully explains both parameters: date format (YYYY-MM-DD or YYYYMMDD) and n (range 1-100, default 10). This is complete and unambiguous.
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 description clearly states the tool's purpose: 'Return top stocks by trading volume on a given date.' It uses a specific verb, identifies the resource (stocks by volume), and includes the temporal scope. This distinguishes it from siblings like get_top_turnover_value (turnover value) and detect_volume_surge.
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?
The description provides clear context for use: it is for retrieving a ranked list of the most traded stocks on a specific date. However, it does not explicitly mention when not to use it or list alternatives, such as using get_top_turnover_value for value-based rankings. The context is clear but lacks explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_valuation_rankingARead-onlyIdempotent
Rank listed stocks by PER or PBR valuation multiple (バリュエーションランキング). All plans.
Use for 割安株, PER/PBRランキング, 低PER, 低PBR, バリュー株スクリーニング, cheapest stocks by PER/PBR. Default = 20 cheapest by PER (ascending). PER excludes net-loss stocks (EPS≤0); PBR excludes negative-book (BPS≤0). For sector medians use get_sector_briefing; for one stock use get_stock_briefing; for dividend yield use get_dividend_yield_ranking.
[Supported plans] Free / Light / Standard / Premium (cache-only, no API call)
Args: metric: Ranking metric — "per" (default) or "pbr". Both ratios are returned per item. n: Stocks to return (1–100, default 20). ascending: True (default) = cheapest first; False = most expensive first. min_value: Minimum metric value filter (default null). max_value: Maximum metric value filter (default null). market: "prime" / "standard" / "growth" / "tokyo_pro" (default all). sector: S33 sector code filter (default all). disc_months: Max FY-disclosure age in months (default 18) — drops stale financials.
| Name | Required | Description | Default |
|---|---|---|---|
| n | No | ||
| market | No | ||
| metric | No | per | |
| sector | No | ||
| ascending | No | ||
| max_value | No | ||
| min_value | No | ||
| disc_months | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only/idempotent/non-destructive. The description adds meaningful context: cache-only behavior, supported plans, exclusion of net-loss and negative-book stocks, and the disc_months stale-financial filter. Slightly held back from 5 because it doesn't mention potential output size limits or response format variants, but output schema exists to cover that.
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 description is well-organized: it starts with purpose, then use cases, exclusions, alternatives, plan support, and a structured Args list. Every sentence adds value, and the structure makes it easy to scan. No redundant fluff.
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 the tool's complexity (8 optional params, many sibling tools), the description covers purpose, usage, alternatives, behavioral nuances, and parameter semantics. An output schema exists, so the lack of a return-value section is acceptable. The inclusion of plan restrictions and cache behavior adds operational completeness.
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 0%, yet the description fully documents all 8 parameters with defaults, allowed values, and behavioral meaning (e.g., ascending order, min/max filters, market options, sector codes, disclosure-age cutoff). This completely compensates for the schema's lack of parameter descriptions.
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 description clearly states the tool ranks listed stocks by PER or PBR valuation multiple, with specific examples of intended use cases and metrics. It also distinguishes itself by naming alternative tools for related but distinct 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?
Explicit guidance on when to use this tool (for 割安株, PER/PBR ranking, screening) and when not to use it (use get_sector_briefing for sector medians, get_stock_briefing for single stocks, get_dividend_yield_ranking for dividend yield). This is exactly the kind of direct alternative mapping the dimension asks for.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_value_stock_screenARead-onlyIdempotent
Screen value stocks near their 52-week low with high forward dividend yield and a profit-increase forecast (年安・割安・高配当・好決算スクリーニング). All plans.
Use for 年安 割安 高配当 好決算, 年安圏の割安高配当株, バリュー株総合スクリーニング, value stocks near 52-week low, undervalued high-dividend profit-growth screen. ALL criteria must hold: close within near_low_pct % of the split-adjusted 52-week low (or a fresh 52w low touched that day), PER < max_per AND PBR < max_pbr (latest FY EPS/BPS, split-adjusted), forward dividend yield
= min_yield % (NxFDivAnn > FDivAnn priority, same as get_dividend_yield_ranking), and — by default — a forward net-profit forecast above the latest FY actual (NxFNp/FNP > NP = 増益予想). REITs are excluded (different accounting semantics; use get_dividend_yield_ranking for REIT yields). For a single criterion use get_valuation_ranking / get_dividend_yield_ranking / detect_52w_high_low. Included in get_market_briefing as the value_screen section. Each item also carries margin_ratio (信用倍率 = LongVol/ShrtVol, latest weekly margin interest) and margin_date — null on Free/Light plans or when the stock has no margin data.
[Supported plans] Free / Light / Standard / Premium (cache-only, no API call)
Args: n: Stocks to return (1–100, default 20). near_low_pct: Max % distance of close above the 52-week low (0–100, default 5.0). max_per: PER upper bound, exclusive (default 15.0). Net-loss stocks (EPS<=0) never match. max_pbr: PBR upper bound, exclusive (default 1.0). Negative-book stocks (BPS<=0) never match. min_yield: Minimum forward dividend yield % (default 3.5). require_profit_increase: Require forward net profit > latest FY actual, both disclosed (default True). disc_months: Max disclosure age in months for financials and dividend forecasts (default 18). market: "prime" / "standard" / "growth" / "tokyo_pro" (default all). sector: S33 sector code filter (default all). date: Trading date (YYYY-MM-DD or YYYYMMDD, default latest cached).
| Name | Required | Description | Default |
|---|---|---|---|
| n | No | ||
| date | No | ||
| market | No | ||
| sector | No | ||
| max_pbr | No | ||
| max_per | No | ||
| min_yield | No | ||
| disc_months | No | ||
| near_low_pct | No | ||
| require_profit_increase | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses many behavioral details beyond annotations: all criteria must hold, dividend-yield priority rule (NxFDivAnn > FDivAnn), REITs excluded, margin_ratio/margin_date null on Free/Light plans, cache-only invocation, and edge cases like net-loss or negative-book stocks never matching. These add significant context beyond the read-only and idempotent hints. No contradiction with annotations.
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 description is long but highly structured: summary sentence, keyword aliases, detailed criteria, exclusions, plan notes, and an Args section. Every sentence adds value and the organization makes it easy to scan even with its length.
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 10-parameter screen with no schema descriptions, the description is remarkably complete: it explains all criteria, defaults, edge cases, plan limits, and output nuances like margin_ratio null behavior. An output schema exists, so return values are covered; the description fills all other contextual gaps.
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?
The input schema has 0% description coverage, but the description contains a full Args block explaining every parameter with defaults, ranges, and edge-case semantics (e.g., 'Net-loss stocks (EPS<=0) never match'). This fully compensates for the schema's lack of descriptions, adding meaning far beyond the property titles.
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 description opens with a specific verb and resource: 'Screen value stocks near their 52-week low with high forward dividend yield and a profit-increase forecast.' It clearly lists criteria and explicitly distinguishes itself from sibling tools (e.g., 'For a single criterion use get_valuation_ranking / get_dividend_yield_ranking / detect_52w_high_low') and notes it is included in get_market_briefing.
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?
Provides explicit usage guidance: Japanese/English keyword aliases, a direct statement that single-criterion alternatives should be used, REIT exclusion with a pointer to get_dividend_yield_ranking, and supported plan information. This is far beyond a vague 'use when you need...' statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
health_checkARead-onlyIdempotent
Check server health, API key configuration, and cache readiness.
Offloaded to a worker thread (see _health_check_impl): the body can
trigger the slow lazy cache initialization (connect + migrations), and
the official mcp SDK — unlike the standalone fastmcp package this server
used to run on — invokes sync tool bodies directly on the event loop
rather than in a worker thread, so an explicit asyncio.to_thread
offload is required here to keep that work off the loop. Sharing the
SQLite connection with the loop from that thread is what caused #537;
the store's write lock, not this offload, is what makes it safe.
Call this at session start to confirm cache.db has finished loading before issuing detect_* or cache_status — the first call after server start may take 10–60 seconds while the cache initialises lazily. After a tool-call timeout, use this to distinguish a transient cache-loading delay from a permanent failure.
Returns server version, API key status, active plan, status
(healthy / degraded), cache_integrity and cache_ready.
status is degraded only when the integrity check reports a failure;
there is no error state, since this call does no I/O that can fail.
cache_integrity (ok / pending / not-checked / failed: /
error: ) is the integrity check's own result. The last two carry a
detail string appended to the prefix, so test them with startswith,
not ==. cache_ready is a boolean shorthand: true only when
cache_integrity is exactly "ok".
In multi-user mode, returns the authenticated user's plan.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds rich behavioral context beyond annotations: offloaded to a worker thread due to SDK event-loop behavior, potential 10-60s first-call delay from lazy cache initialization, no error state, meaning of status/cache_integrity/cache_ready values, and multi-user plan behavior. This far exceeds the read-only/idempotent annotation hints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Although lengthy, the description is densely informative and well-structured. It opens with a concise one-sentence purpose, then adds essential technical rationale (thread offload, SDK behavior, issue #537), usage timing, and detailed return-value semantics. Every sentence earns its place and no filler exists.
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 the tool's moderate complexity, non-existent parameters, and rich output schema, the description fully covers all relevant context: what it returns, how to interpret status fields, behavior under multi-user mode, and latency expectations. It leaves no significant gaps for an agent to invoke or interpret results correctly.
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?
The tool has zero parameters, and the schema properties object is empty, so there is no parameter semantics to add. Per the baseline for 0 parameters, a score of 4 is appropriate; the description cannot add meaning beyond what the schema provides because there is nothing to explain.
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 description clearly states the tool checks server health, API key configuration, and cache readiness. It distinguishes itself from sibling cache_status by explaining it confirms cache.db has finished loading and also reports server version, API key status, active plan, and integrity details.
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?
Explicit guidance is given: call at session start before detect_* or cache_status, and use after a tool-call timeout to distinguish transient cache-loading delay from permanent failure. This effectively differentiates when to use health_check versus cache_status or other tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
register_api_keyADestructiveIdempotent
Register or update your J-Quants API key (multi-user mode).
⚠️ SECURITY WARNING: The API key is transmitted in plaintext via the MCP protocol and may be logged by the MCP client or LLM provider. Treat the key as exposed to every hop in that chain, and rotate it from the J-Quants console if that is not acceptable.
Stores your J-Quants API key encrypted in the server's user database, associated with your OAuth identity. The server probes plan-specific J-Quants endpoints to auto-detect the plan (free / light / standard / premium) and stores it alongside the key. Subsequent tool calls will automatically use this key and the detected plan's rate limits and date-range restrictions.
This tool requires OAuth 2.1 authentication and server-side encryption (MCP_ENCRYPTION_KEY) to be configured.
Args: api_key: Your J-Quants API key (refresh token from the J-Quants portal).
| Name | Required | Description | Default |
|---|---|---|---|
| api_key | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes far beyond annotations by disclosing a security warning (plaintext transmission), encryption at rest, plan auto-detection, and prerequisites (OAuth 2.1, MCP_ENCRYPTION_KEY). It also notes that calling again updates the key (idempotent) and that rate limits and date-range restrictions are applied. This adds significant behavioral context beyond the annotations without any contradiction.
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 description is long but structured: purpose, security warning, behavior, requirements, and parameter definition. Each section adds necessary detail, and the most important information (purpose and security) is front-loaded. It could be slightly more concise, but the complexity justifies the length.
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?
The description covers all essential context: purpose, side effects (storage, plan detection), prerequisites (OAuth, encryption), and behavioral consequences (affected rate limits). The output schema is present, so return values need no description. For a setup tool with security implications, this is comprehensive.
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?
The description explains that api_key is 'Your J-Quants API key (refresh token from the J-Quants portal)', providing essential semantics beyond the schema's minimal title 'Api Key'. It clarifies what the parameter is and where to obtain it, fully covering the only parameter despite schema coverage of 0%.
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 description clearly states the tool's purpose: 'Register or update your J-Quants API key'. This is a specific verb+resource combination, and it distinguishes from siblings like delete_api_key. The multi-user mode and OAuth association add context, making the tool's role unambiguous.
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?
The description explains that this tool is required for subsequent tool calls to work ('Subsequent tool calls will automatically use this key'), which implies when to use it. However, it does not explicitly mention alternatives or when not to use it, though the sibling delete_api_key exists. The context is clear, but explicit exclusions are missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_equitiesARead-onlyIdempotent
Search for listed stocks by company name (reverse lookup: 会社名 → コード).
Use when the user knows a company name but not the stock code — e.g. "住友商事 のコードは?" or "トヨタ関連銘柄を調べて". Performs a case-insensitive partial match against both the Japanese name (CoName) and English name (CoNameEn) fields in the equities master cache.
Reads entirely from the local equities_master Tier 1 cache (no API call).
Returns an empty list when the cache has never been populated.
[Supported plans] Free / Light / Standard / Premium [Source] equities_master Tier 1 cache (no API call)
Args: name: Partial or full company name to search for (e.g. "住友商事", "トヨタ", "Sumitomo"). Case-insensitive; matches anywhere in the name.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (readOnlyHint, idempotentHint), the description discloses that it reads from a local cache with no API call, and that it returns an empty list when the cache is unpopulated. These are valuable behavioral details not captured by annotations.
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 description is front-loaded with a clear purpose and usage guidance, but contains minor redundancy — the 'no API call' detail is repeated in the prose and again in the [Source] line. Still, it remains compact and well-structured.
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 single-parameter search tool, the description covers the purpose, use case, matching behavior, source, and edge case (empty cache). The output schema exists, so no need to spell out return shape here. It is complete for an agent to select and invoke.
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?
With 0% schema description coverage, the description's Args section fully compensates by explaining the 'name' parameter — partial/full matching, case-insensitivity, and examples in Japanese and English. This adds meaning beyond the raw schema.
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 description clearly states the tool searches for listed stocks by company name, using a reverse lookup (company name to code). It provides concrete examples and distinguishes this from sibling tools that retrieve market data, making its purpose unambiguous.
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?
The description explicitly says 'Use when the user knows a company name but not the stock code' with illustrative queries. It doesn't explicitly name alternatives or when-not-to-use, but the instruction is clear enough to guide selection.
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.
55 tool updates
v0.54.0- Changed
cache_clear4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / table / titleAdded value: +"Table" - added
Input schema / titleAdded value: +"cache_clearArguments" - added
Output schema / titleAdded value: +"cache_clearDictOutput"
- Changed
cache_status3 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / titleAdded value: +"cache_statusArguments" - added
Output schema / titleAdded value: +"cache_statusDictOutput"
- Changed
compare_close_vs_vwap7 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / code / titleAdded value: +"Code" - added
Input schema / properties / date / titleAdded value: +"Date" - added
Input schema / properties / date_from / titleAdded value: +"Date From" - added
Input schema / properties / date_to / titleAdded value: +"Date To" - added
Input schema / titleAdded value: +"compare_close_vs_vwapArguments" - added
Output schema / titleAdded value: +"compare_close_vs_vwapDictOutput"
- Changed
delete_api_key3 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / titleAdded value: +"delete_api_keyArguments" - added
Output schema / titleAdded value: +"delete_api_keyDictOutput"
- Changed
detect_52w_high_low8 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / code / titleAdded value: +"Code" - added
Input schema / properties / date / titleAdded value: +"Date" - added
Input schema / properties / detail / titleAdded value: +"Detail" - added
Input schema / properties / min_prior_sessions / titleAdded value: +"Min Prior Sessions" - added
Input schema / properties / window_sessions / titleAdded value: +"Window Sessions" - added
Input schema / titleAdded value: +"detect_52w_high_lowArguments" - added
Output schema / titleAdded value: +"detect_52w_high_lowDictOutput"
- Changed
detect_52w_high_low_range9 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / code / titleAdded value: +"Code" - added
Input schema / properties / date_from / titleAdded value: +"Date From" - added
Input schema / properties / date_to / titleAdded value: +"Date To" - added
Input schema / properties / detail / titleAdded value: +"Detail" - added
Input schema / properties / min_prior_sessions / titleAdded value: +"Min Prior Sessions" - added
Input schema / properties / window_sessions / titleAdded value: +"Window Sessions" - added
Input schema / titleAdded value: +"detect_52w_high_low_rangeArguments" - added
Output schema / titleAdded value: +"detect_52w_high_low_rangeDictOutput"
- Changed
detect_consecutive_dividend_increase5 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / as_of_date / titleAdded value: +"As Of Date" - added
Input schema / properties / min_years / titleAdded value: +"Min Years" - added
Input schema / titleAdded value: +"detect_consecutive_dividend_increaseArguments" - added
Output schema / titleAdded value: +"detect_consecutive_dividend_increaseDictOutput"
- Changed
detect_distribution_days7 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / date / titleAdded value: +"Date" - added
Input schema / properties / min_dist_days / titleAdded value: +"Min Dist Days" - added
Input schema / properties / sigma_multiplier / titleAdded value: +"Sigma Multiplier" - added
Input schema / properties / window_sessions / titleAdded value: +"Window Sessions" - added
Input schema / titleAdded value: +"detect_distribution_daysArguments" - added
Output schema / titleAdded value: +"detect_distribution_daysDictOutput"
- Changed
detect_follow_through_day6 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / date / titleAdded value: +"Date" - added
Input schema / properties / rally_start / titleAdded value: +"Rally Start" - added
Input schema / properties / sigma_multiplier / titleAdded value: +"Sigma Multiplier" - added
Input schema / titleAdded value: +"detect_follow_through_dayArguments" - added
Output schema / titleAdded value: +"detect_follow_through_dayDictOutput"
- Changed
detect_price_change4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / date / titleAdded value: +"Date" - added
Input schema / titleAdded value: +"detect_price_changeArguments" - added
Output schema / titleAdded value: +"detect_price_changeDictOutput"
- Changed
detect_price_limit6 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / code / titleAdded value: +"Code" - added
Input schema / properties / date / titleAdded value: +"Date" - added
Input schema / properties / detail / titleAdded value: +"Detail" - added
Input schema / titleAdded value: +"detect_price_limitArguments" - added
Output schema / titleAdded value: +"detect_price_limitDictOutput"
- Changed
detect_volume_surge8 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / baseline_days / titleAdded value: +"Baseline Days" - added
Input schema / properties / code / titleAdded value: +"Code" - added
Input schema / properties / date / titleAdded value: +"Date" - added
Input schema / properties / detail / titleAdded value: +"Detail" - added
Input schema / properties / multiplier / titleAdded value: +"Multiplier" - added
Input schema / titleAdded value: +"detect_volume_surgeArguments" - added
Output schema / titleAdded value: +"detect_volume_surgeDictOutput"
- Changed
detect_ytd_high_low7 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / code / titleAdded value: +"Code" - added
Input schema / properties / date / titleAdded value: +"Date" - added
Input schema / properties / detail / titleAdded value: +"Detail" - added
Input schema / properties / min_prior_sessions / titleAdded value: +"Min Prior Sessions" - added
Input schema / titleAdded value: +"detect_ytd_high_lowArguments" - added
Output schema / titleAdded value: +"detect_ytd_high_lowDictOutput"
- Changed
detect_ytd_high_low_range8 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / code / titleAdded value: +"Code" - added
Input schema / properties / date_from / titleAdded value: +"Date From" - added
Input schema / properties / date_to / titleAdded value: +"Date To" - added
Input schema / properties / detail / titleAdded value: +"Detail" - added
Input schema / properties / min_prior_sessions / titleAdded value: +"Min Prior Sessions" - added
Input schema / titleAdded value: +"detect_ytd_high_low_rangeArguments" - added
Output schema / titleAdded value: +"detect_ytd_high_low_rangeDictOutput"
- Changed
get_advance_decline_ratio5 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / date / titleAdded value: +"Date" - added
Input schema / properties / period / titleAdded value: +"Period" - added
Input schema / titleAdded value: +"get_advance_decline_ratioArguments" - added
Output schema / titleAdded value: +"get_advance_decline_ratioDictOutput"
- Changed
get_bulk_download_url4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / key / titleAdded value: +"Key" - added
Input schema / titleAdded value: +"get_bulk_download_urlArguments" - added
Output schema / titleAdded value: +"get_bulk_download_urlDictOutput"
- Changed
get_bulk_list4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / endpoint / titleAdded value: +"Endpoint" - added
Input schema / titleAdded value: +"get_bulk_listArguments" - added
Output schema / titleAdded value: +"get_bulk_listDictOutput"
- Changed
get_candlestick_data8 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / adjusted / titleAdded value: +"Adjusted" - added
Input schema / properties / code / titleAdded value: +"Code" - added
Input schema / properties / from_date / titleAdded value: +"From Date" - added
Input schema / properties / indicators / titleAdded value: +"Indicators" - added
Input schema / properties / to_date / titleAdded value: +"To Date" - added
Input schema / titleAdded value: +"get_candlestick_dataArguments" - changed
Output schema / (root)Previous value: -{ - "additionalProperties": true, - "type": "object" -}New value: +null
- Changed
get_comparison_chart_data8 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / codes / titleAdded value: +"Codes" - added
Input schema / properties / from_date / titleAdded value: +"From Date" - added
Input schema / properties / labels / titleAdded value: +"Labels" - added
Input schema / properties / mode / titleAdded value: +"Mode" - added
Input schema / properties / to_date / titleAdded value: +"To Date" - added
Input schema / titleAdded value: +"get_comparison_chart_dataArguments" - changed
Output schema / (root)Previous value: -{ - "additionalProperties": true, - "type": "object" -}New value: +null
- Changed
get_derivatives_bars_daily_futures6 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / category / titleAdded value: +"Category" - added
Input schema / properties / contract_flag / titleAdded value: +"Contract Flag" - added
Input schema / properties / date / titleAdded value: +"Date" - added
Input schema / titleAdded value: +"get_derivatives_bars_daily_futuresArguments" - added
Output schema / titleAdded value: +"get_derivatives_bars_daily_futuresDictOutput"
- Changed
get_derivatives_bars_daily_options7 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / category / titleAdded value: +"Category" - added
Input schema / properties / code / titleAdded value: +"Code" - added
Input schema / properties / contract_flag / titleAdded value: +"Contract Flag" - added
Input schema / properties / date / titleAdded value: +"Date" - added
Input schema / titleAdded value: +"get_derivatives_bars_daily_optionsArguments" - added
Output schema / titleAdded value: +"get_derivatives_bars_daily_optionsDictOutput"
- Changed
get_derivatives_bars_daily_options_2254 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / date / titleAdded value: +"Date" - added
Input schema / titleAdded value: +"get_derivatives_bars_daily_options_225Arguments" - added
Output schema / titleAdded value: +"get_derivatives_bars_daily_options_225DictOutput"
- Changed
get_dividend_yield_ranking11 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / date / titleAdded value: +"Date" - added
Input schema / properties / disc_months / titleAdded value: +"Disc Months" - added
Input schema / properties / include_trailing / titleAdded value: +"Include Trailing" - added
Input schema / properties / market / titleAdded value: +"Market" - added
Input schema / properties / max_yield / titleAdded value: +"Max Yield" - added
Input schema / properties / min_yield / titleAdded value: +"Min Yield" - added
Input schema / properties / n / titleAdded value: +"N" - added
Input schema / properties / sector / titleAdded value: +"Sector" - added
Input schema / titleAdded value: +"get_dividend_yield_rankingArguments" - added
Output schema / titleAdded value: +"get_dividend_yield_rankingDictOutput"
- Changed
get_earnings_results_this_week5 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / date_from / titleAdded value: +"Date From" - added
Input schema / properties / date_to / titleAdded value: +"Date To" - added
Input schema / titleAdded value: +"get_earnings_results_this_weekArguments" - added
Output schema / titleAdded value: +"get_earnings_results_this_weekDictOutput"
- Changed
get_earnings_this_week5 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / date_from / titleAdded value: +"Date From" - added
Input schema / properties / date_to / titleAdded value: +"Date To" - added
Input schema / titleAdded value: +"get_earnings_this_weekArguments" - added
Output schema / titleAdded value: +"get_earnings_this_weekDictOutput"
- Changed
get_equities_bars_daily7 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / code / titleAdded value: +"Code" - added
Input schema / properties / date / titleAdded value: +"Date" - added
Input schema / properties / date_from / titleAdded value: +"Date From" - added
Input schema / properties / date_to / titleAdded value: +"Date To" - added
Input schema / titleAdded value: +"get_equities_bars_dailyArguments" - added
Output schema / titleAdded value: +"get_equities_bars_dailyDictOutput"
- Changed
get_equities_bars_daily_am4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / code / titleAdded value: +"Code" - added
Input schema / titleAdded value: +"get_equities_bars_daily_amArguments" - added
Output schema / titleAdded value: +"get_equities_bars_daily_amDictOutput"
- Changed
get_equities_bars_minute7 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / code / titleAdded value: +"Code" - added
Input schema / properties / date / titleAdded value: +"Date" - added
Input schema / properties / date_from / titleAdded value: +"Date From" - added
Input schema / properties / date_to / titleAdded value: +"Date To" - added
Input schema / titleAdded value: +"get_equities_bars_minuteArguments" - added
Output schema / titleAdded value: +"get_equities_bars_minuteDictOutput"
- Changed
get_equities_earnings_calendar5 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / code / titleAdded value: +"Code" - added
Input schema / properties / date / titleAdded value: +"Date" - added
Input schema / titleAdded value: +"get_equities_earnings_calendarArguments" - added
Output schema / titleAdded value: +"get_equities_earnings_calendarDictOutput"
- Changed
get_equities_investor_types6 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / date_from / titleAdded value: +"Date From" - added
Input schema / properties / date_to / titleAdded value: +"Date To" - added
Input schema / properties / section / titleAdded value: +"Section" - added
Input schema / titleAdded value: +"get_equities_investor_typesArguments" - added
Output schema / titleAdded value: +"get_equities_investor_typesDictOutput"
- Changed
get_equities_master5 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / code / titleAdded value: +"Code" - added
Input schema / properties / date / titleAdded value: +"Date" - added
Input schema / titleAdded value: +"get_equities_masterArguments" - added
Output schema / titleAdded value: +"get_equities_masterDictOutput"
- Changed
get_fins_details5 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / code / titleAdded value: +"Code" - added
Input schema / properties / date / titleAdded value: +"Date" - added
Input schema / titleAdded value: +"get_fins_detailsArguments" - added
Output schema / titleAdded value: +"get_fins_detailsDictOutput"
- Changed
get_fins_dividend7 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / code / titleAdded value: +"Code" - added
Input schema / properties / date / titleAdded value: +"Date" - added
Input schema / properties / date_from / titleAdded value: +"Date From" - added
Input schema / properties / date_to / titleAdded value: +"Date To" - added
Input schema / titleAdded value: +"get_fins_dividendArguments" - added
Output schema / titleAdded value: +"get_fins_dividendDictOutput"
- Changed
get_fins_summary5 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / code / titleAdded value: +"Code" - added
Input schema / properties / date / titleAdded value: +"Date" - added
Input schema / titleAdded value: +"get_fins_summaryArguments" - added
Output schema / titleAdded value: +"get_fins_summaryDictOutput"
- Changed
get_indices_bars_daily7 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / code / titleAdded value: +"Code" - added
Input schema / properties / date / titleAdded value: +"Date" - added
Input schema / properties / date_from / titleAdded value: +"Date From" - added
Input schema / properties / date_to / titleAdded value: +"Date To" - added
Input schema / titleAdded value: +"get_indices_bars_dailyArguments" - added
Output schema / titleAdded value: +"get_indices_bars_dailyDictOutput"
- Changed
get_indices_bars_daily_topix5 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / date_from / titleAdded value: +"Date From" - added
Input schema / properties / date_to / titleAdded value: +"Date To" - added
Input schema / titleAdded value: +"get_indices_bars_daily_topixArguments" - added
Output schema / titleAdded value: +"get_indices_bars_daily_topixDictOutput"
- Changed
get_market_briefing6 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / date / titleAdded value: +"Date" - added
Input schema / properties / n / titleAdded value: +"N" - added
Input schema / properties / sector_type / titleAdded value: +"Sector Type" - added
Input schema / titleAdded value: +"get_market_briefingArguments" - added
Output schema / titleAdded value: +"get_market_briefingDictOutput"
- Changed
get_markets_breakdown7 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / code / titleAdded value: +"Code" - added
Input schema / properties / date / titleAdded value: +"Date" - added
Input schema / properties / date_from / titleAdded value: +"Date From" - added
Input schema / properties / date_to / titleAdded value: +"Date To" - added
Input schema / titleAdded value: +"get_markets_breakdownArguments" - added
Output schema / titleAdded value: +"get_markets_breakdownDictOutput"
- Changed
get_markets_calendar6 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / date_from / titleAdded value: +"Date From" - added
Input schema / properties / date_to / titleAdded value: +"Date To" - added
Input schema / properties / hol_div / titleAdded value: +"Hol Div" - added
Input schema / titleAdded value: +"get_markets_calendarArguments" - added
Output schema / titleAdded value: +"get_markets_calendarDictOutput"
- Changed
get_markets_margin_alert7 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / code / titleAdded value: +"Code" - added
Input schema / properties / date / titleAdded value: +"Date" - added
Input schema / properties / date_from / titleAdded value: +"Date From" - added
Input schema / properties / date_to / titleAdded value: +"Date To" - added
Input schema / titleAdded value: +"get_markets_margin_alertArguments" - added
Output schema / titleAdded value: +"get_markets_margin_alertDictOutput"
- Changed
get_markets_margin_interest8 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / code / titleAdded value: +"Code" - added
Input schema / properties / date / titleAdded value: +"Date" - added
Input schema / properties / date_from / titleAdded value: +"Date From" - added
Input schema / properties / date_to / titleAdded value: +"Date To" - added
Input schema / properties / detail / titleAdded value: +"Detail" - added
Input schema / titleAdded value: +"get_markets_margin_interestArguments" - added
Output schema / titleAdded value: +"get_markets_margin_interestDictOutput"
- Changed
get_markets_short_ratio8 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / date / titleAdded value: +"Date" - added
Input schema / properties / date_from / titleAdded value: +"Date From" - added
Input schema / properties / date_to / titleAdded value: +"Date To" - added
Input schema / properties / detail / titleAdded value: +"Detail" - added
Input schema / properties / s33 / titleAdded value: +"S33" - added
Input schema / titleAdded value: +"get_markets_short_ratioArguments" - added
Output schema / titleAdded value: +"get_markets_short_ratioDictOutput"
- Changed
get_markets_short_sale_report8 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / calc_date / titleAdded value: +"Calc Date" - added
Input schema / properties / code / titleAdded value: +"Code" - added
Input schema / properties / disc_date / titleAdded value: +"Disc Date" - added
Input schema / properties / disc_date_from / titleAdded value: +"Disc Date From" - added
Input schema / properties / disc_date_to / titleAdded value: +"Disc Date To" - added
Input schema / titleAdded value: +"get_markets_short_sale_reportArguments" - added
Output schema / titleAdded value: +"get_markets_short_sale_reportDictOutput"
- Changed
get_sector_briefing4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / sector_type / titleAdded value: +"Sector Type" - added
Input schema / titleAdded value: +"get_sector_briefingArguments" - added
Output schema / titleAdded value: +"get_sector_briefingDictOutput"
- Changed
get_sector_performance5 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / date / titleAdded value: +"Date" - added
Input schema / properties / sector_type / titleAdded value: +"Sector Type" - added
Input schema / titleAdded value: +"get_sector_performanceArguments" - added
Output schema / titleAdded value: +"get_sector_performanceDictOutput"
- Changed
get_stock_briefing4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / code / titleAdded value: +"Code" - added
Input schema / titleAdded value: +"get_stock_briefingArguments" - added
Output schema / titleAdded value: +"get_stock_briefingDictOutput"
- Changed
get_technical_indicators8 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / code / titleAdded value: +"Code" - added
Input schema / properties / date / titleAdded value: +"Date" - added
Input schema / properties / date_from / titleAdded value: +"Date From" - added
Input schema / properties / date_to / titleAdded value: +"Date To" - added
Input schema / properties / indicators / titleAdded value: +"Indicators" - added
Input schema / titleAdded value: +"get_technical_indicatorsArguments" - added
Output schema / titleAdded value: +"get_technical_indicatorsDictOutput"
- Changed
get_top_movers6 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / date / titleAdded value: +"Date" - added
Input schema / properties / direction / titleAdded value: +"Direction" - added
Input schema / properties / n / titleAdded value: +"N" - added
Input schema / titleAdded value: +"get_top_moversArguments" - added
Output schema / titleAdded value: +"get_top_moversDictOutput"
- Changed
get_top_turnover_value5 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / date / titleAdded value: +"Date" - added
Input schema / properties / n / titleAdded value: +"N" - added
Input schema / titleAdded value: +"get_top_turnover_valueArguments" - added
Output schema / titleAdded value: +"get_top_turnover_valueDictOutput"
- Changed
get_top_volume5 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / date / titleAdded value: +"Date" - added
Input schema / properties / n / titleAdded value: +"N" - added
Input schema / titleAdded value: +"get_top_volumeArguments" - added
Output schema / titleAdded value: +"get_top_volumeDictOutput"
- Changed
get_valuation_ranking11 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / ascending / titleAdded value: +"Ascending" - added
Input schema / properties / disc_months / titleAdded value: +"Disc Months" - added
Input schema / properties / market / titleAdded value: +"Market" - added
Input schema / properties / max_value / titleAdded value: +"Max Value" - added
Input schema / properties / metric / titleAdded value: +"Metric" - added
Input schema / properties / min_value / titleAdded value: +"Min Value" - added
Input schema / properties / n / titleAdded value: +"N" - added
Input schema / properties / sector / titleAdded value: +"Sector" - added
Input schema / titleAdded value: +"get_valuation_rankingArguments" - added
Output schema / titleAdded value: +"get_valuation_rankingDictOutput"
- Changed
get_value_stock_screen13 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / date / titleAdded value: +"Date" - added
Input schema / properties / disc_months / titleAdded value: +"Disc Months" - added
Input schema / properties / market / titleAdded value: +"Market" - added
Input schema / properties / max_pbr / titleAdded value: +"Max Pbr" - added
Input schema / properties / max_per / titleAdded value: +"Max Per" - added
Input schema / properties / min_yield / titleAdded value: +"Min Yield" - added
Input schema / properties / n / titleAdded value: +"N" - added
Input schema / properties / near_low_pct / titleAdded value: +"Near Low Pct" - added
Input schema / properties / require_profit_increase / titleAdded value: +"Require Profit Increase" - added
Input schema / properties / sector / titleAdded value: +"Sector" - added
Input schema / titleAdded value: +"get_value_stock_screenArguments" - added
Output schema / titleAdded value: +"get_value_stock_screenDictOutput"
- Changed
health_check3 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / titleAdded value: +"health_checkArguments" - added
Output schema / titleAdded value: +"health_checkDictOutput"
- Changed
register_api_key4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / api_key / titleAdded value: +"Api Key" - added
Input schema / titleAdded value: +"register_api_keyArguments" - added
Output schema / titleAdded value: +"register_api_keyDictOutput"
- Changed
search_equities4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / name / titleAdded value: +"Name" - added
Input schema / titleAdded value: +"search_equitiesArguments" - added
Output schema / titleAdded value: +"search_equitiesDictOutput"
1 tool update
v0.53.0- Added
get_value_stock_screen
3 tool updates
v0.49.3- Added
get_earnings_results_this_week - Added
get_earnings_this_week - Added
get_valuation_ranking
51 tool updates
v0.43.3- First observed
cache_clear - First observed
cache_status - First observed
compare_close_vs_vwap - First observed
delete_api_key - First observed
detect_52w_high_low - First observed
detect_52w_high_low_range - First observed
detect_consecutive_dividend_increase - First observed
detect_distribution_days - First observed
detect_follow_through_day - First observed
detect_price_change - First observed
detect_price_limit - First observed
detect_volume_surge - First observed
detect_ytd_high_low - First observed
detect_ytd_high_low_range - First observed
get_advance_decline_ratio - First observed
get_bulk_download_url - First observed
get_bulk_list - First observed
get_candlestick_data - First observed
get_comparison_chart_data - First observed
get_derivatives_bars_daily_futures - First observed
get_derivatives_bars_daily_options - First observed
get_derivatives_bars_daily_options_225 - First observed
get_dividend_yield_ranking - First observed
get_equities_bars_daily - First observed
get_equities_bars_daily_am - First observed
get_equities_bars_minute - First observed
get_equities_earnings_calendar - First observed
get_equities_investor_types - First observed
get_equities_master - First observed
get_fins_details - First observed
get_fins_dividend - First observed
get_fins_summary - First observed
get_indices_bars_daily - First observed
get_indices_bars_daily_topix - First observed
get_market_briefing - First observed
get_markets_breakdown - First observed
get_markets_calendar - First observed
get_markets_margin_alert - First observed
get_markets_margin_interest - First observed
get_markets_short_ratio - First observed
get_markets_short_sale_report - First observed
get_sector_briefing - First observed
get_sector_performance - First observed
get_stock_briefing - First observed
get_technical_indicators - First observed
get_top_movers - First observed
get_top_turnover_value - First observed
get_top_volume - First observed
health_check - First observed
register_api_key - First observed
search_equities
TDQS
Scored across 55 tools
Tools are grouped into clear domains and nearly every description cross-references its siblings with explicit 'use X instead' guidance, so an agent can usually pick the right one. A few close pairs (earnings_this_week vs earnings_results_this_week, options vs options_225, short_ratio vs short_sale_report) still create minor ambiguity despite the thorough docs.
The dominant pattern is get_<domain>_<item> plus detect_<signal> for screeners, with standalone verbs like health_check, cache_status, and register_api_key for server operations. Minor deviations such as get_top_movers, get_earnings_this_week, and get_indices_bars_daily_topix are still readable and predictable.
55 tools is a very large surface for an agent to navigate, even for a broad market-data platform. Several near-duplicate variants (range versions of 52w/YTD detectors, options vs options_225, indices vs indices_topix, top movers/volume/turnover) inflate the count beyond what feels necessary.
The server covers nearly every J-Quants data domain: masters, daily/minute/morning bars, financial statements, dividends, indices, derivatives, margin/short-selling, market calendar, bulk downloads, plus extensive screening, ranking, and charting tools. Minor gaps like a direct equities/trades endpoint and plan-gated data are workarounds rather than dead ends.
Maintenance
Related MCP Connectors
MCP server for stocksense-ai documentation, generated by doc2mcp.
A MCP server for the Frankfurter API for currency exchange rates.
An MCP server that provides congressional transcripts
MCP server giving AI agents one-connection access to China A-share market intelligence: financials,
Related MCP Servers
- AlicenseBqualityDmaintenanceThis is an MCP server that provides access to the Alpha Vantage API, allowing stock data retrieval to be used as context to LLMs.215 npm9MIT
- AlicenseNot gradedqualityDmaintenanceAn MCP server that integrates with the AlphaVantage financial data API, providing access to stock market data, technical indicators, and fundamental financial information.MIT
- AlicenseBqualityDmaintenanceThis is an MCP server that provides access to the Alpha Vantage API, allowing stock data retrieval to be used as context to LLMs.215 npmMIT
- AlicenseNot gradedqualityCmaintenanceA lightweight MCP server that provides stock research tools for Japanese and US stocks, including price, dividends, valuation, and screening, powered by yfinance.MIT