Skip to main content
Glama

@payretailers/mcp

PayRetailers Payments API용 공식 Model Context Protocol (MCP) 서버입니다.

MCP 호환 AI 어시스턴트를 PayRetailers 통합 전문가로 바꿔줍니다. 이 서버는 공식 가이드, 전술적 스킬, 엔드포인트 레퍼런스, 통합 도구(검색, 국가별 검증, 웹훅 플레이북)를 일급 MCP 리소스, 도구, 프롬프트로 노출합니다.

Cursor, Claude Desktop, Claude Code, Windsurf, Antigravity, Zed, VS Code + Copilot, JetBrains IDEs, Continue.dev, Cline 및 stdio를 통해 MCP를 지원하는 모든 클라이언트에서 작동합니다.


왜 사용해야 하나요

이 서버를 설치하면 AI 어시스턴트가 PayRetailers에 대해 추측하는 것을 멈추고 모든 단계에서 진실의 원천을 참고하기 시작합니다.

  • 첫 시도에 올바른 코드. 어시스턴트가 각 엔드포인트의 실제 OpenAPI 형태를 읽으므로(get_endpoint_spec), 생성된 코드는 다른 PSP에서 가져온 것이 아닌 실제 필드 이름, 타입, 필수 조합을 사용합니다.

  • 처음부터 국가 인지. PIX payin을 요청하면 어시스턴트는 PIX가 브라질 전용이고, BRL을 기대하며, 유효한 11자리 CPF가 필요하고, QR 만료가 빠르다는 것을 압니다. SPEI를 요청하면 멕시코가 CURP 또는 RFC, MXN을 원하고 CLABE가 비동기적으로 프로비저닝된다는 것을 압니다. 모두 get_country_rules로 지원됩니다.

  • 샌드박스에 도달하기 전에 페이로드 검증. validate_payload는 CPF, CNPJ, RUT, DNI, RUC, CC, NIT, CURP, RFC, CLABE에 대한 실제 체크섬 검증과 교차 규칙(정수 소수 단위, HTTPS 알림 URL, 통화/국가 일치, 결제수단/국가 호환성, 멱등성 키, 고객 필수 필드 매트릭스, 구독 AmountModel 형태, PIX Automático 재시도 계약)을 실행합니다. 에디터에서 버그를 잡을 수 있으며, 400 INVALID_MODEL_SCHEMA 응답에서 잡을 필요가 없습니다.

  • 올바르게 설계된 웹훅 수신기. get_webhook_playbook은 표준 이벤트 어휘, 재시도 정책, 서명/재생 계약을 반환합니다. validate_webhook_handler는 수신기 코드를 한 줄도 작성하기 전에 가장 해로운 6가지 안티패턴(처리 후 ack, eventId 중복 제거 누락, 비즈니스 오류를 500으로 처리, 프로덕션에서 서명 비활성화, 벽시계 순서 가정, HTTPS 누락)을 잡아냅니다.

  • 어려운 흐름을 위한 슬래시 명령 프롬프트. /integrate-pix-payin, /integrate-subscriptions, /implement-webhook-handler, /integrate-payout-fx, /build-checkout, /debug-401-auth, /reconcile-with-graphql을 입력하면 선택한 스택에서 프로덕션 수준의 구현을 얻을 수 있습니다.

  • 제로 구성, 제로 네트워크, 오프라인 친화적. 모든 것이 릴리스 zip에 번들로 포함되어 있습니다. 계정, API 키, 문서에 대한 질문에 답하기 위한 아웃바운드 호출이 필요 없습니다. 자격 증명은 (계획된) simulate_transaction 도구에만 필요합니다.

내부적으로 7개의 도구, 7개의 프롬프트, 158개의 문서 리소스(가이드 + 스킬 + 레퍼런스 + 레시피 + 개념 문서)가 있으며, 모두 payretailers-ai-docs 저장소에서 그대로 미러링되었습니다.


Related MCP server: Payments Developer Portal MCP Server

노출되는 것

리소스

구조화된 LLM 친화적인 PayRetailers 문서 접근 방식입니다.

URI 패턴

반환 내용

payretailers://guide/{slug}

아키텍처, 시퀀스 다이어그램, 구현 단계, 프로덕션 체크리스트를 포함한 종단 간 통합 가이드.

payretailers://skill/{slug}

여러 엔드포인트를 결합한 작업 중심 워크플로(예: brazil-pix-payin, payout-fx-quote-flow).

payretailers://reference/{slug}

단일 API 레퍼런스 페이지(파라미터, 응답, 오류 코드).

payretailers://recipe/{slug}

일반적인 작업을 위한 짧은 코드 레시피.

payretailers://doc/{slug}

개념/문서 페이지(subscription-concepts, webhooks-and-notifications, retry-policies, automatic-scheduling, clabe-per-customer, ...).

전체 목록은 연결 시 동적으로 공지되며, 클라이언트는 리소스 선택기를 통해 탐색할 수 있습니다.

도구

LLM이 추측하는 대신 호출할 수 있는 작업입니다.

도구

기능

단계

search_docs

퍼지 매칭과 제목/슬러그 필드 가중치를 사용한 가이드, 스킬, 레퍼런스, 레시피, 개념 문서 전체 텍스트 검색.

✅ 0.1

get_country_rules

국가 + 결제수단에 대한 고객 필드, personalId 형식(CPF, DNI, CURP, CC, RUT, ...), 통화, 결제수단 제약 조건 반환.

✅ 0.2

get_test_data

주어진 국가에 대한 샌드박스 테스트 데이터(고객, 카드, PIX 키, Bre-B 키) 반환.

✅ 0.2

get_endpoint_spec

슬러그로 특정 엔드포인트의 전체 레퍼런스 페이지(파라미터, 응답, 오류 코드) 반환.

✅ 0.2

validate_payload

CPF, CNPJ, RUT, DNI, RUC, CC, NIT, CURP, RFC, CLABE에 대한 실제 체크섬 검증이 포함된 국가별 규칙에 대해 페이로드 검증. 구독 상품, 구독, 구독 결제(청구 주기, PIX_SPECIFIC 재시도 정책, 불변성)도 검증합니다. 정수가 아닌 소수 단위, 국가에 맞지 않는 통화, HTTPS가 아닌 웹훅, 결제수단/국가 불일치, 멱등성 키 누락 등을 잡아냅니다.

✅ 0.3 / 0.4

get_webhook_playbook

표준 PayRetailers 웹훅 계약: 봉투 스키마, 전체 이벤트 어휘(거래, 지급, 구독, 구독 결제), 재시도 정책, 서명/재생 지침, 상위 6가지 일반적인 실수.

✅ 0.4

validate_webhook_handler

웹훅 수신기 설계의 선언적 설명을 분석하고 기계 판독 가능한 {errors, warnings, info} 반환. 처리 후 ack, 멱등성 누락, 비즈니스 오류를 500으로 처리, 벽시계 순서 가정, 프로덕션에서 서명 비활성화를 잡아냅니다.

✅ 0.4

simulate_transaction

개발자의 환경 자격 증명을 사용하여 PayRetailers 샌드박스에 실제 요청 실행.

🚧 계획됨

프롬프트

개발자가 Cursor / Claude Desktop 등에서 /로 선택할 수 있는 바로 사용 가능한 템플릿입니다.

프롬프트

트리거 내용

단계

integrate-pix-payin

선택한 언어로 완전한 브라질 PIX payin 통합 생성.

✅ 0.1

integrate-payout-fx

5분 FX 견적 TTL 처리가 포함된 교차 통화 지급.

✅ 0.2

build-checkout

국가 인지 체크아웃: 프론트엔드 선택기 + 백엔드 엔드포인트 + 웹훅 수신기.

✅ 0.2

debug-401-auth

HTTP 401/403 진단(구독 키, Basic Auth, IP 화이트리스트, 환경 혼동).

✅ 0.2

reconcile-with-graphql

Merchant Data GraphQL API를 사용한 조정 파이프라인 구축.

✅ 0.2

implement-webhook-handler

요청된 스택, 범위, 큐 백엔드에 대한 프로덕션급 웹훅 수신기 생성. 네 가지 비타협 조건(빠른 200, eventId로 중복 제거, 엄격한 서명, 최종 상태 전에 확인 금지)을 강제합니다.

✅ 0.4

integrate-subscriptions

주어진 국가 + 채널에 대한 전체 구독 통합 생성(상품 + 활성화 + 구독 + 청구 + 재시도 + 취소).

✅ 0.4


설치

두 가지 지원 경로가 있습니다. 하나를 선택하세요:

  • 옵션 A — GitHub Releases에서 사전 빌드된 zip 다운로드 (현재 권장): npm 계정 불필요, 컴파일 불필요, 다운로드 후 완전히 오프라인으로 작동합니다. @payretailers/mcp가 아직 npm에 없는 동안 공식적으로 지원되는 배포 방식입니다.

  • 옵션 B — 소스에서 빌드: 코드를 실행하기 전에 감사(audit)하려는 기여자와 보안에 민감한 배포 환경을 위한 방식입니다.

옵션 C — npm에서 @payretailers/mcp로 설치하는 방식은 계획되어 있지만 아직 사용할 수 없습니다. 패키지가 게시되면 클라이언트별 구성 섹션의 npx -y @payretailers/mcp 스니펫이 즉시 작동합니다.

옵션 A — GitHub Releases에서 설치

사전 요구 사항: Node.js 20 이상 (node --version). 그 외에는 없습니다 — 릴리스 zip은 자체 포함(self-contained)입니다.

  1. Releases 페이지를 열고 최상위 릴리스의 "Assets" 섹션에서 최신 payretailers-mcp-vX.Y.Z.zip을 다운로드합니다.

  2. 아무 곳에나 압축을 풉니다. 일반적인 위치:

    • Windows: C:\Tools\payretailers-mcp

    • macOS / Linux: ~/tools/payretailers-mcp

  3. MCP 클라이언트에 서버를 추가합니다 (아래 클라이언트별 구성 또는 해당 섹션에 링크된 단계별 가이드 참조). 압축을 푼 폴더 안의 dist/index.js 절대 경로를 지정합니다.

  4. MCP 클라이언트를 다시 로드/재시작합니다. 서버가 다른 도구들과 함께 표시됩니다.

스크린샷과 검증 프롬프트가 포함된 단계별 설정 가이드:

연결 전후에 선택적으로 스모크 테스트를 실행할 수 있습니다 — 번들이 끝까지 정상 작동하는지 확인합니다:

cd /path/to/payretailers-mcp-X.Y.Z
node scripts/smoke-test.mjs

예상 결과: 마지막에 PASS ✅가 표시되고, 도구 7개, 리소스 158개, 프롬프트 7개, 리소스 템플릿 5개가 공지됩니다.

옵션 B — 소스에서 빌드

기여자이거나 보안 정책상 실행 전에 코드를 감사해야 하는 경우를 위한 방식입니다. 사전 요구 사항: Node.js 20 이상, git.

git clone https://github.com/payretailers-dev/payretailers-mcp.git
cd payretailers-mcp
npm install
npm run build          # generates dist/index.js (bundle + runtime deps)
npm start              # optional: run over stdio manually (Ctrl+C to stop)

data/ (Guides, Skills, Reference, Recipes, 개념 문서, 선별된 JSON)는 저장소에 포함되어 있습니다 — 동일한 머신에서 업데이트된 payretailers-ai-docs 체크아웃을 미러링하는 경우가 아니라면 npm run sync:docs를 실행할 필요가 없습니다.

그런 다음 옵션 A와 동일한 방식으로 dist/index.js를 MCP 클라이언트에 연결합니다.


클라이언트별 구성

검증 프롬프트와 문제 해결이 포함된 전체 안내를 선호하시나요? Cursor, Claude Code, Claude Desktop, VS Code + Copilot용 단계별 가이드는 docs/setup/를 참조하세요. 아래 스니펫은 클라이언트 사용법을 이미 알고 있는 경우 필요한 최소한의 JSON입니다.

모든 클라이언트는 동일한 세 가지 정보를 필요로 합니다: command(node), dist/index.js의 절대 경로를 가리키는 args 배열, 그리고 향후 simulate_transaction 도구를 위한 선택적 env 블록.

아래의 C:/Tools/payretailers-mcp/dist/index.js를 릴리스를 압축 해제한 절대 경로로 바꾸세요. Windows에서는 JSON에 슬래시(/)를 사용하세요 — 백슬래시는 이스케이프가 필요하며 혼란스러운 오류를 유발합니다.

Cursor

~/.cursor/mcp.json(전역) 또는 .cursor/mcp.json(프로젝트별)에 추가:

{
  "mcpServers": {
    "payretailers": {
      "command": "node",
      "args": ["C:/Tools/payretailers-mcp/dist/index.js"],
      "env": {
        "PAYRETAILERS_ENV": "sandbox",
        "PAYRETAILERS_SHOP_ID": "your_sandbox_shop_id",
        "PAYRETAILERS_SECRET_KEY": "your_sandbox_secret_key",
        "PAYRETAILERS_SUBSCRIPTION_KEY": "your_sandbox_subscription_key"
      }
    }
  }
}

env 블록은 선택 사항입니다 — Resources, search_docs, 모든 검증 도구는 자격 증명 없이 작동합니다.

Claude Desktop

claude_desktop_config.json에 추가:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "payretailers": {
      "command": "node",
      "args": ["C:/Tools/payretailers-mcp/dist/index.js"]
    }
  }
}

Windsurf

~/.codeium/windsurf/mcp_config.json에 추가:

{
  "mcpServers": {
    "payretailers": {
      "command": "node",
      "args": ["C:/Tools/payretailers-mcp/dist/index.js"]
    }
  }
}

VS Code + Copilot

.vscode/mcp.json(워크스페이스)에 추가하거나 명령 팔레트 → MCP: Open User Configuration으로 사용자 범위 파일을 엽니다:

{
  "servers": {
    "payretailers": {
      "type": "stdio",
      "command": "node",
      "args": ["C:/Tools/payretailers-mcp/dist/index.js"]
    }
  }
}

참고: VS Code는 예외입니다 — 루트 키가 "servers"입니다 ("mcpServers"가 아님). MCP 도구는 Copilot Chat의 Agent 모드에서만 실행됩니다.

Zed

~/.config/zed/settings.json에 추가:

{
  "context_servers": {
    "payretailers": {
      "command": {
        "path": "node",
        "args": ["C:/Tools/payretailers-mcp/dist/index.js"]
      }
    }
  }
}

Continue.dev

~/.continue/config.json에 추가:

{
  "mcpServers": [
    {
      "name": "payretailers",
      "command": "node",
      "args": ["C:/Tools/payretailers-mcp/dist/index.js"]
    }
  ]
}

JetBrains AI Assistant

Settings → AI Assistant → MCP Servers → Add를 열고 다음을 입력합니다:

  • Name: payretailers

  • Command: node

  • Arguments: C:/Tools/payretailers-mcp/dist/index.js (절대 경로)

기타 클라이언트

stdio를 통해 MCP를 지원하는 모든 클라이언트는 이 서버를 사용할 수 있습니다. node <절대-경로>/dist/index.js로 지정하면 끝입니다.

npm 사용 가능 시점

@payretailers/mcp가 npm에 게시되면 동일한 구성이 더 짧은 형식으로 작동합니다:

{ "command": "npx", "args": ["-y", "@payretailers/mcp"] }

env 변경 없음, 압축 해제된 폴더를 유지할 필요도 없습니다.


작동 확인

MCP 클라이언트를 다시 로드한 후 서버의 상태 항목에 다음과 같은 내용이 표시되어야 합니다:

도구 7개 · 리소스 158개 · 프롬프트 7개 · 리소스 템플릿 5개

  • Cursor: Ctrl+Shift+P → Customize → MCPs 탭. payretailers가 초록색 점과 함께 표시되는지 확인하고 확장합니다.

  • Claude Desktop: 새 채팅에서 도구 서랍을 확인합니다. PayRetailers 도구가 다른 MCP 도구와 함께 표시되어야 합니다.

  • VS Code / Zed / Continue.dev / Windsurf: 각 클라이언트 문서에서 MCP 상태 패널을 확인합니다.

어시스턴트가 도구를 호출하지 않는 것 같으면 프롬프트 앞에 *"PayRetailers MCP를 사용하여..."*를 붙여 한 번 강제로 호출해 보세요. 대화에서 도구를 한 번 호출하면 이후에도 계속 호출하는 경향이 있습니다.


문제 해결

서버가 시작되지 않습니다. 터미널에서 번들을 수동으로 실행합니다:

node /path/to/payretailers-mcp/dist/index.js

입력을 기다리며 조용히 대기하면 번들은 정상입니다 — 문제는 클라이언트 측에 있습니다 (구성의 경로 오타, Windows의 슬래시/백슬래시, 잘못된 프로세스 재시작). 오류가 출력되면 가장 흔한 원인은 Node < 20 (Node 업그레이드) 또는 불완전한 다운로드 (zip 재다운로드)입니다.

클라이언트에 이전 개수가 표시됩니다 (예: 도구 5개, 리소스 89개). 일부 클라이언트는 MCP 도구/리소스 목록을 캐시합니다. 클라이언트의 MCP 패널에서 서버를 OFF → ON으로 전환하거나, 구성에 사용하지 않는 env 항목(예: "MCP_VERSION": "0.4.1")을 추가하여 재시작을 강제합니다.

모델이 MCP 도구를 전혀 호출하지 않는 것 같습니다. 채팅이 Agent 모드(Ask/읽기 전용 모드가 아닌)인지 확인하세요. 일부 경량 모델은 도구 호출에 덜 적극적입니다 — 처음 호출할 때는 최상위 모델로 전환하면 어시스턴트가 나머지 대화 동안 도구를 사용할 수 있음을 기억합니다.

로그는 어디에 있나요? 모든 MCP 클라이언트에는 JSON-RPC 핸드셰이크, 파싱 오류, 서버 stderr를 캡처하는 MCP 로그 패널이 있습니다. Cursor: Ctrl+Shift+U → 드롭다운 → MCP Logs.


환경 변수

선택 사항 — 향후 simulate_transaction 도구(4단계)에만 필요합니다. 그 외 모든 것(Resources, search_docs, Prompts)은 자격 증명 없이 작동합니다.

변수

설명

기본값

PAYRETAILERS_ENV

sandbox 또는 production.

sandbox

PAYRETAILERS_SHOP_ID

판매자 포털의 Shop ID.

(설정 안 됨)

PAYRETAILERS_SECRET_KEY

HTTP Basic Auth용 Secret Key.

(설정 안 됨)

PAYRETAILERS_SUBSCRIPTION_KEY

Ocp-Apim-Subscription-Key 헤더의 값.

(설정 안 됨)

보안: 서버는 자격 증명을 로그에 기록하거나 영구 저장하지 않습니다. 세션 동안 메모리에만 존재하며 simulate_transaction을 호출할 때 api-sandbox.payretailers.com 또는 api.payretailers.com으로만 전송됩니다.


사용 예시

구성이 완료되면 AI 어시스턴트에게 자연어로 요청합니다:

"브라질에서 R$50에 대한 첫 PIX payin을 샌드박스에서 생성해 줘. Node.js를 사용해."

내부적으로 어시스턴트는 다음을 수행합니다:

  1. search_docs({ query: "pix payin brazil" }) 호출 → brazil-pix-payin 스킬 찾기.

  2. 정확한 단계를 위해 payretailers://skill/brazil-pix-payin 읽기.

  3. 올바른 엔드포인트, 헤더, 소수 단위(minor units), CPF 형식으로 실행 가능한 코드 생성.

또는 /integrate-pix-payin 프롬프트를 직접 사용하여 완전한 스캐폴딩 답변을 받을 수 있습니다.

제출 전 페이로드 검증

어시스턴트가 페이로드를 작성한 후 API를 호출하기 전에 검증할 수 있습니다:

// tools/call → validate_payload
{
  "operation": "create-transaction",
  "country": "BR",
  "method": "PIX",
  "payload": {
    "trackingId": "abc-12345678",
    "amount": 100.50,              // will be flagged: use 10050 (minor units)
    "currency": "USD",             // will be flagged: BR expects BRL
    "notificationUrl": "http://example.com/wh", // will be flagged: must be HTTPS
    "customer": {
      "firstName": "Ana",
      "lastName": "Santos",
      "email": "ana@example.com",
      "personalId": "12345678900"  // will be flagged: invalid CPF checksum
    }
  }
}

응답에는 code, severity, path, message가 포함된 모든 문제가 나열되며, 종종 hint와 suggestion도 포함됩니다 — LLM은 네트워크 왕복을 낭비하기 전에 페이로드를 수정할 수 있습니다.


개발

git clone https://github.com/payretailers-dev/payretailers-mcp.git
cd payretailers-mcp
npm install
npm run build          # generates dist/index.js
npm test               # 93 unit tests
node scripts/smoke-test.mjs   # end-to-end stdio handshake + tool calls
npm start              # optional: run the server manually on stdio

data/ (Guides, Skills, Reference, Recipes, 개념 문서, 선별된 JSON)는 저장소에 포함되어 있습니다. ../payretailers-ai-docs를 체크아웃했고 미러를 새로 고치려는 경우에만 npm run sync:docs를 실행하세요.

공식 MCP Inspector로 서버를 검사할 수 있습니다:

npx @modelcontextprotocol/inspector node dist/index.js

릴리스 (관리자용)

릴리스는 태그 푸시(v*.*.*) 시 GitHub Actions를 통해 자동화됩니다. 워크플로우:

  1. lint, typecheck, 단위 테스트, 빌드, 스모크 테스트를 실행합니다.

  2. npm run pack:release를 실행하여 release/payretailers-mcp-vX.Y.Z.zip(번들된 dist/index.js + data/ 미러 + README + LICENSE + CHANGELOG + 스모크 테스트)을 생성합니다.

  3. GitHub Release를 만들고 zip을 첨부합니다.

  4. NPM_TOKEN 저장소 시크릿이 구성된 경우에만 npm에 @payretailers/mcp로 게시합니다 — 그렇지 않으면 릴리스는 GitHub 전용입니다.

로컬에서 릴리스를 만들고 태그를 푸시하려면:

# 1. Bump version in package.json, config.ts, CHANGELOG.md
# 2. Verify locally
npm run clean && npm ci && npm test && npm run build
node scripts/smoke-test.mjs
npm run pack:release        # writes release/payretailers-mcp-vX.Y.Z.zip

# 3. Commit + tag + push
git add -A
git commit -m "chore: release vX.Y.Z"
git tag vX.Y.Z
git push origin main
git push origin vX.Y.Z      # this triggers .github/workflows/release.yml

Semver는 엄격하게 적용됩니다: 패치 릴리스는 버그 수정, 마이너 릴리스는 기존 기능을 깨지 않고 도구/프롬프트/리소스 추가, 메이저 릴리스는 이름 변경/제거에만 사용됩니다.


로드맵

  • 0.1 ✅ Resources (Guides, Skills), search_docs, integrate-pix-payin 프롬프트.

  • 0.2 ✅ Resources (Reference, Recipes), get_country_rules, get_test_data, get_endpoint_spec, 프롬프트 integrate-payout-fx, build-checkout, debug-401-auth, reconcile-with-graphql.

  • 0.3 ✅ CPF, CNPJ, RUT, DNI, RUC, CC, NIT, CURP, RFC, CLABE에 대한 실제 체크섬 검증 + 교차 규칙(소수 단위, 통화/국가, HTTPS 웹훅, 결제수단/국가, 멱등성)이 포함된 validate_payload.

  • 0.4 ✅ 개념 문서 리소스 카테고리, get_webhook_playbook, validate_webhook_handler, 구독 작업을 위한 확장된 validate_payload, 프롬프트 implement-webhook-handler, integrate-subscriptions.

  • 0.4.1 ✅ 구독 스키마 정렬 (AmountModel, frequency enum, authorizationType) — CHANGELOG.md.

  • 0.5 — simulate_transaction (샌드박스 대상 드라이런), get_error_code, 확장된 국가 커버리지.

  • 1.0 — 안정적인 공개 릴리스 + 공식 MCP 레지스트리 등재 + npm 게시.

자세한 내용은 CHANGELOG.md를 참조하세요.


관련 자료


라이선스

소스 코드: MIT. LICENSE 참조.

data/에 포함된 문서 콘텐츠(Guides, Skills, Reference, Recipes)는 payretailers-ai-docs 저장소에서 상속된 CC BY-ND 4.0에 따라 라이선스가 부여됩니다. 선별된 데이터 파일(data/country-rules.json, data/test-data.json)도 CC BY-ND 4.0으로 공개됩니다.


기여

버그 리포트와 기능 요청은 GitHub Issues를 통해 환영합니다. 커뮤니티의 풀 리퀘스트는 검토되지만 병합 여부는 PayRetailers 팀의 재량에 따릅니다 — CONTRIBUTING.md가 제공되면 참조하세요.

Available Tools

7 tools
get_country_rulesA

Return the country-specific rules for a PayRetailers integration: accepted currencies, personalId format (CPF, DNI, CLABE, RUT, ...), payment method constraints, and regulatory notes. Call this before emitting any country-specific payload.

NameRequiredDescriptionDefault
methodNoOptional payment method filter (e.g. 'PIX', 'ALIAS_CVU', 'SPEI', 'CARD', 'BRE_B'). If omitted, returns full country rules.
countryYesISO 3166-1 alpha-2 country code. Supported: BR, AR, MX, CO, CL, PE. Use uppercase.

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden and it does well: 'Return' signals a safe read, and the description discloses exactly what the response contains (currencies, personalId, constraints, notes). It adds the workflow context of calling before payload emission. It doesn't cover failure behavior for unsupported countries, but the core behavior is transparent.

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

Conciseness5/5

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

The description is two sentences of densely packed information: the purpose plus content enumeration, followed by a single directive. No filler, and the most important constraint (when to call) is placed clearly at the end.

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

Completeness5/5

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

For a simple lookup with 2 fully-documented parameters and no output schema, the description compensates well by detailing what the return value contains. The only minor omission is error handling for unsupported country codes, but the schema already lists the supported countries, so the description is complete for correct invocation.

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

Parameters3/5

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

Schema description coverage is 100%, so both 'country' and 'method' are already well documented in the schema, including the supported values and formatting rules (uppercase, ISO code). The description adds no parameter detail beyond what the schema provides, so the baseline of 3 is appropriate.

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

Purpose5/5

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

The description uses a specific verb ('Return') and resource ('country-specific rules') and enumerates the exact content: accepted currencies, personalId formats, payment method constraints, and regulatory notes. This clearly distinguishes it from siblings like search_docs and get_endpoint_spec, which serve different lookup purposes.

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 provides an explicit when-to-call directive: 'Call this before emitting any country-specific payload.' This frames the tool as a prerequisite step in the integration flow. It lacks explicit exclusions or named alternatives, but the precondition is clear and actionable.

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

get_endpoint_specA

Return the full reference page (parameters, response, error codes) for a specific PayRetailers endpoint. Use this to ground your generated code against the exact request/response schema before emitting it.

NameRequiredDescriptionDefault
sectionNo'full' returns the entire reference page. 'summary' returns just the top of the page. Default 'full'.
endpointYesEndpoint slug or logical name. Examples: 'create-transaction', 'create-payout', 'createpayoutquote', 'get-payment-methods', 'post_v1-subscriptions'. Case-insensitive.

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses what the tool returns (parameters, response, error codes), which is the core behavior. However, it doesn't mention any potential error handling, rate limits, or any side effects. As a read-only retrieval, this is acceptable but not exceptionally transparent.

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

Conciseness5/5

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

Two concise sentences. The first sentence states the core function, and the second provides usage context. No filler words, and the most critical information is front-loaded.

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?

Since there is no output schema, the description correctly explains what the response contains ('parameters, response, error codes'). It covers the essential information for a retrieval tool. The 'section' parameter is described in the schema, so no need to repeat. Slightly more could be said about expected size or format, but it is adequate.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description does not add any extra meaning beyond what the schema already documents for 'section' and 'endpoint' – it simply restates the purpose.

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 specific verb ('Return'), a clear resource ('full reference page'), and the specific content ('parameters, response, error codes'). It clearly distinguishes itself from siblings like search_docs by being the tool that retrieves a specific endpoint's spec.

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?

It provides a clear use case: 'to ground your generated code against the exact request/response schema before emitting it.' This tells the agent when to use it. It doesn't explicitly mention alternatives, but the sibling list includes search_docs, which is likely for broader searching, so 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.

get_test_dataA

Return official-shaped sandbox test data for a country: sample customers (name, email, personalId in correct format, address), test cards (approved/declined), and PIX/Bre-B keys where applicable. Use this to populate sandbox requests with realistic values instead of inventing them.

NameRequiredDescriptionDefault
countryYesISO 3166-1 alpha-2 country code. Supported: BR, AR, MX, CO, CL, PE.
sectionNoWhich section of test data to return. 'all' returns everything. Defaults to 'all'.

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description must carry the burden of behavioral disclosure. The description implies a read-only data fetch (returning data) but does not explicitly state that it makes no changes or that it is safe to call. It also does not mention error cases, rate limits, or the exact structure of the returned data. Adequate for a simple retrieval, but lacks depth given the absence of annotations.

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

Conciseness5/5

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

Two sentences with zero filler. The primary action and scope are front-loaded, followed by a concise usage recommendation. Every word earns its place; no redundancy.

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 tool with only 2 parameters, no output schema, and no nested objects, the description covers the essential information: what is returned, its purpose, and how to invoke it. It could optionally describe the response structure more explicitly, but the types of data are listed, which is sufficient for an agent to call it correctly.

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

Parameters3/5

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

Schema description coverage is 100% — both 'country' and 'section' have descriptions, including supported values and defaults. The description adds context about why these parameters matter (to populate realistic sandbox requests) but does not add syntax or format details beyond what the schema already covers. Baseline of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the verb 'Return' and the resource 'official-shaped sandbox test data for a country', enumerating the exact contents (customers, test cards, PIX/Bre-B keys). This is specific and distinct from sibling tools like get_country_rules or get_endpoint_spec, making it easy for an agent to identify this as the correct tool for generating test data.

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

Usage Guidelines4/5

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

The description explicitly says 'Use this to populate sandbox requests with realistic values instead of inventing them', which gives clear context on when to use it. It does not explicitly state when not to use it or compare to alternatives, but the purpose is clear enough that an agent would not confuse it with the sibling tools.

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

get_webhook_playbookA

REQUIRED before implementing any webhook receiver or reconciliation flow. Returns the canonical PayRetailers webhook contract: envelope schema, complete event vocabulary (transaction lifecycle: PENDING/IN_PROGRESS/APPROVED/REJECTED/CANCELLED/EXPIRED/REFUNDED/CHARGEBACK; payout lifecycle; subscription and subscription_payment events with retry semantics), HTTP response contract (200 fast / 400 no-retry / 500 retried), idempotency by eventId, replay protection, signature verification, retry policies (PIX_SPECIFIC / FIXED_RETRY / NOT_ALLOWED), and the top 6 wrong-way patterns integrators hit. Filter by category or eventType for a focused answer. Do not attempt to design a webhook handler from memory — call this tool first.

NameRequiredDescriptionDefault
categoryNoFilter events by lifecycle. 'transaction' = payin events; 'payout' = payout events; 'subscription' = subscription entity events (activation/cancellation); 'subscription_payment' = recurring charge events; 'all' (default) returns the complete catalog.
eventTypeNoFilter by a specific eventType string (e.g. 'subscription.payment', 'transaction'). Case-sensitive as declared by the API.
includeDeliveryNoInclude the delivery / retry / signature section. Defaults to true. Set to false if you only need the event vocabulary.

TDQS

A4.6/5.0
Behavior5/5

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

With no annotations, the description carries full disclosure burden. It states the tool is a read-only retrieval operation ('Returns') and details all delivered content: event vocabulary, retry policies, signature verification, etc. It does not claim any side effects or mutations. The emphasis that integrators should not rely on memory signals the tool's authoritative nature. This is sufficient behavioral transparency for a query tool.

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 long but densely packed with essential information, organized as a list of contract aspects and retry policies. The mandatory-use warning is front-loaded, and every sentence contributes value. While verbose, the complexity of webhook contracts justifies the detail; there is no redundant filler.

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

Completeness5/5

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

There is no output schema, so the description must explain the return value, and it does so extensively: it lists envelope schema, event categories, HTTP response codes, idempotency, replay protection, signature verification, retry policies, and common mistakes. It also explains parameter usage for scoping results. For a reference tool covering a complex integration surface, this is complete.

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

Parameters3/5

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

Schema description coverage is 100% and the three parameters (category, eventType, includeDelivery) are fully documented in the schema with enums and examples. The description only adds a generic suggestion to filter by category or eventType, but does not introduce new semantic meaning beyond the schema. Per the rubric, baseline 3 is appropriate when the schema handles 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 states a specific verb ('Returns') and resource ('canonical PayRetailers webhook contract') and enumerates the exact contents: envelope schema, event vocabulary, HTTP response contract, idempotency, replay protection, signature verification, retry policies, and common pitfalls. This clearly differentiates it from siblings like search_docs or get_endpoint_spec, which are generic or endpoint-specific rather than webhook-contract-specific.

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

Usage Guidelines5/5

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

The description explicitly mandates when to use the tool: 'REQUIRED before implementing any webhook receiver or reconciliation flow' and 'Do not attempt to design a webhook handler from memory — call this tool first.' It also advises filtering by category or eventType for focused answers, giving clear guidance on how to invoke it effectively. No alternatives are mentioned, but the tool is positioned as the definitive prerequisite, so exclusion guidance is unnecessary.

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

search_docsA

Search across PayRetailers Guides and Skills. Returns top matches with a short snippet. Use this before answering any integration question to ground your response in the official documentation.

NameRequiredDescriptionDefault
limitNoMaximum number of results to return. Default 10.
queryYesFree-text query. Examples: 'pix payout', 'validate cpf', 'fx quote'.
categoryNoOptional category filter. 'guide' = end-to-end tutorial. 'skill' = task-focused workflow.

TDQS

A4/5.0
Behavior3/5

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

Annotations are absent, so the description carries the full burden. It discloses the search-and-return behavior (returning matches with snippets) but does not mention permissions, rate limits, or side effects. It's adequate for a search tool but leaves notable gaps in behavioral disclosure.

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

Conciseness5/5

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

Two tightly written sentences: the first states the purpose and output, the second gives the usage directive. Every word earns its place, and the key information is front-loaded.

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 straightforward 3-parameter tool with full schema coverage and no output schema, the description supplies enough context for correct usage, including a strong usage hint. It omits details like pagination or error handling, but these are minor for a search tool.

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

Parameters3/5

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

The schema already provides 100% coverage with rich descriptions (e.g., query examples, category enum explanations, limit bounds). The description adds little beyond restating the scope, so it meets the baseline for high schema coverage.

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 a specific verb ('Search'), a distinct resource ('PayRetailers Guides and Skills'), and the output format ('top matches with a short snippet'). This effectively differentiates it from sibling tools that fetch specific data (e.g., get_endpoint_spec, get_country_rules).

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?

Provides an explicit 'when to use' directive: 'Use this before answering any integration question to ground your response in the official documentation.' This clearly signals the primary use case, but it lacks explicit mention of alternatives or when not to use the tool, so it doesn't reach a 5.

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

validate_payloadA

REQUIRED whenever the user shows or you are about to emit a JSON body for POST /transactions, POST /payouts, POST /customers, POST /v1/subscription-products, POST /v1/subscriptions, or POST /v1/subscription-payments — even if the payload looks correct. Runs the same checks a senior PayRetailers integrator would run in code review: country-specific document checksum (CPF, CNPJ, RUT, DNI, RUC, CC, NIT, CURP, RFC, CLABE), minor-units-as-string amount format, currency/country match, HTTPS notificationUrl, method/country compatibility (PIX only BR, BRE_B only CO, SPEI only MX, etc.), idempotency key length, trackingId ≤ 50 chars, customer required fields matrix (customer.ip / customer.country always; city+address in CO or card in EC/MX; zip on cards in EC/MX; phone on Boleto/Efecty/PagoEfectivo/Yape/Plin/WesternUnion-PA/African methods). For subscriptions: enforces billingCycle shape, Bacen PIX_SPECIFIC contract (maxRetries=3 / retryIntervalDays=7 fixed for BR PIX Automático), FIXED_RETRY config completeness, and authorisationJourney vocabulary (BACKGROUND / USER_INTERACTION). Returns machine-readable {errors, warnings, info} with code, path, severity, hint and often a suggestion — pipe those back into the corrected payload before you show any curl / SDK call to the user. Do not skip: a payload that 'looks fine' but hits the API returns generic 4xx errors that are far harder to interpret than the codes this tool emits.

NameRequiredDescriptionDefault
methodNoPayment method (e.g. 'PIX', 'CARD', 'SPEI', 'BRE_B', 'ALIAS_CVU'). Enables method-specific rules.
countryNoISO 3166-1 alpha-2 country code. If omitted, taken from payload.country. Determines the personalId format to validate.
payloadYesThe JSON body you're about to POST to the PayRetailers API. Pass it verbatim (no headers, just the body).
operationYesWhich PayRetailers operation the payload targets. Each operation has its own required fields.
environmentNo'sandbox' allows local/private notificationUrls (with a hint). 'production' rejects them. Default: 'sandbox'.
personalIdTypeNoExplicit personalId type. If omitted, inferred from country + value shape (e.g. BR + 11 digits → CPF).

TDQS

A4.3/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It discloses the return format ({errors, warnings, info} with code, path, severity, hint, suggestion) and warns that 'looks fine' payloads still need validation—setting expectations that the tool may catch issues even when the user thinks they're correct. It does not explicitly state non-behavior like 'does not make API calls' or 'no side effects', but the description implies a read-only validation function. It adds substantial context beyond the schema, justifying a 4.

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

Conciseness3/5

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

The description is very long, though it front-loads the critical usage note ('REQUIRED whenever') and structures the validations as a list. Every sentence adds useful detail, but it could be more concise by grouping related checks. For a tool with high complexity, the length is defensible, but it is not tightly packed—several clauses could be trimmed without loss of meaning.

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

Completeness5/5

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

Given the tool's complexity (6 parameters, nested objects, many validation rules) and the absence of an output schema, the description is remarkably complete. It covers all the inputs' roles, the full set of validations, the output structure, and why skipping is risky. An agent would have everything needed to decide whether and how to call it correctly.

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

Parameters3/5

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

Schema description coverage is stated as 100%, so the baseline is 3. The description reinforces parameter roles (e.g., 'operation' selects the rule set, 'environment' affects notificationUrl checks, 'personalIdType' inference) but adds no new parameter info beyond what the schema already describes. It does contextualize why parameters matter, but not enough to exceed baseline.

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 specific, actionable purpose: validating JSON payloads for a defined set of PayRetailers POST endpoints. It enumerates the exact operations and lists the specific validation checks (CPF/CNPJ checksums, amount format, currency/country match, etc.), making the tool's function unambiguous and distinct from sibling tools like search_docs or get_endpoint_spec.

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

Usage Guidelines5/5

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

Explicitly states when the tool is REQUIRED ('REQUIRED whenever... even if the payload looks correct') and explains why (generic 4xx errors are hard to interpret). It also directs the user to pipe the returned errors/warnings back into the payload, effectively telling them the expected workflow. No exclusions or alternatives are mentioned, but the tool is clearly the primary validator for these operations.

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

validate_webhook_handlerA

REQUIRED whenever the user is designing, describing, or about to code a webhook receiver for PayRetailers — even if the design looks fine. Analyses a declarative description of the handler (URL, processing mode, ack strategy, idempotency, signature verification, replay protection, error mapping, ordering assumptions) against the PayRetailers contract and returns {errors, warnings, info} with actionable codes. Catches the top failure modes: acknowledging AFTER processing (times out and gets retried), returning 500 on business errors (infinite retries), missing eventId de-duplication (double-fulfilment), assuming wall-clock order (state corruption), HTTPS missing, signature disabled in production, replay window absent. Pair with get_webhook_playbook when designing from scratch.

NameRequiredDescriptionDefault
urlYesThe public URL that will receive PayRetailers webhook POSTs.
orderingNoWhether the handler relies on wall-clock order of events for the same entityId. Real deliveries can arrive out-of-order; a handler that assumes order will corrupt state.
ackStrategyYesWhen the handler returns 200: 'before-processing' (recommended), 'after-processing' (blocks retries but risks timeouts), 'conditional-on-outcome' (dangerous: business errors trigger retries).
environmentNoDeployment target for this handler. Defaults to 'sandbox'.
ipAllowlistNoOptional IP allowlist. NOT sufficient by itself — always combine with signature verification.
errorHandlingNoHow the handler maps internal exceptions to HTTP status. Business errors ('order not found') should NOT return 500 — that triggers infinite retries.
processingModeYesHow the handler processes the event: 'sync-in-request' = all business logic runs before returning 200; 'async-queue' = enqueue and return 200 immediately (recommended); 'async-thread' = fire-and-forget in-process background thread.
languageOrStackNoOptional stack hint (e.g. 'C# ASP.NET 8', 'Node.js Express', 'Python FastAPI'). Only used to sharpen suggestions.
replayProtectionNoOptional replay protection based on eventDate. Recommended: enabled=true with maxAgeMinutes=5.
idempotencyStrategyYesHow duplicate deliveries are de-duplicated. 'by-eventId' is the required strategy.
signatureVerificationYesHow the handler treats the PayRetailers webhook signature. 'strict' = reject on mismatch (recommended); 'log-only' = log and continue; 'disabled' = no verification (only acceptable for sandbox).
idempotencyStoreTtlDaysNoHow long processed eventIds are retained. Recommended >= 30 days to survive replay attempts and backlogs.
responseTargetLatencyMsNoExpected p95 latency of your endpoint in milliseconds. PayRetailers targets < 3000 ms for the 200 ack.

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It clearly states the return structure ({errors, warnings, info} with actionable codes) and the specific failure modes it catches (acknowledging after processing, returning 500 on business errors, missing idempotency, etc.), giving an agent a concrete mental model of what the tool will do. It does not go into output detail beyond that, but for a static-analysis/validation tool this is adequate; a 4 is warranted because it is explicit and actionable without being exhaustive.

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 longer than typical but every sentence earns its place: the usage directive is front-loaded, the evaluation scope is itemized, and the failure-mode list is concrete and useful. The only slight inefficiency is the duplication of some schema-derived concepts (like the retry risks), but overall it's tightly packed with high-signal guidance rather than 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?

Given the tool's complexity (13 parameters, 6 enums, nested objects, no output schema), the description is remarkably complete. It states the contract (payload fields), the output format, the key failure modes, and even mentions pairing with a related tool. It could include an example of the 'actionable codes', but the description's coverage of usage, scope, and behavior is sufficient for an agent to decide whether to call it and roughly what to provide.

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

Parameters3/5

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

Schema description coverage is 100% — every parameter has a substantive description (e.g., ackStrategy explains the three options and warns about 'conditional-on-outcome', idempotencyStrategy says 'by-eventId' is required). The tool description itself adds only a few high-level hints (like the list of failure modes that map to parameters) but does not go beyond what the schema already explains. Since the schema does the heavy lifting, the baseline 3 is appropriate; the description reinforces but does not add new parameter-specific meaning.

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 names a specific verb ('Analyses') and a precise resource ('a declarative description of the handler... against the PayRetailers contract') and enumerates the exact inputs (URL, processing mode, ack strategy, etc.) and the output shape ({errors, warnings, info}). It also distinguishes itself from the sibling get_webhook_playbook by naming it explicitly, leaving no ambiguity about which tool fits a design-from-scratch task.

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

Usage Guidelines5/5

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

The opening word 'REQUIRED' plus the explicit trigger condition ('whenever the user is designing, describing, or about to code a webhook receiver') makes the when-to-use unmistakable. It also states an alternative ('Pair with get_webhook_playbook when designing from scratch') and even cautions that the tool is needed 'even if the design looks fine', closing off the common excuse of skipping validation.

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.4.1
    • First observedget_country_rules
    • First observedget_endpoint_spec
    • First observedget_test_data
    • First observedget_webhook_playbook
    • First observedsearch_docs
    • First observedvalidate_payload
    • First observedvalidate_webhook_handler

TDQS

A4.4/5.0

Scored across 7 tools

Disambiguation5/5

Each tool targets a distinctly different aspect of the integration workflow: searching docs, retrieving country-specific rules, fetching test data, getting endpoint schemas, validating payloads, validating webhook handlers, and retrieving webhook playbook. There is no overlap in purpose, and descriptions make boundaries crystal clear.

Naming Consistency5/5

All tool names follow a consistent verb_noun snake_case pattern (search_docs, get_country_rules, validate_payload, etc.). No mixed conventions or ambiguous verbs appear, making the set predictable and easy to navigate.

Tool Count5/5

With 7 tools, the server is well-scoped for its purpose as a PayRetailers integration assistant. Each tool earns its place—offering documentation search, country rules, test data, endpoint specs, payload validation, webhook validation, and webhook playbook—without unnecessary bloat.

Completeness5/5

The tool surface comprehensively covers the core integration lifecycle: grounding in docs, country-specific rules, sandbox test data, endpoint schemas, payload validation, and webhook design/validation. It addresses the primary pain points integrators face, leaving no obvious gaps for common tasks.

Maintenance

ActivityStale
ResponsivenessNo recent community issues

Related MCP Connectors

Related MCP Servers