Skip to main content
Glama
scjang01

tossinvest-mcp

by scjang01

tossinvest-mcp

MCP Badge

프로그램 개요

tossinvest-mcp는 토스증권 Open API(현재가 조회, 주문, 잔고 조회 등)를 OpenAI 서비스, Claude Desktop, Cursor 같은 MCP 지원 앱에서 사용할 수 있게 해주는 로컬 MCP 서버입니다.

쉽게 말해, 이 프로그램을 MCP 클라이언트에 등록하면 AI에게 다음처럼 요청할 수 있습니다.

삼성전자 현재가를 조회해줘.
내 토스증권 보유 주식을 보여줘.
대기 중인 주문 목록을 보여줘.

이 프로그램은 사용자의 컴퓨터에서만 실행됩니다.

Related MCP server: tossinvest-openapi-mcp

가장 중요한 주의사항

토스증권 Open API에는 샌드박스나 모의투자 환경이 없습니다.

거래 기능을 켜면 실제 계좌에 실제 주문을 생성, 정정, 취소할 수 있습니다. 처음 사용할 때는 반드시 거래 기능을 켜지 말고 조회 기능부터 확인하세요.

기본 설정에서는 주문 생성, 정정, 취소 도구가 등록되지 않습니다.

프로그램으로 할 수 있는 기능 및 특징

거래 기능을 켜지 않아도 아래 기능을 사용할 수 있습니다.

  • 국내/미국 주식 현재가 조회

  • 호가 조회

  • 최근 체결 내역 조회

  • 캔들 차트 조회

  • 상한가/하한가 조회

  • 종목 기본 정보 조회

  • 매수 유의사항 조회

  • 환율 조회

  • 국내/미국 장 운영 시간 조회

  • 계좌 목록 조회

  • 보유 주식 조회

  • 매수 가능 금액 조회

  • 판매 가능 수량 조회

  • 매매 수수료 조회

  • 주문 목록 조회

  • 주문 상세 조회

거래 기능을 켠 경우 사용할 수 있는 도구:

  • toss_create_order: 주문 생성

  • toss_modify_order: 주문 정정

  • toss_cancel_order: 주문 취소

특징:

  • npx tossinvest-mcp로 실행되므로 별도 프로그램 설치 과정이 짧습니다.

  • API Key와 Secret Key는 환경변수로 전달합니다.

  • OAuth 토큰은 내부에서 자동 발급하고, 만료 60초 전에 자동 갱신합니다.

  • 계좌가 필요한 기능은 기본적으로 accountSeq 1번 계좌를 사용합니다.

  • 계좌가 여러 개이거나 다른 계좌를 쓰고 싶으면 TOSSINVEST_ACCOUNT 값으로 변경할 수 있습니다.

  • 주문 생성, 정정, 취소 기능은 기본적으로 꺼져 있습니다.

  • 주문 기능을 켜도 기본값에서는 confirmOrderAction: true 확인값이 없으면 주문 API를 호출하지 않습니다.

  • 주문 한도, 매도/시장가 차단, 종목 허용목록, 일일 한도 같은 가드레일을 환경변수로 켤 수 있고, 모든 검사는 토스증권 주문 API 호출 전에 서버에서 강제됩니다. (아래 거래 가드레일 참고)

중요: toss_modify_order는 기존 주문을 그 자리에서 수정하는 단순 PATCH가 아닙니다. 토스증권 API는 원주문을 대체하는 방식으로 처리하며, 정정 후 새 orderId를 반환합니다. 이후 주문 상세 조회, 재정정, 취소에는 새로 받은 orderId를 사용하세요.

설치방법

아래 순서대로 진행하면 됩니다.

1. Node.js 설치 확인

터미널 또는 PowerShell을 열고 아래 명령어를 입력합니다.

node -v

v20 이상이 나오면 다음 단계로 넘어가면 됩니다.

Node.js가 없거나 버전이 낮다면 https://nodejs.org 에서 LTS 버전을 설치한 뒤 터미널을 새로 열어 다시 확인하세요.

2. 토스증권 Open API Key 준비

토스증권 WTS에 로그인한 뒤 Open API 설정 화면으로 이동합니다.

그 화면에서 아래 값을 발급받아 둡니다.

  • API Key

  • Secret Key

이 두 값은 MCP 설정에 넣어야 합니다. 다른 사람에게 공유하지 마세요.

3. 허용 IP 등록

토스증권 Open API는 허용된 IP에서만 호출할 수 있습니다. 이 설정이 빠져 있으면 허용되지 않은 IP 주소입니다. 같은 오류가 발생합니다.

먼저 현재 컴퓨터의 공인 IP를 확인합니다. 아래 명령어를 사용하세요.

PowerShell (Windows):

(Invoke-WebRequest -UseBasicParsing https://api.ipify.org).Content

macOS 또는 Linux 터미널:

curl https://api.ipify.org

나온 IP 주소를 토스증권 WTS의 Open API 설정 화면에서 허용 IP 목록에 추가합니다.

대략적인 흐름:

  1. 토스증권 WTS에 로그인합니다.

  2. 설정 - Open API 메뉴로 이동합니다.

  3. 허용 IP 관리 영역을 찾습니다.

  4. 위에서 확인한 공인 IP를 추가합니다.

4. MCP 클라이언트에 등록

MCP 클라이언트의 설정 파일 또는 MCP Servers 설정 화면에 아래 내용을 추가합니다.

{
  "mcpServers": {
    "tossinvest": {
      "command": "npx",
      "args": ["tossinvest-mcp"],
      "env": {
        "TOSSINVEST_API_KEY": "발급받은-API-Key",
        "TOSSINVEST_SECRET_KEY": "발급받은-Secret-Key"
      }
    }
  }
}

설정 후 MCP 클라이언트를 완전히 종료했다가 다시 실행하세요.

처음 실행할 때 npm이 tossinvest-mcp 패키지를 자동으로 내려받습니다.

5. 계좌번호 확인

처음에는 TOSSINVEST_ACCOUNT를 넣지 않아도 됩니다. 이 프로그램은 기본값으로 accountSeq 1번 계좌를 사용합니다.

다만 계좌가 여러 개이거나 1번 계좌가 맞는지 확인하고 싶다면 계좌 목록을 조회하세요.

MCP 클라이언트에서 다음처럼 요청합니다.

토스증권 계좌 목록을 조회해줘.

응답에서 accountSeq 값을 찾습니다. 다른 계좌를 기본 계좌로 쓰고 싶다면 설정에 아래 값을 추가하거나 바꾸면 됩니다.

"TOSSINVEST_ACCOUNT": "1"

예를 들어 accountSeq2인 계좌를 쓰고 싶다면 이렇게 설정합니다.

"TOSSINVEST_ACCOUNT": "2"

계좌번호를 명시한 전체 예시는 다음과 같습니다.

{
  "mcpServers": {
    "tossinvest": {
      "command": "npx",
      "args": ["tossinvest-mcp"],
      "env": {
        "TOSSINVEST_API_KEY": "발급받은-API-Key",
        "TOSSINVEST_SECRET_KEY": "발급받은-Secret-Key",
        "TOSSINVEST_ACCOUNT": "1"
      }
    }
  }
}

TOSSINVEST_ACCOUNT를 설정하지 않으면 기본값 1을 사용합니다. 설정하면 보유 주식, 주문 목록, 매수 가능 금액처럼 계좌가 필요한 기능에서 해당 계좌를 기본으로 사용합니다.

6. 조회 기능 테스트

MCP 클라이언트에서 아래처럼 요청해 봅니다.

삼성전자 현재가를 조회해줘.
내 토스증권 보유 주식을 보여줘.
AAPL 최근 체결 내역 10개를 조회해줘.
대기 중인 주문 목록을 보여줘.

거래 기능 켜기

다시 한 번 확인하세요. 토스증권 Open API에는 샌드박스가 없습니다. 거래 기능을 켜면 실제 주문이 나갈 수 있습니다.

거래 기능을 사용하려면 MCP 설정의 env에 아래 값을 추가합니다.

"TOSSINVEST_ENABLE_TRADING": "true"

전체 예시:

{
  "mcpServers": {
    "tossinvest": {
      "command": "npx",
      "args": ["tossinvest-mcp"],
      "env": {
        "TOSSINVEST_API_KEY": "발급받은-API-Key",
        "TOSSINVEST_SECRET_KEY": "발급받은-Secret-Key",
        "TOSSINVEST_ACCOUNT": "1",
        "TOSSINVEST_ENABLE_TRADING": "true"
      }
    }
  }
}

거래 기능을 켜도 주문 도구는 추가 확인값이 없으면 실행되지 않습니다. 주문 생성, 정정, 취소 도구는 요청 입력에 confirmOrderAction: true가 있어야 토스증권 API를 호출합니다.

confirmOrderAction을 true로 넣는 방법

confirmOrderAction은 MCP 설정에 넣는 환경변수가 아닙니다. 주문 생성, 정정, 취소 도구를 호출할 때마다 들어가는 주문 요청 입력값입니다.

예를 들어 주문 생성 도구의 실제 입력은 이런 형태입니다.

{
  "confirmOrderAction": true,
  "symbol": "005930",
  "side": "BUY",
  "orderType": "LIMIT",
  "quantity": "1",
  "price": "70000"
}

MCP 클라이언트에서 자연어로 요청할 때는 아래처럼 명확히 말하는 것이 좋습니다.

토스증권에서 삼성전자 1주를 70000원 지정가로 매수 주문해줘.
실제 주문 실행을 확인하며 confirmOrderAction 값을 true로 넣어줘.

정정이나 취소도 마찬가지입니다.

이 주문을 71000원으로 정정해줘.
실제 주문 정정을 확인하며 confirmOrderAction 값을 true로 넣어줘.
이 주문을 취소해줘.
실제 주문 취소를 확인하며 confirmOrderAction 값을 true로 넣어줘.

클라이언트에 따라 주문 도구 실행 전에 승인 버튼이나 확인 창을 보여줄 수 있습니다. 그 경우에도 confirmOrderAction: true가 주문 tool 입력에 포함되어야 합니다.

확인값 없이 주문 실행하기 (자동화)

참고: 이전 버전의 TOSSINVEST_YOLO_TRADING 옵션은 제거되었습니다. 확인값을 끄더라도 나머지 가드레일은 그대로 적용됩니다.

자동화 환경처럼 매번 confirmOrderAction: true를 넣기 어렵다면 확인 요구만 끌 수 있습니다.

"TOSSINVEST_REQUIRE_ORDER_CONFIRMATION": "false"

이 값을 끄면 confirmOrderAction 없이도 주문을 보낼 수 있지만, 주문 한도·매도/시장가 차단·종목 허용목록·일일 한도 등 켜져 있는 다른 가드레일은 계속 적용됩니다. 확인값을 끄기 전에 금액/일일 한도를 함께 설정해 두는 것을 강력히 권장합니다.

거래 가드레일

가드레일은 "AI가 실수로, 또는 너무 크게/너무 자주 주문을 넣는 것"을 막아 주는 안전장치입니다. 모든 검사는 주문이 토스증권 서버에 도달하기 전에 이 프로그램 안에서 이루어지므로, 한도를 넘는 주문은 애초에 토스로 전송되지 않습니다.

모든 옵션은 MCP 설정의 env에 한 줄씩 추가해 켜며, 켜지 않은 옵션은 적용되지 않습니다(기본값은 보수적입니다). 값은 모두 문자열로 적습니다. 예: "TOSSINVEST_MAX_ORDER_AMOUNT_KRW": "500000".

한눈에 보기 (요약 표)

이름

기본값

한 줄 설명

TOSSINVEST_REQUIRE_ORDER_CONFIRMATION

true

주문마다 confirmOrderAction: true 확인값을 요구

TOSSINVEST_MAX_ORDER_AMOUNT_KRW

없음

1회 주문 금액 상한(원)

TOSSINVEST_MAX_ORDER_AMOUNT_USD

없음

1회 주문 금액 상한(달러)

TOSSINVEST_DAILY_MAX_ORDER_AMOUNT_KRW

없음

하루 누적 주문 금액 상한(원)

TOSSINVEST_DAILY_MAX_ORDER_AMOUNT_USD

없음

하루 누적 주문 금액 상한(달러)

TOSSINVEST_DAILY_MAX_ORDER_COUNT

없음

하루 주문 건수 상한

TOSSINVEST_ALLOWED_SYMBOLS

없음

거래 가능 종목만 지정(화이트리스트)

TOSSINVEST_ALLOW_SELL_ORDERS

false

매도 주문 허용 여부

TOSSINVEST_ALLOW_MARKET_ORDERS

false

시장가 주문 허용 여부

TOSSINVEST_MARKET_ORDER_BUFFER_PCT

5

시장가 한도 계산용 여유 버퍼(%)

TOSSINVEST_LOCK_ACCOUNT

true

지정한 기본 계좌로만 주문하도록 잠금

TOSSINVEST_GUARD_STATE_PATH

OS 데이터 폴더

하루 한도 집계를 저장하는 파일 경로

옵션별 상세 설명

TOSSINVEST_REQUIRE_ORDER_CONFIRMATION (기본: true)

주문 생성·정정·취소를 하려면 요청에 confirmOrderAction: true가 들어 있어야 실제로 토스에 전송됩니다. AI가 대화 중에 실수로 주문을 넣는 것을 막는 가장 기본적인 안전장치입니다. 자동화처럼 매번 확인값을 넣기 어려우면 "false"로 끌 수 있는데, 끄더라도 아래의 금액·건수·종목·매도/시장가 한도는 그대로 적용됩니다. 끄기 전에는 금액·일일 한도를 함께 설정하는 것을 강력히 권장합니다.

TOSSINVEST_MAX_ORDER_AMOUNT_KRW (기본: 없음)

원화 주문 한 건의 금액 상한입니다. 주문 추정 금액(지정가는 수량 × 가격, 시장가는 호가 + 버퍼)이 이 값을 넘으면 차단합니다. 예: "500000" → 한 번에 50만 원을 넘는 원화 주문을 막습니다. 설정하지 않으면 1회 금액 제한이 없습니다.

TOSSINVEST_MAX_ORDER_AMOUNT_USD (기본: 없음)

미국(달러) 주식 주문 한 건의 금액 상한(달러)입니다. 예: "1000" → 1회 1,000달러 초과 주문 차단. 원↔달러 환산은 하지 않습니다. 원화 한도는 원화 주문에만, 달러 한도는 달러 주문에만 적용되므로, 두 시장을 모두 거래한다면 KRW·USD 한도를 모두 설정하세요.

TOSSINVEST_DAILY_MAX_ORDER_AMOUNT_KRW (기본: 없음)

하루 동안(한국 시간 기준, 자정에 초기화) 이 프로그램으로 넣은 원화 주문 금액의 누적 상한입니다. 예: "2000000" → 하루 합계 200만 원까지만 주문. 정정 주문도 누적에 반영되고, 취소는 반영되지 않습니다(아래 "하루 한도 계산 방식" 참고).

TOSSINVEST_DAILY_MAX_ORDER_AMOUNT_USD (기본: 없음)

위 항목의 달러 버전입니다. 하루 누적 달러 주문 금액 상한.

TOSSINVEST_DAILY_MAX_ORDER_COUNT (기본: 없음)

하루 주문 건수 상한입니다. 예: "10" → 하루 10건까지만. 정정은 새 주문 1건으로 셉니다. 취소는 건수에 포함하지 않습니다. 과도하게 잦은 매매를 막고 싶을 때 유용합니다.

TOSSINVEST_ALLOWED_SYMBOLS (기본: 없음)

거래를 허용할 종목만 콤마로 나열합니다. 목록에 없는 종목의 주문은 차단됩니다(생성·정정 모두). 예: "005930,AAPL,VOO"(삼성전자, 애플, VOO). 국내는 6자리 숫자 코드, 미국은 티커를 씁니다. 설정하지 않으면 모든 종목을 허용합니다. "정해둔 종목만 거래"하고 싶을 때 사용하세요.

TOSSINVEST_ALLOW_SELL_ORDERS (기본: false)

매도 주문 허용 여부입니다. 기본값은 매수만 허용이며, 매도 주문을 내려면 "true"로 켜야 합니다. 생성뿐 아니라 정정에도 적용됩니다(매도 주문 정정은 매도가 허용돼 있어야 가능). 이미 낸 주문의 취소는 항상 가능합니다.

TOSSINVEST_ALLOW_MARKET_ORDERS (기본: false)

시장가(MARKET) 주문 허용 여부입니다. 기본값은 시장가 차단(가격을 직접 정하는 지정가 LIMIT만 허용)입니다. 시장가는 체결 가격이 예상과 다르게 불리해질 수 있어 보수적으로 꺼 둡니다. 시장가가 필요하면 "true"로 켜세요. 이 차단은 정정에도 적용되어, 시장가가 꺼져 있으면 지정가 주문을 정정으로 시장가로 바꿀 수 없습니다.

TOSSINVEST_MARKET_ORDER_BUFFER_PCT (기본: 5)

시장가 매수의 예상 금액을 계산할 때 현재 호가에 더하는 여유 버퍼(%)입니다. 금액 한도를 보수적으로(조금 더 크게 잡아) 검사하기 위한 값입니다. 예: 5면 호가보다 5% 높게 잡아 한도를 검사합니다. 시장가를 켰을 때만 의미가 있습니다.

TOSSINVEST_LOCK_ACCOUNT (기본: true)

주문 요청에 들어온 accountSeq가 기본 계좌(TOSSINVEST_ACCOUNT)와 다르면 차단합니다. 실수로 다른 계좌에 주문이 나가는 것을 막습니다. 여러 계좌를 오가며 주문해야 한다면 "false"로 끄세요.

TOSSINVEST_GUARD_STATE_PATH (기본: OS 데이터 폴더)

하루 한도 집계를 저장하는 파일의 경로입니다. 보통 신경 쓸 필요가 없습니다(미설정 시 OS 데이터 폴더의 tossinvest-mcp/guard-state.json). 같은 컴퓨터에서 이 MCP를 여러 개 동시에 띄운다면 인스턴스마다 다른 경로로 지정하세요(아래 "여러 인스턴스 사용 시" 참고).

처음 거래를 켤 때 권장 설정

거래를 처음 켤 때는 한도를 작게 잡아 두는 것을 권장합니다. 아래는 "국내 주식만, 정해둔 종목만, 지정가만, 1회·하루 금액과 건수를 제한"한 보수적인 예시입니다.

{
  "mcpServers": {
    "tossinvest": {
      "command": "npx",
      "args": ["tossinvest-mcp"],
      "env": {
        "TOSSINVEST_API_KEY": "발급받은-API-Key",
        "TOSSINVEST_SECRET_KEY": "발급받은-Secret-Key",
        "TOSSINVEST_ACCOUNT": "1",
        "TOSSINVEST_ENABLE_TRADING": "true",
        "TOSSINVEST_ALLOWED_SYMBOLS": "005930",
        "TOSSINVEST_MAX_ORDER_AMOUNT_KRW": "300000",
        "TOSSINVEST_DAILY_MAX_ORDER_AMOUNT_KRW": "1000000",
        "TOSSINVEST_DAILY_MAX_ORDER_COUNT": "5"
      }
    }
  }
}

이 예시는 매도와 시장가가 기본값(false)으로 꺼져 있어 삼성전자 지정가 매수만, 1회 30만 원·하루 100만 원·하루 5건까지만 허용합니다. 익숙해진 뒤 종목과 한도를 조금씩 넓혀 가세요.

참고 사항:

  • 통화별 한도: KRW 한도만 설정하면 USD 주문에는 단일/일일 금액 한도가 적용되지 않습니다(그 반대도 마찬가지). 두 통화를 모두 거래한다면 양쪽 한도를 설정하세요.

  • 일일 한도 범위: 이 MCP를 통해 성공한 주문만 가드 상태 파일에 기록·집계합니다. 토스앱 등 계좌의 다른 활동은 포함하지 않습니다(단일 세션·단일 MCP 전제).

  • 여러 인스턴스 사용 시: 일일 한도 직렬화는 단일 프로세스 안에서만 보장됩니다. 같은 OS 사용자로 이 MCP를 여러 개 동시에 실행하면 기본 상태 파일 경로가 같아 집계가 서로 덮어써져 한도가 어긋날 수 있습니다. 인스턴스마다 TOSSINVEST_GUARD_STATE_PATH를 서로 다른 경로로 분리해 지정하세요(인스턴스별 독립 한도). 한 계좌의 한도를 여러 인스턴스가 공유해야 한다면 인스턴스를 하나로 합치는 것을 권장합니다.

  • 하루 한도 계산 방식: 생성과 정정 주문이 당일 건수/금액에 집계됩니다(정정은 새 주문 1건으로 카운트하고, 대체된 원주문은 체결된 금액만 반영). 취소는 한도에 포함되지 않으며 항상 허용됩니다(리스크 축소 경로를 막지 않기 위함). 하루 금액 한도가 켜져 있으면, 한도 검사 시 당일 미체결 주문을 토스 API로 다시 조회해 체결금액 + 미체결 잔량으로 매번 재계산하고, 체결·취소·거부·정정완료된 주문은 실제 체결금액만 확정 반영합니다. 미체결 주문 조회에 실패하면 검증 불가로 간주해 신규 주문을 차단합니다. (건수 한도만 켠 경우에는 이 재조회 없이 당일 기록 건수만으로 판단합니다.)

  • 추정 불가 시 차단: 가격·호가·통화를 확정할 수 없거나 상태 파일을 읽을 수 없으면 안전을 위해 주문을 차단합니다. 추측으로 주문을 진행하지 않습니다.

  • 응답 지연 보호: 토스 API 요청은 20초 안에 응답이 없으면 자동으로 중단되어, 네트워크 문제로 도구가 무한정 멈추지 않습니다.

  • clientOrderId: 입력에 없으면 tossinvest-mcp-YYYYMMDD- 접두로 자동 생성합니다. 토스는 이 값을 10분간 중복 주문 방지 키로 사용합니다.

환경변수 설명

이름

필수

설명

TOSSINVEST_API_KEY

토스증권 Open API 화면의 API Key

TOSSINVEST_SECRET_KEY

토스증권 Open API 화면의 Secret Key

TOSSINVEST_ACCOUNT

아니오

기본으로 사용할 토스증권 accountSeq. 미설정 시 1

TOSSINVEST_BASE_URL

아니오

기본값은 https://openapi.tossinvest.com

TOSSINVEST_ENABLE_TRADING

아니오

true로 설정해야 주문 생성, 정정, 취소 도구가 등록됩니다

거래 가드레일 관련 환경변수는 위의 거래 가드레일 표를 참고하세요.

문제 해결

node 명령을 찾을 수 없다고 나옵니다

Node.js가 설치되어 있지 않거나 PATH에 등록되지 않은 상태입니다. https://nodejs.org 에서 LTS 버전을 설치한 뒤 터미널을 새로 열고 다시 시도하세요.

허용되지 않은 IP 주소입니다. 오류가 나옵니다

현재 컴퓨터의 공인 IP가 토스증권 Open API 허용 IP 목록에 등록되지 않은 상태입니다.

이 문서의 설치방법 > 3. 허용 IP 등록 단계를 다시 확인해 현재 공인 IP를 등록하세요. 집, 회사, 카페, VPN 등 네트워크가 바뀌면 공인 IP가 바뀔 수 있습니다.

MCP 클라이언트에 도구가 보이지 않습니다

설정 JSON 문법이 올바른지 확인하고, MCP 클라이언트를 완전히 종료한 뒤 다시 실행하세요. TOSSINVEST_API_KEYTOSSINVEST_SECRET_KEY가 비어 있으면 서버가 시작되지 않습니다.

계좌 조회는 되는데 보유 주식 조회가 실패합니다

보유 주식, 주문, 매수 가능 금액 같은 계좌 관련 기능에는 accountSeq가 필요합니다. 이 프로그램은 기본값으로 1을 사용합니다. 계좌 목록 조회 결과에서 다른 accountSeq를 써야 한다면 TOSSINVEST_ACCOUNT를 그 값으로 바꾸고 다시 실행하세요.

주문 도구가 보이지 않습니다

정상입니다. 기본값으로는 주문 도구가 등록되지 않습니다. 실제 거래를 허용하려면 TOSSINVEST_ENABLE_TRADINGtrue로 설정해야 합니다.

TOSSINVEST_ENABLE_TRADINGtrue로 설정했는데도 주문이 안 됩니다

주문 도구가 보이더라도 기본 설정에서는 주문 요청마다 confirmOrderAction: true가 필요합니다.

AI에게 주문을 요청할 때 아래처럼 확인값을 넣으라고 명시하세요.

실제 주문 실행을 확인하며 confirmOrderAction 값을 true로 넣어줘.

자동화 환경처럼 매번 이 값을 넣기 어렵다면 TOSSINVEST_REQUIRE_ORDER_CONFIRMATION=false로 확인 요구만 끌 수 있습니다. 이때도 금액·일일·매도·시장가 등 켜져 있는 다른 가드레일은 계속 적용됩니다.

주문 정정 후 기존 orderId로 조회한 내용이 이상합니다

토스증권 주문 정정은 새 orderId를 반환합니다. 정정 응답의 새 orderId를 사용하세요.

"cannot reconcile open order ..." 오류로 모든 주문이 막힙니다

일일 금액 한도가 켜진 경우, 신규 주문 전에 당일 미체결 주문의 현재 상태를 토스 API로 조회해 한도를 재계산합니다. 이 조회가 실패하면 검증 불가로 간주해 안전하게 주문을 차단합니다(추측으로 진행하지 않음). 일시적인 네트워크/한도(429) 문제라면 잠시 후 다시 시도하면 해소됩니다. 가드 상태 파일에 더 이상 조회되지 않는 주문이 남아 계속 차단된다면, 거래가 없는 시간에 상태 파일(TOSSINVEST_GUARD_STATE_PATH 경로, 미설정 시 OS 데이터 폴더의 tossinvest-mcp/guard-state.json)을 백업 후 삭제하면 당일 집계가 초기화됩니다(이 MCP로 넣은 당일 주문 집계만 사라지며, 실제 주문에는 영향이 없습니다).

주문이 Order blocked: ... 메시지와 함께 막힙니다

대부분 설정한 가드레일에 걸린 의도된 차단입니다. 메시지의 키워드로 원인을 확인하세요(아래 오류 및 차단 메시지 목록 참고). 예: ... amount ... exceeds the per-order limit는 1회 금액 한도 초과, daily ... limit reached는 하루 한도 도달, ... is not in TOSSINVEST_ALLOWED_SYMBOLS는 허용목록 밖 종목입니다. 한도가 너무 빡빡하면 해당 환경변수를 조정하세요.

매도(또는 시장가) 주문이 안 됩니다

기본값에서 매도와 시장가는 꺼져 있습니다. 매도는 TOSSINVEST_ALLOW_SELL_ORDERS=true, 시장가는 TOSSINVEST_ALLOW_MARKET_ORDERS=true로 켜야 합니다. 이 차단은 정정에도 적용되어, 끈 상태에서는 정정으로도 매도/시장가 주문을 만들 수 없습니다.

하루 한도를 안 넘은 것 같은데 주문이 막힙니다

하루 한도는 이 MCP로 넣은 주문만 집계하며, 생성과 정정이 모두 포함됩니다(정정은 새 주문 1건으로 카운트). 정정을 여러 번 했다면 건수가 빠르게 늘 수 있습니다. 또한 미체결 주문은 체결금액 + 미체결 잔량으로 보수적으로 계산됩니다. 자세한 규칙은 거래 가드레일의 "하루 한도 계산 방식"을 참고하세요.

응답에 _guardStateWarning이 붙어 있습니다

_guardStateWarning이 보이면 주문 자체는 이미 성공한 것입니다. 다만 하루 한도 집계에 필요한 내부 기록이 일부 누락됐을 수 있다는 경고입니다. 절대 다시 주문하지 마세요(중복 주문 위험). 들어간 주문은 주문 목록/상세 조회로 확인할 수 있습니다.

오류 및 차단 메시지 목록

이 프로그램이 낼 수 있는 주요 메시지와 의미입니다. Order blocked:로 시작하는 메시지는 주문이 토스에 전송되기 전에 안전을 위해 막은 것입니다(실제 주문은 나가지 않았습니다).

1) 주문 차단(가드레일) 메시지 — Order blocked: ...

메시지 키워드

의미

해결 방법

confirmOrderAction=true is required

주문 확인값 누락

요청에 confirmOrderAction: true 추가(또는 TOSSINVEST_REQUIRE_ORDER_CONFIRMATION=false)

account is locked to TOSSINVEST_ACCOUNT (...)

잠긴 기본 계좌와 다른 계좌로 주문

기본 계좌로 주문하거나 TOSSINVEST_LOCK_ACCOUNT=false

sell orders are disabled

매도가 꺼져 있음

TOSSINVEST_ALLOW_SELL_ORDERS=true

market orders are disabled

시장가가 꺼져 있음

TOSSINVEST_ALLOW_MARKET_ORDERS=true

... is not in TOSSINVEST_ALLOWED_SYMBOLS

허용목록 밖 종목

허용목록에 추가하거나 종목 변경

estimated amount ... exceeds the per-order limit

1회 주문 금액 한도 초과

수량/가격을 줄이거나 한도를 올림

daily order count limit reached (n/m)

하루 주문 건수 한도 도달

다음 날(KST) 초기화까지 대기하거나 한도 상향

daily KRW/USD amount limit reached

하루 누적 금액 한도 도달

위와 동일

국내 주식 주문 정정은 수량(quantity) 정정이 필수

KR 정정에 수량 누락

quantity를 명시

미국 주식 주문 정정은 수량(quantity) 정정을 지원하지 않으며

US 정정에 수량 전달

quantity를 빼고 price만 입력

시장가(MARKET) 주문 정정에는 가격(price)을 전달할 수 없습니다

시장가 정정에 가격 전달

price를 빼고 정정

지정가(LIMIT) 주문 정정에는 가격(price)이 필수

지정가 정정 가격 확인 불가

price를 명시

cannot determine the currency/order type/side/symbol of order ...

정정 대상 주문 정보 확인 불가

orderId가 맞는지 확인하고 잠시 후 재시도(추측으로 진행하지 않음)

cannot estimate ... amount / best ask/bid unavailable / did not report a recognized currency / could not read a recognized currency

가격·호가·통화를 확정할 수 없음

장중 호가가 있는지 확인 후 재시도(특히 시장가는 호가 필요)

cannot reconcile open order ... against the daily limit

미체결 주문 상태 조회 실패

위 "cannot reconcile open order" 항목 참고

cannot read guard state file / is not valid JSON / must contain a JSON array

상태 파일 손상/읽기 실패

상태 파일을 백업 후 삭제(위 reconcile 항목의 경로 참고)

2) 토스 API 오류 (응답 코드/상태)

메시지/코드

의미

해결 방법

허용되지 않은 IP 주소입니다.

공인 IP 미등록

설치 3단계대로 현재 공인 IP를 허용 목록에 등록

HTTP 401 / invalid-token

키 오류 또는 비활성

API Key/Secret Key와 키 활성 상태 확인

HTTP 429

요청 한도 초과

잠시 후 재시도(프로그램이 일부 자동 재시도함)

account-header-required

계좌 정보 필요

TOSSINVEST_ACCOUNT 또는 요청의 accountSeq 확인

confirm-high-value-required

고액 주문 확인 필요

금액 재확인 후 주문 입력에 confirmHighValueOrder: true

3) 네트워크/연결 오류

메시지

의미

해결 방법

Failed to connect to Toss Open API.

연결 실패

인터넷, DNS, VPN, 방화벽, TOSSINVEST_BASE_URL 확인

Toss Open API request timed out after 20s.

응답 지연(20초 초과)

네트워크 상태 확인 후 재시도

Invalid OAuth token response / OAuth token request failed (...)

토큰 발급 실패

키를 확인하고 잠시 후 재시도

4) 주문은 성공했지만 경고가 붙은 경우

응답에 _guardStateWarning 필드가 있으면 주문은 정상적으로 전송·접수된 것입니다. 내부 한도 집계 기록만 일부 누락됐을 수 있다는 경고이므로, 다시 주문하지 말고 주문 목록에서 상태를 확인하세요.

변경 사항 (0.2.0)

0.2.0은 거래 안전장치를 대폭 강화한 버전입니다. 주요 변경점:

  • TOSSINVEST_YOLO_TRADING 옵션 제거 → 세분화된 거래 가드레일로 대체했습니다. 1회/하루 금액 한도, 하루 건수 한도, 종목 허용목록, 매도·시장가 차단, 계좌 잠금을 각각 켤 수 있습니다. (위 거래 가드레일 참고)

  • 주문 확인값 체계: 기본값에서 모든 주문에 confirmOrderAction: true를 요구해, AI가 실수로 주문을 넣는 것을 막습니다.

  • 하루 한도를 실제 주문 상태로 재계산: 미체결 주문을 토스에 다시 조회해 정정·취소까지 정확히 반영합니다.

  • 주문 정정 규칙 강제: 정정은 원주문을 대체해 새 orderId를 돌려준다는 점을 반영하고, 국내/미국·지정가/시장가별 입력 규칙을 주문 전에 검사합니다. 정정도 생성과 동일하게 매도·시장가 차단, 종목 허용목록, 금액·건수 한도의 적용을 받습니다(정정으로 가드레일을 우회할 수 없음).

  • 안정성 개선: API 요청 20초 타임아웃, OAuth 토큰 오류 메시지 개선, 주문 기록 실패 시에도 주문 성공 응답을 보존하고 경고만 첨부.

자세한 내부 변경 이력은 git 커밋 기록을 참고하세요.

개발자용

이 저장소를 직접 받아 개발하려면:

npm install
npm run typecheck
npm test
npm run build

실제 주문 없이 주문 도구 흐름을 mock 서버로 테스트하려면:

npm run smoke:trading:mock

면책조항

이 프로그램은 토스증권 Open API를 MCP에서 사용할 수 있게 연결해 주는 도구입니다. 투자 자문, 투자 권유, 매매 추천, 수익 보장 서비스를 제공하지 않습니다.

이 프로그램을 사용해 조회한 정보, AI가 생성한 답변, AI가 제안한 주문 내용은 부정확하거나 지연되거나 사용자의 의도와 다를 수 있습니다. 모든 투자 판단과 주문 실행 및 프로그램 사용의 최종 책임은 사용자에게 있습니다.

거래 기능을 켜고 주문 생성, 정정, 취소 도구를 사용하는 경우 실제 계좌에 실제 주문이 전송될 수 있습니다. 주문 전 종목, 가격, 수량, 주문 유형, 계좌를 반드시 직접 확인하세요.

현재 이 프로젝트는 개발중인 프로젝트로서, 이 프로젝트의 개발자와 배포자는 이 프로그램 사용으로 발생하는 투자 손실, 주문 실수, API 장애, 데이터 오류, 클라이언트 오작동, AI 응답 오류 등에 대해 책임지지 않습니다.

라이선스

MIT License

토스증권 Open API 공식 문서: https://developers.tossinvest.com/docs

Available Tools

17 tools
toss_get_accountsToss Get AccountsB

List Toss Securities accounts available to the configured Open API credentials.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. It only states 'list', implying a read-only operation, but omits details about authentication requirements, rate limits, potential side effects, or whether the accounts returned are cached or live. No annotation exists to compensate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-formed sentence of 10 words with no filler or redundancy. It is front-loaded with the action and resource.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has no output schema and no annotations, yet the description provides no hint about what data the returned accounts contain (e.g., account numbers, balances, types). Without that context, an agent cannot determine if this meets its needs or how to use the output with sibling tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are zero parameters and 100% schema coverage, so the baseline is 4. The description adds no parameter details, but none are needed. It correctly implies no additional input is required.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses the specific verb 'List' and clearly identifies the resource as 'Toss Securities accounts' with a qualifier about configured credentials. It immediately distinguishes from sibling tools like toss_get_holdings (which lists holdings) and toss_get_buying_power (which lists buying power).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given on when to use this tool vs alternatives such as toss_get_holdings or toss_get_stocks. It does not specify prerequisites (e.g., need to configure credentials first) or whether this is typically the first step in a workflow.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

toss_get_buying_powerToss Get Buying PowerA

Get available buying power for an account. currency is required: KRW for Korean stocks, USD for US stocks.

ParametersJSON Schema
NameRequiredDescriptionDefault
currencyYesCurrency code: KRW (Korean stocks) or USD (US stocks)
accountSeqNoToss accountSeq. If omitted, TOSSINVEST_ACCOUNT is used.

TDQS

A3.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It only states the purpose but does not disclose any behavioral traits (e.g., whether it's a read-only operation, permission requirements, or latency). The name implies read-only, but no explicit confirmation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with zero waste. The purpose is front-loaded, and the required parameter is emphasized immediately. Perfectly concise for a simple tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 2 parameters, 100% schema coverage, and no output schema, the description adequately covers the tool's function. It might optionally note that accountSeq is optional, but the schema already shows it's not required, so no significant gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents both parameters. The description adds no new meaning beyond repeating that currency is required and giving examples, which is already in the schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Get available buying power for an account', specifying the exact resource and action. This distinguishes it from sibling tools like toss_get_accounts (list accounts) or toss_get_holdings (list holdings).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly requires 'currency' and gives examples (KRW for Korean stocks, USD for US stocks), guiding usage. However, it does not mention when not to use this tool or suggest alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

toss_get_candlesToss Get CandlesB

Get 1-minute or daily OHLCV candles for one KRX or US stock symbol.

ParametersJSON Schema
NameRequiredDescriptionDefault
countNo
beforeNo
symbolYes
adjustedNo
intervalYes

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description should disclose behavioral details like rate limits, data freshness, or whether incomplete current candles are returned. It offers none, leaving critical behavior undocumented.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that conveys the core purpose without waste. It is front-loaded and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and five parameters with zero schema descriptions, the description is too brief. It omits output format, market hours, exclusive/inclusive of 'before', and data source. For candle data, this is insufficient for correct use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, requiring the description to add meaning. It explains 'symbol', 'interval' values, and 'adjusted' is hinted at by 'OHLCV' (which implies adjusted? but not explicit). 'count' and 'before' are not explained. The description offsets some but not all parameter ambiguity.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves OHLCV candles, specifies interval options (1-minute or daily), and restricts to KRX or US stocks. This distinguishes it from sibling tools like toss_get_prices or toss_get_orderbook, which serve different data types.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives (e.g., toss_get_prices for current prices). The description does not mention scenarios or exclusions, leaving the agent to infer usage from context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

toss_get_commissionsToss Get CommissionsA

Get trading commission information for an account.

ParametersJSON Schema
NameRequiredDescriptionDefault
accountSeqNoToss accountSeq. If omitted, TOSSINVEST_ACCOUNT is used.

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, and the description does not disclose behavioral traits such as read-only nature, authentication requirements, or side effects. The tool is a simple getter, but the agent must assume it is safe and non-destructive without explicit confirmation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence with no wasted words. It is appropriately sized for a simple tool and delivers the core information efficiently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with one parameter and no output schema, the description is adequate but minimal. It does not explain the return format or the structure of commission information, which would be helpful for an agent to process results.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with one parameter. The description adds value by stating the default value and behavior: 'If omitted, TOSSINVEST_ACCOUNT is used.' This goes beyond the schema's basic type description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Get trading commission information for an account.' It uses a specific verb and resource, and distinguishes from sibling tools like toss_get_accounts or toss_get_holdings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives is provided. There is no mention of prerequisites, contexts, or exclusions, leaving the agent to infer usage without support.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

toss_get_exchange_rateToss Get Exchange RateA

Get KRW/USD or USD/KRW exchange rate. dateTime is optional ISO 8601.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateTimeNo
baseCurrencyYes
quoteCurrencyYes

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It only mentions getting the rate and optional dateTime, but fails to disclose return format, constraints on base/quote combination, or whether dateTime fetches historical data.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no filler, front-loaded with verb and resource. Every word serves a purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with no output schema, the description omits return value details and potential error conditions. It's partially complete but leaves gaps for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so description must compensate. It clarifies base/quote currencies and dateTime format, but doesn't explain the role of base vs quote or constraints like same-currency combinations.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves the KRW/USD or USD/KRW exchange rate, which is specific and distinguishes it from sibling tools like toss_get_accounts or toss_get_prices.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool vs alternatives. The description implies usage for exchange rate queries, but lacks context like prerequisites or limitations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

toss_get_holdingsToss Get HoldingsB

Get account holdings. accountSeq is optional when TOSSINVEST_ACCOUNT is configured.

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolNo
accountSeqNoToss accountSeq. If omitted, TOSSINVEST_ACCOUNT is used.

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden. It only mentions optionality of accountSeq but fails to disclose read-only nature, rate limits, or behavior when symbol is provided.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences front-loaded with purpose. Every sentence adds value without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite low complexity (2 params, no output schema), the description omits return value details, behavior when symbol is used, and prerequisites. Insufficient for an agent to fully understand invocation context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 50% (only accountSeq described). The description adds context about accountSeq's optionality but says nothing about symbol's purpose or allowed values, which remain unclear.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Get account holdings' as a verb+resource. It distinguishes from siblings like 'toss_get_accounts' and 'toss_get_stocks' by focusing on holdings, although holdings could be more precisely defined as positions or assets.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives a usage hint about accountSeq being optional when TOSSINVEST_ACCOUNT is configured, but it lacks explicit guidance on when to use this tool versus alternatives like toss_get_accounts or toss_get_orders.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

toss_get_kr_market_calendarToss Get KR Market CalendarB

Get Korean market calendar and session hours. date is optional YYYY-MM-DD.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNo

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description implies a read-only operation ('Get'), which aligns with no destructive behavior. However, since no annotations are provided, the description does not disclose what happens if an invalid date is provided or if the date is omitted (whether it returns current day or all dates).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that states the purpose and notes the parameter. Every word is relevant, and there is no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has only one optional parameter and no output schema, the description is minimally complete. It covers the basic action and parameter format but lacks details on return values, error handling, or behavior for omitted dates.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds minimal value beyond the schema: it states 'date is optional YYYY-MM-DD'. The schema already defines the pattern; the description does not explain what the parameter controls (e.g., specific date's calendar vs full calendar) or provide examples.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves Korean market calendar and session hours. It distinguishes from the sibling 'toss_get_us_market_calendar' by specifying 'Korean'. However, it does not detail what the calendar includes (e.g., holidays, trading days).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No usage guidelines are provided. There is no mention of when to use this tool versus alternatives like 'toss_get_us_market_calendar' or how to handle missing dates. The distinction is only implicit in the name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

toss_get_orderToss Get OrderA

Fetch one specific order by its required orderId. Use toss_get_orders when you need to search or list orders by filters.

ParametersJSON Schema
NameRequiredDescriptionDefault
orderIdYes
accountSeqNoToss accountSeq. If omitted, TOSSINVEST_ACCOUNT is used.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description must carry the full burden. It states the basic read behavior but omits details about error handling, permissions, or response format. Adequate for a simple get operation but lacks depth.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise with two sentences: the first states the purpose, the second provides usage guidance. No superfluous content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple tool with no output schema, the description provides adequate purpose and sibling differentiation but lacks information about return values or error scenarios, which would make it more complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema describes 'accountSeq' but omits 'orderId' description. The tool description does not add any parameter details beyond the schema, leaving a gap for the required parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Fetch', the resource 'one specific order', and the required parameter 'orderId', effectively distinguishing it from sibling tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly advises when to use the alternative 'toss_get_orders' for searching or listing, providing clear guidance on tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

toss_get_orderbookToss Get OrderbookB

Get orderbook data for one KRX or US stock symbol.

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYes

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden but fails to disclose behavioral details such as what exactly the orderbook contains (e.g., bid/ask levels, depth), pagination, or rate limits. The description is minimal.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that is concise and front-loaded with the key action and resource. However, it is extremely brief and could benefit from slightly more detail without being verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simplicity of the tool (one parameter, no output schema), the description is minimally adequate. It identifies the tool's purpose and allowable markets, but for a tool with many siblings, additional context about what orderbook data includes would improve completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 0% description coverage for the 'symbol' parameter. The description adds that it requires a single stock symbol valid for KRX or US markets, which provides meaning beyond the schema's pattern but does not fully compensate for the lack of schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (Get), resource (orderbook data), and scope (one KRX or US stock symbol), distinguishing it from siblings like toss_get_candles which returns candle data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

While it implies usage for orderbook data, it does not explicitly state when to use this tool over alternatives like toss_get_prices or toss_get_orders, nor does it mention any exclusions or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

toss_get_ordersToss Get OrdersA

List orders for an account using filters such as status, symbol, date range, cursor, and limit. Use this for order history or open-order lists, not for fetching a known single orderId.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNo
fromNo
limitNo
cursorNo
statusYes
symbolNo
accountSeqNoToss accountSeq. If omitted, TOSSINVEST_ACCOUNT is used.

TDQS

A3.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided. The description only says 'list orders' and mentions filters, but does not disclose read-only nature, authentication needs, pagination behavior, or any side effects. For a tool with no annotations, this is insufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the core action and filters, then usage guidance. No waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 7 parameters, no output schema, and no annotations, the description is incomplete. It lacks response format, pagination details, error handling, and constraints beyond the schema. The usage guidance helps, but behavioral transparency is lacking.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 14%, so the description must compensate. It mentions filters like status, symbol, date range, cursor, and limit, but does not explain their formats or how cursor/limit control pagination. It adds some value but not enough.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states it lists orders with filters, which is clear. It distinguishes from toss_get_order by specifying it's for order history or open-order lists, not a single order. However, it could be more explicit about the resource being 'orders for an account'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to use (order history or open-order lists) and when not (fetching a known single orderId), implying the alternative tool toss_get_order. This is excellent guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

toss_get_price_limitsToss Get Price LimitsA

Get upper and lower price limits for one KRX or US stock symbol.

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses that limits are upper and lower, but does not specify what these limits represent (e.g., daily percentage bounds) or any prerequisites (e.g., symbol format, data availability). 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence with no wasted words, front-loading the verb 'Get' and the object 'upper and lower price limits'. Excessively concise yet clear.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and one parameter, the description covers the core functionality but lacks details on output format, what the limits apply to (e.g., daily price change), and any limitations. Adequate for a simple tool but could be more informative.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has 0% description coverage for the only parameter 'symbol'. The description merely states 'for one KRX or US stock symbol', adding no semantic detail beyond what the schema's pattern suggests. Does not compensate for missing schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states that the tool retrieves upper and lower price limits for a stock symbol, specifying the markets (KRX or US). This distinguishes it from siblings like toss_get_prices (which likely retrieves current price) and toss_get_stock_warnings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies usage context: when needing price limits for a single Korean or US stock. However, does not explicitly exclude other scenarios or compare with similar siblings, but the purpose is clear enough for an agent to infer appropriate use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

toss_get_pricesToss Get PricesA

Get current prices for up to 200 comma-separated KRX or US stock symbols.

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolsYes

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations present, so description carries full burden. It only states the basic function without disclosing behavioral traits like rate limits, data freshness (real-time vs delayed), error behavior for invalid symbols, or response format. Minimal disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, perfectly front-loaded with the key information: what it does (get prices), scope (current, up to 200 symbols, markets). No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple price-getting tool with one parameter and no output schema, the description covers the essential aspects: action, input format, limits, and market. It lacks mention of output structure, but that is not required since no output schema exists. It could be improved by noting that it returns current (not historical) prices, but the name implies it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With schema coverage at 0%, the description adds significant meaning: it specifies the format (comma-separated), market scope (KRX or US), and a limit (up to 200 symbols). This compensates well for the lack of schema descriptions. A '5' would require more detail like symbol validation rules or allowed characters beyond the pattern.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the verb 'Get', resource 'prices', and scope 'up to 200 comma-separated KRX or US stock symbols'. It effectively distinguishes itself from siblings like toss_get_candles (historical) and toss_get_price_limits (not current prices).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool over siblings. For example, it doesn't mention that historical prices should use toss_get_candles or that price limits should use toss_get_price_limits. The description is purely functional.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

toss_get_sellable_quantityToss Get Sellable QuantityB

Get sellable quantity for one symbol in an account.

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYes
accountSeqNoToss accountSeq. If omitted, TOSSINVEST_ACCOUNT is used.

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, and the description does not disclose behavior such as default account fallback, authentication needs, rate limits, or return format. It only states the action without additional context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence with no wasted words, but it is so brief that it sacrifices completeness for brevity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with no annotations or output schema, the description provides minimal context. It does not cover return values, error handling, or prerequisite conditions, leaving gaps for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 50% (only accountSeq described), and the description does not explain the symbol parameter or add meaning beyond the generic statement. The description fails to compensate for the missing parameter description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get', resource 'sellable quantity', and scope 'one symbol in an account', which is distinct from sibling tools that retrieve holdings, buying power, etc.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies use for a single symbol's sellable quantity but offers no explicit guidance on when to choose this over alternatives like toss_get_holdings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

toss_get_stocksToss Get StocksA

Get stock master data for up to 200 comma-separated KRX or US stock symbols.

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolsYes

TDQS

A3.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description must disclose behavioral traits. It only mentions the data type and symbol limit, omitting safety, permissions, or error handling.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence with zero wasted words; conveys core functionality efficiently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema, yet the description does not clarify what 'master data' includes (e.g., name, ISIN). Lacks details on return structure or error behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description adds critical meaning by specifying symbols are 'stock symbols' (not just any string) and limited to KRX/US markets, up to 200.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'get stock master data' for up to 200 symbols, distinguishing it from related tools like price or holding queries.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides context (200 symbols, KRX/US stocks) but offers no explicit guidance on when to use this tool versus others like toss_get_prices or toss_get_candles.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

toss_get_stock_warningsToss Get Stock WarningsC

Get buy warning flags for one KRX or US stock symbol.

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must fully disclose behavioral traits. It does not mention what happens if the symbol is invalid, rate limits, side effects, or output behavior, leaving significant gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence with no redundancy, but it lacks necessary details for a tool with 0% schema coverage and no annotations, making it under-specifying rather than efficiently concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and no annotations, the description should explain return values (e.g., format of warning flags), error handling, and usage context. It only states the tool's basic function, leaving the agent inadequately informed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and the description adds only that the symbol is for one KRX or US stock. It does not explain the pattern, format, or how to specify the market, so the parameter semantics are under-specified.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves buy warning flags for a single KRX or US stock symbol, using a specific verb and resource, which distinguishes it from sibling tools like toss_get_stocks or toss_get_prices.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives such as toss_get_stocks or toss_get_prices. The context signals list many siblings, but the description offers no decision criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

toss_get_tradesToss Get TradesA

Get recent trades for one KRX or US stock symbol. count defaults to the Toss API default and is capped at 50.

ParametersJSON Schema
NameRequiredDescriptionDefault
countNo
symbolYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It mentions count default and cap but does not explicitly state read-only behavior, authentication needs, or other safety traits. The 'get' verb implies non-destructive but could be more explicit.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences without redundancy. The first sentence states the purpose, and the second adds parameter behavior. Information is front-loaded and every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with two parameters and no output schema, the description covers the core functionality and count behavior. It could mention that the output is a list of trade objects, but the name 'trades' implies that. Slightly incomplete but adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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 adds value for the 'count' parameter (default and maximum) and indicates that 'symbol' is for KRX or US stocks, which helps the agent. Could include format examples but still useful.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get', the resource 'recent trades', and the scope 'one KRX or US stock symbol'. It is specific and distinguishes the tool from siblings like toss_get_orders or toss_get_holdings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies use for a single stock symbol's recent trades but provides no explicit guidance on when to use this tool versus alternatives or when not to use it. Siblings like toss_get_orders and toss_get_holdings serve different purposes, but no mention of exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

toss_get_us_market_calendarToss Get US Market CalendarB

Get US market calendar and session hours. date is optional YYYY-MM-DD in US local date.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNo

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, and the description only states it 'gets' data without disclosing read-only nature, idempotency, or any side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences with the main purpose front-loaded; no extraneous information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations, output schema, or parameter descriptions, the description lacks details on return values and behavior when date is omitted.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds that 'date' is optional and in YYYY-MM-DD format with US local timezone, but does not clarify whether it returns data for a specific date or a range.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves US market calendar and session hours, and the name distinguishes it from the KR market calendar sibling tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It implicitly indicates when to use (for US market calendar), but lacks explicit guidance on alternatives or when not to use it.

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.

  1. 1 tool updatev0.2.0
    • Changedtoss_get_buying_power3 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "Currency code: KRW (Korean stocks) or USD (US stocks)",
        +  "enum": [
        +    "KRW",
        +    "USD"
        +  ],
        +  "type": "string"
        +}
      • removedInput schema / properties / symbol
        Removed value: -{
        -  "pattern": "^[A-Za-z0-9.-]+$",
        -  "type": "string"
        -}
      • addedInput schema / required
        Added value: +[
        +  "currency"
        +]
  2. 17 tool updatesv0.1.0
    • First observedtoss_get_accounts
    • First observedtoss_get_buying_power
    • First observedtoss_get_candles
    • First observedtoss_get_commissions
    • First observedtoss_get_exchange_rate
    • First observedtoss_get_holdings
    • First observedtoss_get_kr_market_calendar
    • First observedtoss_get_order
    • First observedtoss_get_orderbook
    • First observedtoss_get_orders
    • First observedtoss_get_price_limits
    • First observedtoss_get_prices
    • First observedtoss_get_sellable_quantity
    • First observedtoss_get_stock_warnings
    • First observedtoss_get_stocks
    • First observedtoss_get_trades
    • First observedtoss_get_us_market_calendar

TDQS

A3.6/5.0

Scored across 17 tools

Disambiguation5/5

Every tool targets a distinct data type or account operation, and even the easily confused toss_get_orders vs toss_get_order are clearly separated by their descriptions. Market data, reference data, account data, and order lookup tools have clean boundaries.

Naming Consistency5/5

All tools follow the same toss_get_<resource> pattern with snake_case naming, making the set highly predictable. Minor differences like prices vs price_limits reflect the underlying resource names rather than inconsistent conventions.

Tool Count4/5

At 17 tools, the server is slightly above the typical well-scoped range, but the count is justified by the breadth of read-only capabilities. Each tool maps to a distinct endpoint that an agent would reasonably need for market data and account inquiry.

Completeness3/5

The read-only side of the domain is well covered: market data, reference data, exchange rates, calendars, accounts, holdings, and order retrieval are all present. However, there are no order placement, cancellation, or modification tools, so the investment workflow has a notable dead end and cannot execute trades.

Maintenance

ActivityStale
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    MCP server wrapping Toss Securities Open API, enabling stock price queries and trading for Korean and US stocks via natural language.
    36
    7 npm
    MIT
  • A
    license
    C
    quality
    B
    maintenance
    Safe-by-default MCP server for the official Toss Securities Open API, providing read-only market and account data with optional order operations protected by multiple safety gates.
    27
    10 npm
    2
    MIT
  • F
    license
    A
    quality
    C
    maintenance
    Enables MCP clients to read Toss Securities market data and account info, and optionally place real-money orders.
    20
    -
  • A
    license
    A
    quality
    B
    maintenance
    A local MCP server that automatically generates tools from Toss Securities' official OpenAPI spec, enabling real API calls with multi-layered order safety and OAuth 2.0 authentication.
    36
    1
    MIT