Skip to main content
Glama
meritz-securities

meritz-mcp

Official

메리츠증권 Open API MCP 서버

현재 베타 서비스 기간입니다.

개발자 포털 · API 신청 · API 문서 · 문의

test release license

MCP를 지원하는 AI 클라이언트에 연결해, 메리츠증권 Open API의 시세·잔고·주문을 대화로 다루는 MCP 서버입니다. 내 PC에서 도는 로컬 서버이고, 단일 실행 파일이라 Python이나 uv를 따로 설치하지 않으셔도 됩니다.

기본값은 조회 전용입니다. 주문·환전은 MERITZ_READ_ONLY=0으로 두셔야 열립니다.

앱키

개발자 포털에서 앱키(App Key)와 시크릿(App Secret)을 발급받으십시오. 앱키에는 계좌가 묶입니다. 요청에 계좌번호를 넣지 않아도 그 계좌가 조회되고, 주문도 그 계좌로 나갑니다. 실행 파일 안에는 앱키가 없습니다. 설치 화면이나 환경변수로 넣습니다.

Related MCP server: pykrx-mcp

설치

파일은 릴리스 페이지에서 받으십시오. 쓰시는 것 하나만 받으시면 됩니다.

쓰시는 도구

방법

Claude Desktop

OS에 맞는 .mcpb 파일을 내려받아 더블클릭 — Mac Apple 칩 · Mac Intel · Windows

아무 도구나 — 자동 설치

git clone 후 python3 install.py — 실행 파일을 내려받고 등록 명령까지 만들어 줍니다

Claude Code

claude mcp add meritz --env MERITZ_APP_KEY=앱키 --env MERITZ_APP_SECRET=시크릿 -- <실행 파일 경로>

Codex CLI · ChatGPT 데스크톱

codex mcp add meritz --env MERITZ_APP_KEY=앱키 --env MERITZ_APP_SECRET=시크릿 -- <실행 파일 경로>

Gemini CLI

gemini mcp add -e MERITZ_APP_KEY=앱키 -e MERITZ_APP_SECRET=시크릿 meritz <실행 파일 경로>

Cursor · VS Code

docs/connect.html을 내려받아 브라우저로 열면 한 번에 추가 버튼이 만들어집니다

실행 파일은 Mac Apple 칩 · Mac Intel · Windows 입니다. Mac에서 직접 내려받으셨다면 chmod +x와 xattr -d com.apple.quarantine을 걸어 주십시오. 격리 속성이 남아 있으면 서버가 아무 메시지 없이 종료되어 도구 목록에 나타나지 않습니다.

OS 보안 경고, 체크섬 대조, 기동 대기 시간, Claude 웹·ChatGPT 웹을 조회 전용으로 붙이는 터널 연결은 docs/install.md에 있습니다. install.py가 이 과정을 대신해 줍니다.

도구

설치하고 클라이언트를 다시 시작하면 도구 일곱 개가 뜹니다. "삼성전자 현재가 알려줘"처럼 그대로 물어보시면 됩니다. 분류마다 하나씩 여섯 개에, 서버 설정과 카탈로그 요약을 돌려주는 meritz_info까지 일곱 개이고, api_type으로 호출할 API를 고릅니다.

도구

다루는 것

API

meritz_account

잔고·예수금·평가·거래내역·손익

12건

meritz_market

국내주식·국내 지수 시세·호가·체결·투자자별 매매

13건

meritz_overseas_market

해외주식·해외 지수 시세·호가·체결

9건

meritz_trading

주문·정정·취소·주문내역·예약주문

24건

meritz_forex

환율·환전

4건

meritz_reference

거래일·장 운영시간·거래소 등 참조 정보

5건

국내와 해외 시세를 한 도구에 담지 않은 것은 종목코드와 거래소 코드 체계가 서로 달라서입니다. 섞어 두면 모델이 국내 파라미터를 해외 조회에 그대로 넣습니다. api_type='describe'로 부르면 파라미터와 응답 필드 설명을 돌려줍니다. REST 69건 중 67건을 도구로 노출하고, 토큰 발급·폐기 2건은 서버가 내부에서 처리합니다.

실시간(웹소켓)은 MCP의 요청·응답 모델과 맞지 않아 이 서버에서 다루지 않습니다. 실시간 코드는 open-api-codegen-mcp에서 받으십시오.

환경변수

변수

기본값

설명

MERITZ_APP_KEY / MERITZ_APP_SECRET

—

포털에서 발급

MERITZ_BASE_URL

https://openapi.imeritz.com:9443

호출 대상 (https 만)

MERITZ_READ_ONLY

1

기본이 조회 전용입니다. 주문·환전까지 쓰시려면 0

MERITZ_TIMEOUT

15

요청 제한시간(초)

MCP_TYPE

stdio

streamable-http로 두면 HTTP 서버로 뜹니다

MCP_HOST / MCP_PORT / MCP_PATH

127.0.0.1 / 8000 / /mcp

HTTP 모드의 주소·포트·경로

주문은 두 단계입니다

주문과 환전은 첫 호출에서 전송하지 않고 보낼 내용과 confirm_token만 돌려줍니다. 사람이 내용을 확인한 뒤 토큰을 넣어 다시 호출해야 실제로 나갑니다. 토큰은 한 번만 쓸 수 있고 180초 뒤 만료되며, 보낼 내용·대상 서버·앱키 중 하나라도 바뀌면 무효가 됩니다.

이 절차는 실수를 막기 위한 것이지, 사람이 내용을 확인했다는 증거는 아닙니다. 게이트는 ApiClient.call() 에 있어, 도구로 호출하시든 같은 패키지의 클라이언트를 파이썬에서 직접 부르시든 똑같이 걸립니다. 한계와 주문 접수 판정은 DISCLAIMER.md에 적어 두었습니다.

저장소가 네 개입니다

하고 싶으신 일

여기로

AI 클라이언트에 붙이기

이 저장소

파이썬으로 직접 호출해 보기

open-api — 실행 예제

터미널에서 조회·주문하기

open-api-studio — meritz CLI

호출 코드를 받아 쓰기

open-api-codegen-mcp — MCP 서버

개발

uv sync
uv run pytest tests/ -q

./build_binary.sh                    # bin/meritz-mcp — PyInstaller 단일 실행 파일
python3 make_bundle.py darwin-arm64  # dist/meritz-open-api-darwin-arm64.mcpb

.env.example을 .env로 복사해 쓰셔도 됩니다. 단일 실행 파일은 자기 옆에 둔 .env를 가장 먼저 읽습니다 — 앱키를 명령줄에 적지 않아도 되므로 셸 기록과 프로세스 목록에 남지 않습니다. 파일 권한은 chmod 600 으로 두십시오. 릴리스는 태그를 밀면 GitHub Actions가 세 플랫폼을 빌드해 올립니다.

사용 전 확인해 주세요

  • 대상 서버는 운영이 기본값이고, 앱키에 연결된 계좌는 실계좌입니다. 모의계좌는 없습니다

  • 기본값은 조회 전용입니다. 주문·환전은 MERITZ_READ_ONLY=0으로 두셔야 열립니다

  • 확인 절차는 실수를 막기 위한 것이지, 사람이 내용을 확인했다는 증거는 아닙니다

  • 조회 결과는 연결하신 AI 서비스로 전송되며, 해당 서비스의 데이터 처리 정책이 적용됩니다

  • 앱키와 시크릿을 저장소에 커밋하지 말아 주세요

  • DISCLAIMER.md를 꼭 읽어 주세요

라이선스

MIT — LICENSE

실행 파일에 함께 들어가는 오픈소스의 라이선스 전문은 THIRD-PARTY-NOTICES.txt 에 있습니다.

문의는 개발자 포털을 이용해 주세요.

Available Tools

7 tools
meritz_account메리츠 계좌A
Read-onlyIdempotent

메리츠 Open API — 계좌 (11건). api_type 으로 호출할 API 를 고르고 params 에 파라미터를 넣습니다. api_type='describe' 로 부르면 파라미터 설명을 돌려줍니다.

collateral GET 내 계좌 담보 현황 조회 deposit GET 내 계좌 예수금 상세 조회 holdings GET 내 계좌 종목별 평가 조회 ovs_currencies GET 해외주식 외화잔고 조회 ovs_holdings GET 해외주식 잔고 조회 ovs_profit_loss GET 해외주식 실현손익 profit_loss GET 국내주식 실현손익 (일자별) profit_loss_summary GET 국내주식 실현손익 (합계) profit_loss_symbols GET 국내주식 실현손익 (종목별) transactions GET 내 계좌 입출금 내역 조회 valuation GET 내 계좌 자산평가 조회

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsNo
api_typeYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the description's listing of GET operations adds little beyond what annotations provide. It does not contradict annotations, but also does not add extra behavioral context like pagination or authentication requirements.

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 compact list with a short instruction header. Each endpoint line is informative and the structure is scannable. No filler words, though the list itself is necessary for the api_type values.

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 the tool covers 11 endpoints, the description provides sufficient routing via api_type and a self-service describe option for parameters. The presence of an output schema covers return values. Auth requirements are not mentioned, but that may be handled elsewhere in the API ecosystem.

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?

The schema has 0% description coverage, but the description compensates by enumerating all valid api_type values (the 11 endpoints) and explaining the params object. The describe mechanism provides a way to get further parameter details, adding meaningful guidance beyond the bare schema.

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 this is the Meritz Open API for account-related queries, listing 11 specific GET endpoints. It names the resource (계좌) and the action (조회) for each, and the account scope distinguishes it from sibling tools like meritz_market and meritz_trading.

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 explains how to use the tool (select api_type, provide params) and mentions the 'describe' mode for parameter explanations. However, it does not explicitly state when to prefer this tool over siblings, though the account-specific scope makes that self-evident.

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

meritz_forex메리츠 환전A
Destructive

메리츠 Open API — 환전 (4건). api_type 으로 호출할 API 를 고르고 params 에 파라미터를 넣습니다. api_type='describe' 로 부르면 파라미터 설명을 돌려줍니다.

fx_exchanges POST 실시간 환전신청 ⚠ 상태변경 fx_exchanges_history GET 환전 내역 조회 fx_rates GET 고시환율 조회 fx_rates_applied GET 환전 적용환율 조회

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsNo
api_typeYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

Beyond the annotations (destructiveHint=true), the description flags fx_exchanges as a state-changing POST with a warning while labeling the others as GET queries. It also reveals the self-describing describe behavior. It does not detail side effects or permissions, but annotations already signal the risk profile.

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 compact and front-loaded: one-line usage rule, a self-documentation hint, then a scannable table of the four API variants with the mutation warning. No filler or repetition.

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 multi-endpoint router with a generic params schema, the describe instruction and method listing make the tool callable without further research. It lacks endpoint-specific parameter schemas and auth/rate-limit caveats, but the self-describe mechanism and output schema cover the critical gap.

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 compensates by listing the valid api_type values and explaining that params is the argument container. The api_type='describe' mechanism is a practical way for an agent to discover endpoint-specific parameters, though the actual parameter names are not enumerated inline.

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 states the tool is a Meritz Open API wrapper for forex/exchange and enumerates four distinct API calls (fx_exchanges, fx_exchanges_history, fx_rates, fx_rates_applied) with HTTP methods and purpose labels. This makes the tool's scope concrete and differentiates it from account/market/trading siblings.

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 explains the invocation pattern: choose an API via api_type, pass arguments via params, and use api_type='describe' for parameter documentation. However, it does not state when to prefer this tool over sibling tools or give exclusion criteria.

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

meritz_infoA
Read-only

서버 설정과 API 카탈로그 요약, 알려진 문제를 돌려줍니다.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, so the description does not need to restate safety. It adds useful content categories (server settings, API catalog summary, known issues), but does not disclose any further behavior such as freshness of known issues, authentication expectations, or output limitations.

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 front-loaded sentence with no filler. Every part contributes meaning: what data is returned and for which general purpose.

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 the zero-parameter schema, read-only annotation, and existing output schema, the description is largely sufficient. The only minor gap is the lack of sibling differentiation or usage context, but for a simple informational endpoint the provided content list is reasonably complete.

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?

The tool has zero parameters and the schema has 100% coverage, so there is nothing for the description to explain about parameters. The baseline of 4 for a parameterless tool applies, and the description does not omit any parameter-related information.

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 states a clear verb ('returns') and specific resources: server settings, API catalog summary, and known issues. It distinguishes itself from the sibling domain tools (account, market, trading, etc.) by describing a meta/informational scope rather than a business operation.

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?

The description gives no explicit guidance on when to use this tool versus alternatives such as meritz_reference or the domain-specific tools. The purpose is clear, but the agent is left to infer usage context from the tool name and siblings.

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

meritz_market메리츠 국내주식 시세A
Read-onlyIdempotent

메리츠 Open API — 국내주식 시세 (10건). api_type 으로 호출할 API 를 고르고 params 에 파라미터를 넣습니다. api_type='describe' 로 부르면 파라미터 설명을 돌려줍니다.

market_candles_days GET 시세추이 조회(일봉) market_candles_minutes GET 시세추이 조회(분봉) market_investors GET 종목별 투자자매매동향 market_investors_detail GET 국내주식 종목별 투자자매매동향 상세 market_orderbook GET 호가 조회 market_orderbook_after GET 시간외 단일가 호가 조회 market_prices GET 현재가 조회 market_prices_after GET 시간외 단일가 조회 market_trades_minutes GET 체결추이 조회(분) market_trades_ticks GET 체결추이 조회(틱)

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsNo
api_typeYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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 valuable behavioral context: the api_type='describe' mode that returns parameter explanations, and the enumeration of the ten sub-APIs, which informs the agent of the tool's full capability without relying on the schema. It does not contradict 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.

Conciseness4/5

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

The description is efficient: it front-loads the purpose and usage pattern, then lists the ten endpoints in a compact, scannable table. Every line serves a purpose—there is no filler or redundant explanation—making it easy for an agent to parse and act on.

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 the tool exposes ten distinct endpoints and has a sparse input schema, the description gives an agent a sufficient overview of available operations and how to discover parameter schemas via the describe mode. The output schema exists, so return value details are covered elsewhere. The description could mention authentication or rate limits, but those are not critical given the read-only, idempotent nature already indicated.

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 description coverage is 0%, so the description must compensate. It does so by listing the valid api_type values (the endpoint names) and explaining that params holds the parameters. It also instructs the agent to use api_type='describe' to obtain detailed parameter descriptions, effectively providing a self-documenting mechanism for a tool with minimal schema information.

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 provides domestic stock market quotes and lists 10 specific GET endpoints for different data types (candles, investors, orderbook, prices, trades). It distinguishes itself from siblings by specifying '국내주식' (domestic stocks) and by focusing solely on market data, which is separate from trading, accounts, or overseas markets.

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 explains how to choose an API via api_type and how to use params, and mentions that api_type='describe' returns parameter descriptions. However, it does not explicitly state when to use this tool versus alternatives like meritz_overseas_market or meritz_trading; the usage context is implied by the tool name and scope rather than spelled out.

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

meritz_overseas_market메리츠 해외주식 시세A
Read-onlyIdempotent

메리츠 Open API — 해외주식 시세 (6건). api_type 으로 호출할 API 를 고르고 params 에 파라미터를 넣습니다. api_type='describe' 로 부르면 파라미터 설명을 돌려줍니다.

ovs_market_candles_days GET 해외주식 시세추이 조회 (일봉) ovs_market_candles_minutes GET 해외주식 시세추이 조회 (분봉) ovs_market_orderbook GET 해외주식 호가 조회 ovs_market_prices GET 해외주식 현재가 조회 ovs_market_trades_minutes GET 해외주식 체결추이 조회 (분) ovs_market_trades_ticks GET 해외주식 체결추이 (틱)

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsNo
api_typeYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

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 useful behavioral context: all operations are GET requests, and api_type='describe' returns parameter descriptions dynamically. It does not mention auth or rate limits, but given the annotation coverage this is acceptable.

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 well-structured: a short usage instruction followed by a compact endpoint table. Each line earns its place by mapping an api_type to a data type. The opening phrase slightly duplicates the title but is not harmful. Overall it is efficient and scannable.

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 is a multi-endpoint dispatcher with opaque params, the description is not fully self-sufficient for direct invocation of each sub-API. It mitigates this by pointing to api_type='describe' for parameter details, and an output schema exists. Still, for an agent to call, say, ovs_market_candles_days correctly, it would need an extra describe round-trip; the static description alone lacks that detail.

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?

Input schema has 0% description coverage, so the description must compensate. It adds meaning by listing valid api_type values and explaining that params should contain API parameters. However, it does not describe the actual keys or structures for the params object, relying instead on the api_type='describe' mechanism as a runtime fallback. This is partial compensation but not full parameter documentation.

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 this tool provides overseas stock market quotes ('해외주식 시세') and enumerates six distinct endpoint variants with specific purposes such as daily candles, minute candles, orderbook, current price, and trades. This makes the tool's function obvious and differentiates it from sibling tools like meritz_market.

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 tells the agent how to select an API via api_type and provides a table mapping each api_type value to its data purpose. It also instructs to call api_type='describe' for parameter explanations. It does not explicitly discuss when to prefer this tool over meritz_market or meritz_forex, but the overseas-market scope is clear from the title and description.

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

meritz_reference메리츠 기준정보A
Read-onlyIdempotent

메리츠 Open API — 기준정보 (5건). api_type 으로 호출할 API 를 고르고 params 에 파라미터를 넣습니다. api_type='describe' 로 부르면 파라미터 설명을 돌려줍니다.

ref_market_days GET 국내 영업일 조회 ref_market_hours GET 국내 장운영 조회 ref_ovs_exchanges GET 해외 거래소 조회 ref_ovs_market_days GET 해외 영업일 조회 ref_ovs_market_hours GET 해외 장운영 조회

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsNo
api_typeYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

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

The description clearly discloses dispatcher-style behavior: api_type selects one of five GET endpoints, and api_type='describe' returns parameter explanations. This aligns with the annotations (readOnlyHint, idempotentHint, destructiveHint=false) and adds useful behavioral context beyond the schema, though it omits details like error behavior or rate limits.

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

Conciseness5/5

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

The description is compact and efficient: two short prose lines plus a clearly aligned five-row table. The routing instruction is front-loaded, and every line contributes useful information without repetition or filler.

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 read-only router with an output schema, the description provides the essential operation list, HTTP verbs, and a self-describe fallback for parameter details. The main gap is the absence of per-endpoint parameter examples, but the describe mode mitigates this and allows an agent to discover the details at runtime.

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?

With 0% schema description coverage, the description partially compensates by explaining that api_type selects the endpoint and params holds parameters, and by pointing to the describe mode for parameter details. However, it does not document the actual parameters for each of the five endpoints, so an agent must call describe to learn the exact parameter names and formats.

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 identifies the resource as reference data and enumerates five concrete GET operations with clear labels (domestic/overseas market days, market hours, and exchanges). It is specific enough to distinguish the tool from trading or account tools, though it does not explicitly contrast it with siblings like meritz_info or meritz_market.

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 explains the routing mechanics: choose an API via api_type and supply params. It does not explicitly state when to use meritz_reference versus alternative sibling tools, but the listed operation names strongly imply it is for static reference lookups such as market days and exchange lists.

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

meritz_trading메리츠 주문A
Destructive

메리츠 Open API — 주문 (24건). api_type 으로 호출할 API 를 고르고 params 에 파라미터를 넣습니다. api_type='describe' 로 부르면 파라미터 설명을 돌려줍니다.

credit_orders_buy POST 신용매수 주문 ⚠ 상태변경 credit_orders_sell POST 신용매도 주문 ⚠ 상태변경 orders_buy POST 일반주문 매수 ⚠ 상태변경 orders_cancel POST 국내주식 주문 취소 ⚠ 상태변경 orders_estimate GET 주문가능금액·수량 조회 orders_history GET 주문내역 조회 orders_modify POST 국내주식 주문 정정 ⚠ 상태변경 orders_sell POST 일반주문 매도 ⚠ 상태변경 ovs_orders_buy POST 해외주식 매수 주문 ⚠ 상태변경 ovs_orders_cancel POST 해외주식 주문 취소 ⚠ 상태변경 ovs_orders_detail GET 해외주식 주문체결 상세조회 ovs_orders_estimate GET 해외주식 주문가능금액 조회 ovs_orders_history GET 해외주식 주문체결내역 조회 ovs_orders_modify POST 해외주식 주문 정정 ⚠ 상태변경 ovs_orders_sell POST 해외주식 매도 주문 ⚠ 상태변경 ovs_orders_today GET 해외주식 당일 주문체결내역 조회 ovs_reserved_orders GET 해외주식 예약주문 조회 ovs_reserved_orders_buy POST 해외주식 예약주문 매수 ⚠ 상태변경 ovs_reserved_orders_cancel POST 해외주식 예약주문 취소 ⚠ 상태변경 ovs_reserved_orders_sell POST 해외주식 예약주문 매도 ⚠ 상태변경 reserved_orders GET 국내주식 예약주문 조회 reserved_orders_buy POST 국내주식 예약주문 매수 ⚠ 상태변경 reserved_orders_cancel POST 국내주식 예약주문 취소 ⚠ 상태변경 reserved_orders_sell POST 국내주식 예약주문 매도 ⚠ 상태변경

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsNo
api_typeYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already flag destructiveHint=true, readOnlyHint=false, and idempotentHint=false; the description adds a per-endpoint table marking POST state-changing calls with ⚠ 상태변경 and identifies safe GET queries. This provides concrete behavioral detail beyond the generic annotations, and nothing in the description contradicts them.

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 text is long but structured as a scannable table; the introductory sentence and describe instruction are the only prose. Each table line adds a distinct endpoint with its HTTP method and safety marker, so the length is justified for a 24-endpoint dispatcher.

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 24-endpoint dispatcher, the description names every order API, its method, and whether it changes state, and points to 'describe' for parameter details. It does not explain abbreviations like 'ovs', authentication prerequisites, or endpoint grouping, and the output schema is expected to cover return shape—adequate but not comprehensive.

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 description coverage is 0%, so the description must carry the parameter-semantics load. It defines api_type as the selector with 24 concrete values listed in the table, and params as the container for endpoint arguments, plus the 'describe' call to discover parameter details. It does not enumerate per-endpoint params, but the mechanism is sufficiently 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 opens with "메리츠 Open API — 주문" and enumerates 24 order-related endpoints, clearly bounding the tool to trading/order operations. The table of domestic, overseas, and reserved order actions distinguishes this tool from sibling domains like account, market, forex, reference, and info.

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?

It explains the dispatch pattern (api_type selects the API, params holds arguments) and the 'describe' introspection call. However, it never states when to prefer this tool over sibling tools such as meritz_account or meritz_market, nor does it give exclusion criteria or when-not-to-use guidance.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 7 tool updatesv0.3.0
    • First observedmeritz_account
    • First observedmeritz_forex
    • First observedmeritz_info
    • First observedmeritz_market
    • First observedmeritz_overseas_market
    • First observedmeritz_reference
    • First observedmeritz_trading

TDQS

A4.2/5.0

Scored across 7 tools

Disambiguation5/5

The seven tools are partitioned by clear domains: account, market, overseas market, trading, forex, reference, and server info. There is little risk of selecting the wrong tool because each namespace maps to a distinct financial function, and even the adjacent market/overseas_market pair is clearly separated by the overseas prefix.

Naming Consistency5/5

All tool names follow the same meritz_<domain> snake_case convention, and the nested api_type values are also uniformly snake_case. The naming pattern is predictable and consistent across the entire server.

Tool Count5/5

Seven tools is well within the ideal 3-15 range and matches the server's intended scope: one namespace per major brokerage function plus an info tool. Although meritz_trading contains many sub-APIs, that is an internal detail rather than an MCP tool-count problem.

Completeness5/5

The surface covers account inquiries, domestic and overseas market data, the full order lifecycle, forex exchange, reference data, and a server-info/catalog tool. Common trading workflows have no dead ends, and the meritz_info tool aids discoverability of available operations.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables 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.
    25 npm
    1
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Provides Korean stock market data (KOSPI, KOSDAQ, KONEX) including prices, fundamentals, investor trading, short selling, and indices via MCP protocol, enabling natural language queries from AI agents like ChatGPT and Claude.
    53 PyPI
    3
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Enables trading and market data access for Toss Securities through natural language, with built-in trading guardrails to prevent errors.
    20
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Provides real-time Korean stock market data, including stock prices, rankings, investor trends, and derivatives, via the Korea Investment & Securities OpenAPI. Enables AI models to query and analyze Korean financial data through natural language.
    -