PortOne MCP Server
OfficialThis server integrates with PortOne (포트원), a Korean payment platform, to provide LLM-powered access to documentation, OpenAPI schemas, code examples, and console management features.
Documentation
List, read, and regex-search PortOne docs (developer center, help center)
Retrieve metadata and web URLs for documents
OpenAPI Schema
Access specific paths or get a full summary of the V1/V2 REST API schema (YAML format)
Code Examples
Backend examples by framework (Express, FastAPI, Flask, Spring-Kotlin)
Frontend examples by framework (HTML, React)
Filterable by PG provider and payment method
Store & Channel Management
List main and sub-stores linked to a PortOne account
View shared test channels (filterable by PG provider)
Get channels configured for a specific store
Add shared test channels to the main store
Payment History
Search payment records with filters for date range, PG provider, payment method, status, currency, and more
Reconciliation & Settlement
Query transaction reconciliation records with statuses (matched, mismatched, incomparable, uncollected) and mismatch reasons
View daily settlement summaries (amounts, fees, cancellations, post-corrections) per store/PG
View aggregated and daily settlement statistics by currency
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@PortOne MCP Servershow me my recent payment history"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
PortOne MCP Server
포트원 사용자를 위한 MCP (Model Context Protocol) 서버입니다. 포트원 개발자센터, 헬프센터 등 공식 문서 내용을 LLM(Large Language Model)에 제공해 정확한 정보를 바탕으로 사용자의 연동 및 질의를 돕도록 합니다.
이외에도 포트원 콘솔에서 제공하는 기능 중 일부를 수행할 수 있습니다.
채널 목록 조회
테스트 채널 추가
하위 상점 조회
결제 내역 조회
거래대사 건별 내역 조회 (정산/거래 대사, 불일치 상세 포함)
거래대사 정산 요약 조회
거래대사 정산 통계 조회
콘솔 기능 사용 시 브라우저를 통해 콘솔 로그인이 필요합니다.
DXT를 이용한 설치
DXT (Desktop Extensions)를 이용해 MCP 서버를 원클릭으로 설치할 수 있습니다.
GitHub Releases에서 최신
portone-mcp-server.dxt파일을 다운로드합니다.지원하는 AI 도구(Claude Desktop 등)에서 다운로드한
.dxt파일을 드래그 앤 드롭하거나 열기를 통해 설치합니다.설치 후 도구를 재시작하여 MCP 서버가 정상적으로 등록되었는지 확인합니다.
Claude Desktop에서 DXT 파일 사용 시 주의사항
현재 알려진 이슈로 인해 Claude Desktop에서 DXT 설치 후 MCP 서버가 정상적으로 작동하지 않을 수 있습니다.
이 경우 Node.js 22.6.0 이상을 설치하고 Claude Desktop 설정에서 "MCP용 내장 Node.js 사용" 옵션을 비활성화한 후 재시작하면 정상적으로 작동합니다.
Related MCP server: NicePay MCP Server
MCP 서버 등록하기
Node.js 22.6.0 이상이 설치되어 있어야 합니다.
사용하는 AI 도구의 MCP 설정에서 아래 내용을 추가합니다. (Cursor, Windsurf, Claude Desktop, etc...)
"mcpServers": { // 기존 설정 "portone-mcp-server": { "command": "npx", "args": [ "-y", "@portone/mcp-server@latest" ] } }도구를 재시작해 portone-mcp-server 및 해당 서버가 제공하는 도구들이 잘 등록되었는지 확인합니다.
제3자 AI 서비스를 사용할 경우, API 응답(조회된 데이터 등)이 AI 서비스 측으로 전달되어 저장되거나 해당 서비스의 정책에 따라 모델 학습에 사용될 수 있습니다.
MCP 서버는 API 응답에 포함된 개인정보가 외부로 전달되지 않도록, 우선적으로 해당 정보를 식별 및 제거하는 보호 조치를 마련하고 있습니다. 다만, 그 외의 정보는 AI 서비스의 운영 정책에 따라 일시적으로 저장되거나 처리될 수 있는 점을 유의해야 합니다.
서버 환경에서 사용하기 (액세스 토큰 주입)
브라우저 로그인이 불가능한 서버 환경에서는 PORTONE_ACCESS_TOKEN 환경 변수로
외부에서 발급한 콘솔 OAuth 액세스 토큰을 주입할 수 있습니다. 이 변수가 설정되면
브라우저를 통한 대화형 OAuth 로그인 플로우(로컬 콜백 서버, PKCE)를 건너뛰고,
주입된 토큰을 그대로 콘솔 기능 호출의 Authorization 헤더로 사용합니다.
"mcpServers": {
"portone-mcp-server": {
"command": "npx",
"args": ["-y", "@portone/mcp-server@latest"],
"env": {
"PORTONE_ACCESS_TOKEN": "<콘솔에서 발급한 액세스 토큰>"
}
}
}PORTONE_ACCESS_TOKEN: 콘솔 OAuth 액세스 토큰(필수). 설정 시 정적 토큰 모드로 동작합니다.PORTONE_TOKEN_TYPE: 토큰 타입(선택, 기본값Bearer).
정적 토큰 모드에서는 리프레시 토큰이 없으므로 토큰의 발급/갱신/만료 관리는 호출 측(서버)의 책임입니다. 만료된 토큰을 주입하면 콘솔 기능 호출이 실패합니다.
토큰은 프로세스별로 격리됩니다. 여러 사용자를 처리하는 서버라면 사용자마다 별도의 프로세스에 해당 사용자의 토큰을 주입해, 토큰이 공유되지 않도록 하세요.
PORTONE_ACCESS_TOKEN이 없으면 기존과 동일하게 브라우저 로그인 플로우로 동작합니다.
엔드포인트 오버라이드
기본적으로 MCP 서버는 PortOne 운영(prod) 환경에 연결됩니다. 아래 환경 변수를 설정하면 각 서비스 엔드포인트를 개별적으로 다른 환경(예: 내부 테스트 환경)으로 오버라이드할 수 있습니다. 설정하지 않은 항목은 운영 환경 기본값을 사용합니다.
PORTONE_CONSOLE_URL: 콘솔 (OAuth 브라우저 로그인)PORTONE_MERCHANT_SERVICE_URL: 머천트 서비스 (OAuth 토큰 교환·갱신)PORTONE_CHANNEL_SERVICE_URL: 채널 서비스 (채널 조회·추가)PORTONE_GRAPHQL_URL: GraphQL 게이트웨이 (스토어·결제·거래대사·정산)
"mcpServers": {
"portone-mcp-server": {
"command": "npx",
"args": ["-y", "@portone/mcp-server@latest"],
"env": {
"PORTONE_CONSOLE_URL": "<대상 환경 콘솔 URL>",
"PORTONE_GRAPHQL_URL": "<대상 환경 GraphQL URL>"
}
}
}오버라이드는 콘솔 기능(스토어·채널·결제·거래대사·정산 등) 호출 대상만 바꿉니다. 문서/헬프센터 조회는 환경과 무관하게 동일하게 동작합니다.
브라우저 로그인 대신
PORTONE_ACCESS_TOKEN을 함께 사용하는 경우, 오버라이드한 환경에서 발급한 토큰을 주입해야 합니다.
개발하기
요구사항
Node.js 22.6.0 이상
pnpm (권장) 또는 npm
저장소를 클론한 후 필요한 패키지 설치하기
pnpm installMCP 서버 실행 (개발 모드)
pnpm dev코드 린팅 및 포맷팅
pnpm lint pnpm format타입 체크
pnpm typecheck빌드 및 퍼블리싱
# 먼저 package.json의 version을 변경합니다. rm -rf dist pnpm install pnpm build pnpm publish로컬 환경의 MCP 서버 등록하기
"mcpServers": { "portone-mcp-server": { "command": "node", "args": [ "/your/absolute/path/to/portone-mcp-server/dist/index.js" ] } }문서 업데이트하기
요구사항:
로컬에 developers.portone.io, help.portone.io 저장소가 클론되어 있어야 합니다.
nvm (Node Version Manager) 및 노드 20, 23 버전이 설치되어 있어야 합니다.
corepack이 설치되어 있어야 합니다.
developers.portone.io 저장소에서 생성된 문서를 MCP 서버에 업데이트하려면 다음과 같이 실행합니다:
# 환경 변수를 사용하는 방법 export DEVELOPERS_PORTONE_IO_PATH="/path/to/developers.portone.io" export HELP_PORTONE_IO_PATH="/path/to/help.portone.io" pnpm update-docs # 또는 대화형으로 실행 pnpm update-docs # 프롬프트가 표시되면 developers.portone.io, help.portone.io 저장소 경로 입력이 스크립트는 다음을 수행합니다:
developers.portone.io, help.portone.io 저장소에서
pnpm docs-for-llms명령을 실행 (로컬에 설정된 브랜치 기준으로 문서 생성)MCP 서버의 docs 디렉토리를 새로 생성된 내용으로 교체
개발자센터, 헬프센터 외 일부 문서 다운로드 및 교체
Python 버전에서 마이그레이션
기존에 Python 버전(<0.13.0)의 MCP 서버를 사용하고 계셨다면 TypeScript 버전으로 마이그레이션하는 것을 권장합니다.
마이그레이션 방법
MCP 설정 변경
기존 파이썬 버전 설정:
"mcpServers": { "portone-mcp-server": { "command": "uvx", "args": ["portone-mcp-server@latest"] } }새로운 TypeScript 버전 설정:
"mcpServers": { "portone-mcp-server": { "command": "npx", "args": ["-y", "@portone/mcp-server@latest"] } }환경 변수 및 API 시크릿 설정은 동일하게 유지됩니다.
Node.js 설치: Node.js 22.6.0 이상이 필요합니다.
AI 도구 재시작: 설정 변경 후 사용 중인 AI 도구를 재시작합니다.
라이선스
Available Tools
16 toolsaddTestChannel포트원 테스트 채널 추가A
고객사의 대표상점에 공용 테스트 채널을 추가합니다.
NOTE: 반드시 listSharedTestChannels를 통해 얻은 MID를 사용하세요.
| Name | Required | Description | Default |
|---|---|---|---|
| mid | Yes | 테스트 채널의 PG사 MID | |
| manualConfirm | No | 수동 승인 사용 여부 |
Output Schema
| Name | Required | Description |
|---|---|---|
| channelKey | Yes | 추가된 채널의 채널키 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry full behavioral disclosure. It only states that the tool adds a channel, lacking details on side effects, idempotency, required permissions, or error conditions. For a mutation tool, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with two sentences: a main statement and a NOTE. It is front-loaded and efficient, though the NOTE could be integrated for better flow.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple add tool with an output schema, the description is adequate but lacks context on when to use it versus sibling tools (beyond the MID note) and does not discuss concurrency or error outcomes. The behavioral gaps lower the score.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% parameter description coverage, so the baseline is 3. The description adds minimal value beyond the schema: it reinforces the MID parameter's source but does not clarify 'manualConfirm' behavior beyond its schema description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: adding a public test channel to the merchant's representative store. The verb 'add' and resource 'test channel' are specific. It distinguishes from sibling tools like listSharedTestChannels (which retrieves MIDs) and getChannelsOfStore (which lists existing channels).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The NOTE explicitly instructs users to obtain the MID from listSharedTestChannels before using this tool, providing clear prerequisite guidance. However, it does not specify when not to use this tool or mention alternative tools for different scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getChannelsOfStore포트원 상점 내 채널 목록 조회B
고객사의 상점에 존재하는 모든 채널 정보를 가져옵니다.
| Name | Required | Description | Default |
|---|---|---|---|
| store | Yes | 채널을 검색할 상점아이디 | |
| fields | Yes | 결과로 받을 채널 정보 목록 |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | 조회된 채널 목록 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of disclosing behavior. It states the tool 'retrieves' information, implying read-only, but does not mention any side effects, rate limits, authentication requirements, or what happens if the store does not exist. This leaves significant gaps for a safe operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that conveys the core purpose without fluff. While it could benefit from a more structured format (e.g., bullet points for key details), it is not verbose and avoids redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema, return values need not be described. However, the description lacks any contextual information about when to use this tool, prerequisites (e.g., valid store ID), or how the 'fields' parameter affects the output. It is minimally adequate for a simple retrieval tool but leaves room for improvement.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters (store, fields) with descriptions. The tool description adds no additional meaning beyond what the schema provides, so it meets the baseline but does not enhance understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (get all channels) and the resource (a store's channels). The name and title reinforce this, making it easy for an agent to understand what the tool does. It is distinct from siblings like addTestChannel (create) and getPaymentsByFilter (different entity).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as addTestChannel or getPaymentsByFilter. There is no mention of prerequisites, context, or exclusion criteria, leaving the agent without decision support.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getPaymentsByFilter포트원 결제 내역 검색A
포트원 서버에서 주어진 조건을 모두 만족하는 결제 내역을 검색합니다.
Note: 소문자 imp_ 혹은 imps_ 로 시작하는 거래번호는 고객사 거래번호가 아닌 V1 포트원 거래번호(imp_uid)일 가능성이 있습니다. 날짜 및 시간 정보 입출력 시에는 반드시 타임존을 명시합니다.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | paymentId / txId / imp_uid / merchant_uid 검색 필드 | |
| pg | No | 포함할 PG사 모듈 목록 | |
| to | Yes | 조회 종료 시간 (ISO 8601 형식) | |
| from | Yes | 조회 시작 시간 (ISO 8601 형식) | |
| page | Yes | 검색할 페이지 위치입니다. 0부터 시작합니다. | |
| order | No | 결제건의 주문명 | |
| types | No | 일반 / 정기결제 여부 | |
| fields | Yes | 검색 결과로 받을 필드 목록입니다. | |
| method | No | 포함할 결제수단 목록 | |
| status | No | 포함할 결제 상태 목록 | |
| channel | No | 실연동 및 테스트 포함 목록 | |
| webhook | No | 포함할 결제건의 웹훅 상태 목록 | |
| currency | No | 포함할 통화 목록, 세 자리 통화 코드 | |
| pageSize | No | 한 페이지에 반환할 결과의 수 | |
| timeType | Yes | from, to로 제약할 결제건의 기준 시각 조건 |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | 페이지와 관계없이 조건에 맞는 결제 총 개수 |
| items | Yes | 조회된 결제 목록 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits itself. It does clarify AND semantics ('모두 만족하는') and includes two useful cautions about imp_uid identification and timezone handling. However, it does not discuss pagination behavior, rate limits, or error conditions, leaving some gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-structured: one main sentence followed by two bullet-point notes. Every sentence provides useful information, with no filler. It is front-loaded with the core purpose and followed by essential caveats.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Although the tool has 15 parameters and an output schema, the description is brief. It covers AND semantics and two caveats, but does not mention pagination defaults, how filters combine across multiple parameters, or any prerequisites. The output schema fills return-value details, but overall context feels slightly under-specified for such a complex tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds meaningful value by explaining that IDs starting with imp_/imps_ may be V1 imp_uid values, which clarifies the 'id' parameter. The timezone note directly informs the 'from' and 'to' parameters, enriching the schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it searches payment history on the PortOne server that satisfies all given conditions. The verb '검색합니다' (search) and resource '결제 내역' (payment history) are specific and distinguish it from sibling settlement or reconciliation search tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no explicit guidance on when to use this tool versus alternatives such as getReconciliationsByFilter or getSettlementSummaries. The notes about imp_uid and timezone are cautions, not usage directives. No exclusions or alternative recommendations are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getPortoneDocsUrl포트원 문서 웹 링크 조회A
포트원 개별 문서들의 경로를 통해 해당 포트원 문서의 웹으로 접근 가능한 링크를 가져옵니다.
Note: 문서가 1개뿐인 경우에는 readPortoneDoc을 사용하면 문서 내용과 메타 정보도 획득할 수 있습니다. getPortoneDocsUrl은 여러 문서의 링크를 가져올 수 있습니다.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | 읽을 포트원 문서들의 경로 목록 |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | Yes | 문서를 웹으로 접근 가능한 링크가 입력한 문서 순서대로 주어집니다. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and the description does not mention side effects, read-only nature, auth requirements, or rate limits. While 'get' suggests read-only, it is not explicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise with only two sentences and a note, front-loading the purpose. Every sentence adds value with no superfluous content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given an output schema exists (not shown) and one parameter, the description adequately explains functionality and when to use alternatives. Missing auth/behavioral context slightly lowers score.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear description of the 'path' parameter. The tool description adds no additional semantics beyond the schema, achieving baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves web-accessible links for PortOne documents given their paths, distinguishing itself from readPortoneDoc which also returns content and metadata.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The note explicitly recommends readPortoneDoc for single documents needing content, implying getPortoneDocsUrl is for links only or multiple documents. No explicit 'when not to use' but context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getReconciliationsByFilter거래대사 건별 내역 조회A
특정 하위 상점(store)의 거래대사(정산/거래 대사) 건별 내역을 조회합니다.
각 건은 다음 상태 중 하나를 가집니다: MATCHED(대사 성공), NOT_MATCHED(대사 불일치), INCOMPARABLE(대사 불가), NOT_COLLECTED(PG 정보 미수집), POST_CORRECTION(후보정) (내부적으로 구분되는 역방향 대사 불가(backward incomparable)는 INCOMPARABLE 로 합쳐져 제공됩니다.)
대사 불일치 상세는 statuses=[NOT_MATCHED] 로 조회 후 각 건의 notMatchedReasons 를 확인합니다. 대사 불가 사유는 INCOMPARABLE 건의 incomparableReason 필드에서 확인합니다. 날짜는 반드시 YYYY-MM-DD 형식으로 입력하며, dateType 으로 정산일/결제일 기준을 선택합니다. 조회 기간 제약: from 은 최근 6개월 이내여야 하고, 한 번에 조회 가능한 구간은 최대 2주입니다. store 아이디는 list_stores 도구로 먼저 조회할 수 있습니다.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | 조회 종료일 (YYYY-MM-DD) | |
| from | Yes | 조회 시작일 (YYYY-MM-DD) | |
| after | No | 이전 페이지의 마지막 커서 (endCursor 값) | |
| first | No | 조회할 건 수 (최대 100) | |
| store | No | 조회할 하위 상점 아이디. 생략하면 고객사 내 모든 하위 상점을 조회합니다. | |
| pgTxId | No | PG사 거래 아이디 검색 | |
| dateType | No | from/to 로 제약할 기준 (정산일 / 결제일) | TRANSACTION |
| statuses | No | 포함할 대사 상태 목록. 불일치 건만 보려면 [NOT_MATCHED] 로 지정합니다. | |
| orderName | No | 주문명 검색 | |
| paymentId | No | 고객사 결제 아이디 검색 | |
| actionTypes | No | 포함할 결제 상태 목록 | |
| transactionId | No | 포트원 결제 아이디 검색 | |
| paymentMethodTypes | No | 포함할 결제 수단 목록 | |
| settlementCurrencies | No | 포함할 정산 통화 목록 (세 자리 통화 코드) | |
| transactionCurrencies | No | 포함할 결제 통화 목록 (세 자리 통화 코드) |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | 조회된 거래대사 목록 |
| endCursor | Yes | 다음 페이지 조회에 사용할 커서 (after 로 전달) |
| hasNextPage | Yes | 다음 페이지 존재 여부 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Discloses statuses, how to get mismatch details (notMatchedReasons) and incomparable reasons, and the merging of backward incomparable. Missing pagination details (after, first) but overall good.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is concise yet informative, with front-loaded purpose and well-organized details. Each sentence adds value; could be slightly tighter but no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers core functionality, statuses, date constraints, and store lookup. Output schema exists so return format is handled. Missing pagination explanation but overall complete for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline 3. Description adds meaning by explaining statuses, dateType, and constraints. Adds context like using list_stores to get store ID, which is beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves transaction reconciliation details for a specific sub-store. It mentions distinct statuses and differentiates from siblings like getPaymentsByFilter (payments) and getSettlementStatistics (statistics).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear usage context: date format, query period constraints (last 6 months, max 2 weeks), and suggests using list_stores for store ID. Lacks explicit when-not-to-use alternatives but sufficient for typical use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getSettlementStatistics거래대사 정산 통계 조회A
특정 하위 상점(store)의 거래대사 정산 통계를 조회합니다.
검색 구간 내 통화별 합산 통계(정산/정산예정 금액·건수)와 일별 통계를 제공합니다. 날짜는 반드시 YYYY-MM-DD 형식으로 입력합니다. 조회 기간 제약: from 은 최근 6개월 이내여야 하고, 한 번에 조회 가능한 구간은 최대 1개월입니다. store 아이디는 list_stores 도구로 먼저 조회할 수 있습니다.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | 정산일 조회 종료일 (YYYY-MM-DD) | |
| from | Yes | 정산일 조회 시작일 (YYYY-MM-DD) | |
| store | No | 조회할 하위 상점 아이디. 생략하면 고객사 내 모든 하위 상점을 조회합니다. |
Output Schema
| Name | Required | Description |
|---|---|---|
| dailyStatistics | Yes | 일별 정산 통계 |
| rangeTotalStatistics | Yes | 검색 구간 내 통화별 합산 통계 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description effectively discloses behavioral traits: it is a read-only query, requires specific date formatting, has period constraints, and optionally filters by store. It does not mention error handling for constraint violations but covers the main behavioral aspects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured: first sentence for purpose, second for output, then format, constraints, and related tool. Every sentence adds necessary information without redundancy, making it efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that an output schema exists, the description appropriately omits return value details but mentions aggregated and daily statistics. It covers input parameters fully, including constraints and optionality. Minor gaps like error handling are acceptable for a query tool with good schema support.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already describes all 3 parameters (100% coverage). The description adds value by specifying the date format requirement, period constraints, and the suggestion to use list_stores for store IDs. It also clarifies that the store parameter is optional and defaults to all stores.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves settlement statistics for a specific sub-store, provides aggregated by currency and daily stats, and uses a specific verb '조회합니다' (retrieves). It distinguishes itself from siblings by focusing on store-level statistics, though sibling descriptions are not provided.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit usage constraints: date format (YYYY-MM-DD), period limits (from within 6 months, max 1 month), and a reference to list_stores for obtaining store IDs. It does not explicitly differentiate from similar tools like getSettlementSummaries, but the constraints are clear and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getSettlementSummaries거래대사 정산 요약 조회A
특정 하위 상점(store)의 거래대사 정산 요약을 정산일 기준 일별로 조회합니다.
각 일자별로 정산 금액/건수, PG 수수료, 취소, 후보정 합산치와 상점·PG별 상세 내역을 제공합니다. 날짜는 반드시 YYYY-MM-DD 형식으로 입력합니다. 조회 기간 제약: from 은 최근 6개월 이내여야 하고, 한 번에 조회 가능한 구간은 최대 1개월입니다. store 아이디는 list_stores 도구로 먼저 조회할 수 있습니다.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | 정산일 조회 종료일 (YYYY-MM-DD) | |
| from | Yes | 정산일 조회 시작일 (YYYY-MM-DD) | |
| after | No | 이전 페이지의 마지막 커서 | |
| first | No | 조회할 일 수 (최대 100) | |
| store | No | 조회할 하위 상점 아이디. 생략하면 고객사 내 모든 하위 상점을 조회합니다. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | 일별 정산 요약 목록 |
| endCursor | Yes | 다음 페이지 조회에 사용할 커서 |
| hasNextPage | Yes | 다음 페이지 존재 여부 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full weight. It discloses date format, range limits, pagination (after, first), and store filtering. However, it does not mention rate limits, authentication needs, or potential side effects. For a read operation, this is adequate but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is relatively concise with 6 sentences, starting with the main purpose. It is well-structured but could be slightly more streamlined without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema, the description adequately covers the typical usage scenario. It mentions the data provided (amounts, fees, cancellations, adjustments) and constraints. Could add edge cases or error conditions, but overall sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description adds value beyond the schema: it explains that store is optional and can be obtained from list_stores, and that after is for pagination. This contextual guidance enhances parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves daily settlement summaries for a specific sub-store. It names the resource (settlement summaries) and the action (retrieve). While it doesn't explicitly differentiate from siblings like getSettlementStatistics, the focus on daily summaries by settlement date distinguishes it well.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage context: date format (YYYY-MM-DD), time constraints (from within last 6 months, max 1 month range), and store retrieval via list_stores. It does not state when not to use it, but the constraints give clear guidance on valid inputs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listPortoneDocs포트원 문서 목록 조회A
특정 경로 하위에 있는 모든 포트원 문서 목록을 트리 형태로 조회합니다. 목록에는 문서 경로, 제목, 설명, 대상 버전 등 축약된 문서 정보가 포함되어 있습니다.
Returns: 필터링된 문서 목록 (각 문서의 파일명, 길이, 제목, 설명, 대상 버전 등)
Note: 문서 목록은 대량의 데이터이므로 상위 디렉토리를 조회할 경우 omitFiles를 true로 설정합니다.
| Name | Required | Description | Default |
|---|---|---|---|
| paths | No | 하위 목록을 조회할 경로들입니다. 미입력 시 전체 목록을 조회합니다. | |
| onlyPaths | No | true인 경우 문서를 제외한 디렉토리 목록만 표시하고, 디렉토리 하위에 readme.md가 있는 경우 해당 파일의 설명을 표시합니다. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description mentions tree form and returned fields, but does not disclose read-only nature, authentication, side effects, or rate limits. With no annotations, the description carries the burden but only partially fulfills it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with three sentences, but the note about omitFiles adds unnecessary confusion and could be omitted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple listing tool with no output schema, the description covers purpose, output fields, and an operational note. The inconsistency in the note slightly reduces completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with detailed parameter descriptions. The tool description adds little beyond the schema; the note about omitFiles is inconsistent with the actual parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves all PortOne documents under a specific path in tree form, distinguishing it from sibling tools that focus on URLs, single documents, schemas, or search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied for listing documents, but there is no explicit guidance on when to use this tool versus alternatives. The note about omitFiles is confusing as the parameter does not exist in the schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listStores상점 목록 조회A
포트원 계정에 연결된 대표상점 및 하위상점의 정보를 가져옵니다.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| main | No | 대표상점 |
| items | Yes | 하위상점 목록 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It only states 'gets information', implying a read-only operation, but lacks details such as whether pagination, ordering, or authentication constraints apply. This is 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the purpose. Every word is necessary and contributes to clarity. No wasted information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (no parameters, no nested objects, output schema present), the description fully captures its purpose. There is no need for additional context like return value details, as the output schema presumably covers that.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has no parameters, and schema description coverage is trivially 100%. The description adds no additional parameter meaning beyond the schema. Per the baseline rule, score is 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool retrieves information of representative and sub-stores connected to the Portone account. It uses a specific verb ('가져옵니다') and resource ('상점 정보'), distinguishing it from sibling tools like getChannelsOfStore or addTestChannel.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. The description does not mention when not to use it, nor does it reference siblings such as getChannelsOfStore which might be relevant for channel-related queries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
readPortoneDoc포트원 문서 읽기A
포트원 개별 문서의 경로를 통해 해당 포트원 문서의 내용, 메타 정보(제목, 설명, 대상 버전 등), 웹으로 접근 가능한 링크를 가져옵니다.
Note: 먼저 listPortoneDocs을 사용해 포트원 문서 목록을 확인하고, 그 중 원하는 문서의 path를 readPortoneDoc에 전달하여 내용을 확인할 수 있습니다.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | 읽을 포트원 문서의 경로 | |
| fields | Yes | 받을 필드 목록 | |
| endIndex | No | 읽어올 범위 끝 인덱스. 미설정 시 끝까지 읽어옵니다. | |
| startIndex | No | 읽어올 범위 시작 인덱스. 미설정 시 처음부터 읽어옵니다. |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | No | 문서를 웹으로 접근 가능한 링크 |
| content | No | 찾은 포트원 문서의 내용 |
| metadata | No | 찾은 포트원 문서의 메타 정보 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses that the tool retrieves content, metadata, and URL, and mentions range parameters. However, it does not explicitly state it is read-only or any caveats about access or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise: two sentences with no redundant words. It is front-loaded with the main purpose followed by usage note.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (4 params, output schema exists), the description covers the main workflow and parameter usage. It does not detail output structure or error handling, but the output schema likely accounts for that.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all parameters are already described in the schema. The description adds context about the workflow and endpoint, but does not add new parameter-level semantics beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool reads a specific PortOne document by path, returning content, metadata, and URL. It distinguishes from siblings like listPortoneDocs and regexSearchPortoneDocs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly advises to first use listPortoneDocs to get the path, then pass it to readPortoneDoc. This provides clear sequential guidance, though it does not mention when not to use or alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
readPortoneOpenapiSchema포트원 OpenAPI 스키마 읽기B
요청된 포트원 버전에서 제공하는 OpenAPI 스키마 내 특정 path의 데이터를 반환합니다.
| Name | Required | Description | Default |
|---|---|---|---|
| version | Yes | 포트원 버전 | |
| yaml_path | Yes | OpenAPI 스키마 내의 yaml path (list of strings) 키 또는 인덱스(0부터 시작)를 포함할 수 있습니다. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes | OpenAPI 스키마를 최대 depth 3으로 요약한 YAML 형식의 문자열 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description only states the action without disclosing behavioral traits (e.g., read-only nature, auth requirements, side effects). As the sole source of behavioral info, it 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence that is concise, front-loaded with key information, and contains no filler. Every word serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With output schema present, return values are covered. However, the description lacks guidance on constructing the `yaml_path` parameter (e.g., examples or format), which is critical for correct usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and description adds no extra meaning beyond what the schema already provides. The description reiterates '특정 path' but does not elaborate on parameter usage or constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it returns data for a specific path within the PortOne OpenAPI schema for a requested version, using the verb '반환' and specifying the resource. This distinguishes it from sibling tools like readPortoneOpenapiSchemaSummary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., readPortoneOpenapiSchemaSummary, getPortoneDocsUrl). No mention of prerequisites, exclusions, or context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
readPortoneOpenapiSchemaSummary포트원 OpenAPI 스키마 요약A
요청된 포트원 버전에서 제공하는 OpenAPI 스키마를 요약해 문자열로 반환합니다. 해당 요약에는 요청된 포트원 버전에서 제공하는 모든 REST API가 포함되어 있습니다.
| Name | Required | Description | Default |
|---|---|---|---|
| version | Yes | 포트원 버전 |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes | OpenAPI 스키마를 최대 depth 3으로 요약한 YAML 형식의 문자열 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full burden. It states the tool returns a string summary including all REST APIs, which is basic but lacks details on caching, performance, or format of the summary.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no wasted words, and front-loaded with the action and object.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool is simple with one parameter and an output schema (not shown but present). Description explains return type ('string') and scope ('all REST APIs'), which is sufficient for an agent to use it. Minor gap: no mention of summary format (e.g., plain text, JSON).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers the 'version' parameter with enum and description (100% coverage), baseline 3. The description adds that the summary includes all REST APIs for that version, adding meaningful context beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns a summary of the OpenAPI schema as a string for a given PortOne version. It distinguishes from the sibling 'readPortoneOpenapiSchema' which presumably returns the full schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when a summary is needed rather than the full schema, but no explicit guidance on when to use this tool vs alternatives is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
readPortoneV2BackendCode포트원 V2 백엔드 코드 예제 읽기B
지정된 매개변수에 따라 포트원 V2 백엔드 코드 예제를 가져옵니다. 포트원 V2에 관련해 어떤 상황이든 프로그래밍 언어로 코드를 작성해야 한다면, 예외 없이 가장 먼저 이 도구를 호출해 예시 코드를 참고한 후 사용자를 도우세요. framework를 제외한 모든 Args는 선택사항이며, 특정되지 않은 경우 비워두세요.
| Name | Required | Description | Default |
|---|---|---|---|
| pg | Yes | 사용할 결제 게이트웨이. 옵션: toss, nice, smartro, kpn, inicis, ksnet, kcp, kakao, naver, tosspay, hyphen, eximbay | |
| framework | Yes | 사용할 프레임워크. 일치하지 않더라도 현재 맥락에서 가장 유사한 프레임워크를 명시합니다. 옵션: express, fastapi, flask, spring-kotlin | |
| pay_method | Yes | 사용할 결제 방법. 옵션: card, virtualAccount, easyPay, transfer, mobile, giftCertificate | |
| smart_routing | No | 스마트 라우팅 사용 여부. 옵션: true 또는 false |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description only says it fetches code examples without disclosing read-only nature, side effects, or other behavioral traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with the primary action first, though the contradiction reduces clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema is provided, and the description does not explain what the code example contains or how it is structured, leaving the agent without essential usage context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds that only framework is required, but the input schema marks pg and pay_method as required, creating a contradiction that could confuse the agent.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves Portone V2 backend code examples based on parameters, and the title and sibling tool (readPortoneV2FrontendCode) differentiate it from frontend code retrieval.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly instructs to use this tool first when writing Portone V2 code, but does not mention when not to use or provide alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
readPortoneV2FrontendCode포트원 V2 프론트엔드 코드 예제 읽기B
지정된 매개변수에 따라 포트원 V2 프론트엔드 코드 예제를 가져옵니다. 포트원 V2에 관련해 어떤 상황이든 프로그래밍 언어로 코드를 작성해야 한다면, 예외 없이 가장 먼저 이 도구를 호출해 예시 코드를 참고한 후 사용자를 도우세요. framework를 제외한 모든 Args는 선택사항이며, 특정되지 않은 경우 비워두세요.
| Name | Required | Description | Default |
|---|---|---|---|
| pg | Yes | 사용할 결제 게이트웨이. 옵션: toss, nice, smartro, kpn, inicis, ksnet, kcp, kakao, naver, tosspay, hyphen, eximbay | |
| framework | Yes | 사용할 프레임워크. 일치하지 않더라도 현재 맥락에서 가장 유사한 프레임워크를 명시합니다. 옵션: html, react | |
| pay_method | Yes | 사용할 결제 방법. 옵션: card, virtualAccount, easyPay, transfer, mobile, giftCertificate | |
| smart_routing | No | 스마트 라우팅 사용 여부. 옵션: true 또는 false |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description contradicts the input schema: it claims all args except framework are optional, but schema marks pg and pay_method as required. No other behavioral traits disclosed, and no annotations provided.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is relatively concise with three sentences, but the third sentence contains inaccurate information, reducing effectiveness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema or annotations. Description fails to explain return format, language, or example structure. Incomplete for a code example tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, but description adds contradictory guidance on required fields. It does not meaningfully augment parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states that it fetches Portone V2 frontend code examples, distinguishing it from sibling tool readPortoneV2BackendCode. Title reinforces the purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly instructs to call this tool first before writing any code related to Portone V2, providing clear context. However, it does not specify when not to use or mention alternatives explicitly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
regexSearchPortoneDocs포트원 문서 정규표현식 검색A
특정 경로 하위의 포트원 문서의 내용 중 Node.js RegExp 형식의 query가 매칭된 부분을 모두 찾아 반환합니다. 정규식 기반으로 관련 포트원 문서를 찾고 싶은 경우 이 도구를 사용하며, 메타 정보와 문서 내용 모두 검색합니다.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | 결과 문자열의 페이지네이션을 위한 시작 인덱스입니다. 한 페이지의 글자 수는 limit 입니다. | |
| limit | No | 반환할 최대 문자열 길이입니다. 출력이 이 길이를 초과하면 잘리고 truncation 메시지가 추가됩니다. | |
| paths | No | 설정 시 이 경로를 접두사로 가지는 문서에서만 검색을 수행합니다. 예를 들어 OPI 문서의 경우 opi/를 입력합니다. | |
| query | Yes | Node.js RegExp 형식의 문자열을 입력해야 하며, 영어 알파벳 대소문자는 구분 없이 매칭됩니다. 절대 query에 공백을 포함시키지 마세요. 여러 키워드를 한 번에 검색하고 싶다면, 공백 대신 | 연산자를 사용하여 구분합니다. 단어 글자 사이에 공백이 있는 경우도 매칭하고 싶다면, 공백 대신 \s*를 사용하세요. | |
| contextSize | No | 0보다 큰 값을 설정할 경우, 검색 결과의 컨텍스트 크기로, 문자 수를 기준으로 합니다. 0 또는 50 정도를 추천합니다. query 매치가 발견된 시작 인덱스를 idx라고 할 때, max(0, idx - contextSize)부터 min(contentLength, idx + len(query) + contextSize) - 1까지의 내용을 반환합니다. 단, 이전 검색결과와 겹치는 컨텍스트는 병합되어 반환됩니다. | |
| showMetadata | No | true이면 문서의 메타데이터(제목, 설명, 대상 버전)을 결과에 포함합니다. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses that the tool searches both metadata and content, supports pagination (page/limit), truncation, and context extraction. However, it does not mention authorization or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences: first states the primary function, second provides usage context. No unnecessary words; efficiently conveys key information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 6 parameters and no output schema, the description covers the main purpose and mentions important aspects (path restriction, query format). It lacks details on return structure and error handling, but is adequate for a search tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The tool description adds minimal parameter-specific meaning beyond what the schema already provides, e.g., the query format and the paths prefix concept are already in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool searches for regex matches in PortOne docs under a specific path using Node.js RegExp format. It distinguishes from sibling tools like listPortoneDocs and readPortoneDoc by emphasizing regex-based search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description specifies when to use the tool: 'if you want to find relevant PortOne docs based on regex.' It does not explicitly mention when not to use or alternatives, but the context is clear.
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 tool update
v0.20.0- Changed
getPaymentsByFilter3 fields changed- changed
Input schema / properties / fields / items / enumPrevious value: -[ - "amount", - "billKey", - "channel", - "group", - "currency", - "customer", - "history", - "webhook", - "order", - "txId", - "storeId", - "schedule", - "requestAt", - "paymentId", - "method", - "amount.total", - "amount.taxFree", - "amount.vat", - "amount.supply", - "amount.dc", - "amount.cancel", - "amount.taxFreeCancel", - "amount.cardDc", - "amount.easyDc", - "amount.promotionDc", - "amount.balance", - "channel.type", - "channel.id", - "channel.key", - "channel.name", - "channel.pg", - "channel.mid", - "group.id", - "group.name", - "group.test", - "history.status", - "history.changedAt", - "history.paid", - "history.cancel" -]New value: +[ + "amount", + "billKey", + "channel", + "group", + "currency", + "customer", + "history", + "webhook", + "order", + "txId", + "storeId", + "schedule", + "requestAt", + "paymentId", + "method", + "failure", + "cancellation", + "amount.total", + "amount.taxFree", + "amount.vat", + "amount.supply", + "amount.dc", + "amount.cancel", + "amount.taxFreeCancel", + "amount.cardDc", + "amount.easyDc", + "amount.promotionDc", + "amount.balance", + "channel.type", + "channel.id", + "channel.key", + "channel.name", + "channel.pg", + "channel.mid", + "group.id", + "group.name", + "group.test", + "history.status", + "history.changedAt", + "history.paid", + "history.cancel", + "failure.reason", + "failure.pgCode", + "failure.pgMessage", + "cancellation.reason", + "cancellation.amount", + "cancellation.requestAt", + "cancellation.cancelAt", + "cancellation.trigger" +] - added
Output schema / properties / items / items / properties / cancellationAdded value: +{ + "description": "결제 취소 내역. 전체 / 부분 취소된 결제건에만 존재함.", + "items": { + "additionalProperties": false, + "properties": { + "amount": { + "description": "취소 금액", + "type": "number" + }, + "cancelAt": { + "description": "취소 완료 시각", + "type": "string" + }, + "reason": { + "description": "결제 취소 사유", + "type": "string" + }, + "requestAt": { + "description": "취소 요청 시각", + "type": "string" + }, + "trigger": { + "description": "취소 요청 주체 (CONSOLE, API, PORTONE_ADMIN, CHARGEBACK)", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" +} - added
Output schema / properties / items / items / properties / failureAdded value: +{ + "additionalProperties": false, + "description": "결제 실패 정보. 실패한 결제건에만 존재함.", + "properties": { + "pgCode": { + "description": "PG사 실패 코드", + "type": "string" + }, + "pgMessage": { + "description": "PG사 실패 메시지", + "type": "string" + }, + "reason": { + "description": "결제 실패 사유", + "type": "string" + } + }, + "type": "object" +}
3 tool updates
v1.0.1- Added
getReconciliationsByFilter - Added
getSettlementStatistics - Added
getSettlementSummaries
13 tool updates
v0.15.0- Added
addTestChannel - Added
getChannelsOfStore - Added
getPaymentsByFilter - Added
getPortoneDocsUrl - Added
listPortoneDocs - Added
listSharedTestChannels - Added
listStores - Added
readPortoneDoc - Added
readPortoneOpenapiSchema - Added
readPortoneOpenapiSchemaSummary - Added
readPortoneV2BackendCode - Added
readPortoneV2FrontendCode - Added
regexSearchPortoneDocs
TDQS
Scored across 16 tools
Several tools are related to documentation and schema access (listPortoneDocs, readPortoneDoc, regexSearchPortoneDocs, getPortoneDocsUrl, readPortoneOpenapiSchemaSummary, readPortoneOpenapiSchema) which could be confused, though their specific functions differ. Also, settlement tools (getReconciliationsByFilter, getSettlementSummaries, getSettlementStatistics) have distinct purposes but similar names.
Naming conventions are mixed: some use camelCase (getPaymentsByFilter, getReconciliationsByFilter) and others use snake_case (list_stores, addTestChannel). Also 'list' and 'get' are used interchangeably for retrieval, which is not fully consistent.
With 16 tools, the server is slightly over the ideal range but still reasonable for a payment gateway that covers both API operations and documentation. The count is justifiable given the breadth of functionality.
Core payment operations like search and settlement are covered, but there are no tools for creating or updating payments, which are essential for a payment server. Documentation tools are comprehensive, but API lifecycle coverage is incomplete.
Maintenance
Related MCP Connectors
- mcpweaveOAuthcom.mcpweave
Korea-native MCP gateway: Korean commerce, payments, messaging, gov & finance APIs for AI agents.
Provides cloud browser automation capabilities using Stagehand and Browserbase, enabling LLMs to i…
Directory of APIs, merchants, and tools AI agents can actually use.
Web search, browser automation, scraping, crawling and CAPTCHA solving for AI agents.
Related MCP Servers
- AlicenseBqualityDmaintenanceEnables LLMs to search and retrieve OwlPay documentation directly through natural language queries. Accelerates system integration by providing instant access to OwlPay API documentation and guides.1MIT
- AlicenseBqualityDmaintenanceEnables developers to search and access NicePay payment API documentation, including endpoint details, code samples, and SDK method information through natural language queries.4MIT
- AlicenseNot gradedqualityDmaintenanceEnables searching and reading of PortOne documentation, including OpenAPI schemas and product guides, through the Model Context Protocol. It allows AI agents to easily access and integrate payment-related technical specifications into their workflows.9 npmISC
- FlicenseNot gradedqualityCmaintenanceEnables AI coding tools to search and retrieve Bootpay payment and commerce developer documentation, including integration guides and customer service manuals. It facilitates tasks such as payment linking, billing key issuance, and webhook configuration through natural language queries.2-