MCP server for Toss Securities (토스증권) investment operations, providing market data queries and trading tools with safety guardrails
Server has 10 tools with consistent naming (verb_noun pattern: getPrices, getOrderbook, placeOrder, etc.) and descriptions present for all tools and parameters. However, descriptions are often terse (10-50 chars) and lack actionable context for LLM selection. Input schemas are visible and typed, but output schemas are undocumented, tools return String (JSON serialized) with no declared structure. Error handling is minimal; no recovery guidance or categorization. Trading tools support dry-run (good), but no explicit permission gates or audit trail declarations. Parameter constraints (e.g., 'maximum 200' symbols, 'KRW or USD') are stated in descriptions but not formalized as enums or JSON Schema constraints.
접수된 주문을 취소한다. 기본은 미리보기(dry-run)이며, 실제로 취소하려면 execute=true 가 필요하고 서버에서 실매매가 켜져 있어야 한다.
매수에 쓸 수 있는 금액을 조회한다. 통화별로 따로 관리된다.
토스증권 종목의 캔들(시가·고가·저가·종가) 차트를 조회한다.
계좌의 보유 주식과 평가 손익을 조회한다.
아직 체결되지 않은 주문 목록을 조회한다.
토스증권 종목의 호가(매수·매도 잔량)를 조회한다. symbol 은 단일 종목 코드.
토스증권 종목의 현재가를 조회한다. symbols 는 종목 코드이며 콤마로 여러 개(최대 200) 넣을 수 있다. 예: 삼성전자 005930, SK하이닉스 000660.
Output schemas undocumented. All tools return String (JSON serialized) with no declared structure. LLMs cannot plan downstream calls or extract fields reliably.
Descriptions too terse (10 - 55 chars). Lack WHEN to use, prerequisites, and dependencies. E.g., 'getOrderbook' is '호가(매수·매도 잔량)를 조회한다', does not explain when to call vs getPrices or getTrades.
Parameter constraints stated in descriptions but not formalized. E.g., 'symbols: 콤마 구분, 최대 200개' should be a maxLength constraint in JSON Schema. 'currency: KRW 또는 USD' should be an enum.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 56 | 2026-07-28+ | v2 |
토스증권 종목의 기본 정보(이름·시장·종류·상장일 등)를 조회한다. symbols 는 콤마로 여러 개(최대 200).
토스증권 종목의 최근 체결 내역을 조회한다. symbol 은 단일 종목 코드.
주식 주문을 낸다. 기본은 미리보기(dry-run)이며, 실제로 전송하려면 execute=true 가 필요하고 서버에서 실매매가 켜져 있어야 한다. 응답의 status 로 DRY_RUN·PLACED·REJECTED·UNKNOWN 을 구분한다.
No error handling guidance. Tools return String with no documented error structure. If placeOrder fails, LLM cannot determine if it is retryable, user-fixable, or fatal.
No permission gates or scope declarations. Trading tools (placeOrder, cancelOrder) should declare required permissions (e.g., 'write:trading', 'read:account') for audit and least-privilege configuration.