StockLens
StockLens is an MCP stock-data server for Claude that provides real Korean and US market data for analysis, screening, and Excel workflows.
Check market status and server health (
get_market_clock,stocklens_status).Search Korean stocks and manage a shared watchlist (
search,search_stock,watchlist).Fetch Korean quotes, multi-quotes, charts/OHLCV, chart stats, and market indices (
get_price,get_multi_stocks,get_chart,get_multi_chart_stats,get_index).Analyze investor flow, batch flow, event reactions, and flow-based screening (
get_flow,get_flow_batch,get_event_reaction,screen_by_flow).View Korean financials, consensus, brokerage reports, report content, and DART disclosures (
get_financial,get_financial_batch,get_consensus,get_reports,get_report_content,get_disclosure).Explore themes, sectors, volume/change/market-cap rankings (
list_themes,get_theme_stocks,list_sectors,get_sector_stocks,get_volume_ranking,get_change_ranking,get_market_cap_ranking).Compute technical indicators for one or many stocks (
get_indicators,get_indicators_bulk).Look up Korean ETFs, ETF categories, and ETF holdings (
get_etf_list,get_etf_info).Query US stocks: search, price, info, charts, financial ratios/statements, earnings, analyst ratings, dividends, options, insider trades, holders, short interest, filings, news, sector overview, screeners, ETFs, and multi-ticker prices (
get_us_*tools).Export/query Excel snapshots for repeated screening or use in Gemini/GPT (
export_to_excel,scan_to_excel,query_excel,export_us_to_excel).Check MCP tool usage metrics (
get_metrics_summary).
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., "@StockLensWhat is the current price of Samsung Electronics?"
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.
StockLens
AI가 진짜 데이터로 분석합니다
🇰🇷 한국어 | 🇺🇸 English
배포 상태
StockLens의 공개 설치 안내는 2026-06-01 기준으로 종료했습니다.
현재 신규 설치는 구매자 안내문을 통해 제공되는 설치 명령어와 가이드를 기준으로 진행합니다. 이미 설치한 기존 사용자는 보유한 공개 버전을 계속 사용할 수 있지만, 신규 배포·설치 지원·활용 템플릿은 구매자 패키지 기준으로 정리합니다.
Related MCP server: RagAlgo MCP Server
왜 필요한가
AI에게 차트 이미지를 보여주면 숫자를 추측해서 틀린 분석을 합니다 (할루시네이션).
StockLens는 Claude에 네이버 증권의 실제 시세 데이터를 직접 연결해서, AI가 추측이 아닌 진짜 숫자를 읽고 분석하도록 만듭니다.
❌ "삼성전자 8만원대인 것 같아요" (추측, 틀림)
✅ "삼성전자 206,000원, 20일 이평선 대비 +5.3%" (실제 데이터)주요 기능
📊 56개 도구 — 시장 캘린더, 현재가, 차트, 수급, 재무, 실적, 배당, 스크리닝, Excel 출력
🕐 결과 메타 v3 — 요청한 범위와 실제로 돌려준 범위, 미완성 봉, 수정주가 불확실성, 재무 기간 혼재를 응답에 함께 실어 보냅니다. 60일을 물어 20일이 왔으면 그렇게 적힙니다. v3에서 늘어난 필드는 전부 선택적이라 기존 소비자는 무시해도 됩니다 (TOOLS.md)
🔑 API 키 불필요 — 네이버 증권 + Yahoo Finance 공개 데이터
📈 분봉·시간봉 (선택) — 한국투자증권 Open API 를 연결하면 국내·미국 1분~240분봉과 분봉 지표를 사용할 수 있습니다 (시세 조회 전용, 계좌·주문 미지원, 연결 방법)
🚀 빠른 응답 — TTL 캐시 + Semaphore 최적화
📁 Excel 스냅샷 — 한 번 스캔 → 반복 쿼리 즉시
🤖 Gemini/GPT 연동 — Excel 내보내기로 다른 AI에서도 활용
설치 안내
구매자에게 제공되는 안내문에는 다음 과정이 포함됩니다.
uv확인 및 설치StockLens MCP 설치
Claude Desktop 또는 Claude Code MCP 설정 자동 등록
설치 진단과 첫 실행 확인
공개 README에는 더 이상 직접 설치 명령어를 게시하지 않습니다.
동작 확인
Claude에서:
삼성전자 현재가 알려줘종목명, 현재가, 전일대비, 거래량이 나오면 설치 완료입니다.
설치 문제 진단
stocklens-doctoruv·패키지·명령·config 4단계 자동 점검. 문제 원인과 고치는 명령어까지 표시. 친구분이 막혔을 때 이 한 줄만 보내주세요.
사용 예시
"SK하이닉스 120일 일봉 보고 20일 이동평균선 기준으로 추세 판단해줘"
"카카오 외국인/기관 최근 20일 수급 분석해줘"
"시가총액 상위 100개 중 PER 15 이하인 종목 찾아줘"
"오늘 강세 테마 3개 알려주고 각 테마 주도주 분석해줘"✅ 릴리즈 전 전 도구 실측 QA + 부하 테스트 통과한 빌드만 배포합니다. (상세)
더 알아보기
지원 환경
환경 | 지원 |
Claude Desktop (앱) | ✅ 메인 |
Claude Code (CLI) | ✅ |
Claude.ai (웹) | ❌ 로컬 MCP 미지원 |
ChatGPT / Gemini | Excel 내보내기로 우회 가능 |
지원 시장
한국 (KOSPI/KOSDAQ) — 네이버 증권, 6자리 종목코드 (
005930= 삼성전자,000660= SK하이닉스)미국 (NYSE/NASDAQ) — Yahoo Finance, 알파벳 티커 (
AAPL,TSLA,BRK.B)
티커 형식으로 자동 판별. 자연어로 섞어 써도 됩니다 (예: "005930이랑 AAPL 비교"). 전체 도구 목록은 TOOLS.md.
운영 원칙
StockLens는 투자 추천·매수/매도 신호·자동매매 기능을 제공하지 않습니다. 공개 데이터를 Claude가 읽을 수 있는 형태로 연결하는 데이터 도구입니다.
라이선스
MIT License
Available Tools
72 toolsexport_to_excelA
엑셀내보내기 — 단일 종목의 데이터를 Excel 파일로 저장합니다.
Gemini/GPT 같은 다른 AI에 파일 업로드로 넘기거나, 엑셀에서 직접 분석/차트 작성할 때 사용합니다.
Args: data_type: "chart"(일봉 OHLCV) / "flow"(투자자별 수급) / "financial"(재무지표) code: 종목코드 6자리 (예: "005930") days: chart/flow의 경우 과거 일수 (기본 180) filename: 파일명 (비우면 자동 생성)
Returns: 저장된 파일 경로
| Name | Required | Description | Default |
|---|---|---|---|
| code | No | ||
| days | No | ||
| filename | No | ||
| data_type | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false, openWorldHint=true, idempotentHint=false, destructiveHint=false. The description adds context about the output (saved file path) and the data types, but doesn't disclose potential side effects like file creation location, overwriting behavior, or whether it creates files on disk. It doesn't contradict annotations, but the behavioral disclosure is minimal beyond what annotations already imply.
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 brief purpose statement, use cases, and a clear Args/Returns section. It's slightly verbose with the use-case bullet points, but every sentence adds value. The front-loaded purpose and structured parameter documentation make 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 params, 1 required, no enums) and the presence of an output schema, the description covers the essential context: what it does, when to use it, parameter meanings, and return value. It lacks details like file format specifics or error conditions, but for an export tool with a simple contract, it's reasonably 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 compensate. It does: it explains data_type values (chart/flow/financial), code format (6-digit Korean stock code), days default (180), and filename auto-generation. This adds significant meaning beyond the bare schema, though it doesn't specify constraints like days range or filename extension rules.
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: saving single-stock data to an Excel file, with specific use cases (uploading to other AIs or analyzing in Excel). It distinguishes itself from sibling tools like scan_to_excel and save_analysis_to_excel by focusing on single-stock data export, though it doesn't explicitly name those alternatives.
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 the tool (exporting single-stock data for external analysis or AI upload) and lists the data types (chart, flow, financial) that define its scope. It doesn't explicitly state when not to use it or name alternative tools, but the use cases and data_type options give sufficient guidance 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.
export_us_to_excelA
US Excel export — 미국 주식 장기 데이터를 Excel 파일로 저장 (토큰 소비 없음). "AAPL 10년치 CSV 저장", "TSLA 5년 일봉 엑셀" 같은 질문에 사용. get_us_chart는 500행 상한이라 장기 데이터는 잘림 — 백테스트·CSV·다른 AI 업로드용이면 이 도구로(행 수 무제한).
Args: ticker: US 티커 (예: "AAPL", "SPY", "BRK.B") period: "1d","5d","1mo","3mo","6mo","1y","2y","5y","10y","ytd","max" (기본 10y) interval: "1d","1wk","1mo" (기본 1d) filename: 파일명 (비우면 자동)
| Name | Required | Description | Default |
|---|---|---|---|
| period | No | ||
| ticker | Yes | ||
| filename | No | ||
| interval | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false, destructiveHint=false, idempotentHint=false, openWorldHint=true. The description adds that the tool consumes no tokens ('토큰 소비 없음') and has no row limit, which is useful behavioral context. It doesn't fully describe file output details, but the annotations already cover the safety profile, and the description adds meaningful context beyond them.
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 front-loaded with the core purpose, then examples, then usage guidance, then parameter details. It is slightly dense with mixed Korean/English but every sentence earns its place. The parameter list is clear 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?
Given the tool has an output schema and annotations, the description covers the key context: what it does, when to use it, parameter semantics, and a key differentiator (no token consumption, no row limit). It doesn't mention file format details or where the file is saved, but the output schema likely covers return values, and the description is sufficient 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?
Schema description coverage is 0%, so the description must compensate. It does: it explains ticker with examples, period with allowed values and default, interval with allowed values and default, and filename with auto-generation behavior. This is strong compensation 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: exporting US stock long-term data to an Excel file, with examples ('AAPL 10년치 CSV 저장', 'TSLA 5년 일봉 엑셀'). It distinguishes itself from get_us_chart by noting the 500-row limit and positioning this tool for unlimited rows, backtesting, CSV, and AI uploads.
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 when to use this tool vs get_us_chart: when long-term data is needed and get_us_chart would truncate at 500 rows. It also gives use cases (backtesting, CSV, other AI uploads). This is strong routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_change_rankingARead-onlyIdempotent
등락률순위 — 등락률 상위/하위 종목을 가져옵니다. "상한가 종목", "급등주", "급락주", "상승률 상위" 같은 질문에 사용합니다.
Args: direction: "up"(상승률 상위) / "down"(하락률 상위) market: "KOSPI" / "KOSDAQ" / "ALL" (기본 ALL) count: 가져올 종목 수 (기본 50, 최대 500)
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | ||
| market | No | ||
| direction | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the safety profile is covered. The description adds value by documenting parameter defaults (count default 50 max 500, market default ALL) in the args block, which sets expectations for call behavior. No contradictions 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 front-loaded with the core purpose, followed by trigger examples, then a compact structured args block. Every line earns its place — no filler. The Korean language matches the target user queries naturally.
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 3-parameter ranking tool with an output schema, the description is nearly complete: all parameters documented with values and defaults, usage triggers given, and output format is covered by the schema. Minor gap is the lack of explicit sibling differentiation in the description itself, but purpose clarity already handles that.
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 — and it delivers. All three parameters are documented with allowed values and defaults: direction (up/down), market (KOSPI/KOSDAQ/ALL with default), count (default 50, max 500). 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 states a specific verb+resource: '등락률순위 — 등락률 상위/하위 종목을 가져옵니다' (change-rate ranking — fetches top/bottom change-rate stocks). This clearly distinguishes it from sibling ranking tools like get_volume_ranking and get_market_cap_ranking by focusing on change rate. The purpose is 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 concrete usage context with example queries: '상한가 종목', '급등주', '급락주', '상승률 상위' 같은 질문에 사용합니다 (used for questions like limit-up, surge stocks, sharp declines, top gainers). This gives clear when-to-use guidance, though it stops short of naming sibling alternatives or explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_chartARead-onlyIdempotent
캔들차트 OHLCV — 종목의 시계열 캔들 데이터(시가/고가/저가/종가/거래량, candlestick OHLCV).
⚠️ 여러 종목의 기간 통계만 필요하면 get_multi_chart_stats를 쓰세요.
"삼성전자 일봉", "3개월 주봉", "월봉 데이터", "price history" 같은 질문에 사용. 시계열 진입점(US는 get_us_chart).
보조지표(이평선·RSI·MACD 등)는 사용자가 명시 요청할 때만 get_indicators로 숫자만 받아 요약.
Args: code: 종목코드 6자리 (예: "005930") timeframe: "day"(일봉), "week"(주봉), "month"(월봉) count: 가져올 봉 개수 (기본 120 ≈ 6개월, 최대 500)
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | ||
| count | No | ||
| timeframe | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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, so the safety profile is covered. The description adds behavioral context beyond annotations: it specifies the data is time-series candlestick data, notes the default count of 120 bars ≈ 6 months, and caps at 500 bars. It also clarifies that indicators are not included unless explicitly requested via a different tool. This adds meaningful behavioral context without contradicting 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 compact and front-loaded: the first line states exactly what the tool returns. The usage guidance and parameter explanations are concise. The warning about get_multi_chart_stats is placed early. Minor redundancy exists (OHLCV is spelled out twice), and the emoji/formatting is slightly noisy, but every sentence earns its place.
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 chart tool with an output schema present, the description covers the essential context: what data is returned, when to use it, how to route to alternatives, and all parameter semantics. The output schema presumably documents the return shape, so the description needn't explain it. The only minor gap is not explicitly stating that the tool is for Korean stocks (though the example code and Korean labels imply it), and the US alternative is mentioned but not fully elaborated.
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 does: code is explained as a 6-digit stock code with example '005930', timeframe is mapped to day/week/month with Korean labels, and count is explained as number of bars with default 120 ≈ 6 months and max 500. This fully compensates for the schema's lack of descriptions, though it doesn't enumerate every possible value beyond the three timeframes.
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 candlestick OHLCV time-series data (open/high/low/close/volume) for a stock, with a specific verb ('get') and resource ('chart'). It also distinguishes itself from siblings by explicitly naming get_multi_chart_stats for period statistics and get_us_chart for US time-series, and mentions get_indicators for technical indicators. This is a specific, well-differentiated 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 when-to-use guidance: use for queries like '삼성전자 일봉', '3개월 주봉', '월봉 데이터', 'price history'. It also gives a clear exclusion: if only period statistics for multiple stocks are needed, use get_multi_chart_stats instead. It even notes that technical indicators should only be fetched via get_indicators when explicitly requested. This is exemplary usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_consensusARead-onlyIdempotent
컨센서스 — 증권사 투자의견·목표주가 + 어닝 서프라이즈(컨센서스 대비 잠정치).
"목표가 얼마야", "컨센서스", "증권사 의견", "적정가", "어닝 서프라이즈/쇼크" 같은 질문에 사용합니다.
어닝 서프라이즈 표는 영업이익·당기순이익만 다룹니다 (에프앤가이드 원표에
매출액이 없음). 매출 실적·전망은 get_financial을 쓰세요.
Args: code: 종목코드 6자리 (예: "005930")
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false. The description adds valuable behavioral context: it discloses that the earnings surprise table only covers operating profit and net income (since the FnGuide original table lacks sales), which is a specific limitation. This goes beyond the annotations without contradicting them, though it doesn't cover other potential behaviors like rate limits or return format (mitigated 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 concise, front-loaded with the core purpose, followed by example queries, a limitation note, and a pointer to an alternative. Each sentence earns its place, and there is 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?
The tool is moderately complex, but with an output schema present, the description covers the essential usage scope (when to use, what data it covers, its limitation) and points to the correct sibling for missing data. An agent has enough context to call it correctly without additional assumptions.
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 a string type for 'code' with no description (0% coverage). The description compensates fully by specifying the format ('종목코드 6자리') and giving an example ('005930'). This is clear and actionable, making the parameter semantics complete.
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 consensus data: analyst opinions, target prices, and earnings surprise (preliminary vs consensus). It gives specific example queries ('목표가 얼마야', '컨센서스', etc.) and explicitly distinguishes from get_financial for sales figures. This is a specific verb+resource with clear differentiation from a sibling tool.
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 lists when to use the tool (for target price, consensus, analyst opinions, earnings surprise) and when not to (for sales figures, pointing to get_financial). This provides clear context and an alternative, leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_detailed_investor_flowARead-onlyIdempotent
상세수급 - 투자자·기관별 일별 순매매 (증권사 연결 필요, JSON).
기존 get_flow 와 다른 도구다. get_flow 는 기본 데이터의 개인·외국인· 기관 3종이고, 이 도구는 증권사 Open API 로 받는 상세 구분이다.
읽을 때 반드시 지킬 것:
values에 없는 항목은 값이 없는 것이고,unsettled에 있으면 미정산(정산 전이라 아직 값이 아님)이다. 둘 다 0 이 아니다. 0 으로 읽으면 '매매 없음'이 되어 사실과 달라진다.data_state가provisional인 행은 확정 수치가 아니다. final 과 섞어서 합계·평균을 내지 않는다.institution_total(기관계)과 그 하위 항목(금융투자·보험·투신·은행· 연기금·사모·국가 등)을 함께 더하면 두 번 센다. 기관계는 이미 하위 항목의 합이다.measure는 수량(net_quantity, 단주)과 금액(net_amount, 백만원)이 전혀 다른 값이다. 실측상 같은 항목이 3.7배까지 차이 난다. 응답의unit을 빼고 숫자만 인용하지 않는다.국내(KR) 전용이다. US 종목에는 이 데이터가 없다.
data_availability.unavailable은 연결된 증권사가 그 항목을 주지 않는다는 뜻이다. 키움은 기관 세부 13종을 주지만 매수·매도 분해가 없고, 한국투자증권은 3종만 주지만 매수·매도를 준다.
Args: code: KR 종목코드 6자리 (단건) codes: 종목코드 목록 (최대 30개). code 와 함께 쓸 수 있다 days: 조회할 거래일 수 (기본 20, 최대 120) measure: "net_quantity"(수량) | "net_amount"(금액) source: auto|kis|kiwoom. auto 는 주 사용 증권사 하나에 고정되고, 증권사를 명시하면 strict(실패해도 다른 곳으로 대체 안 함)
| Name | Required | Description | Default |
|---|---|---|---|
| code | No | ||
| days | No | ||
| codes | No | ||
| source | No | ||
| measure | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/openWorld/idempotent annotations, the description discloses critical behavioral rules: values absent or unsettled are not zero, provisional data must not be mixed with final data, institution_total already includes sub-items so adding them double counts, quantity vs amount measures differ by up to 3.7x, and per-broker availability differences (Kiwoom vs Korea Investment). 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?
Although lengthy, the description is well-structured and front-loaded: summary, then differentiation from get_flow, then mandatory reading warnings, then Args. Every sentence adds value, and the use of bullets and bold makes the critical data-interpretation traps skimmable.
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 complex and the schema is minimal, but the description covers the key pitfalls: zero vs unsettled semantics, provisional/final data, double-counting, units, KR-only scope, broker differences, and parameter constraints. Since an output schema exists, return structure is not required. Nothing an agent needs to call this tool correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description carries the full burden and does so thoroughly: code (6-digit KR), codes (max 30, combinable with code), days (default 20, max 120), measure (net_quantity/net_amount meanings), and source (auto|kis|kiwoom with strict fallback behavior). All five parameters are semantically explained 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 '상세수급 - 투자자·기관별 일일 순매매' and clearly identifies the resource: daily net trading by investor/institution. It explicitly distinguishes itself from the sibling get_flow by stating that get_flow covers the basic three groups while this tool provides the detailed brokerage breakdown. The purpose is 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 tool explicitly frames when to use it versus the sibling: 'get_flow provides the basic data's individual/foreign/institutional 3 types, and this tool is the detailed breakdown via brokerage Open API.' It also clearly states the tool is domestic-only: 'KR only. US stocks don't have this data.' This gives the agent direct routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_disclosureARead-onlyIdempotent
공시목록 — 종목의 최근 거래소 공시 목록 (네이버 증권 게재, KOSCOM 제공).
"공시", "IR", "실적 발표", "공정공시", "오늘 왜 오르나(재료 확인)" 같은 질문에 사용합니다. 공시가 0건이어도 "재료 없음"이 아닙니다 — 회사 보도자료·언론 기사는 공시가 아니라 이 목록에 안 잡힙니다.
Args: code: 종목코드 6자리 (예: "005930")
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
In addition to the annotations (readOnlyHint, openWorldHint, idempotentHint), the description reveals the tool's data-source behavior (KOSCOM, Naver) and its boundary (does not include company press releases or media articles). This informs correct interpretation of empty results. However, it does not detail pagination, date range, or result ordering, which would further enhance transparency.
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 definition, a usage-routing paragraph with examples, a critical caveat, and a clear Args section. Every sentence adds value and the most important usage guidance 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 simplicity (single parameter) and the presence of an output schema, the description covers the essential usage context: source, when to use, and how to interpret empty results. It doesn't specify the number of disclosures returned or time range, but these are likely evident from the output schema, so the description is sufficiently 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?
With 0% schema description coverage, the burden falls entirely on the description. It compensates by defining 'code' as a 6-digit stock code and providing an example ('005930'). This is sufficient for correct invocation, though it omits variations like leading zeros or alternative formats.
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: '공시목록 — 종목의 최근 거래소 공시 목록' (disclosure list of recent exchange disclosures for a stock). It also specifies the data source (Naver Finance, KOSCOM) and explicitly excludes related but distinct concepts like press releases and media articles, distinguishing it from siblings like get_news and get_reports.
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 concrete query examples ('공시', 'IR', '실적 발표', '공정공시', '오늘 왜 오르나(재료 확인)') and adds a critical exclusion: zero disclosures does not mean 'no materials' because press releases and news are not in this list. This effectively routes an agent to use this tool only for exchange disclosures and to consider alternatives for broader news.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_etf_infoARead-onlyIdempotent
ETF정보 — ETF 상세 정보 (기초지수, 보수율, 수익률, 구성종목 TOP10).
code: ETF 종목코드 (예: "069500" KODEX 200, "360750" TIGER 미국S&P500)
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, so safety behavior is covered. The description adds some scope context by listing the returned ETF fields and code examples, but it does not disclose error behavior, validation requirements, or other operational traits. There is 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 short and front-loaded with a clear summary line followed by a single parameter explanation. Every sentence adds value, with no filler or redundant repetition of the tool name.
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 read-only tool with an output schema and safety annotations, the description is largely sufficient. It could be more explicit about this being for Korean/domestic ETFs rather than US ETFs, which would make tool selection fully unambiguous.
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's code property has no description, so the description carries the full burden for parameter semantics. It defines code as ETF 종목코드 and provides two concrete examples with fund names ('069500' KODEX 200, '360750' TIGER 미국S&P500). This is useful, though exact format validation rules are not specified.
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 ETF detail information and lists specific fields (기초지수, 보수율, 수익률, 구성종목 TOP10). The Korean ETF code examples imply this is for domestic ETFs, which helps distinguish it from siblings like get_us_etf_info, though it does not explicitly name alternatives.
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 guidance on when to use this tool versus alternatives. The description implies it is for looking up individual ETF details by code, but it never mentions sibling tools such as get_etf_list or get_us_etf_info, nor any exclusions or prerequisite context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_etf_listARead-onlyIdempotent
ETF목록 — ETF 전체 목록 조회, 카테고리·이름 키워드 필터링.
category: 카테고리 필터 (빈 문자열=전체). 가능한 값: "국내 시장지수", "국내 업종/테마", "국내 파생", "해외 주식", "원자재", "채권/금리", "단기자금" keyword: ETF 이름에 포함된 키워드로 필터 (예: "우주", "반도체", "배당"). "OO 테마 ETF 뭐 있어" 같은 질문은 category를 추측하지 말고 keyword로 바로 찾는다 — 한국 ETF는 이름 자체가 테마를 직설적으로 담는 관행이라 (예: "TIGER 미국우주테크") 이름 검색만으로 대부분 커버된다. 단, 특정 회사(예: 비상장사)를 "보유"한 ETF를 찾는 건 이 키워드로 안 된다 — 그 회사명이 ETF 이름 자체에 없으면 못 찾으니, 후보 ETF를 좁힌 뒤 get_etf_info로 구성종목을 직접 확인해야 한다. sort_by: 정렬 기준, 전부 큰 값이 앞 — "marketSum"(시가총액, 기본), "quant"(거래량), "threeMonthEarnRate"(3개월 수익률 높은 순 — 손실이 큰 ETF는 맨 뒤), "nav"(주당 NAV). 1·6·12개월 수익률과 배당은 목록에 없어 정렬할 수 없다(종목별 get_etf_info 로 확인). limit: 반환 개수 (기본 20, 최대 50)
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| keyword | No | ||
| sort_by | No | ||
| category | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/openWorld/idempotent, and the description adds valuable behavioral details: sort direction (larger values first), the exclusion of 1/6/12-month returns and dividends from sortable fields, and the need to use get_etf_info for those. 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?
Despite the length, every sentence adds necessary information. The opening line states purpose, and parameter clarifications are tightly scoped with concrete examples. No filler or redundant restatement of the schema.
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, the description does not need to document return fields. It covers all inputs, sorting behavior, limitations, and directs the user to the correct sibling tool for missing data. The definition is fully 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?
Schema description coverage is 0%, so the description carries the full parameter burden. It explains every parameter: category values, keyword semantics and examples, sort_by options with behavior, and limit defaults/maximum. This fully 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 opens with 'ETF 전체 목록 조회' (retrieve full ETF list), naming a specific verb and resource, and immediately states the two filtering dimensions. This clearly distinguishes it from the sibling get_etf_info, which is per-ETF detail.
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 for when to use keyword vs category, including the instruction not to guess category for theme queries and the limitation that holding-company names not in the ETF name require get_etf_info. This is direct when-to-use and when-not-to-use advice relative to a sibling tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_event_reactionARead-onlyIdempotent
이벤트반응 — 특정 날짜(event_date) 기준 전후 주가·거래량·수급 반응을 정렬합니다.
DartLens의 scan_earnings_season·list_disclosures에 나온 공시 접수일을 event_date로 넘김 (휴장일이면 다음 거래일 기준). "공시→주가/수급" 또는 "주가/수급 이상→해당 기간 공시 확인" 시간축 정렬용 — 원인 단정·매수/매도 판단 아님.
분석 불가한 사건창(보유 데이터 구간 밖·전 구간 거래정지·수급 결측)은 숫자를 만들지 않고
validation 상태와 코드로 되돌린다. 데이터 없음은 0%·순매매 0으로 표기되지 않는다.
Args: code: 종목코드 6자리 (예: "005930") event_date: 기준 날짜 YYYY-MM-DD 또는 YYYYMMDD. DartLens 공시 접수일 권장 before: event_date 전 비교 거래일 수 (기본 5, 최대 60) after: event_date 후 비교 거래일 수 (기본 20, 최대 60)
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | ||
| after | No | ||
| before | No | ||
| event_date | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnly, idempotent, openWorld), the description discloses that when analysis is impossible (outside data range, trading halt, missing supply/demand), it returns a validation status and code rather than fabricating numbers. It also explicitly states it does not assert causation or make trading recommendations. This is significant behavioral context that adds value 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: a one-line summary, then usage context, then behavioral notes, then an Args list. It is somewhat long but every sentence adds value. The key purpose is front-loaded. Minor deduction for verbosity in the usage examples, but it remains 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?
For a read-only tool with an output schema, the description is complete. It covers all parameters, explains edge-case behavior (validation status), and clarifies the tool's limitations. An agent can confidently call this tool correctly without additional information. The presence of an output schema means return values need not be described.
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 zero description coverage (0%), but the description's Args section thoroughly explains each parameter: code as a 6-digit stock code, event_date with format options and a recommendation, before with default 5 and max 60, after with default 20 and max 60. This fully compensates for the schema gap and provides meaning beyond the bare schema 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's purpose: it sorts price, volume, and supply/demand reactions around a specific event date. It uses a specific verb (정렬합니다) and resource (주가·거래량·수급 반응), and differentiates from the US counterpart by its focus on Korean events. It also mentions related tools (scan_earnings_season, list_disclosures) that feed into it, giving strong context.
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: it tells the agent to pass the disclosure acceptance date from scan_earnings_season or list_disclosures, and explains it is for time-axis alignment, not for causal claims or buy/sell decisions. However, it does not explicitly contrast with the sibling get_event_reactions (plural), so it's not fully exhaustive but clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_event_reactionsARead-onlyIdempotent
공시반응이력 — 최근 공시들에 이 종목이 어떻게 반응해 왔는지 한 번에.
"이 종목은 호재에 잘 오르나", "공시 나오면 어떻게 움직였나", "최근 반응이 예전보다 약해졌나" 같은 질문에 사용합니다.
get_event_reaction은 날짜 하나만 봅니다. 공시 8건을 보려면 8번 불러야 하고
응답도 8배가 됩니다. 이 도구는 일봉·수급을 한 번만 받아 여러 공시일을
한꺼번에 계산합니다.
⚠️ 반응이 좋았다고 앞으로도 그러리라는 뜻이 아닙니다. 과거 기록일 뿐입니다. ⚠️ 네이버 공시 목록에는 '가격제한폭 확대요건 도달' 같은 시장 안내도 섞입니다. 제목을 보고 실제 기업 공시인지 구분하세요.
Args: code: 종목코드 6자리 max_events: 볼 공시 개수 (기본 8, 최대 15). 같은 날 여러 건이면 하나로 묶습니다. before: 기준일 전 비교 거래일 수 (기본 5) after: 기준일 후 비교 거래일 수 (기본 10, 최대 60) include_types: 이 유형만 봅니다. 유형: 실적/계약/자금조달/지배구조/행정/IR/기타. 예: ["실적"] 이면 가격제한폭 확대·공매도 과열 같은 행정 안내가 빠집니다. exclude_types: 이 유형을 뺍니다 (include_types 와 함께 쓰면 include 적용 후 제외).
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | ||
| after | No | ||
| before | No | ||
| max_events | No | ||
| exclude_types | No | ||
| include_types | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark readOnly/idempotent/non-destructive; description adds behavioral caveats: past reaction does not predict future, Naver list contains market notices, same-day events are grouped, and only one candle/flow fetch is used. 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?
Each sentence earns its place: purpose, differentiation, warnings, then Arg list. Front-loaded with the one-line value proposition, and the caveats are kept as brief warnings rather than digressions.
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 6-param batch tool with an output schema, the description covers all invocation semantics: defaults, limits, type filtering, and interpretation warnings. The output schema handles return shape, so nothing necessary for correct use is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so description carries full parameter burden. It explains code format, max_events default/max and grouping, before/after defaults and caps, include_types categories and example, and exclude_types precedence after include. This is far beyond schema field names.
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 opens with '공시반응이력 — 최근 공시들에 이 종목이 어떻게 반응해 왔는지 한 번에' and contrasts with single-date get_event_reaction, making the batch-scope purpose explicit. It states a specific verb+resource and differentiates from the sibling tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete example questions and an explicit comparison: get_event_reaction looks at one date, requiring 8 calls for 8 disclosures, while this tool computes multiple event dates in one call. It also warns about non-corporate market notices and recommends include_types, which is actionable when-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_financialARead-onlyIdempotent
재무지표 — 한 종목의 전체 재무지표(연간·분기 추이 19개 항목).
⚠️ 여러 종목을 비교하려면 get_financial_batch를 쓰세요. 이 도구는 종목당
3,500자를 뱉어서, 5종목만 비교해도 재무가 전체 토큰의 78%를 먹습니다.
"PER", "PBR", "재무제표", "시가총액", "저평가" 같은 질문에 사용합니다.
Args: code: 종목코드 6자리 (예: "005930")
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool read-only, idempotent, and non-destructive, and the description adds substantial behavioral context: it returns roughly 3,500 characters per stock and can consume 78% of the token budget with just 5 stocks. This goes beyond what annotations provide and helps an agent plan its context window.
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 short, front-loaded with the core purpose, uses a callout for the critical token warning, and ends with a clear parameter definition. Every sentence carries useful information; there is no 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?
For a one-parameter tool with an output schema and safety annotations, the description is complete. It covers what is returned, when to use it, when not to use it, its token cost, and the exact input format. No critical information 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?
Although the input schema gives 0% property description coverage, the description fully documents the single parameter: code is a 6-digit stock code with the example '005930'. This compensates completely 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 names the resource ('재무지표') and specifies the exact scope: one stock's entire set of financial indicators with 19 items across annual and quarterly trends. It explicitly contrasts itself with the sibling get_financial_batch, so an agent can distinguish them without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit when-to-use guidance: questions involving PER, PBR, financial statements, market cap, or undervaluation. It also gives a direct alternative: use get_financial_batch for multi-stock comparisons, with a concrete token-cost warning that explains why.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_financial_batchARead-onlyIdempotent
재무벌크 — 여러 종목의 핵심 재무지표(PER/PBR/ROE/영업이익률/부채비율/배당률)를 한 표로.
⭐ 종목 비교의 기본 도구. "A와 B를 PER·PBR로 비교", "이 5종목 중 저평가", "업종 내 비교" 같은 요청에 get_financial을 종목마다 부르지 말고 이걸 쓰세요. (실측: 5종목 비교 시 get_financial 5회가 전체 토큰의 78%를 차지했습니다.)
한 종목의 전체 지표(연간·분기 시계열, EPS/BPS/유보율 등)가 필요하면 그때만 get_financial을 쓰세요.
Args: codes: 종목코드 6자리 리스트 (최대 30개)
| Name | Required | Description | Default |
|---|---|---|---|
| codes | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false. The description adds useful behavioral context: it returns a consolidated table, covers a specific metric subset, and avoids the token overhead of repeated calls. 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 front-loaded with a one-line summary, then gives clear usage guidance and parameter details. The token-cost measurement sentence is extra but reinforces the sibling-tool selection rule. No redundant information.
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 batch read tool with an output schema, the description fully covers what data is returned, when to use it versus alternatives, and the input format/limit. Nothing needed to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 defines codes as a 6-digit stock code list with a maximum of 30 items, which is essential validation the schema lacks. It does not address empty-list or invalid-code behavior, but it is sufficient 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 clearly states the tool returns core financial metrics (PER/PBR/ROE/operating margin/debt ratio/dividend) for multiple stocks in one table. It also explicitly distinguishes this from the per-stock get_financial tool.
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 guidance: any multi-stock comparison or valuation request should use this batch tool instead of calling get_financial repeatedly. It also states get_financial should only be used when full single-stock time-series indicators are needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_financial_soundnessARead-onlyIdempotent
Financial soundness — 금융회사 자금 건전성 경로 (규제자본·자산건전성, JSON).
은행·보험·증권 같은 금융회사에는 제조업형 CFO 런웨이가 성립하지 않습니다. 이 도구가 그 대체 경로입니다: "KB금융 자본비율", "JPM CET1", "충당금 얼마나 쌓았나" 같은 질문에 사용합니다.
확보되는 값(미국 XBRL 자산건전성 등)은 출처·기준일과 함께 돌려줍니다.
CET1·LCR·NSFR 처럼 공식 원문에만 있는 지표는 값을 지어내지 않고, 어느 보고서에서 확인해야 하는지(required_reports)를 구조화합니다.
규제 체계(미국 Fed / 한국 금감원)가 다른 지표를 하나의 점수로 합치거나 시장 간 직접 수치 비교하지 않습니다 - 산식·경과규정이 다릅니다.
Args: symbol: 한국 종목코드 6자리(예: "105560") 또는 US 티커(예: "JPM")
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/openWorld/idempotent annotations, the description discloses meaningful behavior: returned values include source and base date, unavailable indicators like CET1/LCR/NSFR are not invented but mapped to required_reports, and cross-regulatory-regime aggregation is deliberately avoided. This gives the agent a precise mental model of the tool's limits and output guarantees.
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 clear one-line summary, a contextual framing sentence, three scannable bullets, and a compact Args section. Every sentence adds useful information, and the most important scoping constraints are 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 a single well-documented parameter, rich annotations, and an output schema, the description covers all invocation-relevant aspects: when to use it, what data it returns, what it refuses to fabricate, and how to format the symbol. The behavioral and scoping notes make it self-sufficient for correct selection and use.
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 defines 'symbol' with 0% description coverage, so the description carries the full burden. It fully compensates by defining the accepted formats: Korean 6-digit stock codes (e.g., '105560') or US tickers (e.g., 'JPM'), with concrete examples for both.
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 a specific resource (financial-firm regulatory capital and asset soundness) and a clear purpose: answering queries like 'KB금융 자본비율', 'JPM CET1', and '충당금 얼마나 쌓았나'. It distinguishes this tool from the manufacturing-style CFO runway path, which makes its scope easy to separate from more general financial-data siblings.
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 tells the agent when to use the tool: for financial companies where the manufacturing-type CFO runway does not apply, and for regulatory capital/asset soundness questions. It also states when not to merge or compare across regulatory regimes, though it does not explicitly name sibling tools as alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_flowARead-onlyIdempotent
투자자수급 — 투자자별 매매동향 (개인/기관/외국인 순매매 주식 수)을 가져옵니다.
⚠️ 종목이 2개 이상이면 이 도구를 반복하지 말고 get_flow_batch를 쓰세요.
"외국인 수급", "기관 순매수", "수급 분석", "누가 사고 있어" 같은 질문에 사용합니다.
Args: code: 종목코드 6자리 (예: "005930") days: 조회할 일수 (기본 20일)
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | ||
| days | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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, covering the safety profile. The description adds the batch usage warning, which is behavioral guidance, but does not disclose other traits like return format or pagination. Given the annotations, a score of 3 is appropriate—it adds some value but not rich 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 concise and front-loaded with the core purpose. The warning about batch usage is prominent and clear, followed by usage examples and argument definitions. Every sentence serves a purpose, with no wasted words.
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 doesn't need to explain return values. It covers the essential aspects: what the tool does, when to use it (including the batch alternative), and parameter semantics. It also includes example queries that ground the tool's context. The description is complete enough for an agent to 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 description coverage is 0%, so the description carries the burden of explaining parameters. It does explain code as a 6-digit stock code and days as the number of days with a default of 20. This compensates for the missing schema descriptions, though it could be more detailed about the exact behavior of days.
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 investor supply-demand trends (net buy/sell by individual/institution/foreigner). It provides concrete example queries and explicitly differentiates from the sibling get_flow_batch by stating when not to use this tool. This distinguishes it effectively from similar 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?
Explicitly states when to use this tool versus get_flow_batch ('If there are 2 or more stocks, don't repeat this tool; use get_flow_batch instead'). Also gives example natural language queries that should trigger this tool, making usage context clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_flow_batchARead-onlyIdempotent
수급벌크 — 여러 종목의 투자자 수급(기관·외국인 순매매)을 한 번에 병렬 조회.
개별 get_flow를 N번 부르는 것보다 훨씬 빠릅니다 (서버 내부 asyncio.gather). "이 종목들 외국인 매수 같이 들어왔나", "관심종목 수급 비교" 같은 질문에 사용.
summary=True 는 심층 모드입니다: 일별 원문 대신 종목당 5/20/60일 누적 순매매와 순매수(양수) 일수로 압축해, 상한이 60일로 늘어납니다. "15종목 최근 60일 수급 판정" 같은 질문을 단건 호출 없이 한 번에 봅니다.
Args: codes: 종목코드 리스트 (최대 30개) days: 종목당 조회 일수 (기본 5, 일별 모드 최대 20 / summary 모드 최대 60) summary: True 면 일별 행 대신 5/20/60일 누적·순매수 일수 요약 (기본 False)
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | ||
| codes | Yes | ||
| summary | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the read-only/idempotent annotations, the description adds meaningful behavior: server-side asyncio.gather parallelism, batch size cap of 30 codes, day limits per mode, and the summary=True deep-mode behavior with 5/20/60-day cumulative metrics. It also describes what changes between daily rows and summary mode, which is far more than the annotations convey.
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: purpose, performance benefit, usage context, then parameter details. Each sentence adds information, including the summary-mode walkthrough and max limits. There is no filler 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?
Given the presence of an output schema and read-only annotations, the description is complete for practical invocation. It covers when to use the tool, how parameters behave in each mode, the batch limit, and the relationship to get_flow. Nothing essential for correct selection or invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries full responsibility for parameters. It fully documents codes (list, max 30), days (default 5, max depends on mode: 20 daily / 60 summary), and summary (toggle between daily rows and cumulative summary). Every parameter is semantically explained.
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 a specific action and resource: parallel bulk lookup of investor supply/demand (institutional/foreign net buying) for multiple stocks. It also distinguishes itself from the sibling get_flow by emphasizing batch parallelism and naming get_flow as the single-stock 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?
The description gives concrete use cases ('did foreigners buy these stocks together', 'compare supply/demand of watchlist stocks') and explicitly contrasts with calling get_flow N times. It lacks an explicit 'when not to use' statement, but the context is clear enough that an agent can route correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_indexARead-onlyIdempotent
시장지수 — KOSPI, KOSDAQ 지수 현재값을 가져옵니다. "코스피", "코스닥", "시장 지수", "오늘 시장 어때" 같은 질문에 사용합니다.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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, so the safety profile is fully covered. The description adds that it returns current index values, which is useful context, but doesn't disclose details like whether it returns both indices together or separately, or the exact response format. With annotations covering the safety profile, a 3 is appropriate.
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 front-loaded, with the core purpose stated first and example queries following. It's slightly redundant with the title and could be more concise, but every sentence earns its place by clarifying usage context.
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 zero-parameter read-only tool with an output schema present, the description is largely complete. It tells the agent what the tool does and when to use it. The only minor gap is not specifying whether the response includes both indices in a single call or if separate calls are needed, but the output schema likely covers this.
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 the schema provides no parameter documentation. The description compensates by explaining what the tool returns (KOSPI and KOSDAQ current values) and giving example queries. With 0 params, baseline 4 is correct, and the description adds meaningful context about the tool's scope.
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 a specific verb and resource: 'get_index' retrieves current index values for KOSPI and KOSDAQ. It clearly identifies the tool's purpose and distinguishes it from sibling tools like get_price or get_market_clock, though it doesn't explicitly name a sibling 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?
The description provides clear context for when to use this tool, listing example queries like '코스피', '코스닥', '시장 지수', and '오늘 시장 어때'. It implies this is the go-to tool for Korean market index queries, though it doesn't explicitly state when not to use it or name alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_indicatorsARead-onlyIdempotent
기술지표 — 이평선·RSI·MACD·볼린저·스토캐스틱 등 종합 판정 (JSON).
스크리닝·조건 필터·상태 판정 등 숫자 비교가 필요할 때만 호출.
차트 시각화용 아님(시각화는 get_chart). OHLCV 대신 판정 결과만 반환해 토큰 절약.
반환값의 라벨 필드(phase_label, type_label, position 등)는 그대로 인용할 것.
키 이름이 곧 정의입니다 — 임의로 바꿔 읽지 마세요:
volume.latest(+latest_date) 마지막 봉의 거래량. '오늘'이 아님
volume.avg_20b / ratio_vs_avg_20b 20봉(거래일) 평균 대비
volume.trade_value_est_krw 종가×거래량 추산. 실제 거래대금과 다름
volume.volume_rank_252b 252봉 중 순위, 1이 최다
position.bars_since_high/low 달력일이 아니라 봉 개수.
달력일이 필요하면 high_date/low_date로 직접 계산하세요.
position.high_52w/low_52w 봉이 1년치(일 252·주 52·월 12)가 안 되면 null.
그때 조회 구간 고저는 lookback_high/low 에 있습니다
주봉·월봉의 크로스 경과는 days_ago 가 아니라 bars_ago(봉 개수)
_meta.data_basis가 in_progress_bar면 마지막 봉이 미마감이라 이 판정들은
장 마감 시 달라질 수 있습니다.
Args: code: 종목코드 (예: "005930") days: 조회 일수 (기본 260, 30~500). 구조 분석 지표는 500+ 권장. include: 지표 키. 기본 ["ma", "ma_phase", "volume", "candle"]. 스냅샷: ma ma_phase ma_slope ma_cross rsi macd bollinger stochastic obv volume position candle 구조: support_resistance volume_profile price_channel timeframe: "day"/"week"/"month" (분봉 미지원) params: 비표준 파라미터 오버라이드(사용자 명시 요청 시만). 예: {"rsi":{"period":21}}
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | ||
| days | No | ||
| params | No | ||
| include | No | ||
| timeframe | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true and idempotentHint=true, but the description adds rich behavioral context: `volume.latest` refers to the last bar not today, `bars_ago` vs `days_ago` distinction, null handling for insufficient history, `trade_value_est_krw` as an estimate, and the `in_progress_bar` caveat that judgments may change before market close. These go 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?
Although lengthy, every sentence adds unique value: purpose, usage, key field definitions, parameter details, and data caveats are all present without redundancy. The structure is logical, starting with the core purpose, then usage, then field semantics, then parameters. No wasted words.
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 complex (many indicators, parameter variations, and edge cases), yet the description covers all critical aspects: when to use, what indicators are included, key field meanings, parameter ranges and defaults, and the incomplete-bar caveat. With an output schema present, the return format is handled separately, so nothing an agent needs to call correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the full burden. It provides concrete examples (code '005930'), default and range for days (260, 30–500), the full list of include keys split into snapshot and structure categories, timeframe options, and an example of params override. This compensates entirely 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 provides technical indicator judgments (이평선·RSI·MACD·볼린저·스토캐스틱 등) and explicitly differentiates it from chart visualization (get_chart) and raw OHLCV data. It specifies the exact use case: screening, condition filtering, and status judgment when numeric comparisons are needed.
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 guidance ('숫자 비교가 필요할 때만 호출') and when-not-to-use ('차트 시각화용 아님'), naming the alternative tool (get_chart). It also explains the token-saving benefit, leaving no ambiguity about selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_indicators_bulkARead-onlyIdempotent
기술지표벌크 — 여러 종목(최대 100개)의 지표를 병렬 판정. 스크리닝 핵심.
⚠️ 시계열·캔들 아님 — 집계 판정값만(시각화는 get_chart). get_indicators N번 대신 이걸로.
Args: codes: 종목코드 리스트 (최대 100개) days: 조회 일수 (기본 260) include: 지표 키 (기본 ["ma_phase","volume"]). get_indicators 참조. timeframe: "day"/"week"/"month" params: 지표 파라미터 오버라이드(전 종목 공통). get_indicators 참조.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | ||
| codes | Yes | ||
| params | No | ||
| include | No | ||
| timeframe | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, covering the safety profile. The description adds that only aggregated judgment values are returned (not time series) and that params overrides are common to all stocks, which are useful behavioral traits. However, it does not detail output structure or potential performance/rate-limit implications, though the output schema exists to fill some of that gap.
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 concise header with the core purpose, a warning line clarifying what it is not, and a tidy argument list with defaults. It is front-loaded, every sentence earns its place, and the formatting improves 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 the complexity (5 params, nested objects, output schema present), the description provides enough to call it correctly: parameter defaults, allowed timeframe values, and references to get_indicators for indicator details. It clarifies return type and differentiates from siblings. It does not explain the exact output schema, but the output schema itself covers that, so the description is adequately 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 compensate. It lists all 5 parameters with explanations: codes (max 100), days (default 260), include (default values, referencing get_indicators), timeframe (allowed values), and params (override, common to all). This adds meaning beyond the bare types. It could specify include key options more explicitly, but it points to get_indicators for details, which is acceptable.
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: it computes indicators for multiple stocks (up to 100) in parallel, specifically for screening. It distinguishes itself from get_indicators (single-stock) and get_chart (visualization) by naming them explicitly, 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?
Explicit guidance is given: use this instead of calling get_indicators N times, and use get_chart for visualization. It also clarifies that it returns aggregated judgment values only, not time series/candles, preventing misuse. The mention of '스크리닝 핵심' (core for screening) sets context for when to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_intraday_chartARead-onlyIdempotent
분봉차트 — 국내·미국 분봉/시간봉 OHLCV (증권사 연결 필요 구간 있음).
증권사(한국투자증권·키움증권 중 하나) Open API 를 연결한 사용자는 주 사용 증권사에서 KR·US 분봉을 받는다. 미연결 사용자는 US 분봉만 Yahoo 에서 받는다 (KR 분봉은 증권사 연결 필요). 검증된 능력만 활성화된다. 일·주·월봉은 기존 get_chart / get_us_chart 를 사용.
Args: symbol: KR 종목코드 6자리 또는 US 티커 market: "KR" | "US" interval: 1m|3m|5m|10m|15m|30m|60m|120m|240m date: 기준 거래일 (YYYY-MM-DD, 기본 최근 거래일) row_limit: 최대 반환 봉 수 (기본 120, 최대 500) venue: KR 은 KRX 고정. US 는 증권사 사용 시 NYS|NAS|AMS 필요 session: "regular" (기타 세션은 능력 검증 후 지원) completed_only: 완성 봉만 반환 (기본 True) source: auto|kis|kiwoom|naver|yahoo. auto 는 주 사용 증권사 하나에 고정되고, 증권사 명시는 strict(실패해도 다른 공급원으로 대체하지 않음)
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | ||
| venue | No | ||
| market | No | ||
| source | No | ||
| symbol | Yes | ||
| session | No | ||
| interval | No | ||
| row_limit | No | ||
| completed_only | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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, but the description adds substantial behavior beyond that: broker-vs-Yahoo data source variability, the KR-bar requirement of a broker connection, "검증된 능력만 활성화된다" (only capability-verified features are enabled) indicating feature gating, strict-mode semantics for source (no fallback on failure), and session limiting to "regular". These are the operational traits an agent needs to predict what will happen at call time.
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 and front-loaded: a one-line purpose title, a compact usage-context paragraph, then a scannable Args block with each parameter on its own line. Every sentence earns its place, though the title's parenthetical "증권사 연결 필요 구간 있음" slightly overlaps with the paragraph that elaborates the broker-connection condition, and the text is dense enough that it requires careful reading.
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 complex 9-parameter tool with zero schema-level parameter descriptions, the definition is nearly complete: it covers data source availability, per-parameter semantics with defaults and enums, session limitations, fallback/strict behavior, and sibling routing. Return structure is handled by the existing output schema, so nothing an agent needs to invoke this tool correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the full burden, and it fully delivers: all 9 parameters are documented with allowed values (interval set, market KR|US), constraints (venue: KRX fixed for KR, NYS|NAS|AMS for US via broker), defaults (row_limit 120, completed_only True, date = latest trading day), and behavior nuances (auto source fixes to one primary broker; explicit broker is strict). No parameter is left undocumented.
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 resource and scope: "분봉차트 — 국내·미국 분봉/시간봉 OHLCV" (intraday/hourly OHLCV for KR and US markets), which clearly identifies what the tool returns. It also names the sibling alternatives it is not — "일·주·월봉은 기존 get_chart / get_us_chart 를 사용" (daily/weekly/monthly should use get_chart/get_us_chart) — so an agent can distinguish it from the get_chart sibling without inspecting schemas.
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 conditions for use: users connected to a broker (Korea Investment or Kiwoom) receive KR/US intraday bars; unconnected users get US-only bars from Yahoo, with KR bars requiring broker connection. It also states the exclusion explicitly — daily/weekly/monthly candles belong to get_chart/get_us_chart — providing both when-to-use and when-not-to-use guidance with named alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_intraday_indicatorsARead-onlyIdempotent
분봉지표 — 분봉/시간봉 기준 기술지표 (JSON).
차트와 같은 봉 데이터로 계산한다(공급원 혼합 없음). 일봉 지표는 기존 get_indicators 사용. days 가 아니라 bars(봉 개수) 기준이다.
분봉은 일봉과 키 이름이 다르다 — 이름 그대로 읽으세요:
position.lookback_high/low 조회한 봉 구간의 고가·저가. 52주 값이 아님
ma_cross·macd.cross 의 bars_ago 몇 봉 전인지
volume.trade_value_est_krw / _usd 종가×거래량 추산. 통화는 이름대로
미국 가격은 달러 소수 둘째 자리(1달러 미만은 넷째 자리)
Args: symbol: KR 종목코드 또는 US 티커 market: "KR" | "US" interval: 1m|3m|5m|10m|15m|30m|60m|120m|240m bars: 계산에 쓸 봉 개수 (기본 260, 30~500) include: 지표 키 (기본 ["ma","ma_phase","volume","candle"]) venue / session / completed_only / source: get_intraday_chart 와 동일 params: 지표 파라미터 오버라이드
| Name | Required | Description | Default |
|---|---|---|---|
| bars | No | ||
| venue | No | ||
| market | No | ||
| params | No | ||
| source | No | ||
| symbol | Yes | ||
| include | No | ||
| session | No | ||
| interval | No | ||
| completed_only | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent safety, and the description adds valuable behavioral context: same bar data as the chart with no source mixing, distinct key names, lookback_high/low not being 52-week values, bars_ago counted in bars, and estimated trade values. This goes beyond the annotations without contradicting them.
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 definition and the most critical caveats (bars vs days, key-name differences), followed by a compact Args list. Every sentence adds needed information, and the bulleted key-name warnings are dense and directly prevent misinterpretation.
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 nested-object tool with an output schema, the description is nearly complete: it covers all parameters, gives defaults and enums, and clarifies important output-name semantics without restating the schema. It falls slightly short of 5 because four parameters depend on get_intraday_chart documentation and the params override is underspecified.
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 carries the full parameter burden and mostly succeeds: it gives market and interval enums, bars default and range, include default list, and delegates venue/session/completed_only/source to get_intraday_chart semantics. The only weak spot is 'params: 지표 파라미터 오버라이드', which lacks format or key details.
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 precise label, '분봉지표 — 분봉/시간봉 기준 기술지표 (JSON)', naming the resource and scope. It explicitly says daily indicators belong to get_indicators, so the tool is clearly distinguished from its closest sibling.
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 this tool (intraday/minute/hour bars) and when not to ('일봉 지표는 기존 get_indicators 사용'). It also clarifies the bars-not-days unit and references get_intraday_chart for shared parameter semantics, giving the agent clear routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_investor_depositARead-onlyIdempotent
투자자예탁금 — 시장에 대기 중인 돈의 추이 (고객예탁금·신용잔고·펀드).
종목 수급(get_flow)이 "누가 샀나"라면 이건 "살 돈이 얼마나 있나"입니다.
"예탁금 늘고 있어?", "신용잔고 추이" 같은 질문에 씁니다.
Args: days: 조회할 거래일 수 (기본 20, 최대 100)
| Name | Required | Description | Default |
|---|---|---|---|
| days | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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, so the description does not need to repeat safety. It adds semantic context about the data types (customer deposits, credit balance, funds) but does not disclose any additional behavioral traits such as pagination, rate limits, or error conditions. Given the annotations cover safety, the added context is useful but not extensive, warranting a 4.
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 succinct: a title line, a one-sentence analogy, a one-sentence use case, and a parameter note. It front-loads the core concept and provides necessary details without padding. Every sentence earns its place, and the structure 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?
Given the tool has an output schema (not shown but present), the return format is covered. The description explains what the tool does, when to use it, and the only parameter with its constraints. There are no nested objects or complex requirements. 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?
The schema has one parameter 'days' with no description (0% coverage). The description fully compensates by explaining it as '조회할 거래일 수 (기본 20, 최대 100)' – number of trading days to query with a default of 20 and a max of 100. This adds meaning beyond the bare integer type and is sufficient 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's purpose: it shows the trend of investor deposits (customer deposits, credit balances, funds) representing money waiting in the market. It explicitly contrasts with get_flow ('who bought' vs. 'how much buying money'), distinguishing it from a key sibling. The verb 'get' and resource are clear, and the Korean phrasing is 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?
It provides explicit usage guidance by stating the questions it answers ('예탁금 늘고 있어?', '신용잔고 추이') and contrasts it with get_flow, implicitly telling the agent when to choose this tool over that sibling. It clearly implies the condition for use: when the user asks about deposit levels or credit trends, not stock supply/demand.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_ipo_scheduleARead-onlyIdempotent
공모주일정 — 심사·수요예측·청약·상장 단계별 공모주 목록.
"이번 주 청약 뭐 있어", "공모주 일정", "상장 예정 종목" 같은 질문에 씁니다.
단계마다 확정된 것과 아직 아닌 것이 다릅니다. 희망공모가는 심사 단계부터 나오지만 확정공모가와 수요예측 경쟁률은 그 단계를 지나야 나옵니다. 아직 없는 값은 비워서 돌려주며 0 으로 채우지 않습니다.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint. The description adds valuable behavioral detail: data availability depends on the stage (e.g., 확정공모가 only appears after demand forecast), and missing values are returned as empty, not zero. This exceeds annotation coverage and provides crucial context for interpreting results.
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 remarkably concise—two sentences plus example queries—and front-loads the purpose. Every sentence adds value, with no filler or redundancy. It is well-structured and easily parsed.
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 and the presence of an output schema, the description covers the key behavioral aspects: stage progression and missing-value policy. It does not enumerate all possible fields, but that is adequately handled by the output schema. The description is sufficient for an agent to call and interpret 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 tool has zero parameters, so the baseline is 4. The description does not need to explain parameters; instead, it explains output semantics (stage-dependent fields and missing-value handling), which is appropriate for a parameterless tool.
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: it returns a list of IPO stocks by stage (review, demand forecast, subscription, listing). It includes example queries ('이번 주 청약 뭐 있어', '공모주 일정') that make the intended use immediately obvious. No sibling tool covers IPO schedules, so it is well-differentiated.
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 gives example questions that trigger this tool, establishing clear usage context. It does not explicitly state when not to use it or name alternatives, but given the absence of competing IPO tools among siblings, the guidance is adequate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_market_cap_rankingARead-onlyIdempotent
시가총액순위 — 시가총액 상위 종목을 가져옵니다. "대형주", "시가총액 TOP", "코스피 대장주", "코스닥 전 종목 시총" 같은 질문에 사용합니다.
결과 머리말에 시장 전체 종목 수와 이 표의 순위 범위("전체 1,820개 중 1~50위")가
나옵니다. 501위 아래도 받을 수 있습니다 — count 개씩 나눈 쪽을 page로 고릅니다.
시장 전체: count=500 으로 page=1, 2, … 를 꼬리말에 "다음 쪽"이 없을 때까지. (2026-09 기준 KOSPI 약 950개 = 2쪽, KOSDAQ 약 1,800개 = 4쪽)
특정 순위 구간: 예) 301~400위 = count=100, page=4. 쪽은 같은 순간의 목록에서 자릅니다(장중 1분 캐시). 장중에 몇 분 넘게 띄워 받으면 그 사이 순위가 바뀌어 경계 종목이 겹치거나 빠질 수 있습니다.
⚠️ 순위표에는 주식만 있는 게 아닙니다. 리츠·인프라펀드·상장 펀드·외국기업(DR 포함) 행이 같은 순위에 섞여 있고, 거래정지 종목도 들어 있습니다. 해당 행은 '구분' 열에 표시되고, 시장 전체의 구분별 개수는 결과 끝에 나옵니다. "상장 기업 수"처럼 주식만 셀 때는 그 개수를 쓰세요.
Args: market: "KOSPI" / "KOSDAQ" (기본 KOSPI, ALL 미지원) count: 한 번에 받을 종목 수 (기본 50, 최대 500) page: count 개씩 나눈 몇 번째 쪽인가 (기본 1). page=2, count=500 이면 501~1000위.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| count | No | ||
| market | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already establish read-only, idempotent, non-destructive behavior, and the description adds substantial non-obvious context: the result head shows total market count and rank range, there is a 1-minute intraday cache, rank boundaries can shift causing overlaps/gaps, and the ranking includes non-stock rows such as REITs, funds, DRs, and halted stocks with a '구분' column and per-type counts. This is exactly the kind of behavioral disclosure agents need.
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 information-dense and well structured: purpose, example queries, result notes, pagination strategy, caveats, and Args. It is front-loaded with purpose and each paragraph earns its place, though the pagination/caching sections could be tightened slightly without losing essential 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?
Given minimal schema descriptions and a complex paginated ranking tool, the description is remarkably complete. It explains how to get the whole market, how to fetch a specific rank band, how to read the head/tail counts, what non-stock rows mean, and how the cache affects results. An output schema exists, so not re-listing return fields is acceptable.
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 has the full burden for parameter semantics, and it fully delivers. It documents market values with defaults and exclusions, count with default and maximum, and page with a concrete mapping example ('page=2, count=500 이면 501~1000위'). No parameter is left ambiguous.
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 statement identifying the tool as a market-cap ranking fetcher. It also gives concrete example queries ('대형주', '시가총액 TOP', '코스피 대장주') that make its purpose immediately clear and distinguish it from sibling ranking tools like get_volume_ranking and get_change_ranking.
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 clear usage guidance: example phrases, how to paginate for the full market versus a specific rank band, and an explicit exclusion ('ALL 미지원'). It does not explicitly name sibling alternatives to prefer instead, but the examples and market-cap framing make intended use clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_market_clockARead-onlyIdempotent
한국장/미국장 현재 상태, 휴장 여부, 최근/다음 거래일을 한 번에 조회합니다.
종목 분석 전 데이터 기준시각을 확인할 때 사용합니다. KRX와 NYSE/NASDAQ의
주말, 정규 휴장일, 장전/정규장/시간외/장마감 상태를 함께 반환합니다.
한국장은 2026-09-14부터 애프터마켓(16:00~20:00)이 세션으로 잡히고, 프리마켓은
시행 전이라 나오지 않습니다. current_session·sessions·next_session이
지금 체결되는 세션과 오늘 남은 세션을 알려줍니다(is_open은 정규장만 뜻함).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description adds domain-specific behavior beyond that: it explains the meaning of `current_session`, `sessions`, `next_session`, and that `is_open` only indicates regular market hours. It also discloses the 2026-09-14 aftermarket session addition and the absence of premarket. This is valuable context 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 a single paragraph that is dense but efficient. The first sentence states the primary purpose and returns. Subsequent sentences add necessary nuance about session semantics and specific dates. No wasted words; every sentence carries important information.
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 and the presence of an output schema, the description is complete. It explains what fields are returned (current_session, sessions, next_session, is_open) and clarifies the Korean aftermarket/premarket status, which is essential for correct interpretation. No missing information an agent would need to call 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 the baseline is 4. The description does not need to add parameter meaning since there are none. It correctly focuses on explaining what the tool returns rather than parameters.
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 fetches Korean and US market status, holidays, and recent/next trading days. It names the specific resource (market clock) and the verb '조회' (query). It distinguishes itself from siblings by being the only tool for market session/time information, with no overlap with any other tool.
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: '종목 분석 전 데이터 기준시각을 확인할 때 사용합니다' (use when checking data reference time before stock analysis). It also gives specific contextual details about Korean market sessions and the meaning of fields. It does not mention when not to use, but given its uniqueness among siblings, alternatives are not necessary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_metrics_summaryARead-onlyIdempotent
사용량통계 — 최근 N일간 MCP 도구 사용량을 집계해서 보여줍니다.
디버깅/최적화용. 도구별로:
호출 횟수
평균/p50/p95 실행 시간
평균 토큰 소모량
캐시 히트율
에러 발생 횟수 를 보여줍니다.
로그 파일 위치: ~/.stocklens/logs/metrics_YYYYMMDD.jsonl (2026-08 이전 기록은 ~/Downloads/kstock/logs/ 에 있고, 그것도 같이 읽습니다)
Args: days: 조회할 일수 (기본 1, 오늘만. 최대 30)
| Name | Required | Description | Default |
|---|---|---|---|
| days | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, non-destructive behaviorikuha. The description adds valuable context beyond annotations: it reads from local log files, includes legacy logs from a second directory, and aggregates per-tool statistics. This meaningfully enriches behavioral understanding.
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, a short usage context, a focused bullet list of output metrics, relevant log-file details, and a clear parameter explanation. Every sentence adds necessary 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?
The description is complete for a single-parameter read-only metrics tool. It explains what will be returned (metric categories), where the data comes from, how the sole parameter behaves, and its limits. An output schema exists, so the exact return shape need not be spelled out.
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% and the schema only says 'days' is an integer. The description compensates fully by defining the units (days), default value (1, meaning today only), and maximum (30). This is exactly the parameter-level guidance an agent needs.
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 a specific verb and resource: it aggregates and displays MCP tool usage statistics for recent N days. The bullet list of metric types (call count, latencies, tokens, cache hit rate, errors) makes the tool's purpose unmistakable and distinct from all sibling tools, none of which are usage 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?
It explicitly identifies the intended context as debugging/optimization, giving the agent a clear when-to-use signal. It doesn't name alternatives, but there are no obvious sibling tools serving the same purpose, so exclusions are less necessary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_move_contextARead-onlyIdempotent
오늘왜움직였나 — 시세·거래량 배수·기사·거래소 공시·증권사 리포트를 시각순으로 한 번에.
"오늘 왜 오르나", "왜 떨어져", "급등 이유", "무슨 재료", "특징주" 질문에 먼저 사용합니다. get_price → get_disclosure → get_flow 를 따로 이어 부르지 마세요. 이 도구 하나로 모입니다.
원인을 판정하지 않습니다. 사실을 시각순으로 놓을 뿐입니다. 기사 시각이 가격 반응보다
앞서는지는 get_intraday_chart 분봉으로 확인합니다. 공시가 0건이어도 재료 없음이
아닙니다 — 보도자료·기사는 공시가 아닙니다. 한 출처가 실패하면 그 부분만 "조회 실패"로
표시하고 나머지는 돌려줍니다(실패는 없음이 아니라 모름).
Args: code: 종목코드 6자리 (예: "036090")
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (readOnlyHint=true, openWorldHint=true, idempotentHint=true, destructiveHint=false) already establish a safe, read-only profile. The description adds substantial semantic caveats beyond that: the tool does not determine cause but only arranges facts chronologically; zero disclosures does not mean no material since press releases/articles are not disclosures; and partial failure is reported as '조회 실패' (unknown), not absence. These nuances materially affect how an agent interprets results and go well beyond what annotations convey.
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 purpose and use cases, followed by behavior caveats. Every sentence carries functional weight — the caveats about cause determination, zero-disclosure interpretation, and partial failure are all genuinely necessary for correct usage. It is somewhat dense and long, but there is no filler 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?
For a single-parameter aggregator with an existing output schema, the description is complete: it covers what is aggregated, when to use it, what it does not do, result interpretation caveats, and the parameter format. The output schema covers return structure, and annotations cover the safety profile, so nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 for the parameter documentation gap. The Args section provides code: '종목코드 6자리 (예: "036090")' — specifying the 6-digit format and giving a concrete example. This is sufficient compensation for a single parameter, though the description could optionally add validation guidance (e.g., leading zeros).
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 precise statement of the tool's function: it aggregates price, trading-volume multiples, articles, exchange disclosures, and securities-firm reports in chronological order. It explicitly names the sibling tools it replaces (get_price, get_disclosure, get_flow) and lists concrete user questions ('오늘 왜 오르나', '급등 이유') that this tool answers first, making its purpose unmistakable and clearly differentiated from siblings.
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 guidance is explicit and prescriptive: it instructs the agent to use this tool FIRST for 'why did it move' queries and explicitly warns NOT to chain get_price → get_disclosure → get_flow separately. It also routes to get_intraday_chart for a specific follow-up need (verifying whether article timing precedes price reaction), providing both when-to-use and when-not-to-use guidance with alternatives named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_multi_chart_statsARead-onlyIdempotent
차트통계벌크 — 여러 종목의 기간 집계 통계(현재가/최고가/최저가/낙폭/기간수익률)를 한 번에 병렬 조회.
⚠️ 시계열 아님 — 집계값만 반환(캔들·OHLCV는 get_chart). 개별 get_chart N번 대신 이걸로. ⭐ 스크리닝 필수: "52주 고점 대비 -30% 종목" 등 drawdown_pct·period_return_pct 필터에 사용.
Args: codes: 종목코드 리스트 (최대 100개) days: 과거 조회 일수 (기본 260 = 52주)
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | ||
| codes | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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, covering the safety profile. The description adds behaviorally meaningful context beyond the annotations: parallel lookup, aggregate-only returns (no time series), a 100-code cap, and the screening-oriented filter semantics. It stops short of discussing partial-failure or invalid-code behavior for a batch call, so a 4 is appropriate.
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 front-loaded: purpose first, then a warning with sibling routing, then a concrete screening use case, then parameter definitions. Every line earns its place, and the formatting (⚠️ for exclusions, ⭐ for key use case) makes the structure 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?
For a two-parameter tool with an output schema and strong annotations, the description is complete: it explains what it returns and does not return, when to use it versus get_chart, the screening scenario, parameter defaults, and the 100-item limit. No information an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 for parameter meaning, and it delivers: codes is explained as a stock-code list with a 100-item maximum, and days is explained as lookback period with a default of 260 (= 52 weeks). Both parameters are fully clarified despite having no schema-level 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 names a specific verb and resource (bulk chart stats) and enumerates the exact aggregate fields returned: current price, high, low, drawdown, and period return. It explicitly differentiates itself from get_chart by stating it is not time-series and returns aggregates only, so an agent can distinguish it from siblings without opening schemas.
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 guidance: use it instead of N individual get_chart calls, and it is essential for screening filters like drawdown_pct/period_return_pct (with a concrete example '52-week high -30%'). It also states the exclusion condition — candles/OHLCV belong to get_chart. Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_multi_stocksARead-onlyIdempotent
벌크조회 — 여러 종목의 기본 정보(가격/등락률/거래량)를 한 번에 가져옵니다. "이 종목들 현재가 보여줘", "리스트 종목 시세 한번에" 같은 질문에 사용합니다. 개별 get_price를 여러 번 호출하는 것보다 훨씬 토큰 효율적입니다. 스크리닝 결과 N개 종목을 비교 분석할 때 필수 도구.
Args: codes: 종목코드 리스트 (최대 30개, 예: ["005930", "000660", "005380"])
| Name | Required | Description | Default |
|---|---|---|---|
| codes | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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, so the safety profile is covered. The description adds useful constraints: max 30 codes, and token efficiency. It doesn't describe error handling or partial-result behavior, but given the annotations, this is adequate.
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 slightly verbose but every sentence earns its place: purpose, usage examples, efficiency note, and parameter details. It is front-loaded with the core function and uses a clean Args block. Could be tightened, but it is 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?
An output schema exists, so return format is covered. The description covers when to use, the parameter meaning, and a constraint. It doesn't explicitly state this is for Korean stocks, but that is implied by the code format and the sibling get_us_multi_price. Missing minor edge cases, but overall sufficient.
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% coverage for the parameter description, but the description explicitly defines 'codes' as a list of Korean stock codes, sets a maximum of 30, and gives concrete examples (e.g., ['005930', ...]). This fully 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 states a clear verb ('fetches basic info for multiple stocks at once') and specifies the exact data fields (price, change rate, volume). It also differentiates itself from the sibling get_price by explicitly framing itself as the bulk alternative, so an agent can immediately tell it apart.
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 examples ('Show me current prices for these stocks'), names the alternative (get_price) and the condition for choosing this tool (multiple vs individual calls), and even highlights token efficiency. It also calls out a specific scenario (comparing N screening results). This is complete guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_newsARead-onlyIdempotent
종목뉴스 — 한국 주식 종목의 최근 기사 (네이버 종목 뉴스 + 종목명 뉴스 검색).
"무슨 뉴스 있어", "기사 찾아줘", "재료가 뭐야" 질문에 사용합니다.
"오늘 왜 오르나"는 시세·공시·리포트까지 한 번에 묶는 get_move_context 가 맞습니다.
공시(get_disclosure)가 0건이어도 기사는 있을 수 있습니다 — 회사 보도자료는 공시가 아닙니다.
출처가 둘이라 시각 정확도가 다릅니다. 시각 앞의 표기("약")를 그대로 전하세요.
종목태그: 네이버가 종목을 붙인 기사. 기사 시각 정확(분 단위). 당일 기사는 늦게 붙습니다.
이름검색: 종목명 뉴스 검색. 당일 기사가 바로 잡힘. 시각은 "N시간 전" 표시를 조회 시각에서 뺀 근사값이고, 같은 이름의 다른 대상 기사가 섞일 수 있습니다.
Args: code: 종목코드 6자리 (예: "036090") limit: 기사 수 (기본 10, 최대 30) today_only: True 면 오늘(한국 날짜) 기사만
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | ||
| limit | No | ||
| today_only | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses data quality nuances beyond annotations: two sources with different timestamp accuracy, approximate times for name search, potential mixing of same-name articles, and late tagging for today's articles. It also notes that company press releases are not disclosures. This adds substantial behavioral context that annotations (readOnlyHint, openWorldHint) 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 organized with clear sections: purpose, usage, source distinctions, and args. It uses bullets for the source details, making it scannable. Every sentence adds value—no filler. It is appropriately sized for the complexity of the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (two sources, timing caveats, three parameters with no schema descriptions) and the presence of an output schema, the description is complete. It covers what the tool does, when to use it, parameter semantics, and behavioral quirks, leaving nothing an agent needs to 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 coverage is 0%, so the description fully compensates. The Args section defines each parameter: code (6-digit example), limit (default 10, max 30), and today_only (Korean date filter). This is essential and clearly stated, giving the agent everything needed to fill the parameters 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 opens with a clear statement: '종목뉴스 — 한국 주식 종목의 최근 기사' (stock news — recent articles for Korean stock), and explicitly names the two sources (Naver stock news and name search). It also distinguishes itself from get_move_context and get_disclosure, making the purpose unambiguous and differentiated from siblings.
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 triggers ('무슨 뉴스 있어', '기사 찾아줘', '재료가 뭐야') and an explicit when-not-to-use ('오늘 왜 오르나' → get_move_context). It also clarifies that get_disclosure returning zero does not imply no articles, which is a valuable routing rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_priceARead-onlyIdempotent
현재가 — 종목의 현재 시세 스냅샷 (오늘 하루치 OHLC + 거래량).
⚠️ 종목이 2개 이상이면 get_multi_stocks를 쓰세요.
"삼성전자 지금 얼마", "현재가", "오늘 시세", "주가 알려줘" 같은 질문에 사용합니다.
⚠️ 단일 시점 스냅샷. 과거 시계열 아님. 차트/히스토리 필요 시 get_chart 사용. 코스피200/코스닥150 등 NXT 대상 종목은 KRX 정규장을 기본값으로 보여주고, NXT(대체거래소) 시세는 별도 블록으로 덧붙입니다(두 시장 수치를 섞지 않음).
Args: code: 종목코드 6자리 (예: "005930")
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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, so the agent knows this is a safe, read-only operation. The description adds context beyond annotations: it's a snapshot (not a time series), and for NXT-listed stocks, it shows KRX regular market as default with NXT as a separate block, not mixing the two markets. This is useful but not exhaustive; it doesn't mention data freshness, delay, or exact return format, though an output schema exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with the core purpose. The exclusions are placed early, which is helpful. However, it includes some redundancy: the NXT explanation is a bit verbose, and the example could be trimmed. Still, it's efficient overall, with no wasted sentences.
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 (1 parameter, no nested objects) and the existence of an output schema, the description is quite complete. It covers the key aspects: single stock, snapshot nature, and the NXT market handling. The main gap is not specifying how to interpret the output, but that's covered by the output schema. It could also mention that it's for Korean stocks explicitly, but the example and NXT context make it inferable.
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 only one parameter (code) with 0% schema description coverage, so the schema itself provides no description for what 'code' means. The description compensates by explaining the parameter: '종목코드 6자리 (예: "005930")' (6-digit stock code, e.g., '005930'). This adds meaning beyond the schema's bare 'code' property, which is great for a single-parameter tool.
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 a current market snapshot (today's OHLC + volume) for a single stock. It specifies the resource (stock price) and the verb (get), and it differentiates from siblings by explicitly noting that multi-stock queries should use get_multi_stocks and historical queries should use get_chart. However, it doesn't explicitly mention that it's for Korean stocks, though the example (005930) and NXT context imply it.
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 guidance on when to use this tool: for queries like 'What is Samsung Electronics' current price?' It also clearly states exclusions: if multiple stocks, use get_multi_stocks; if historical data needed, use get_chart. This is a strong usage guideline, directing the agent away from inappropriate uses.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_report_contentARead-onlyIdempotent
리포트읽기 — 증권사 리포트 한 건의 PDF 본문을 읽어옵니다.
⚠️ 한 번에 한 건만. 리포트 하나가 1만 자를 넘어서, 여러 건을 이어 부르면
대화 토큰을 통째로 먹습니다. 목록·목표가·짧은 요약은 get_reports로 충분하고,
"이 리포트 자세히", "목표가 근거" 처럼 한 건을 깊게 볼 때만 쓰세요.
어느 모드를 고를지는 사용자 말에 맞춥니다. 사용자가 따로 말하지 않으면
summary로 두세요.
mode | 무엇을 주나 | 이렇게 말할 때 |
| 앞 4,000자 발췌 | "리포트 봐줘", "목표가 근거가 뭐야" |
| 본문 전체 (상한 50,000자) | "전문 다 보여줘", "빠짐없이", "부록까지" |
| 본문 없이 링크만 | "링크만 줘", "내가 직접 볼게" |
summary로 충분한 이유: 실측상 리포트는 앞쪽에 투자의견·목표가 산출 근거·
실적 추정이 모이고, 뒤쪽은 재무제표 부록과 컴플라이언스 고지문입니다.
판단 근거는 대개 앞 3,000자 안에 다 있습니다.
증권사마다 PDF 만드는 방식이 달라, 글자가 아니라 이미지로 렌더링해 내는 곳은 본문을 읽을 수 없습니다. 그 경우 억지로 몇 글자 내놓지 않고 못 읽었다고 알려주며 원문 링크로 안내합니다.
Args:
nid: 리포트 번호. get_reports 결과에 함께 표시됩니다.
mode: "summary"(기본) / "full" / "link". 한글("요약"·"전문"·"링크")도 됩니다.
max_chars: 글자 수를 직접 지정하고 싶을 때만. 비우면 mode 기본값을 씁니다.
| Name | Required | Description | Default |
|---|---|---|---|
| nid | Yes | ||
| mode | No | ||
| max_chars | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as read-only and idempotent; the description adds meaningful behavior beyond that: it warns about token consumption, explains why summary mode is usually sufficient, and discloses that image-rendered PDFs may be unreadable and will result in a clear failure message with a link instead of fabricated text.
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 purpose, then uses a compact warning, a clear table, and brief rationale paragraphs. No sentence is redundant; each adds either usage context, failure-mode awareness, or parameter semantics.
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 and the annotations already cover safety, the description covers every operational need: required parameter, mode defaults, optional parameter behavior, token-cost warning, sibling routing, and failure handling for image-based PDFs. Nothing necessary for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the Args section fully compensates: nid is tied to get_reports output, mode is explained with all three values including Korean aliases and defaults, and max_chars is explicitly optional with behavior defined when omitted.
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?
First line states the exact action and scope: reads the PDF body of exactly one securities report. It explicitly contrasts itself with get_reports, so an agent can immediately tell which tool handles lists/summaries vs. deep single-report reading.
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: only for deep reading of a single report, while get_reports suffices for lists and short summaries. It also gives a mode-selection table with user-phrase examples, a clear default (summary), and guidance to avoid multi-call token exhaustion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_reportsARead-onlyIdempotent
증권사리포트 — 종목·시황·산업·경제 등 증권사 분석 리포트.
"리포트", "증권사 분석", "애널리스트 의견", "리서치" 같은 질문에 사용합니다.
종목 리포트는 code 로, 종목을 가리지 않는 갈래는 kind 로 부릅니다.
"오늘 증권가가 시장을 어떻게 보나" 같은 질문이 후자입니다.
Args: code: 종목코드 6자리 (예: "005930"). 종목 리포트를 볼 때만. count: 가져올 리포트 수 (기본 5, 최대 10) kind: 종목 대신 갈래로 볼 때. market(시황) | invest(투자전략) | economy(경제) | debenture(채권) | industry(산업) | company(종목)
| Name | Required | Description | Default |
|---|---|---|---|
| code | No | ||
| kind | No | ||
| count | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is covered. The description adds count defaults/maximums and query-mode distinctions, but it does not disclose additional behavioral traits such as auth requirements, rate limits, or result ordering. With annotations present, the added behavioral context is adequate but not rich.
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 purpose, followed by usage triggers and parameter details. There is slight redundancy between the prose explanation and the Args section, but each paragraph earns its place and the format is 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?
Given the annotations and output schema, the description is complete enough for an agent to invoke the tool correctly. It covers parameter semantics, mutual exclusivity of `code` vs `kind`, allowed enum values, count limits, and example queries. No essential missing information prevents correct selection or 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 is bare with 0% description coverage, so the description carries the full burden. It thoroughly explains `code` as a 6-digit stock code, `kind` with all enum values (market, invest, economy, debenture, industry, company), and `count` with default and maximum. This fully 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 retrieves brokerage research reports across stocks, market, industry, and economy. It distinguishes stock-specific usage via `code` from category-based usage via `kind`, but it does not explicitly contrast with sibling tools like `get_report_content` or `get_consensus`.
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 concrete query triggers such as '리포트', '증권사 분석', and '애널리스트 의견', plus an example of a market-sentiment question. It clarifies when to use `code` vs `kind`, but it does not name alternatives or state when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_sector_stocksARead-onlyIdempotent
업종종목 — 특정 업종에 속한 종목 리스트를 가져옵니다. "통신장비 업종 종목", "반도체 업종", "제약 섹터 종목" 같은 질문에 사용합니다. 업종명 부분 매칭을 지원합니다.
⚠️ 등락률 내림차순으로 반환합니다. count로 자르면 그날 많이 오른 종목만 남고 소외된(많이 내린) 종목은 뒤쪽 쪽으로 밀립니다. 결과 머리말에 업종 전체 종목 수와 이 쪽의 범위("전체 175개 중 1~30번째")가 나옵니다. 업종 전체를 보려면:
500종목 이하 업종: count를 머리말의 전체 수로 주세요 (예: 제약 175 → count=175).
그보다 큰 업종(예: '기타' 약 1,500종목): count=500 으로 page=1, 2, 3, 4 를 차례로. 꼬리말에 다음 쪽 호출법이 나옵니다. 쪽은 같은 순간의 목록에서 자릅니다(장중 5분 캐시). 몇 분 넘게 띄워 받으면 그 사이 등락률 순서가 바뀌어 경계 종목이 겹치거나 빠질 수 있습니다.
Args: sector_name: 업종명 (예: "통신장비", "반도체", "제약") count: 한 번에 받을 종목 수 (기본 30, 최대 500) page: count 개씩 나눈 몇 번째 쪽인가 (기본 1). page=2, count=30 이면 31~60번째.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| count | No | ||
| sector_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial behavior beyond the readOnly/idempotent annotations: results are returned in descending order by 등락률, the header and footer expose pagination context, and the 5-minute cache plus ordering drift can cause overlapping or missing boundary stocks. This is exactly the kind of operational nuance an agent needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Long but tightly structured: core purpose and examples come first, followed by important caveats and then parameter details. Every sentence carries operational value, and the warnings about pagination and cache are essential rather than 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?
The description covers matching, ordering, pagination, caching, and full-sector retrieval strategy. Since the output schema and annotations already cover return shape and safety, nothing critical is missing 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?
With 0% schema description coverage, the description fully compensates: sector_name is explained with examples, count gets default and maximum values, and page is illustrated with page=2, count=30 yielding positions 31-60. No parameter is left ambiguous.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 특정 업종에 속한 종목 리스트를 가져옵니다, and gives concrete example queries like 통신장비 업종 종목 and 제약 섹터 종목. The sector-scoped semantics clearly distinguish it from sibling tools like get_theme_stocks or list_sectors.
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 says when to use it, including sector-name partial matching and example user questions. It also gives detailed pagination strategies for full-sector retrieval, but it does not explicitly name alternative tools to use for non-sector lists, so exclusions are implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_sector_valuationARead-onlyIdempotent
업종밸류에이션 — 업종·테마의 PER·PBR·ROE 집계와 종목별 할증/할인 위치.
"반도체 업종 평균 PER", "이 업종에서 싼 편인가", "동종 대비 할증인가" 같은 질문에 사용합니다. 개별 종목 지표(get_financial)로는 알 수 없는 비교 기준을 만듭니다.
통계는 중앙값이 기준입니다. 평균은 적자 기업과 극단값(PER 500배 등)에 쉽게 흔들려 업종 대표값으로 쓰기 어렵습니다.
집계는 항상 업종 전체로 하고, top_n 은 아래 위치 표에 몇 종목을 보여줄지만 정합니다 - top_n 을 바꿔도 중앙값은 변하지 않습니다. (업종이 집계 상한을 넘으면 전체 중앙값 대신 표본 중앙값(sample_median) 으로 이름을 낮춰 표기합니다.)
⚠️ 적자 기업의 PER은 음수로 나오며 집계에서 제외합니다(제외 건수를 함께 표기).
⭐ 종목코드만 넘겨도 됩니다 — code="005930" 이면 그 종목의 업종을 찾아
집계한 뒤, 그 종목이 업종 안에서 어디에 있는지 표시합니다.
업종명을 모를 때 이 방식을 쓰세요(ETF·ETN은 소속 업종이 없어 조회되지 않습니다).
Args: sector_name: 업종명 또는 테마명 (예: "반도체와반도체장비", "건설"). code 를 주면 생략할 수 있습니다. top_n: 위치 표에 표시할 종목 수 (기본 40, 최대 80). 집계 분모가 아닙니다. kind: "sector"(업종, 기본) / "theme"(테마) code: 6자리 종목코드. 주면 업종을 자동 판정합니다.
| Name | Required | Description | Default |
|---|---|---|---|
| code | No | ||
| kind | No | ||
| top_n | No | ||
| sector_name | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, so the description correctly avoids repeating those. It adds substantial behavioral context beyond annotations: the median is used instead of mean (with rationale), negative PER values are excluded from aggregation (with count noted), sample_median is used when the sector exceeds the aggregation cap, and top_n only affects the display table, not the aggregation denominator. These are non-obvious behaviors that materially affect how results should be interpreted. 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 organized into clear sections: purpose, usage examples, statistical methodology, aggregation behavior, and parameter explanations. It uses bold and bullet-like formatting to front-load key facts (median, exclusions, code shortcut) and includes concrete examples. While it is long, every sentence earns its place – no fluff or redundancy. The structure makes it easy for an agent to extract the critical information quickly.
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 (aggregation logic, edge cases, multiple usage modes), the description is comprehensive. It covers the statistical basis (median), exclusions (negative PER), fallback behavior (sample_median), the role of top_n, and the code-based alternative. Since an output schema exists, the description need not explain the return format. There are no missing pieces that would prevent correct 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 description coverage is 0%, so the description bears full responsibility for parameter documentation. It explains each of the four parameters in detail: sector_name (with examples and the condition that it can be omitted if code is given), top_n (default 40, max 80, display-only), kind (sector vs theme), and code (6-digit code that auto-detects the sector). It also clarifies the relationship between parameters (code overrides sector_name) and the effect of top_n. 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 aggregates PER, PBR, and ROE for a sector/theme and shows a stock's relative position (premium/discount). It gives concrete example queries and explicitly differentiates from get_financial by noting it provides a comparison baseline that individual stock metrics cannot. The verb (get) and resource (sector valuation) 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?
It explicitly states when to use this tool: for questions like 'average PER of a sector' or 'is this stock cheap within its sector?' It also says get_financial cannot answer these, routing the agent away from the sibling. It provides two usage modes (by sector name or by stock code) and a caveat about ETF/ETN not having sectors. This is clear guidance with an explicit alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_supply_pressureARead-onlyIdempotent
수급압력 - 프로그램매매·공매도·신용·대차·외국인보유 (JSON).
종류를 여러 개 물어도 응답은 종류별 블록으로 나뉜다. 각 블록이 자기 status·provider·granularity·data_as_of·경고를 따로 갖는다. 서로 다른 종류를 하나의 점수나 숫자로 합치지 않는다. 합쳐서 만든 지표는 어느 원본에서 왔는지 되짚을 수 없다.
읽을 때 반드시 지킬 것:
status가ok가 아닌 블록은 데이터가 없는 것이 아니라 받지 못한 것이다.unavailable_reason을 함께 읽는다. 0 으로 읽거나 '해당 없음'으로 요약하지 않는다.granularity를 확인한다. 프로그램매매는 한국투자증권이 장중 시계열, 키움증권이 일별이다. 모양이 다른 두 숫자를 같은 기준으로 비교하지 않는다.각 값의 단위는
measure_units를 따른다. 확인된 가격과 금액은 KRW, 수량은 shares, 비율은 percent 로 정규화된다.unknown은 공급자 단위를 확인하지 못해 원값을 유지한 것이므로 환산을 추측하지 않는다.장중 시계열의 실제 관측 시각은 행의
observed_at을 읽는다.date만 보고 서로 다른 장중 시점을 같은 값으로 합치지 않는다.대차잔고는 공매도 실행이 아니다. 대차는 빌린 주식의 잔고이고, 공매도는 실제 매도 체결이다. 대차잔고 증가를 공매도로 옮겨 적지 않는다.
securities_lending은 키움증권만 종목 단위로 준다. 한국투자증권은 시장 전체 값만 있어 종목별 답으로 쓰지 않는다(market_level_only).국내(KR) 전용이다.
Args: code: KR 종목코드 6자리 (단건) codes: 종목코드 목록 (최대 30개) kind: 종류 하나 kinds: 종류 목록. program_trading | short_selling | credit | securities_lending | foreign_holding | cfd days: 조회 기간(일, 기본 30) source: auto|kis|kiwoom (auto 는 주 사용 증권사 하나에 고정)
| Name | Required | Description | Default |
|---|---|---|---|
| code | No | ||
| days | No | ||
| kind | No | ||
| codes | No | ||
| kinds | No | ||
| source | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description discloses substantial behavioral detail: responses are split into per-kind blocks with independent status/provider/granularity/data_as_of, non-ok status means data was not received rather than missing, granularity differs by provider, units follow measure_units, and observed_at must be used for intraday timing. It also clarifies the lending-vs-short-selling distinction. No contradiction with the read-only/idempotent 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?
Though long, the description is tightly organized: a brief opening, a set of high-value 'must-read' bullets, and a compact Args list. Every sentence contributes operational meaning, and the most critical interpretation warnings are front-loaded. There is no filler 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?
For a tool with 6 parameters, 0% schema coverage, and an output schema, the description is remarkably complete: it explains response structure, status semantics, granularity, units, timing, provider limitations, and domain pitfalls. It gives an agent everything needed to both request and correctly interpret the data.
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 carry the full parameter burden, and it does: all six parameters are explained with types, constraints, defaults, and enums (e.g., code is a 6-digit KR code, codes max 30, days defaults to 30, source is auto|kis|kiwoom, kinds includes program_trading|short_selling|credit|securities_lending|foreign_holding|cfd). This fully compensates for the bare input 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 opening line clearly names the resource ('수급압력' / supply pressure) and enumerates the exact data categories: program trading, short selling, credit, securities lending, and foreign holdings. The scope is explicitly limited to KR equities. However, the description lacks an explicit verb and never differentiates itself from sibling tools like get_flow or get_detailed_investor_flow, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit when-not-to-use guidance, such as '대차잔고는 공매도 실행이 아니다' and the warning that KIS securities lending is market-level only and must not be used for per-stock answers. It also states source-selection behavior ('auto 는 주 사용 증권사 하나에 고정') and the KR-only boundary. This is strong, actionable usage guidance despite not naming sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_theme_stocksARead-onlyIdempotent
테마종목 — 특정 테마에 속한 종목 리스트를 가져옵니다. "반도체 테마 종목", "2차전지 관련주", "AI 테마주" 같은 질문에 사용합니다. 테마명 부분 매칭을 지원합니다.
⚠️ 등락률 내림차순으로 반환합니다. count로 자르면 그날 많이 오른 종목만 남고
소외된(많이 내린) 종목은 뒤쪽 쪽으로 밀립니다. 결과 머리말에 테마 전체 종목 수와
이 쪽의 범위("전체 N개 중 1~30번째")가 나옵니다. 저평가·소외 종목을 찾는 용도라면
count를 전체 종목 수로 주거나(최대 500) 꼬리말의 page=로 이어 받으세요.
시가총액 기준 모집단이 필요하면 get_market_cap_ranking을 쓰세요.
Args: theme_name: 테마명 (예: "2차전지", "AI", "반도체") count: 한 번에 받을 종목 수 (기본 30, 최대 500) include_reason: 편입사유 포함 여부. False로 하면 토큰 대폭 절감. "왜 이 테마에 들어갔는지" 필요 없으면 False 권장. page: count 개씩 나눈 몇 번째 쪽인가 (기본 1). page=2, count=30 이면 31~60번째.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| count | No | ||
| theme_name | Yes | ||
| include_reason | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/idempotent annotations, it discloses important behavior: results are sorted by change rate descending, truncating with count pushes laggards to the end, the header contains total and range, and the tail provides page= continuation. It also warns about the page ordering consequence for undervalued-stock use 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?
Front-loaded with purpose, then behavior, then a clearly labeled Args section. It is slightly verbose and contains a typo ('뒤쪽 쪽으로'), but each section earns its place for the complexity being described.
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 the semantics an agent needs to call this tool: scope, ordering trap, pagination, max count, token-saving option, and an alternative for market-cap ranking. The presence of an output schema means return-value structure does not need to be restated, and the existing annotations cover safety.
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 documents all four parameters: theme_name with examples, count with default and max (30/500), include_reason with token-saving benefit and recommendation, and page with a concrete paging example (page=2, count=30 => 31~60).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening line names a specific verb and resource: '특정 테마에 속한 종목 리스트를 가져옵니다' (fetch list of stocks belonging to a theme). It gives concrete query examples and notes partial theme-name matching, so an agent can distinguish it from tools like list_themes or ranking 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 states when to invoke it (e.g., '반도체 테마 종목', '2차전지 관련주', 'AI 테마주') and routes to an explicit alternative when a market-cap-based population is needed: '시가총액 기준 모집단이 필요하면 get_market_cap_ranking을 쓰세요'. It also gives scenario-specific advice for finding undervalued stocks via count/page settings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_us_analystARead-onlyIdempotent
US analyst ratings — 미국 주식 애널리스트 목표주가 + 투자의견 (US analyst price target / rating). "AAPL 목표가", "NVDA analyst rating", "Tesla buy/hold", "Wall Street 의견" 같은 질문에 사용합니다.
목표주가(mean/high/low) + buy/hold/sell 분포 + 최근 업·다운그레이드를 반환합니다.
Args: ticker: US 티커 (예: "NVDA")
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish the read-only, idempotent, non-destructive nature of the tool, and the description adds behavioral detail by enumerating what is returned: mean/high/low price targets, buy/hold/sell distribution, and recent upgrade/downgrade actions. 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 compact and front-loads the tool's purpose, then gives examples, return contents, and argument guidance. The bilingual repeat of 'US analyst ratings / price target / rating' adds slight redundancy but does not bloat the entry.
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-ticker read-only retrieval tool with an output schema, the description gives enough to select and call it correctly: US scope, ticker argument, and the kinds of questions it answers. It doesn't discuss coverage limitations or data freshness, but the output schema and annotations cover much of the rest.
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 compensates by explaining the single parameter: 'ticker: US 티커 (예: NVDA)' — indicating the accepted format and providing an example. For one required parameter this is sufficient; more detail on case or exchange suffix would be nice but is not essential.
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 US analyst price targets and ratings (목표주가 + 투자의견) and lists specific outputs: mean/high/low targets, buy/hold/sell distribution, and recent upgrades/downgrades. It is specific about the resource and the example queries, though it does not explicitly contrast itself with sibling tools like get_consensus or get_us_info.
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 concrete query patterns such as 'AAPL 목표가', 'NVDA analyst rating', and 'Tesla buy/hold', telling an agent exactly when to invoke this tool. It does not state when not to use it or name preferred alternatives, 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_us_chartARead-onlyIdempotent
US stock chart OHLCV — 미국 주식 시계열 캔들 데이터 (US historical price data). "AAPL 차트", "Tesla 1년 주가", "NVDA history" 같은 질문에 사용. US 시계열 진입점(한국은 get_chart).
Args: ticker: US 티커 (예: "AAPL") period: "1d","5d","1mo","3mo","6mo","1y","2y","5y","10y","ytd","max" (기본 3mo) interval: "1m","5m","15m","30m","1h","1d","1wk","1mo" (기본 1d) prepost: 프리/포스트 마켓 포함 (intraday에서만 유효) limit: 최대 행수 (기본 500, 최대 5000). 큰 데이터는 export_us_to_excel 권장(토큰 0).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| period | No | ||
| ticker | Yes | ||
| prepost | No | ||
| interval | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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 meaningful behavioral details beyond those: default period (3mo), default interval (1d), prepost applying only to intraday, and a max row limit of 5000 with a recommendation to export large datasets. 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 short intro, example queries, and an Args list. It is slightly verbose due to bilingual repetition ('US stock chart OHLCV' and '미국 주식 시계열 캔들 데이터'), but every major section earns its place by adding routing or parameter 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 five parameters, one required, and an output schema present, the description covers all necessary invocation details: valid enum values, defaults, the intraday-only prepost behavior, and the large-data fallback. No critical information needed to call the tool correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the full burden for parameter understanding. It fully compensates by documenting every parameter: ticker format with example, period allowed values and default, interval allowed values and default, prepost semantics, and limit default/max. This is exactly the compensatory value needed.
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 identifies the tool as 'US stock chart OHLCV' and 'US historical price data,' making the resource and data type clear. It also distinguishes itself from siblings by positioning itself as the US time-series entry point and explicitly naming get_chart for Korean data. Example queries like 'AAPL 차트' and 'NVDA history' remove ambiguity about intended use.
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 when to use the tool ('US 시계열 진입점') and gives concrete query examples. It also provides an explicit alternative for large data (export_us_to_excel, token 0). It does not exhaustively compare against nearby siblings like get_us_price or get_intraday_chart, but the guidance given is sufficient for common routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_us_dividendsARead-onlyIdempotent
US dividends — 미국 주식 배당 이력 + ex-date + yield (US dividend history / yield). "AAPL 배당", "KO dividend yield", "SCHD 배당 이력", "ex-date" 같은 질문에 사용합니다.
Args: ticker: US 티커 (예: "KO", "JNJ", "SCHD") limit: 표시할 최근 배당 건수 (기본 12)
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| ticker | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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, so the safety profile is covered. The description adds that it returns history, ex-date, and yield, and mentions a default limit of 12, which is useful behavioral context. However, it doesn't disclose details like pagination or data range 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 compact and front-loaded with the core purpose, followed by example queries and parameter explanations. The bilingual content adds a bit of redundancy but is not excessive. Every sentence 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?
For a simple read-only tool with 2 parameters and an output schema, the description is largely complete. It covers what the tool returns, example usage, and parameter semantics. The output schema exists, so return values need not be described. Minor gaps like data range or pagination are not critical for 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 compensate. It explains 'ticker' as a US ticker with examples and 'limit' as the number of recent dividends to display with a default of 12. This adds meaning beyond the bare schema, but the schema itself is simple and the description covers both parameters adequately.
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 US dividend history, ex-date, and yield, with a specific verb ('get') and resource ('US dividends'). It distinguishes itself from siblings by focusing on dividend data, though it doesn't explicitly name a sibling 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?
The description provides example queries ('AAPL 배당', 'KO dividend yield', 'SCHD 배당 이력', 'ex-date') that indicate when to use this tool. It doesn't explicitly state when not to use it or name alternatives, but the examples give clear usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_us_earningsARead-onlyIdempotent
US earnings calendar — 다음 실적 발표일 + 최근 EPS 서프라이즈 이력 (US earnings date / EPS surprise). "AAPL 실적 언제", "NVDA earnings date", "Tesla 다음 실적" 같은 질문에 사용합니다.
미국 시장은 분기 실적(10-Q)이 주가 변동의 핵심 이벤트입니다.
Args: ticker: US 티커 (예: "NVDA")
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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, so the safety profile is covered. The description adds context about what data is returned (next earnings date + EPS surprise history) and why it matters. No contradiction with annotations. It doesn't disclose limitations like data freshness or ticker-format strictness, but with strong annotation coverage a 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose before examples. The example queries and the one-line context about US earnings being key events each earn their place. Slightly verbose with the Korean translations of English terms, but nothing is wasted.
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?
Has an output schema, so return-value details don't need description coverage. With a single required parameter that's documented with an example, and clear purpose plus usage examples, an agent has enough to call it correctly. Minor gap: no guidance on how the two data components (date vs surprise history) are shaped.
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 for the undocumented ticker parameter. It does document 'ticker: US 티커 (예: "NVDA")' with a concrete format example. However, this is minimal — it doesn't explain ticker casing rules, exchange suffixes, or validity constraints beyond the example. The description adds some value but doesn't fully compensate for the coverage 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?
States a specific verb+resource: 'US earnings calendar — 다음 실적 발표일 + 최근 EPS 서프라이즈 이력' (next earnings date + recent EPS surprise history). This clearly distinguishes it from price, chart, and financials siblings. However, it doesn't explicitly differentiate from get_us_event_reaction, which could overlap in 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?
Provides concrete example queries ('AAPL 실적 언제', 'NVDA earnings date', 'Tesla 다음 실적') that signal when to use it, plus context that US quarterly earnings are key price events. But it never names an alternative tool or states when NOT to use this tool, leaving some ambiguity against get_us_financials or get_us_event_reaction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_us_etf_infoARead-onlyIdempotent
US ETF info — ETF 전용 상세 (top holdings, 섹터 비중, 자산 배분 · US ETF details). "SPY 구성종목", "QQQ holdings", "VOO 섹터", "ETF 보수" 같은 질문에 사용합니다.
Args: ticker: ETF 티커 (예: "SPY", "QQQ", "VOO", "SCHD")
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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, so the description does not need to restate safety. It adds value by specifying the returned data categories (top holdings, sector weights, asset allocation). It does not discuss pagination, error handling, or other behaviors, but given the annotations cover the main traits, a 3 is appropriate.
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 front-loaded with the main purpose, followed by example queries and a brief parameter note. It avoids unnecessary detail. The bilingual format (Korean/English) is slightly redundant but not harmful. Overall, it is efficient 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 read-only tool with an output schema, the description is fairly complete. It states the type of data returned and gives usage examples. It does not mention that it is specifically for US ETFs, but the tool name already conveys that. It could note that the ticker must be a US-listed ETF, but this is minor given the examples and schema availability.
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 description for the ticker parameter (0% coverage), so the description must compensate. It does so by explaining the ticker is an ETF ticker and providing concrete examples (SPY, QQQ, VOO, SCHD). This adds meaningful guidance beyond the raw schema, though it could also specify format or uppercase requirement.
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 provides US ETF details including top holdings, sector weights, and asset allocation. It distinguishes itself from siblings like get_us_info (general stock info) and get_etf_info (potentially non-US ETF) by specifying 'US ETF' and the exact content types. Example queries further clarify its 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 concrete example queries ('SPY 구성종목', 'QQQ holdings', 'VOO 섹터', 'ETF 보수') that indicate when to use the tool. However, it does not explicitly mention alternatives or state when not to use it, such as for non-US ETFs or price data. 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_us_event_reactionARead-onlyIdempotent
US event reaction — 발표 세션에 맞는 기준 거래일로 주가 반응을 정렬 (SL-05).
미국 실적은 장전(BMO)·장후(AMC) 발표가 갈린다. 장전 발표는 당일 봉이, 장후 발표는 다음 거래일 봉이 첫 반응이다. 이 정렬을 자동으로 한다. 완성된 일봉만 쓴다(진행 중 봉 제외).
Args: ticker: US 티커 event_date: 발표일 YYYY-MM-DD session: "auto"(실적 발표 시각에서 자동 판정) / "pre" / "post" / "unknown" after: 사건 후 비교 거래일 수 (기본 5, 최대 20)
| Name | Required | Description | Default |
|---|---|---|---|
| after | No | ||
| ticker | Yes | ||
| session | No | ||
| event_date | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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 valuable behavioral context: it uses only completed daily candles (excludes in-progress), and it automatically aligns the reaction based on session (pre/post). This goes beyond the annotations and helps the agent understand the tool's internal logic.
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 one-line summary, followed by a concise rationale for the BMO/AMC distinction, and then a structured argument list. It is compact and every sentence earns its place. The structure makes it easy to scan and understand.
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 core logic and all parameters. Since an output schema exists, return value details are not needed. It does not explicitly mention edge cases like missing earnings data or handling of 'unknown' session, but the tool is fairly self-contained. It is complete enough for an agent to call 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 compensates fully with an explicit 'Args' section. It explains each parameter: ticker (US ticker), event_date (announcement date in YYYY-MM-DD), session (auto/pre/post/unknown with semantics), and after (number of trading days after, default 5, max 20). This is essential because the schema provides no descriptions, and the description fills the gap completely.
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 a specific purpose: aligning US stock price reaction to the correct trading day based on earnings announcement session (BMO/AMC). It clearly distinguishes from generic get_event_reaction by focusing on US earnings and session-aware alignment. The verb '정렬' (align/sort) and resource '주가 반응' (price reaction) 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?
The description explains the context (US earnings with pre/post market announcements) and the automatic alignment logic, making it clear when to use this tool. However, it does not explicitly name alternatives or state when not to use it, though the specificity implicitly excludes generic event reactions. It could be improved by referencing sibling tools like get_event_reaction for non-US events.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_us_filing_detailARead-onlyIdempotent
US SEC filing 본문 — 원문 키워드 검색·희석/계약 조항 구조화 (SL-04).
find: 본문에서 키워드 주변 발췌(전체 매치 수 + 최대 5건 표시). 매치 0건은 "본문에 없다"가 아니다 - 표기가 다를 수 있다.
analyze: "dilution"(증권 수·전환가·워런트·리픽싱·자금용도) 또는 "contract"(계약금액·기간·해지·최소구매·상대방 비공개)를 범주별 원문 발췌로 구조화. 못 찾은 범주는 '미확인'이지 '없다'가 아니다.
둘 다 비우면 문서 목록(본문+exhibit)만 보여준다. 전체 본문은 반환하지 않는다(10-Q 하나가 수십만 자다).
Args: ticker: US 티커 (발행사 CIK 확인용) accession_no: SEC 접수번호 (get_us_filings 결과의 accession) find: 본문 검색 키워드 (선택) analyze: "dilution" / "contract" (선택) document: 읽을 문서 파일명 (비우면 본문. exhibit 는 목록에서 이름 확인)
| Name | Required | Description | Default |
|---|---|---|---|
| find | No | ||
| ticker | Yes | ||
| analyze | No | ||
| document | No | ||
| accession_no | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/openWorld/idempotent annotations, the description adds valuable caveats: a zero-match result does not mean the term is absent, unfound categories are 'unconfirmed' rather than 'absent', and both-empty mode returns only a document list. These disclosures materially shape an agent's interpretation of results.
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 bulleted structure is efficient and front-loaded, with each behavior and parameter earning its place. The 'SL-04' label adds little value but does not significantly hurt clarity.
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 and 5 parameters, the description covers all necessary guidance: parameter semantics, mode behavior, output limits, omission semantics, and document handling. An output schema exists, so not detailing return fields is acceptable.
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 compensates by explaining each parameter's purpose: ticker for CIK lookup, accession_no as the SEC receipt number from get_us_filings, find as a keyword, analyze as the dilution/contract mode, and document as the file to read, including default behavior.
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: searching keywords in US SEC filing text and structuring dilution/contract clauses by category. It also specifies what the tool does not do (does not return the full text) and distinguishes itself from the filing-list sibling by requiring an accession_no from get_us_filings.
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 clear usage context: use find for keyword excerpts, analyze for dilution/contract structuring, leave both empty for a document list, and use document to read a specific file. It also includes an explicit exclusion ('does not return full text'), though it does not name alternative sibling tools directly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_us_filingsARead-onlyIdempotent
US SEC filings — SEC EDGAR 공시 목록 (accession number·원문 URL 포함).
"AAPL 10-K", "RIVN latest filings", "8-K", "SEC filing" 같은 질문에 사용합니다.
본문·exhibit 를 읽으려면 결과의 accession number 로 get_us_filing_detail 을 부르세요.
기본 조회는 SEC 의 최근 구간(최대 1000건)입니다. 그보다 오래된 공시는
구간 파일로 나뉘어 있고, 결과 메타의 coverage.older_pages 에 구간 목록
(이름·기간·건수)이 옵니다. page= 에 그 이름을 넣어 구간을 옮기고, 한
구간이 limit 보다 크면 coverage.next_offset 을 offset= 에 넣어 이어서
조회하세요. 완전한 검색의 종료 조건은 coverage_complete=true (현재
구간을 끝까지 봤고 older_pages 도 없음)이지, older_pages 가 비었다는
것만이 아닙니다.
SEC 는 발행사를 티커가 아니라 CIK 로 식별합니다. GOOGL/GOOG 같은 클래스주는 같은 발행사로 정규화되어 같은 공시 집합이 나오고, 요청 티커는 메타에 보존됩니다.
Args: ticker: US 티커 limit: 표시할 공시 건수 (기본 15, 최대 100) forms: 공시 유형 필터 (예: ["10-Q", "8-K"]). 비우면 전체. page: 구간 파일 이름 (coverage.older_pages[].name). 비우면 최근 구간. offset: 현재 구간 안에서 건너뛸 건수 (coverage.next_offset 값). 기본 0.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| forms | No | ||
| limit | No | ||
| offset | No | ||
| ticker | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already convey read-only/idempotent behavior, and the description adds substantial operational context beyond them: SEC identifies issuers by CIK, share classes like GOOGL/GOOG normalize to the same issuer set, the requested ticker is preserved in metadata, and full search completion requires coverage_complete=true. It also discloses the segmented older-page mechanism.
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 information-dense but well structured, front-loading purpose and example queries before explaining pagination and parameters. Every sentence earns its place, and there is no redundant repetition of annotations or schema.
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 pagination, CIK normalization, form filtering, and a companion detail tool, the description covers all invocation-relevant behavior. It provides the termination condition, segment navigation, parameter defaults, and routing to get_us_filing_detail, so an agent can call it correctly without additional context.
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 Args section documents every parameter in detail: ticker, limit with default and max, forms with examples, page as a segment file name, and offset with its default. This fully 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 that the tool returns the US SEC EDGAR filing list, including accession numbers and original URLs, and gives concrete example queries. It also distinguishes itself from the sibling get_us_filing_detail by explicitly directing body/exhibit reading to that tool.
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 guidance is explicit: use for queries like 'AAPL 10-K', 'RIVN latest filings', '8-K', and 'SEC filing'. It tells the agent to call get_us_filing_detail with the accession number when body/exhibits are needed, and it fully explains pagination via page/offset and the completion condition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_us_financialsARead-onlyIdempotent
US stock financials — 미국 주식 재무지표 (PER, PBR, PEG, ROE, 배당률 · US valuation ratios). "AAPL PER", "Apple 재무", "NVDA valuation", "forward P/E" 같은 질문에 사용합니다.
Trailing / Forward P/E, PEG, P/B, P/S, EPS, ROE, ROA, 부채비율, 마진, 성장률, 배당수익률, 배당성향을 반환합니다.
Args: ticker: US 티커 (예: "AAPL")
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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 covered. The description adds what data it returns (P/E, PEG, P/B, ROE, margins, etc.) but does not disclose data source, update frequency, currency, or limitations. This is acceptable but not rich 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 front-loaded with the tool's purpose, then provides example queries and a compact list of returned metrics, followed by the Args note. The English/Korean repetition is minor and aids clarity for bilingual queries, so no sentence feels wasted.
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, the description covers what the tool does, what it returns, and how to specify the ticker. An output schema exists and the annotations handle safety semantics. Missing details like data source or refresh cadence would be nice but are not required 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?
Schema coverage is 0%, so the description must compensate. The Args section explicitly defines ticker as a US ticker and gives the example 'AAPL', which adds meaning beyond the bare schema property. It could add formatting or validation guidance, but for a single ticker parameter the provided semantics are 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 states a specific resource and scope: US stock financials and valuation ratios (PER, PBR, PEG, ROE, dividend). It also lists the metrics returned, which separates it from price, chart, earnings, and news tools among the siblings. It is clear, though it does not explicitly name or contrast a sibling 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?
The description gives concrete example queries such as 'AAPL PER', 'Apple 재무', 'NVDA valuation', and 'forward P/E', making it clear when an agent should choose this tool. It does not state exclusions or when to prefer a sibling like get_us_financial_statement or get_financial, so it stops short of a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_us_financial_statementARead-onlyIdempotent
US financial statements — 미국 주식 재무제표 3종 (income/balance/cash_flow). "AAPL 손익계산서", "NVDA 현금흐름표", "Apple balance sheet quarterly" 같은 질문에 사용합니다.
핵심 row만 추출 (Total Revenue, Net Income, Total Assets, Free Cash Flow 등).
Args: ticker: US 티커 statement_type: "income" / "balance" / "cash_flow" (기본 income) period: "annual" / "quarterly" (기본 annual)
| Name | Required | Description | Default |
|---|---|---|---|
| period | No | ||
| ticker | Yes | ||
| statement_type | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so the tool is known to be read-only. The description adds meaningful behavioral context beyond annotations: it states that only key rows are extracted (Total Revenue, Net Income, etc.) and specifies default values for statement_type ('income') and period ('annual'). These details help the agent understand what the tool returns and how it behaves with missing parameters.
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 concise and well-structured: it starts with the purpose, gives example queries, explains the key-row behavior, and then lists arguments. It is front-loaded with the essential information. The mix of Korean and English is a minor readability issue, but the structure is clear and every sentence 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 existence of an output schema, the description does not need to explain return values. It covers the parameters, allowed values, defaults, and the behavior of extracting key rows. It does not mention ticker format or potential limitations, but these are likely standard and covered elsewhere. The description is sufficiently complete for an agent to call 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 has 0% description coverage, so the description carries the full burden. It lists all three parameters (ticker, statement_type, period) and provides allowed values and defaults for statement_type and period. This fully compensates for the schema's lack of descriptions, giving the agent all needed information to construct a valid call.
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 provides US financial statements (income/balance/cash_flow) and gives example queries. It specifies the resource and three statement types, making the purpose unambiguous. However, it does not explicitly differentiate from sibling tools like get_us_financials or get_financial, which could lead to confusion about which tool to choose.
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 concrete usage examples in Korean ('AAPL 손익계산서', 'NVDA 현금흐름표', etc.) and states '같은 질문에 사용합니다' (use for questions like these). This provides clear context for when to use the tool, though it does not mention when not to use it or point to alternatives. It is adequate but could be more explicit about exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_us_holdersARead-onlyIdempotent
US institutional holders — 기관·뮤추얼펀드 보유 현황 (13F holdings). "AAPL institutional holders", "Vanguard 보유", "13F holdings", "who owns" 같은 질문에 사용합니다.
Args: ticker: US 티커
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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 meaningful context by specifying the data source and nature of the holdings (13F institutional and mutual fund holdings), which goes 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 compact, front-loaded with core meaning, and uses every line for a purpose: definition, example queries, and parameter hint. No filler or redundant explanation is present.
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, read-only tool with an output schema, the description covers what the tool returns and how to invoke it. Additional details like filing-period coverage would be nice but are not necessary for correct use.
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 description for 'ticker', and the description adds only 'US 티커' (US ticker). This is minimal but adequate for a single required string parameter; adding an explicit example like 'AAPL' would strengthen it.
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 the resource precisely: US institutional holders and 13F holdings, backed by example queries like 'AAPL institutional holders' and 'Vanguard 보유'. It is clearly distinct from close siblings like get_us_insider or get_us_short, even without naming them explicitly.
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 maps the tool to natural-language questions such as 'AAPL institutional holders', '13F holdings', and 'who owns'. This gives clear when-to-use context, though it does not mention alternative tools or circumstances where it should not be used.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_us_infoARead-onlyIdempotent
US stock info — 미국 주식 기업 정보 (섹터, 산업, 시총, 사업 요약 · US company profile). "Apple 어떤 회사", "NVDA 사업 설명", "TSLA sector", "기업 정보" 같은 질문에 사용합니다.
Args: ticker: US 티커 (예: "AAPL", "NVDA")
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds the specific content fields (sector, industry, market cap, business summary) but does not disclose any additional behavioral aspects like return format, error conditions, or limitations. It neither contradicts nor significantly extends 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 compact and well-structured. The main purpose is front-loaded in the first line, followed by usage examples and the parameter definition. Every sentence serves a clear function with no redundant wording.
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, read-only info tool with an output schema and comprehensive annotations, the description covers the essential aspects: what it does, when to use it, and how to specify the ticker. The return format is not described, but the output schema presumably handles that, so the description is sufficiently 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?
The input schema has no descriptions (0% coverage), but the description explicitly explains the only parameter: 'ticker: US 티커 (예: "AAPL", "NVDA")'. This provides meaning and examples that the schema lacks, effectively compensating 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 it provides US company profile info (sector, industry, market cap, business summary) and gives concrete example queries ('Apple 어떤 회사', 'NVDA 사업 설명'). This verb+resource combination distinguishes it from price, financials, earnings, and news tools among the many siblings.
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 lists example questions that indicate when to use it, but it does not explicitly name alternatives or state when not to use it. For instance, it doesn't say 'for financial statements use get_us_financials' or 'for price use get_us_price'. The guidance is implied through the provided examples rather than explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_us_insiderBRead-onlyIdempotent
US insider trading — 내부자 거래 Form 4 + 최근 6개월 순매수 요약 (US insider Form 4). "AAPL insider trading", "NVDA 내부자 매수", "CEO stock sale" 같은 질문에 사용합니다.
Args: ticker: US 티커
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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, so safety is covered. The description adds that it returns Form 4 and a net buy summary but does not explain what '순매수' (net buy) means or how it is computed. It also does not describe the output format beyond that. Since annotations cover the safety profile, a 3 is appropriate.
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 concise but poorly structured: it mixes Korean and English, includes an 'Args:' line that duplicates the schema, and uses a colon-heavy format. The main purpose is front-loaded, but the bilingual content and redundancy reduce clarity.
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 a single parameter and an output schema (indicated as present), the description covers the basics: what data is provided and example queries. However, it does not explain the 6-month summary calculation, any limitations (e.g., only US tickers), or how the output is structured beyond the schema. It is adequate but not 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% (no description in the schema for ticker). The description only says 'ticker: US 티커', which adds minimal meaning beyond the schema's type and title. It does not specify formats, examples, or constraints. Given low coverage, the description should compensate more, but it does not.
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 the tool provides US insider trading Form 4 data and a recent 6-month net buy summary. This is a specific resource and function, and it is distinct from sibling tools like get_us_filings or get_us_news. It does not explicitly compare to siblings but is clear enough.
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 example queries (e.g., 'AAPL insider trading', 'NVDA 내부자 매수') that imply when to use it. However, it does not explicitly state when not to use it or suggest alternative tools for other insider-related needs, such as filings detail. The guidance is implicit via examples.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_us_liquidityARead-onlyIdempotent
US liquidity ledger — 미국 기업의 사용 가능 유동성 원장 (SEC XBRL, JSON).
"RIVN 런웨이가 현금만 기준인지", "제한 현금 빼면 실제로 쓸 수 있는 돈이 얼마인지", "1년 내 갚을 돈은 얼마인지" 같은 질문에 사용합니다. 재무 요약의 현금 한 줄로는 안 되는 것 - 단기투자·제한 현금·미인출 리볼버·부채 만기· 보고기간 후 조달 - 을 SEC XBRL 원문에서 출처·기준일별로 구조화합니다.
총액(total_available)은 기준일이 같은 항목만 더합니다. 제한 현금은 절대 총액에 넣지 않고, 포함형 총계와 교차검증만 합니다(중복 차감 방지).
미보고 항목은 0이 아니라 not_reported 로 남습니다. 제한·만기 자료가 없으면 runway_inputs.official_runway 는 unavailable 입니다 - 그때는 현금만 민감도(cash_only_base)까지만 말할 수 있습니다.
이 도구는 런웨이 개월 수를 계산하지 않습니다. 분모(burn)는 get_us_financial_statement 의 영업현금흐름에서 읽는 쪽이 정합니다.
Args: ticker: US 티커 (예: "RIVN", "CRSP")
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/idempotent annotations, the description discloses material behavior: total_available only sums same-date items, restricted cash is never included in the total, missing items are reported as not_reported rather than 0, and official_runway becomes unavailable when restricted/maturity data is absent. This gives an agent accurate expectations about edge cases and calculation semantics.
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 information-dense but well-organized: a short lede, concrete example questions, then bullet points covering the most critical behavioral rules and exclusions. Every sentence adds distinct value, and the structure makes the key caveats 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?
Given the tool has an output schema and only one parameter, the description covers all essential contextual aspects: data source, item composition, same-date summation rule, missing-data semantics, relation to runway calculation, and pointer to the sibling tool for burn. Nothing critical seems missing 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 input schema only defines ticker as a string with no description, so the description must carry the semantic burden. It does so by specifying 'US ticker' and providing examples like RIVN and CRSP. This is adequate for a single parameter, though it could add detail on ticker format expectations or delisting/non-US edge cases.
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 US liquidity ledger built from SEC XBRL data, and enumerates the specific questions it answers around available cash, restricted cash, short-term investments, revolver, debt maturities, and post-report financing. It also distinguishes itself from a simple cash line in a financial summary, so an agent can tell what this tool uniquely provides.
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 concrete use-case examples and states an important boundary: this tool does not compute runway months, and the burn denominator should come from get_us_financial_statement. It names the relevant sibling and clarifies what the tool is not for, though it stops short of a comprehensive when-to-use vs. when-not-to-use matrix for all sibling alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_us_marketARead-onlyIdempotent
US market indices — 미국 시장 스냅샷 (주요 지수·VIX·Gold).
"미국 시장 어때", "VIX 얼마", "금값" 같은 질문에 사용합니다.
⚠️ 반환 항목은 소스가 주는 대로이며 고정이 아닙니다. 실측(v0.8.2,
2026-08-27): S&P 500 / Dow Jones / NASDAQ / Russell 2000 / VIX / Gold.
예전에는 선물 4종만 오던 시기도 있었습니다. 반환된 표에 있는 항목만
답변에 쓰고, 없는 지수를 학습지식으로 채우지 마세요. 이 값은 현재
스냅샷입니다. 과거 기간 수익률이 필요하면 get_us_chart로 조회하세요.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description discloses a crucial behavioral trait: the returned fields are not fixed and depend on the upstream source. It provides an observed field list, warns against filling missing indices from learned knowledge, and clarifies that values are a current snapshot. This is valuable context that annotations alone do not 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 dense but every sentence earns its place: definition, usage triggers, variability warning, observed fields, no-fabrication rule, snapshot clarification, and alternative tool. The caveats are front-loaded and immediately relevant.
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 no parameters, strong annotations, an output schema available, and direct guidance on return variability and alternatives, the description fully equips an agent to select and invoke the tool correctly. 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 zero parameters, so there is no parameter semantic burden. The description still adds useful intent-level context by listing natural-language queries that map to this tool, but it does not need to explain parameter meanings.
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 defines the tool as a US market snapshot covering major indices, VIX, and gold. It uses specific verbs and a concrete scope, and the examples ('미국 시장 어때', 'VIX 얼마', '금값') make the resource unmistakable. It also implicitly distinguishes itself from siblings like get_us_chart by emphasizing 'current snapshot'.
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 which kinds of questions to use it for and gives a concrete alternative: if historical returns are needed, use get_us_chart. This gives an agent clear routing guidance rather than leaving the choice to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_us_multi_diagnosisARead-onlyIdempotent
US multi diagnosis — 미국 다종목 차트 통계·완성 봉 기술 상태 배치 (JSON).
"고정 15종목 단계 진단", "관심종목 기술 상태 일괄 점검" 같은 반복 판정에 사용합니다. 종목당 get_us_chart + 지표 계산을 반복 호출하는 대신 한 번에: 차트 통계(완성 봉 종가·5/20/60일 수익률·52주 위치·평균 거래량)와 기술 상태(MA20/60·20-60 크로스·RSI14)를 완성 봉 기준으로 돌려줍니다.
이 도구는 종목을 단일 점수로 압축하지 않습니다. 판정 재료(원값)를 그대로 보존하고, 확인 불가는 unavailable 로 남깁니다 - 등급·점수·순위를 만들어 붙이는 것은 읽는 쪽의 몫이고, 그때도 근거 수치가 함께 있어야 합니다.
Args: tickers: US 티커 리스트 (최대 20개) include: 선택 결합 섹션. "estimates"(애널리스트 EPS 추정 변화), "earnings"(최근 실적 서프라이즈), "short"(공매도 지표+보고 최신성). 기본 None = 차트·기술 상태만.
| Name | Required | Description | Default |
|---|---|---|---|
| include | No | ||
| tickers | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only/idempotent/non-destructive, and the description adds real behavioral context: results are based on completed bars only, unavailable confirmations are preserved as 'unavailable', and the tool does not compress tickers to a score/rank. These constraints materially affect how an agent should interpret and present results.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose and output contents, then the no-scoring caveat, then parameter semantics. The prose is dense and every sentence adds useful information, though the philosophy paragraph could be slightly tighter without losing 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?
For a 2-parameter batch tool with a rich output schema and read-only/idempotent annotations, the description covers invocation constraints, optional section semantics, default behavior, and data-quality handling. There is no material information an agent needs that is omitted.
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 and no enums, the description carries the full burden and succeeds: tickers are defined as a US ticker list capped at 20, and include is defined as optional sections with the exact accepted strings ('estimates', 'earnings', 'short'), their meaning, and the default None behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('returns') and resource: a one-call batch of chart statistics (close, 5/20/60-day returns, 52-week position, average volume) and technical status (MA20/60, cross, RSI14) for multiple US tickers. It also explicitly contrasts itself with repeated per-ticker get_us_chart calls, so an agent can distinguish it from the chart siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear use context: repeated fixed-15 ticker diagnostics or watchlist technical-status checks. It names the alternative (looping get_us_chart plus indicator computation) and says this tool replaces it, but it does not explicitly list when-not scenarios or compare with other multi-stock siblings like get_multi_chart_stats.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_us_multi_priceARead-onlyIdempotent
US multi-ticker prices — 여러 미국 주식 일괄 가격 조회 (US multi-ticker snapshot). "AAPL MSFT NVDA 동시", "big tech 가격", "내 포트폴리오 현재가" 같은 질문에 사용합니다.
Args: tickers: 티커 리스트 (예: ["AAPL", "MSFT", "NVDA"]). 최대 20개 권장.
| Name | Required | Description | Default |
|---|---|---|---|
| tickers | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already include readOnlyHint, openWorldHint, idempotentHint, destructiveHint=false, so the safety profile is clear. The description adds a practical recommendation (max 20 tickers) and clarifies it's a snapshot, but does not mention rate limits or error behavior beyond 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 concise with a clear title, examples, and a parameter block. It front-loads the purpose and usage examples, though the Korean repetition could be trimmed without losing 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?
With a simple 1-parameter schema, an output schema present, and annotations covering safety, the description is largely sufficient. It could add a note on the maximum number of supported tickers (there is only a 'recommended' limit) or expected output format, but these are minor 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 schema defines 'tickers' as an array of strings with no description, and schema description coverage is 0%. The description provides a useful example and the max-20 guidance, which adds meaning beyond the bare schema, but it does not fully specify the expected format (e.g., uppercase, separator).
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 fetches US multi-ticker prices in batch, distinguishing it from siblings like get_us_price (single ticker) and get_multi_stocks (generic multi-stock). The examples and Korean translation reinforce the purpose, but it does not explicitly name the distinguishing sibling.
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 concrete example queries that trigger usage and recommends a max of 20 tickers. It implies use for multi-ticker price snapshots, but does not explicitly say when NOT to use it (e.g., for detailed data, use get_us_info).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_us_newsARead-onlyIdempotent
US stock news — 미국 주식 관련 뉴스 헤드라인 (관련도 판정 포함). "AAPL 뉴스", "Tesla news", "NVDA headlines" 같은 질문에 사용합니다.
Yahoo 피드에는 다른 종목이 중심인 기사가 섞여 옵니다(실측: AAPL 피드에 InterDigital·NVDA 단독 기사). 기사마다 관련도(direct/comparison/ supply_chain/list_or_etf/mention/unrelated)와 근거가 붙습니다. 이 종목이 주제인 기사만 원하면 direct_only=True.
Args: ticker: US 티커 limit: 헤드라인 개수 (기본 10) direct_only: True 면 이 종목이 주제(direct)인 기사만 남깁니다
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| ticker | Yes | ||
| direct_only | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/openWorld/idempotent annotations, the description discloses a real behavioral quirk: Yahoo feeds include unrelated articles, and each result is tagged with a relevance category. It also explains the direct_only filtering option, providing useful operational context beyond what annotations reveal.
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 with a purpose statement, rationale, and an Args list, making it easy to scan. Minor redundancy exists because direct_only is explained both in the prose and again in the Args section, but the overall length is justified.
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 3-parameter read-only tool with an output schema, the description covers what the tool does, when to use it, the data-source caveat, and every parameter. Nothing an agent needs to select or call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, but the description fully documents all three parameters: ticker, limit (with default 10), and direct_only (with clear semantics). This completely 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 identifies the operation as fetching US stock news headlines and adds the distinctive relevance-classification feature. The example queries make the tool's purpose immediately recognizable, and it is distinct from broader sibling tools by the 'US stock' 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?
It gives concrete query examples ('AAPL news', 'Tesla news', 'NVDA headlines') and explains when to set direct_only, so an agent knows when to invoke it. It does not explicitly mention alternatives or exclusions such as when to prefer get_news, so it stops short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_us_optionsARead-onlyIdempotent
US options chain — 미국 주식 옵션 체인 (calls/puts, IV, OI · US equity options). "AAPL options", "Tesla 콜옵션", "NVDA implied volatility", "옵션 체인" 같은 질문에 사용합니다.
기본: 최근접 만기의 현재가 근처 strike. Greeks (delta/gamma/theta)는 미포함.
Args: ticker: US 티커 (예: "AAPL") expiration: 만기일 "YYYY-MM-DD". 미지정 시 가장 가까운 만기. strikes_around_spot: 현재가 기준 좌우 strike 개수 (기본 10)
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes | ||
| expiration | No | ||
| strikes_around_spot | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only/idempotent/non-destructive behavior, and the description adds useful behavioral context beyond that: default to nearest expiration, strikes near the current price, and that Greeks are excluded. This is meaningful extra information that helps an agent set expectations.
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 purpose and example queries, then parameter details. Some bilingual redundancy exists, but the structure is logical and all sections earn their place.
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 and the annotations cover safety, the description is complete enough for an agent to call the tool correctly. It covers defaults, exclusions, and parameter semantics; only minor details like how IV/OI are represented in the response are left to the 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 carries the full burden for parameters. It explains ticker with an example, specifies expiration format ('YYYY-MM-DD') and its default, and defines strikes_around_spot as the count around the current price with a default of 10. This fully compensates for the sparse 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 identifies a specific resource ('US options chain') and the key data it returns (calls/puts, IV, OI), and includes concrete example queries like 'AAPL options' and 'NVDA implied volatility'. This clearly distinguishes it from siblings such as get_us_price or get_us_info.
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 ('같은 질문에 사용합니다') and provides sensible defaults (nearest expiration, strikes around spot). It does not explicitly mention when not to use it or point to alternative tools, so it falls just short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_us_priceARead-onlyIdempotent
US stock price — NYSE/NASDAQ 미국 주식 현재가 스냅샷 (US market via yfinance). "AAPL price", "Tesla 현재가", "MSFT quote", "Nvidia 얼마" 같은 질문에 사용합니다.
현재가 + 전일대비 + 시/고/저 + 거래량 + 52주 고저 + 베타 + 시가총액 + 마켓 상태 (정규장/프리/포스트) 반환. Yahoo Finance 데이터는 최대 15분 지연 가능.
Args: ticker: US 티커 (예: "AAPL", "TSLA", "BRK.B", "SPY")
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds valuable context beyond this: data source (yfinance), up to 15-minute delay, and market status (regular/pre/post). This helps the agent set expectations on freshness and scope 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 front-loaded with the purpose, then provides examples, return fields, and the parameter explanation in a logical order. It is not overly verbose for the information conveyed, though the bilingual repetition slightly reduces elegance.
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, the description still enumerates the return fields and notes the data delay, covering everything an agent needs to decide and call. It is complete for a single-parameter, read-only tool; the only minor omission is handling of invalid tickers, which is not critical.
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 only parameter, ticker, is explained with concrete examples including a dotted symbol (BRK.B), which the schema alone (just type: string) does not convey. This adds meaning about format and acceptable values. Since there is only one param and no schema description, the description fully compensates.
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 provides a US stock price snapshot via yfinance, listing the exact fields returned (current price, change, OHLC, volume, 52-week range, beta, market cap, market status) and giving example queries. It does not explicitly contrast with sibling price tools like get_us_multi_price or get_us_chart, so it falls short of a perfect 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives example queries ('AAPL price', 'Tesla 현재가') and says these are the use cases, implying when to invoke the tool. However, it never mentions alternatives or when not to use it, such as for multi-stock comparisons or historical charts, leaving the agent to infer boundaries from sibling names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_us_screenerARead-onlyIdempotent
US stock screener — 미국 주식 프리셋 스크리너 (US predefined screener). "오늘 급등주", "top gainers", "가장 많이 거래된 종목", "저평가 성장주" 같은 질문에 사용합니다.
사용 가능 preset: day_gainers, day_losers, most_actives, most_shorted_stocks, aggressive_small_caps, growth_technology_stocks, undervalued_growth_stocks, undervalued_large_caps, small_cap_gainers, conservative_foreign_funds
각 행에 증권 유형(common_stock/warrant/right/unit/adr/etf/unknown)이 붙습니다. small_cap_gainers 같은 프리셋에는 GRABW(워런트)·KLXER(라이츠) 같은 파생 식별자가 섞여 나옵니다 - 보통주 후보만 원하면 common_stock_only=True. 유형을 확인할 수 없는 항목은 unknown 으로 남고 보통주로 치지 않습니다.
Args: preset: 스크리너 ID (기본 day_gainers) count: 반환 종목 수 (기본 20) common_stock_only: True 면 보통주만 남깁니다 (unknown 도 제외)
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | ||
| preset | No | ||
| common_stock_only | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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, so the safety profile is covered. The description adds behavioral context beyond annotations: it discloses that each row includes a security type, that certain presets may contain derivative identifiers like warrants/rights, that common_stock_only filters them, and that unknown types remain as 'unknown'. It also provides default values for preset and count. This is valuable extra behavior not captured 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 well-structured: it opens with a one-line purpose, gives example queries, lists presets, explains security-type behavior, and ends with an Args section. Every sentence adds value; there is no filler. It is slightly long due to the bilingual text and detailed notes, but the structure makes it scannable and 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?
Given the output schema exists (has_output_schema=true) and annotations cover safety, the description covers what an agent needs to call this tool correctly: it explains presets, count, the common_stock_only filter, and the security-type behavior. It does not describe the full return structure, but the output schema likely handles that. It also lacks error conditions or rate limits, but these are not critical for a read-only, idempotent screener. Overall, it is complete enough for correct usage.
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 fully carries the burden of explaining parameters. It does so comprehensively: preset is defined as a screener ID with a full list of allowed values and default 'day_gainers'; count is described as the number of stocks to return with default 20; common_stock_only is explained with the exact effect (only common stocks remain, unknown excluded). This goes beyond the bare schema and gives agents actionable 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 it's a US stock screener with predefined presets, giving concrete example queries ('오늘 급등주', 'top gainers', etc.) and a full list of 10 preset identifiers. It distinguishes itself from sibling tools like get_us_price or get_sector_stocks by focusing on preset-based screening rather than price, info, or sector data. The verb 'get' + resource 'screener' is 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?
The description provides clear when-to-use guidance via example queries and explicitly explains when to set common_stock_only=True (when only common stocks are wanted, filtering out warrants/rights/unknown). It does not explicitly mention when to use alternative tools, but the preset examples and parameter explanations give enough context for an agent to select this tool for preset-based screening. The guidance is functional 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_us_searchARead-onlyIdempotent
US stock search — 미국 주식 종목명/티커 검색 (US stock search, ticker lookup). "Apple 티커", "Tesla symbol", "반도체 ETF", "Nvidia 찾아줘" 같은 질문에 사용합니다.
⚠️ 사용자가 "애플"·"테슬라" 같은 회사명만 주면 이 도구를 먼저 호출하세요. 결과가 여러 개면 사용자에게 확인 요청. 추측 금지.
Args: query: 검색어 (회사명·티커, 한/영 무관)
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, open-world, and non-destructive behavior. The description adds useful behavioral context beyond that: search may return multiple candidates, and the agent must confirm with the user rather than guessing. This is meaningful but not extensive.
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 front-loads the core purpose before examples and usage rules. There is minor bilingual redundancy ('US stock search' repeated), but the warning, examples, and Args section all earn their place.
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 read-only search with an output schema available, the description is complete: it explains what to search, when to invoke, and how to handle ambiguous results. No critical calling information is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description carries the full burden. It defines query as '검색어 (회사명·티커, 한/영 무관)'—search term, company name or ticker, and language-agnostic. This fully compensates for the bare input schema and makes the single parameter 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 a specific verb and resource: US stock search / ticker lookup, with concrete example queries like 'Apple 티커' and 'Tesla symbol'. The 'US' qualifier and examples distinguish it from broader sibling search tools such as search and search_stock.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit trigger condition: if the user provides only a company name like '애플' or '테슬라', call this tool first. It also prescribes the post-search behavior—ask the user to confirm when multiple results appear and never guess—which is actionable guidance an agent can follow directly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_us_sectorARead-onlyIdempotent
US sector overview — 미국 섹터별 top 기업 + 시장 비중 (US sector top companies). "기술주 섹터", "healthcare top companies", "technology 대장주", "섹터 비중" 같은 질문에 사용합니다.
Args: sector_key: technology, healthcare, financial-services, consumer-cyclical, consumer-defensive, communication-services, industrials, energy, basic-materials, utilities, real-estate top_n: top 기업 수 (기본 20)
| Name | Required | Description | Default |
|---|---|---|---|
| top_n | No | ||
| sector_key | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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 that it returns top companies and market share, but does not disclose other behavioral aspects like pagination, rate limits, or what happens with invalid sector keys. Given the annotations cover safety, this is adequate but not rich.
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 reasonably concise, with a clear opening line, example queries, and a parameter list. There is some redundancy between English and Korean phrases, but it does not detract from readability. The structure is front-loaded with the 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?
With an output schema present, return values are likely documented elsewhere. The description covers the tool's purpose, parameter values, and example usage, making it fairly complete for a simple two-parameter tool. It lacks error-handling details but those are probably not essential for this kind of read-only overview.
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 compensate. It does so effectively by listing all valid sector_key values (technology, healthcare, etc.) and explaining top_n as 'top 기업 수 (기본 20)' (number of top companies, default 20). This fully documents both parameters 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 a US sector overview with top companies and market share ('US sector overview — 미국 섹터별 top 기업 + 시장 비중'). It also gives example queries to clarify intent. However, it does not explicitly differentiate from sibling tools like get_sector_stocks or list_sectors, which could be similar in 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 example queries ('기술주 섹터', 'healthcare top companies', '섹터 비중') that indicate when to use the tool. However, it does not mention alternatives or explicitly state when not to use it, leaving the agent to infer from context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_us_shortARead-onlyIdempotent
US short interest — 공매도 잔고 + % of float + days to cover (US short interest). "AAPL short interest", "GME 공매도", "short squeeze" 같은 질문에 사용합니다.
⚠️ FINRA bi-monthly 공시라 데이터가 2~4주 stale합니다. 반드시 'date_short_interest'를 확인하세요.
Args: ticker: US 티커
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive behavior. The description adds significant value beyond that by disclosing the FINRA bi-monthly reporting cycle and the 2–4 week data staleness, plus an explicit instruction to verify 'date_short_interest'. 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 front-loaded with the core definition, followed by example queries, a prominent staleness warning, and an Args line. It is concise overall, though the phrase 'US short interest' appears redundantly in the first sentence.
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 one-parameter, read-only tool with an output schema present, the description covers purpose, usage triggers, and the key data-freshness caveat. The instruction to check 'date_short_interest' is exactly the operational detail an agent needs; 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 only parameter, 'ticker', has zero schema description coverage, but the description compensates by labeling it 'US 티커' and providing examples like AAPL and GME. This is adequate for a simple single-symbol string parameter, though it does not cover format edge cases such as delisted tickers or exchange suffixes.
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 explicitly names the resource ('US short interest') and lists the returned components ('공매도 잔고 + % of float + days to cover'). It also gives concrete example queries ('AAPL short interest', 'GME 공매도', 'short squeeze'), making the tool's purpose unambiguous and distinct from the many other US market 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 gives clear trigger examples and a critical usage condition: FINRA data is stale by 2–4 weeks and the agent must check 'date_short_interest'. It does not explicitly name alternative tools or state when not to use this tool, so it falls just short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_volume_rankingARead-onlyIdempotent
거래량/거래대금 순위 — 상위 종목을 가져옵니다.
"거래량 많은 종목" → sort_by="volume" (기본, 주수 기준) "거래대금 많은 종목"/"거래 규모 큰 종목"/"돈이 몰린 종목" → sort_by="trade_value" (원 기준)
두 순위는 뽑는 대상부터 다릅니다. volume 은 시장 전체의 거래량 순위, trade_value 는 시장 전체의 거래대금 순위를 그대로 받습니다(거래량 상위 안에서 다시 줄 세우는 게 아님). 주가가 높은 대형주(삼성전자·SK하이닉스 등)는 주수가 작아 volume 순위에는 잘 안 보이고, 주가가 몇 원~몇백 원인 종목은 주수만 커서 volume 순위 위쪽에 올라옵니다. 시장 자금이 어디 몰렸는지 볼 때는 trade_value 를 쓰세요.
거래량·거래대금은 KRX 체결분입니다(넥스트레이드 체결은 들어 있지 않음).
Args: market: "KOSPI" / "KOSDAQ" / "ALL" (기본 ALL) count: 가져올 종목 수 (기본 50, 최대 500) sort_by: "volume"(거래량 주수) / "trade_value"(거래대금 원)
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | ||
| market | No | ||
| sort_by | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint, idempotentHint, non-destructive), the description discloses important behavioral nuances: volume is by share count, trade_value is by won, the two rankings are independently computed rather than re-ranked, and the data covers only KRX executions excluding Nextrade. This is rich contextual behavior that the annotations alone do not 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 appropriately sized for the tool's complexity and every sentence earns its place: purpose, parameter mapping, ranking nuance, data source caveat, and a structured Args block. It is front-loaded with the core purpose and then provides necessary clarification 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 complexity and the presence of an output schema, the description is complete. It covers all three parameters with defaults and constraints, explains the behavioral distinction between volume and trade_value rankings, and discloses the KRX-only data scope. Nothing an agent needs to select and call this tool correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides zero parameter descriptions, but the description fully compensates: market is specified as KOSPI/KOSDAQ/ALL with default ALL, count has default 50 and max 500, and sort_by has both accepted values with meanings. The description also clarifies the semantic difference between the two sort_by options, adding meaning far 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 identifies the tool as fetching top stocks by trading volume/trade value ranking, with a specific verb ('가져옵니다') and resource. It also distinguishes the two sort modes (volume vs trade_value) and explains that they are separate market-wide rankings, which sets it apart from related ranking 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 gives explicit usage guidance: '거래량 많은 종목' maps to sort_by='volume' and '거래대금 많은 종목'/'돈이 몰린 종목' maps to sort_by='trade_value'. It also advises using trade_value when assessing where market money is flowing. It does not explicitly compare this tool to sibling ranking tools like get_change_ranking or get_market_cap_ranking, so it falls just short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_sectorsARead-onlyIdempotent
업종목록 — 네이버 증권의 업종(섹터) 목록을 가져옵니다. "업종별 현황", "섹터 리스트", "업종 등락률" 같은 질문에 사용합니다. 약 79개 업종이 전일대비 등락률 순으로 정렬됩니다.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and non-destructive, covering the safety profile. The description adds useful behavioral context: it returns approximately 79 sectors and sorts them by daily change rate. This goes beyond the annotations but is not extensive; there is no mention of any other side effects or edge cases, which is acceptable given the simple read-only nature.
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 concise: three sentences. The first sentence states the core action, the second gives usage examples, and the third notes the output size and sort order. There is no wasted text, and the essential 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 has no parameters, an output schema (present), and annotations covering safety, the description is largely complete. It states what is returned and how it is ordered. It does not mention any caveats like possible latency or regional specificity, but these are minor and likely covered by the output schema or not critical for a simple list retrieval. Overall, it is adequate for an agent to call 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 the schema covers all parameters trivially (100% coverage). The description adds no parameter information because none is needed. Per the baseline, a tool with 0 parameters gets a 4, and the description does not introduce any 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 fetches the list of industries (sectors) from Naver Securities, sorted by daily change rate. It uses a specific verb and resource, and the examples of user queries ('industry status', 'sector list', 'industry fluctuation rate') clarify intent. However, it does not explicitly differentiate from sibling tools like list_themes or get_sector_stocks, though the resource (sectors vs themes) and the overall list nature are implied.
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 usage context by listing example questions that should trigger this tool, such as 'industry status' and 'sector list'. It does not explicitly state when not to use it or mention alternative tools for related but distinct needs (e.g., getting stocks within a sector), so it stops short of a full when/when-not guide, but the context is sufficiently clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_themesARead-onlyIdempotent
테마목록 — 네이버 증권의 테마 목록을 가져옵니다. "어떤 테마가 있어?", "테마 리스트", "오늘 강세 테마" 같은 질문에 사용합니다. 총 7페이지가 있으며 한 페이지당 40개 테마가 있습니다. 전일대비 등락률 순으로 정렬되어 있어요.
Args: page: 페이지 번호 (1~7, 기본 1)
| Name | Required | Description | Default |
|---|---|---|---|
| page | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, lowering the burden on the description. The description adds meaningful operational detail: 7 pages, 40 themes per page, and sorting by previous-day change rate.
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 front-loaded: purpose, trigger phrases, pagination information, sort order, and parameter details each earn their place. There is no redundant or filler content.
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, read-only list tool with an output schema, the description covers everything needed to call it correctly: page bounds, default, ordering, and example user queries. No critical call context 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 schema has one undocumented integer parameter with 0% description coverage, so the description must compensate. It fully does by documenting the page range (1~7) and the default value (1).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action and resource: fetching the Naver Securities theme list, with example user queries that clarify intent. It doesn't explicitly contrast with sibling tools like get_theme_stocks or list_sectors, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear trigger examples ('어떤 테마가 있어?', '테마 리스트', '오늘 강세 테마'), which tells an agent when to use this tool. It does not mention when not to use it or name alternatives, so it lacks the explicit routing of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query_excelARead-onlyIdempotent
엑셀쿼리 — 저장된 Excel 스냅샷(scan_to_excel 산출)에서 조건에 맞는 종목을 로컬 필터링. HTTP 없이 빠름.
필터 형식(둘 다 지원): 간단: {"per_max": 10, "pbr_max": 1.5, "drawdown_pct_max": -30} 상세: {"per": {"max": 10, "min": 0}, "drawdown_pct": {"max": -30}}
Args: file_path: scan_to_excel로 만든 파일 경로 filters: 필터 조건 (컬럼명_max / 컬럼명_min 형식) sort_by: 정렬 기준 컬럼 (예: "market_cap", "drawdown_pct") descending: 내림차순 (기본 True) limit: 반환 최대 개수 (기본 30)
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| filters | No | ||
| sort_by | No | ||
| file_path | Yes | ||
| descending | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint, idempotentHint, non-destructive), lowering the burden on the description. The description adds genuine behavioral context: local execution without HTTP, the upstream file source, and support for two distinct filter formats (simple column_max/min and nested max/min objects). No contradictions 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 front-loaded with the purpose statement and organized into clear sections (purpose, filter formats, args). Every line carries information, including defaults. It has a minor internal inconsistency where the Args note says filters use column_name_max/min format while the detailed example uses nested objects, but overall it is efficient 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 5-parameter tool with zero schema descriptions, the description covers the purpose, input source, filter syntax, parameter defaults, and return limits. An output schema exists, so return-value documentation is unnecessary. The main gaps are minor: a slight inconsistency between the stated filter format and the detailed example, and no listing of which snapshot columns are filterable.
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, and it delivers: every parameter (file_path, filters, sort_by, descending, limit) is described in the Args section, including concrete examples, format guidance, and defaults (descending=True, limit=30). The two filter-format examples are especially valuable because the schema only declares filters as a generic object with no structure.
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 ('filter') and a specific resource ('stock items from saved Excel snapshots produced by scan_to_excel'). It distinguishes itself from the many live-data sibling tools by explicitly stating this performs local filtering without HTTP, and the reference to scan_to_excel as the upstream producer makes its role in the pipeline 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 implies the workflow context: use it after scan_to_excel to filter saved snapshots locally, and it contrasts itself with HTTP-based queries ('HTTP 없이 빠름'). However, it never explicitly names an alternative or states when not to use it, despite dozens of screening/ranking siblings (screen_by_flow, get_market_cap_ranking, get_us_screener). The guidance is serviceable but left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_analysis_to_excelA
분석결과저장 — 당신이 정리한 표를 그대로 Excel로 저장합니다.
scan_to_excel 은 정해진 지표를 종목별로 담는 도구입니다. 이 도구는 그와 달리,
여러 도구를 돌려 직접 판단하고 정리한 결과(후보 목록, 단계 판정, 겹침 분석
같은 것)를 사용자가 파일로 가져갈 수 있게 만듭니다.
반드시 지킬 것
rows 의 숫자는 도구가 돌려준 값만 씁니다. 기억이나 추정으로 채우지 마세요. 확인 못 한 칸은
"-"또는"확인 안 됨"으로 두고, 0 으로 채우지 않습니다.sources에 어떤 도구를 썼는지 적습니다. 파일만 남았을 때 이 숫자가 어디서 왔는지 알 수 있어야 합니다. 예:["screen_by_flow", "get_indicators_bulk"]판단 근거와 한계를
notes에 적습니다. 무엇을 걸렀고 무엇을 못 봤는지, 장중 잠정치인지 같은 것. 표만 남으면 나중에 잘못 읽힙니다.매수·매도 권유, 목표가·손절가는 넣지 않습니다.
rows 구성 요령
각 dict 의 키가 곧 열 이름입니다. 한글로 쓰세요(예:
"종목명","수급(2일)").모든 행이 같은 키를 갖도록 맞춥니다. 빠진 키는 빈칸이 됩니다.
숫자는 숫자 그대로 넣으세요(문자열
"12.5%"대신12.5). 자릿점·색은 저장할 때 자동으로 붙습니다. 단위는 열 이름에 넣으세요("기간수익률(%)").종목이 20개 이하면 비교 그래프가 자동으로 함께 저장됩니다.
Args:
title: 파일 제목. 첫 시트 이름과 요약에 쓰입니다. 예: "기대 부상후보 스캔"
rows: 표 데이터. [{"종목명": "성광벤드", "기간수익률(%)": -8.9}, ...]
notes: 판단 근거·제외 기준·한계. 한 줄에 하나씩.
sources: 근거가 된 도구 이름들.
detail_codes: 종목별 흐름 시트를 만들 6자리 코드들(최대 8개).
각 시트에 종가 추이·기관/외국인 순매매 그래프와 원자료가 들어갑니다.
목록만 있으면 "그래서 어떻게 움직이고 있나"를 다시 조회해야 하므로,
사용자가 더 볼지 정할 수 있게 후보 상위 몇 개는 넣어 주세요.
detail_days: 흐름 시트에 담을 거래일 수 (기본 60, 최대 120).
extras: 다른 렌즈에서 가져온 것을 종목 시트에 얹습니다.
StockLens 는 TelegramLens·DartLens 를 직접 부르지 못하므로,
그 도구들을 먼저 호출해 결과를 여기에 담아 주세요.
{"042660": [{"title": "텔레그램 언급", "cols": ["시각","채널","내용"], "rows": [["08-26 10:30","매경 자이앤트","원전 수주 기대"]]}]}
형식이며, 카드는 담은 순서대로 붙습니다.
넣을 만한 것:
· TelegramLens — telegram_stock_buzz(언급 원문·telegram_link 를 url 로),
telegram_timeline(확산 흐름)
· DartLens — get_major_holders(5%룰: 연기금·행동주의 진입),
get_insider_trades(임원·주요주주 매매 = 안에서 먼저 움직인 흔적),
list_disclosures(정기·수시 공시), get_order_backlog(수주잔고 추이)
· StockLens — get_us_short(미국 공매도), get_event_reactions(공시 반응)
행은 ["값", ...] 또는 {"cells": [...], "url": "원문 링크"} 로 넣습니다.
⚠️ 원문에 있는 내용만 옮기고, 없는 것을 지어내지 마세요.
filename: 파일명 (비우면 제목으로 자동 생성)
| Name | Required | Description | Default |
|---|---|---|---|
| rows | Yes | ||
| notes | No | ||
| title | Yes | ||
| extras | No | ||
| sources | No | ||
| filename | No | ||
| detail_days | No | ||
| detail_codes | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (readOnlyHint:false, openWorldHint:true) are consistent with a file-creating tool, and the description adds substantial behavior beyond them: auto-generated comparison graph when ≤20 stocks, automatic decimal/color formatting, detail sheets with closing price and institutional/foreign net-buy graphs for detail_codes, and the data-integrity rules (never fabricate rows, mark unverified cells as '-', never use 0 as filler). No annotation contradiction. The only gap is silence on output/return value, which is acceptable given the output schema exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is exceptionally long and would benefit from trimming. The 'rows 구성 요령' section overlaps with the rows parameter explanation (both cover key/column-name and number-format rules), and the '넣을 만한 것' list in extras sprawls with parenthetical explanations of each sibling tool. However, it is well-structured: critical rules are front-loaded in the '반드시 지킬 것' section with numbered items, and bolded headers aid scanning. Given 8 parameters and 0% schema coverage, much of the length is justified, but redundancy and the verbose tool enumeration cost it a higher 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?
For an 8-parameter tool with 0% schema coverage and nested objects, the description is thorough and complete: every parameter has meaning, format, and constraints, with concrete examples for rows and extras. It covers edge behaviors (missing keys become blanks, auto-graph at ≤20 stocks, max 8 detail_codes, max 120 days), data-integrity rules, and the workflow requirement of calling upstream tools first. Since an output schema exists, not explaining return values is acceptable. Nothing an agent needs to invoke this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description carries the full burden — and it fully compensates. Every parameter gets a Korean explanation, format, and often an example: title (used in first sheet name and summary), rows (dict keys become column names, Korean headers required, numbers as numbers not strings, units in column names), notes (one per line), detail_codes (6-digit, max 8), detail_days (default 60, max 120), extras (full JSON example with tool-specific guidance), and filename (auto-generated from title if empty).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('저장합니다' saves to Excel) and precisely defines what content is saved ('당신이 정리한 표'). Explicitly contrasts with sibling scan_to_excel (fixed indicators per stock) vs. this tool (individually judged/organized results like candidate lists, stage judgments, overlap analyses). An agent can unambiguously distinguish it from scan_to_excel and export_to_excel.
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 names the sibling scan_to_excel and gives the selection condition ('정해진 지표를 종목별로 담는 도구' vs. '직접 판단하고 정리한 결과'). Also states when the tool should be used (after running multiple tools and organizing findings) and provides prerequisites for correct invocation — calling TelegramLens/DartLens first and passing results via extras since StockLens cannot call them directly. Exclusion guidance is equally explicit: no buy/sell recommendations, no target prices or stop-losses.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scan_to_excelA
시장스캔 — 원하는 항목만 골라 여러 종목을 Excel 한 장으로 저장.
로컬 캐시 패턴: 한 번 스캔 → 이후 query_excel(파일경로, 조건)로 즉시 반복 필터링.
fields — 넣을 항목을 직접 고른다
값 | 들어가는 열 | 추가 조회 비용 |
| 현재가·거래량 | 기본 (항상 수집) |
| 기간 최고/최저·낙폭·기간수익률·평균거래량·집계봉수 | 기본 (항상 수집) |
| PER·PBR·EPS·BPS·ROE·배당수익률·시가총액·재무기준기간 | 종목당 1회 |
| 기관·외국인 순매매 누적(20일) | 30종목당 1회 |
| 업종 | 종목당 1회 |
| 이평배열·RSI·거래량배수 | 100종목당 1회 |
생략하면 ["price", "chart", "financial"] 이 들어갑니다(기존과 동일).
필요 없는 항목을 빼면 그만큼 조회가 줄어 빨라집니다.
무엇을 넣을지 사용자와 정하는 법
사용자가 "엑셀로 만들어줘"라고만 하면 바로 기본 세트로 만들지 말고, 무엇에 쓸 파일인지 한 번 물어보세요. 목적에 따라 넣을 항목이 달라집니다.
"어떤 걸 보시려고 하시나요? 아래처럼 목적을 말씀해 주시면 맞춰 담아드릴게요. — 싼 종목 고르기 / 수급 흐름 보기 / 차트 흐름 보기 / 업종 안에서 비교 / 전부"
목적별 추천 구성
사용자가 하려는 일 | fields |
싸게 거래되는 종목 고르기 |
|
외국인·기관이 사는 종목 보기 |
|
많이 빠진 종목 훑기 |
|
추세·과열 상태 보기 |
|
같은 업종끼리 비교 |
|
일단 다 담기 (느림) |
|
이미 사용자가 목적을 밝혔다면 다시 묻지 말고 위 표대로 골라 담으세요. 종목이 30개를 넘으면 항목이 많을수록 눈에 띄게 느려지므로, 그때는 필요한 것만 담고 나중에 더 필요하면 다시 부르는 편이 낫다고 안내하세요.
Args: codes: 종목코드 리스트 (최대 500개) fields: 넣을 항목. 위 표의 값들 중에서 고릅니다. 생략 시 기본 세트. days: 차트 통계 과거 일수 (기본 260 = 52주) include_financial: (구버전 호환) fields 를 안 줬을 때만 적용됩니다. filename: 파일명 (비우면 자동 생성)
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | ||
| codes | Yes | ||
| fields | No | ||
| filename | No | ||
| include_financial | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds substantial behavioral detail beyond the annotations: per-field additional query costs, the default field set, the local cache pattern, and the performance warning for large stock lists. This fully discloses cost and latency behavior, while the annotations are not contradicted.
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 tables and a clear hierarchy from purpose to parameter details. Front-loading the core action and cache pattern helps, though there is slight redundancy between the fields table and the include_financial note.
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 five parametersable to accept up to 500 codes and six optional field categories, the description covers all invocation-relevant aspects: cost trade-offs, defaults, maximums, compatibility behavior, and even user interaction guidance. Since an output schema exists, the description need not explain return values, leaving no major 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 coverage is 0%, so the description carries the full burden, and it excels: each parameter is explained with constraints, defaults, and allowed values. The fields parameter gets a full table of valid values and their meanings, days has a default of 260, and include_financial is explicitly scoped to when fields is omitted.
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: scan the market and save selected items from multiple stocks into a single Excel sheet. It is clearly distinguishable from many siblings by the local cache pattern and the query_excel follow-up, though it does not explicitly name an alternative tool such as export_to_excel.
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 rich when-to-use guidance: ask the user for their purpose if they only say 'make an Excel', do not ask again if the purpose is already known, and recommend minimal fields when more than 30 stocks are involved. It also provides a purpose-to-fields mapping table, making the selection process explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
screen_by_flowARead-onlyIdempotent
수급스크리닝 — 거래대금/거래량 상위 N개 중 외국인·기관이 최근 며칠 연속 순매수한 종목만 추립니다.
"거래대금 상위 중 외국인·기관 동반 매수", "이틀 연속 수급 들어온 종목" 같은 스크리닝 전용. 랭킹+수급을 서버에서 join해 매치 종목만 반환 → 토큰·시간 절감. 후보는 get_volume_ranking 과 같은 순위입니다 — trade_value 면 시장 전체 거래대금 상위 N개 (대형주 포함), volume 이면 시장 전체 거래량 상위 N개.
Args: top_n: 상위 후보 수 (기본 100, 최대 500). 클수록 정확하나 느림(500≈20~50초) market: "KOSPI"/"KOSDAQ"/"ALL" (기본 ALL) foreign_days: 최근 N일 모두 외국인 순매수여야 매치 (0=미적용) inst_days: 최근 N일 모두 기관 순매수여야 매치 (0=미적용) exclude_etf: ETF/ETN 제외 (기본 True) sort_by: "trade_value"(거래대금, 기본)/"volume"(거래량)
| Name | Required | Description | Default |
|---|---|---|---|
| top_n | No | ||
| market | No | ||
| sort_by | No | ||
| inst_days | No | ||
| exclude_etf | No | ||
| foreign_days | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint and idempotentHint, which align with the description's mention of server-side join and filtering (no mutation). The description adds valuable behavioral context: performance trade-off (top_n=500 takes 20-50 seconds), and the filtering logic (consecutive days for foreign/institutional net buying). It doesn't contradict 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: a concise summary, then a 'when to use' line, then parameter definitions. It's front-loaded with the key purpose. Minor redundancy: '랭킹+수급을 서버에서 join' is somewhat technical but serves a purpose. Overall 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?
The tool has 6 parameters and an output schema, but the description explains all parameter semantics and the core behavior. It doesn't describe the output format, but that's covered by the output schema. It could mention what happens when no matches are found, but the core usage is clear. Given the complexity, it's adequately 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?
The schema has zero description coverage, but the description provides detailed semantics for each parameter: top_n (default 100, max 500, performance impact), market (allowed values), foreign_days and inst_days (meaning of N days, 0 disables), exclude_etf (default True), sort_by (options and defaults). This fully compensates and adds beyond 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 states the tool screens top-N stocks by trade value/volume for consecutive foreign/institutional net buying. It distinguishes itself from get_volume_ranking by noting the server-side join of ranking and flow data, and explicitly mentions it handles phrases like '거래대금 상위 중 외국인·기관 동반 매수'.
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 clearly explains when to use this tool (for screening based on flow and ranking) and mentions that the candidate list is the same as get_volume_ranking. However, it doesn't explicitly state when NOT to use it or name alternatives like get_flow or get_detailed_investor_flow for more granular flow analysis.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
searchARead-onlyIdempotent
종목검색 — 종목명 또는 종목코드로 한국 주식 종목을 조회합니다. "삼성전자 종목코드", "반도체 관련주", "005930 뭐야" 같은 질문에 사용합니다.
⚠️ 사용자가 종목명만 주고 코드를 모를 때 반드시 이 도구를 먼저 호출. 종목 코드를 추측하지 말 것. 상장폐지·재할당으로 코드가 바뀔 수 있음.
search_stock으로도 동일하게 호출 가능 (별명).
Args: query: 검색할 종목명 또는 코드 (예: "삼성전자", "005930", "알멕")
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive behavior, so the description adds useful context beyond them: codes can change due to delisting/reallocation, and the alias search_stock is disclosed. This is meaningful context 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 content is well-structured and front-loaded: a one-line purpose, concrete examples, a highlighted warning, an alias note, and a compact Args section. No repetitive or filler text.
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 one-parameter read-only search tool with an output schema and rich annotations, the description is complete. It covers the parameter, usage trigger, a critical caution, and the alias, so an agent can invoke it correctly without external 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 schema only defines query as a string, and description coverage is 0%, so the description must carry the semantic load. It defines query as the stock name or code and provides three concrete examples (삼성전자, 005930, 알멕), fully compensating 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 opens with a clear verb and resource: '종목명 또는 종목코드로 한국 주식 종목을 조회합니다' (searches Korean stock issues by name or code), which distinguishes it from US/ETF/index siblings. Example queries make the intended usage concrete.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit when-to-use instruction: if the user only knows a stock name and not the code, this tool must be called first and codes must not be guessed. It stops short of naming alternative tools for non-Korean searches, so it earns a 4 rather than 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_stockARead-onlyIdempotent
종목코드조회 (stock lookup) — 한국 주식 종목명/코드 조회 전용 도구.
search와 동일 기능. 도구 디스커버리에서 "stock"/"ticker"/"종목" 키워드로
빠르게 매칭되도록 명확한 이름을 갖는 별명입니다.
⚠️ 종목명만 있고 6자리 코드를 모를 때 이 도구를 먼저 호출해야 합니다. 코드 추측(guessing) 금지. 다른 도구(get_price, get_chart 등)에 잘못된 코드를 넣으면 엉뚱한 종목이 조회됩니다.
Args: query: 종목명(한/영) 또는 6자리 코드. 예: "알멕", "Samsung", "005930"
Returns: 매칭된 종목 리스트. 여러 개면 사용자에게 확인 요청 필요.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the safety profile is covered. The description adds behavioral context beyond annotations: it warns against code guessing, explains the consequence of wrong codes (wrong stock returned), and notes that multiple matches require user confirmation. This is valuable behavioral disclosure that annotations don't 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-structured and front-loaded: the purpose is stated first, then usage guidance, then parameter details. It uses formatting (⚠️, Args, Returns) to improve scannability. It is slightly longer than strictly necessary but every sentence earns its place—the warning about guessing and the multi-match confirmation note are both important.
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 lookup tool with rich annotations and an output schema, the description is nearly complete. It covers purpose, usage, parameter semantics, and return behavior (matching list, need for user confirmation). The only minor gap is not describing the exact structure of the returned list, but the output schema likely covers that, and the description explicitly mentions the return type.
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 does: it explains the 'query' parameter accepts Korean/English stock names or 6-digit codes, and provides concrete examples ('알멕', 'Samsung', '005930'). This adds meaning beyond the bare schema, though it could be slightly more exhaustive about edge cases (e.g., partial names).
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: Korean stock name/code lookup. It specifies the resource (Korean stocks), the action (search/lookup), and explicitly distinguishes itself from the generic 'search' tool by noting it is an alias for 'search' with a clearer name for stock/ticker/종목 keyword matching. This is a specific verb+resource that differentiates it from siblings.
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 guidance: call this tool first when you have a stock name but not the 6-digit code, and explicitly forbids guessing codes. It also warns that using wrong codes in other tools (get_price, get_chart) will return wrong stocks. This clearly routes the agent to the correct tool and away from alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stocklens_statusARead-onlyIdempotent
상태요약 — 버전/라이선스/국내·미국 시장 상태/최근 성공·실패/캐시 쓰기 가능 여부를 한 번에.
문제가 있는지 대화 중 가볍게 확인할 때 사용합니다. 이미 기록된 최근 호출 로그와 업데이트 확인 캐시만 읽으므로 네트워크를 새로 호출하지 않습니다(빠름). 라이선스 미활성 상태에서도 원인 파악용으로 동작해야 하므로 다른 도구와 달리 라이선스 게이트를 걸지 않습니다. 문제가 있으면 LeetKit Manager의 [진단]이나 상단 [지원 문의]를 안내하세요. 터미널 명령은 안내하지 마세요.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes well beyond the annotations by revealing that the tool only reads existing call logs and update-check caches, performs no network requests, and is deliberately exempt from the license gate so it works in inactive-license states. This gives the agent important behavioral context that annotations alone do not convey.
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 focused sentences: a front-loaded summary of outputs, a clear usage context, and important behavior/guidance notes. Every sentence contributes meaningful 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?
For a zero-parameter status tool, the description fully covers what the tool reports, when to use it, its performance characteristics, its license-gate exception, and how to handle detected problems. Since an output schema exists, not detailing return values is acceptable.
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 the baseline is 4 per the rubric. The description—correctly—does not attempt to document parameters, and nothing is missing for 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 opens with a clear noun-phrase summary—'상태요약'—and enumerates exactly what the tool reports: version, license, domestic/US market status, recent successes/failures, and cache write availability. It then states the intended use case, checking for problems during a conversation, which clearly distinguishes it from the many data-retrieval sibling 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?
It explicitly says when to use the tool: '대화 중 가볍게 확인할 때' (when lightly checking during conversation). It also gives exclusions and alternatives, noting that it makes no new network calls, that unlike other tools it bypasses the license gate, and that users should be directed to LeetKit Manager's [진단] or [지원 문의] rather than terminal commands.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
watchlistA
관심종목 — '내 종목' 목록 보기/추가/삭제 (LeetKit 세 Lens 공용).
"내 종목", "관심종목", "○○ 관심종목에 넣어줘", "내 종목 시세 보여줘" 같은 요청에 사용합니다. DartLens·TelegramLens와 같은 목록을 공유합니다.
list 결과의 codes를 그대로 get_multi_stocks / get_flow_batch /
get_indicators_bulk에 넘기면 관심종목 전체를 한 번에 볼 수 있습니다.
종목을 하나씩 다시 조회하지 마세요.
Args: action: "list"(기본) / "add" / "remove" / "clear" query: add·remove에 쓸 종목명 또는 6자리 코드 (예: "디오", "039840")
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | ||
| action | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explicitly states the tool can delete items ('삭제') and lists actions 'remove' and 'clear', which are destructive operations. However, the annotations declare 'destructiveHint': false, which directly contradicts the described behavior. No additional behavioral context is provided to offset this contradiction, so the description fails to be transparent and is inconsistent with structured metadata.
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 statement and includes usage examples and integration notes. It is efficient but slightly verbose with the phrase '같은 요청에 사용합니다' and the sharing note. Still, every sentence contributes to understanding, so it is appropriately sized.
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 core actions, the sharing across Lenses, and provides a concrete integration pattern with other tools. It does not mention edge cases (e.g., behavior when removing a non-existent item) or error handling, but given the tool's simplicity and the existing output schema (not shown), it is reasonably complete for an agent to 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?
The schema provides only parameter names ('query', 'action') with no descriptions, giving 0% schema coverage. The description fully compensates by explaining 'action' accepts 'list' (default), 'add', 'remove', 'clear', and that 'query' is a stock name or 6-digit code used for add/remove. 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's purpose: viewing, adding, and removing items from a watchlist ('관심종목 — '내 종목' 목록 보기/추가/삭제'). It uses a specific verb and resource, and distinguishes itself from stock-data retrieval tools by noting it is for list management and shared across three Lenses. Even though it does not name a specific sibling to contrast, the purpose is 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 gives explicit when-to-use guidance: requests like '내 종목', '관심종목', 'add to watchlist', etc. It also provides a clear alternative: pass the 'codes' from a 'list' result to get_multi_stocks/get_flow_batch/get_indicators_bulk for bulk viewing, and explicitly advises not to look up stocks one by one. This is strong routing and alternative guidance.
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.
44 tool updates
v1.1.3- Changed
export_to_excel3 fields changed- removed
Input schema / properties / code / defaultRemoved value: -"" - removed
Input schema / properties / days / defaultRemoved value: -180 - removed
Input schema / properties / filename / defaultRemoved value: -""
- Changed
export_us_to_excel3 fields changed- removed
Input schema / properties / filename / defaultRemoved value: -"" - removed
Input schema / properties / interval / defaultRemoved value: -"1d" - removed
Input schema / properties / period / defaultRemoved value: -"10y"
- Changed
get_change_ranking3 fields changed- removed
Input schema / properties / count / defaultRemoved value: -50 - removed
Input schema / properties / direction / defaultRemoved value: -"up" - removed
Input schema / properties / market / defaultRemoved value: -"ALL"
- Changed
get_chart2 fields changed- removed
Input schema / properties / count / defaultRemoved value: -120 - removed
Input schema / properties / timeframe / defaultRemoved value: -"day"
- Changed
get_detailed_investor_flow10 fields changed- removed
Input schema / properties / code / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / code / defaultRemoved value: -null - added
Input schema / properties / code / typeAdded value: +"string" - removed
Input schema / properties / codes / anyOfRemoved value: -[ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } -] - removed
Input schema / properties / codes / defaultRemoved value: -null - added
Input schema / properties / codes / itemsAdded value: +{ + "type": "string" +} - added
Input schema / properties / codes / typeAdded value: +"array" - removed
Input schema / properties / days / defaultRemoved value: -20 - removed
Input schema / properties / measure / defaultRemoved value: -"net_quantity" - removed
Input schema / properties / source / defaultRemoved value: -"auto"
- Changed
get_etf_list4 fields changed- removed
Input schema / properties / category / defaultRemoved value: -"" - removed
Input schema / properties / keyword / defaultRemoved value: -"" - removed
Input schema / properties / limit / defaultRemoved value: -20 - removed
Input schema / properties / sort_by / defaultRemoved value: -"marketSum"
- Changed
get_event_reaction2 fields changed- removed
Input schema / properties / after / defaultRemoved value: -20 - removed
Input schema / properties / before / defaultRemoved value: -5
- Changed
get_event_reactions11 fields changed- removed
Input schema / properties / after / defaultRemoved value: -10 - removed
Input schema / properties / before / defaultRemoved value: -5 - removed
Input schema / properties / exclude_types / anyOfRemoved value: -[ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } -] - removed
Input schema / properties / exclude_types / defaultRemoved value: -null - added
Input schema / properties / exclude_types / itemsAdded value: +{ + "type": "string" +} - added
Input schema / properties / exclude_types / typeAdded value: +"array" - removed
Input schema / properties / include_types / anyOfRemoved value: -[ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } -] - removed
Input schema / properties / include_types / defaultRemoved value: -null - added
Input schema / properties / include_types / itemsAdded value: +{ + "type": "string" +} - added
Input schema / properties / include_types / typeAdded value: +"array" - removed
Input schema / properties / max_events / defaultRemoved value: -8
- Changed
get_flow1 field changed- removed
Input schema / properties / days / defaultRemoved value: -20
- Changed
get_flow_batch2 fields changed- removed
Input schema / properties / days / defaultRemoved value: -5 - removed
Input schema / properties / summary / defaultRemoved value: -false
- Changed
get_indicators10 fields changed- removed
Input schema / properties / days / defaultRemoved value: -260 - removed
Input schema / properties / include / anyOfRemoved value: -[ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } -] - removed
Input schema / properties / include / defaultRemoved value: -null - added
Input schema / properties / include / itemsAdded value: +{ + "type": "string" +} - added
Input schema / properties / include / typeAdded value: +"array" - added
Input schema / properties / params / additionalPropertiesAdded value: +true - removed
Input schema / properties / params / anyOfRemoved value: -[ - { - "additionalProperties": true, - "type": "object" - }, - { - "type": "null" - } -] - removed
Input schema / properties / params / defaultRemoved value: -null - added
Input schema / properties / params / typeAdded value: +"object" - removed
Input schema / properties / timeframe / defaultRemoved value: -"day"
- Changed
get_indicators_bulk10 fields changed- removed
Input schema / properties / days / defaultRemoved value: -260 - removed
Input schema / properties / include / anyOfRemoved value: -[ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } -] - removed
Input schema / properties / include / defaultRemoved value: -null - added
Input schema / properties / include / itemsAdded value: +{ + "type": "string" +} - added
Input schema / properties / include / typeAdded value: +"array" - added
Input schema / properties / params / additionalPropertiesAdded value: +true - removed
Input schema / properties / params / anyOfRemoved value: -[ - { - "additionalProperties": true, - "type": "object" - }, - { - "type": "null" - } -] - removed
Input schema / properties / params / defaultRemoved value: -null - added
Input schema / properties / params / typeAdded value: +"object" - removed
Input schema / properties / timeframe / defaultRemoved value: -"day"
- Changed
get_intraday_chart12 fields changed- removed
Input schema / properties / completed_only / defaultRemoved value: -true - removed
Input schema / properties / date / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / date / defaultRemoved value: -null - added
Input schema / properties / date / typeAdded value: +"string" - removed
Input schema / properties / interval / defaultRemoved value: -"5m" - removed
Input schema / properties / market / defaultRemoved value: -"KR" - removed
Input schema / properties / row_limit / defaultRemoved value: -120 - removed
Input schema / properties / session / defaultRemoved value: -"regular" - removed
Input schema / properties / source / defaultRemoved value: -"auto" - removed
Input schema / properties / venue / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / venue / defaultRemoved value: -null - added
Input schema / properties / venue / typeAdded value: +"string"
- Changed
get_intraday_indicators17 fields changed- removed
Input schema / properties / bars / defaultRemoved value: -260 - removed
Input schema / properties / completed_only / defaultRemoved value: -true - removed
Input schema / properties / include / anyOfRemoved value: -[ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } -] - removed
Input schema / properties / include / defaultRemoved value: -null - added
Input schema / properties / include / itemsAdded value: +{ + "type": "string" +} - added
Input schema / properties / include / typeAdded value: +"array" - removed
Input schema / properties / interval / defaultRemoved value: -"60m" - removed
Input schema / properties / market / defaultRemoved value: -"KR" - added
Input schema / properties / params / additionalPropertiesAdded value: +true - removed
Input schema / properties / params / anyOfRemoved value: -[ - { - "additionalProperties": true, - "type": "object" - }, - { - "type": "null" - } -] - removed
Input schema / properties / params / defaultRemoved value: -null - added
Input schema / properties / params / typeAdded value: +"object" - removed
Input schema / properties / session / defaultRemoved value: -"regular" - removed
Input schema / properties / source / defaultRemoved value: -"auto" - removed
Input schema / properties / venue / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / venue / defaultRemoved value: -null - added
Input schema / properties / venue / typeAdded value: +"string"
- Changed
get_investor_deposit1 field changed- removed
Input schema / properties / days / defaultRemoved value: -20
- Changed
get_market_cap_ranking3 fields changed- removed
Input schema / properties / count / defaultRemoved value: -50 - removed
Input schema / properties / market / defaultRemoved value: -"KOSPI" - added
Input schema / properties / pageAdded value: +{ + "title": "Page", + "type": "integer" +}
- Changed
get_metrics_summary1 field changed- removed
Input schema / properties / days / defaultRemoved value: -1
- Added
get_move_context - Changed
get_multi_chart_stats1 field changed- removed
Input schema / properties / days / defaultRemoved value: -260
- Added
get_news - Changed
get_report_content4 fields changed- removed
Input schema / properties / max_chars / anyOfRemoved value: -[ - { - "type": "integer" - }, - { - "type": "null" - } -] - removed
Input schema / properties / max_chars / defaultRemoved value: -null - added
Input schema / properties / max_chars / typeAdded value: +"integer" - removed
Input schema / properties / mode / defaultRemoved value: -"summary"
- Changed
get_reports3 fields changed- removed
Input schema / properties / code / defaultRemoved value: -"" - removed
Input schema / properties / count / defaultRemoved value: -5 - removed
Input schema / properties / kind / defaultRemoved value: -""
- Changed
get_sector_stocks2 fields changed- removed
Input schema / properties / count / defaultRemoved value: -30 - added
Input schema / properties / pageAdded value: +{ + "title": "Page", + "type": "integer" +}
- Changed
get_sector_valuation4 fields changed- removed
Input schema / properties / code / defaultRemoved value: -"" - removed
Input schema / properties / kind / defaultRemoved value: -"sector" - removed
Input schema / properties / sector_name / defaultRemoved value: -"" - removed
Input schema / properties / top_n / defaultRemoved value: -40
- Changed
get_supply_pressure16 fields changed- removed
Input schema / properties / code / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / code / defaultRemoved value: -null - added
Input schema / properties / code / typeAdded value: +"string" - removed
Input schema / properties / codes / anyOfRemoved value: -[ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } -] - removed
Input schema / properties / codes / defaultRemoved value: -null - added
Input schema / properties / codes / itemsAdded value: +{ + "type": "string" +} - added
Input schema / properties / codes / typeAdded value: +"array" - removed
Input schema / properties / days / defaultRemoved value: -30 - removed
Input schema / properties / kind / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / kind / defaultRemoved value: -null - added
Input schema / properties / kind / typeAdded value: +"string" - removed
Input schema / properties / kinds / anyOfRemoved value: -[ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } -] - removed
Input schema / properties / kinds / defaultRemoved value: -null - added
Input schema / properties / kinds / itemsAdded value: +{ + "type": "string" +} - added
Input schema / properties / kinds / typeAdded value: +"array" - removed
Input schema / properties / source / defaultRemoved value: -"auto"
- Changed
get_theme_stocks3 fields changed- removed
Input schema / properties / count / defaultRemoved value: -30 - removed
Input schema / properties / include_reason / defaultRemoved value: -true - added
Input schema / properties / pageAdded value: +{ + "title": "Page", + "type": "integer" +}
- Changed
get_us_chart4 fields changed- removed
Input schema / properties / interval / defaultRemoved value: -"1d" - removed
Input schema / properties / limit / defaultRemoved value: -500 - removed
Input schema / properties / period / defaultRemoved value: -"3mo" - removed
Input schema / properties / prepost / defaultRemoved value: -false
- Changed
get_us_dividends1 field changed- removed
Input schema / properties / limit / defaultRemoved value: -12
- Changed
get_us_event_reaction2 fields changed- removed
Input schema / properties / after / defaultRemoved value: -5 - removed
Input schema / properties / session / defaultRemoved value: -"auto"
- Changed
get_us_filing_detail9 fields changed- removed
Input schema / properties / analyze / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / analyze / defaultRemoved value: -null - added
Input schema / properties / analyze / typeAdded value: +"string" - removed
Input schema / properties / document / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / document / defaultRemoved value: -null - added
Input schema / properties / document / typeAdded value: +"string" - removed
Input schema / properties / find / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / find / defaultRemoved value: -null - added
Input schema / properties / find / typeAdded value: +"string"
- Changed
get_us_filings9 fields changed- removed
Input schema / properties / forms / anyOfRemoved value: -[ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } -] - removed
Input schema / properties / forms / defaultRemoved value: -null - added
Input schema / properties / forms / itemsAdded value: +{ + "type": "string" +} - added
Input schema / properties / forms / typeAdded value: +"array" - removed
Input schema / properties / limit / defaultRemoved value: -15 - removed
Input schema / properties / offset / defaultRemoved value: -0 - removed
Input schema / properties / page / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / page / defaultRemoved value: -null - added
Input schema / properties / page / typeAdded value: +"string"
- Changed
get_us_financial_statement2 fields changed- removed
Input schema / properties / period / defaultRemoved value: -"annual" - removed
Input schema / properties / statement_type / defaultRemoved value: -"income"
- Changed
get_us_multi_diagnosis4 fields changed- removed
Input schema / properties / include / anyOfRemoved value: -[ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } -] - removed
Input schema / properties / include / defaultRemoved value: -null - added
Input schema / properties / include / itemsAdded value: +{ + "type": "string" +} - added
Input schema / properties / include / typeAdded value: +"array"
- Changed
get_us_news2 fields changed- removed
Input schema / properties / direct_only / defaultRemoved value: -false - removed
Input schema / properties / limit / defaultRemoved value: -10
- Changed
get_us_options4 fields changed- removed
Input schema / properties / expiration / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / expiration / defaultRemoved value: -null - added
Input schema / properties / expiration / typeAdded value: +"string" - removed
Input schema / properties / strikes_around_spot / defaultRemoved value: -10
- Changed
get_us_screener3 fields changed- removed
Input schema / properties / common_stock_only / defaultRemoved value: -false - removed
Input schema / properties / count / defaultRemoved value: -20 - removed
Input schema / properties / preset / defaultRemoved value: -"day_gainers"
- Changed
get_us_sector1 field changed- removed
Input schema / properties / top_n / defaultRemoved value: -20
- Changed
get_volume_ranking3 fields changed- removed
Input schema / properties / count / defaultRemoved value: -50 - removed
Input schema / properties / market / defaultRemoved value: -"ALL" - removed
Input schema / properties / sort_by / defaultRemoved value: -"volume"
- Changed
list_themes1 field changed- removed
Input schema / properties / page / defaultRemoved value: -1
- Changed
query_excel7 fields changed- removed
Input schema / properties / descending / defaultRemoved value: -true - added
Input schema / properties / filters / additionalPropertiesAdded value: +true - removed
Input schema / properties / filters / anyOfRemoved value: -[ - { - "additionalProperties": true, - "type": "object" - }, - { - "type": "null" - } -] - removed
Input schema / properties / filters / defaultRemoved value: -null - added
Input schema / properties / filters / typeAdded value: +"object" - removed
Input schema / properties / limit / defaultRemoved value: -30 - removed
Input schema / properties / sort_by / defaultRemoved value: -""
- Changed
save_analysis_to_excel18 fields changed- removed
Input schema / properties / detail_codes / anyOfRemoved value: -[ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } -] - removed
Input schema / properties / detail_codes / defaultRemoved value: -null - added
Input schema / properties / detail_codes / itemsAdded value: +{ + "type": "string" +} - added
Input schema / properties / detail_codes / typeAdded value: +"array" - removed
Input schema / properties / detail_days / defaultRemoved value: -60 - added
Input schema / properties / extras / additionalPropertiesAdded value: +true - removed
Input schema / properties / extras / anyOfRemoved value: -[ - { - "additionalProperties": true, - "type": "object" - }, - { - "type": "null" - } -] - removed
Input schema / properties / extras / defaultRemoved value: -null - added
Input schema / properties / extras / typeAdded value: +"object" - removed
Input schema / properties / filename / defaultRemoved value: -"" - removed
Input schema / properties / notes / anyOfRemoved value: -[ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } -] - removed
Input schema / properties / notes / defaultRemoved value: -null - added
Input schema / properties / notes / itemsAdded value: +{ + "type": "string" +} - added
Input schema / properties / notes / typeAdded value: +"array" - removed
Input schema / properties / sources / anyOfRemoved value: -[ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } -] - removed
Input schema / properties / sources / defaultRemoved value: -null - added
Input schema / properties / sources / itemsAdded value: +{ + "type": "string" +} - added
Input schema / properties / sources / typeAdded value: +"array"
- Changed
scan_to_excel7 fields changed- removed
Input schema / properties / days / defaultRemoved value: -260 - removed
Input schema / properties / fields / anyOfRemoved value: -[ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } -] - removed
Input schema / properties / fields / defaultRemoved value: -null - added
Input schema / properties / fields / itemsAdded value: +{ + "type": "string" +} - added
Input schema / properties / fields / typeAdded value: +"array" - removed
Input schema / properties / filename / defaultRemoved value: -"" - removed
Input schema / properties / include_financial / defaultRemoved value: -true
- Changed
screen_by_flow6 fields changed- removed
Input schema / properties / exclude_etf / defaultRemoved value: -true - removed
Input schema / properties / foreign_days / defaultRemoved value: -2 - removed
Input schema / properties / inst_days / defaultRemoved value: -2 - removed
Input schema / properties / market / defaultRemoved value: -"ALL" - removed
Input schema / properties / sort_by / defaultRemoved value: -"trade_value" - removed
Input schema / properties / top_n / defaultRemoved value: -100
- Changed
watchlist2 fields changed- removed
Input schema / properties / action / defaultRemoved value: -"list" - removed
Input schema / properties / query / defaultRemoved value: -""
3 tool updates
v1.1.0- Added
get_investor_deposit - Added
get_ipo_schedule - Changed
get_reports3 fields changed- added
Input schema / properties / code / defaultAdded value: +"" - added
Input schema / properties / kindAdded value: +{ + "default": "", + "title": "Kind", + "type": "string" +} - removed
Input schema / requiredRemoved value: -[ - "code" -]
17 tool updates
v1.0.1- Added
get_detailed_investor_flow - Added
get_event_reactions - Added
get_financial_soundness - Changed
get_flow_batch1 field changed- added
Input schema / properties / summaryAdded value: +{ + "default": false, + "title": "Summary", + "type": "boolean" +}
- Added
get_intraday_chart - Added
get_intraday_indicators - Added
get_sector_valuation - Added
get_supply_pressure - Added
get_us_event_reaction - Added
get_us_filing_detail - Changed
get_us_filings3 fields changed- added
Input schema / properties / formsAdded value: +{ + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Forms" +} - added
Input schema / properties / offsetAdded value: +{ + "default": 0, + "title": "Offset", + "type": "integer" +} - added
Input schema / properties / pageAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Page" +}
- Added
get_us_liquidity - Added
get_us_multi_diagnosis - Changed
get_us_news1 field changed- added
Input schema / properties / direct_onlyAdded value: +{ + "default": false, + "title": "Direct Only", + "type": "boolean" +}
- Changed
get_us_screener1 field changed- added
Input schema / properties / common_stock_onlyAdded value: +{ + "default": false, + "title": "Common Stock Only", + "type": "boolean" +}
- Added
save_analysis_to_excel - Changed
scan_to_excel1 field changed- added
Input schema / properties / fieldsAdded value: +{ + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Fields" +}
3 tool updates
v0.8.0- Added
get_financial_batch - Added
get_report_content - Added
watchlist
2 tool updates
v0.6.5- Changed
get_etf_list1 field changed- added
Input schema / properties / keywordAdded value: +{ + "default": "", + "title": "Keyword", + "type": "string" +}
- Added
stocklens_status
4 tool updates
v0.5.0- Added
get_event_reaction - Added
get_flow_batch - Added
get_market_clock - Added
screen_by_flow
48 tool updates
v0.4.0- First observed
export_to_excel - First observed
export_us_to_excel - First observed
get_change_ranking - First observed
get_chart - First observed
get_consensus - First observed
get_disclosure - First observed
get_etf_info - First observed
get_etf_list - First observed
get_financial - First observed
get_flow - First observed
get_index - First observed
get_indicators - First observed
get_indicators_bulk - First observed
get_market_cap_ranking - First observed
get_metrics_summary - First observed
get_multi_chart_stats - First observed
get_multi_stocks - First observed
get_price - First observed
get_reports - First observed
get_sector_stocks - First observed
get_theme_stocks - First observed
get_us_analyst - First observed
get_us_chart - First observed
get_us_dividends - First observed
get_us_earnings - First observed
get_us_etf_info - First observed
get_us_filings - First observed
get_us_financial_statement - First observed
get_us_financials - First observed
get_us_holders - First observed
get_us_info - First observed
get_us_insider - First observed
get_us_market - First observed
get_us_multi_price - First observed
get_us_news - First observed
get_us_options - First observed
get_us_price - First observed
get_us_screener - First observed
get_us_search - First observed
get_us_sector - First observed
get_us_short - First observed
get_volume_ranking - First observed
list_sectors - First observed
list_themes - First observed
query_excel - First observed
scan_to_excel - First observed
search - First observed
search_stock
TDQS
Scored across 72 tools
There are many overlapping tools for price/chart/financial queries across KR and US markets, with separate 'single' vs 'batch' variants that could cause misselection. However, the descriptions are very detailed about when to use which, and many have clear cross-references.
The naming follows a loose get_/list_/search_/export_ pattern with snake_case, which is consistent. However, there are some inconsistencies like 'search' vs 'search_stock' aliases, 'export_to_excel' vs 'export_us_to_excel', and mixed use of 'get_us_' vs 'get_' prefixes without a strict market distinction for all tools.
72 tools is very large and feels heavy. The server covers a broad domain (KR + US stocks, ETFs, indices, flows, financials, charts, indicators, Excel export, etc.), which justifies a higher count, but 72 still exceeds the 25+ 'too many' threshold and may be unwieldy.
The tool surface covers a comprehensive set of stock analysis operations: price, chart, financials, flow, rankings, indicators, news, disclosures, reports, Excel export, US-specific tools, and even IPO/deposit data. There are minor gaps like lack of a dedicated update/delete for watchlist (though watchlist has add/remove), but no obvious dead ends.
Maintenance
Related MCP Connectors
Market analyst tools + AI agent: crypto, US equities, options, Korea, fundamentals, macro, backtests
Korean market data for AI agents: K-beauty/K-food products, Naver trends, stocks, real estate.
Real SEC, 13F, insider, congress & macro data your AI agent can cite. Hosted MCP, 24 tools.
US stock market data for AI agents: SEC filings, financials, insider trades, 13F, options, macro.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceProvides AI assistants with access to comprehensive financial data including real-time stock quotes, company fundamentals, financial statements, market analysis, SEC filings, and economic indicators through 253+ tools across 24 categories.315 npmApache 2.0
- AlicenseNot gradedqualityCmaintenanceProvides access to Korean financial news and market data (stocks and crypto) with AI-ready mathematical scoring to prevent hallucinations. Includes tools for news retrieval, chart analysis, financial statements, tag matching, and trend analysis.26 npm5MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to query real-time and historical Korean stock market data from KRX (Korea Exchange) including indices, stocks, ETFs, bonds, derivatives, and commodities via MCP tools and resources.26 npm1MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI-powered analysis of Korean stock market data and corporate disclosures using official DART and KRX APIs.167 npmISC