Skip to main content
Glama
MyFatoorah MCP

MyFatoorah MCP

by kuwaitdevs

MyFatoorah MCP

MyFatoorah API를 위한 LLM 친화적인 Model Context Protocol 서버입니다. Claude, VS Code, Cursor 및 기타 MCP 호스트가 전용 도구를 통해 결제 수단을 탐색하고, 결제 링크를 생성하고, 결제를 검증하고, 청구서를 조회하고, 환불을 관리할 수 있게 해줍니다.

이는 공식 MyFatoorah 제품이 아닌 독립적인 커뮤니티 프로젝트입니다. 라이브 계정을 사용하기 전에 샌드박스에서 테스트하세요.

단계별 호스트 설정, Inspector 테스트, 에이전트 프롬프트, 결제 검증, 환불 및 문제 해결에 대한 자세한 내용은 사용 가이드를 참조하세요.

요구 사항

  • Node.js 20 이상

  • 사용하는 도구에 필요한 권한만 가진 MyFatoorah API 토큰

Related MCP server: pai

설정

npm install
cp .env.example .env
npm run build

MCP 호스트의 환경에서 MYFATOORAH_API_TOKEN을 설정하세요. 서버는 .env 파일을 자동으로 로드하지 않지만, VS Code 디버그 구성은 로드합니다.

환경 변수

변수

필수 여부

기본값

설명

MYFATOORAH_API_TOKEN

예 (API 호출 시)

—

Bearer 토큰. 에이전트 프롬프트에 노출하지 마세요.

MYFATOORAH_ENVIRONMENT

아니요

test

test, kuwait, uae, saudi_arabia, qatar 또는 egypt

MYFATOORAH_BASE_URL

아니요

환경 URL

지원되는 MyFatoorah 배포 또는 테스트 프록시용 HTTPS 재정의

MYFATOORAH_TIMEOUT_MS

아니요

30000

1~300000ms 사이의 요청 제한 시간

쿠웨이트는 바레인, 요르단, 오만의 공용 API 오리진도 포함합니다. 다중 국가 계정은 국가별로 별도의 토큰을 사용합니다.

MCP 호스트 연결

호스트 구성에서는 절대 경로를 사용하세요. /absolute/path/to/myfatoorah-mcp와 토큰 자리 표시자를 로컬에서 교체하세요.

Claude Desktop

Claude Desktop의 MCP 구성에 이 서버를 추가하세요:

{
  "mcpServers": {
    "myfatoorah": {
      "command": "node",
      "args": ["/absolute/path/to/myfatoorah-mcp/dist/index.js"],
      "env": {
        "MYFATOORAH_API_TOKEN": "YOUR_TOKEN",
        "MYFATOORAH_ENVIRONMENT": "test"
      }
    }
  }
}

구성을 저장한 후 Claude Desktop을 다시 시작하세요.

Claude Code

프로젝트 범위 구성은 .mcp.json을 사용할 수 있습니다(토큰이 포함된 경우 커밋하지 마세요):

{
  "mcpServers": {
    "myfatoorah": {
      "type": "stdio",
      "command": "node",
      "args": ["/absolute/path/to/myfatoorah-mcp/dist/index.js"],
      "env": {
        "MYFATOORAH_API_TOKEN": "YOUR_TOKEN",
        "MYFATOORAH_ENVIRONMENT": "test"
      }
    }
  }
}

VS Code / GitHub Copilot

포함된 .vscode/mcp.json은 빌드된 서버를 실행하고 토큰을 안전하게 입력하도록 요청합니다. 한 번 빌드하고, MCP 서버 보기를 연 다음 myfatoorah를 시작하세요. 토큰은 저장소에 저장되지 않습니다.

Cursor 및 일반 stdio 호스트

Claude Desktop 예시와 동일한 command, args, env 값을 사용하세요. MCP 프로토콜 메시지는 stdin/stdout을 사용하며, 서버 진단 메시지는 stderr를 사용해야 합니다.

npm에 게시한 후에는 호스트가 npx -y myfatoorah-mcp로 대신 실행할 수 있습니다.

도구

도구

효과

용도

myfatoorah_get_payment_methods

읽기 전용

활성화된 결제 수단과 해당 ApiName 값 목록

myfatoorah_create_payment

데이터 생성

POST /v3/payments로 호스팅 결제 또는 청구서 링크 생성

myfatoorah_get_payment

읽기 전용

PaymentId로 공식 결제 세부 정보 조회

myfatoorah_get_invoice

읽기 전용

InvoiceId 또는 외부 식별자로 청구서 조회

myfatoorah_create_refund

파괴적

전체 또는 부분 환불 생성. confirm: true 필요

myfatoorah_get_refund

읽기 전용

RefundId로 환불 세부 정보 조회

myfatoorah_api_request

상황에 따라 다름

상대 /v2/ 또는 /v3/ 경로용 제한된 탈출구. 변경 작업에는 확인 필요

서버는 또한 다음을 제공합니다:

  • 리소스 myfatoorah://configuration: 환경, 기본 URL, 제한 시간 및 토큰 구성 여부 — 토큰 자체는 절대 포함하지 않습니다.

  • 프롬프트 create-payment-safely: 재사용 가능한 안내형 결제 링크 워크플로입니다.

성공한 도구는 간결한 텍스트 요약과 MyFatoorah 응답이 포함된 기계 판독 가능한 structuredContent를 반환합니다.

안전한 결제 워크플로

  1. myfatoorah://configuration을 읽고 테스트 환경과 라이브 환경을 확인하세요.

  2. 게이트웨이를 선택하는 경우 myfatoorah_get_payment_methods를 호출하고 해당 ApiName을 사용하세요.

  3. 금액, 통화, 고객, 알림 방법 및 콜백 URL을 확인하세요.

  4. myfatoorah_create_payment을 호출하고 고객에게 해당 PaymentURL을 제공하세요.

  5. 콜백 후 반환된 PaymentId로 myfatoorah_get_payment을 호출하세요. 리다이렉트는 결제 증거가 아닙니다. 청구서 상태 PAID와 거래 상태 SUCCESS를 요구하세요.

환불은 라이브 모드에서 실제 자금을 이동시킵니다. confirm: true를 전달하기 전에 정확한 PaymentId와 금액에 대한 명시적인 사용자 승인을 받으세요.

개발

npm run format
npm run lint
npm run typecheck
npm test
npm run build
npm run inspect

npm run inspect는 컴파일된 stdio 서버를 대상으로 공식 MCP Inspector를 시작합니다. VS Code에는 빌드/테스트 작업과 디버그 구성도 포함되어 있습니다.

테스트는 모든 MyFatoorah 요청을 모의(mock) 처리하며, 네트워크 호출을 하지 않고 토큰도 필요하지 않습니다.

보안

  • 최소 권한의 MyFatoorah API 키를 사용하고 정기적으로 교체하세요.

  • 자격 증명은 호스트 환경이나 비밀 관리자에 두고, 소스 제어나 모델 컨텍스트에는 절대 두지 마세요.

  • 일반 요청 도구는 자격 증명 유출을 방지하기 위해 절대 URL, 프로토콜 상대 URL, 경로 탐색 및 /v2/와 /v3/ 외부의 경로를 거부합니다.

  • API 오류와 Bearer 값은 모델에 도달하기 전에 마스킹됩니다.

  • 지원되는 변경 작업에는 멱등성 키를, 안정적인 주문 식별자를 우선 사용하세요.

  • 이 stdio 프로세스를 인증되지 않은 네트워크 서비스로 노출하지 마세요.

  • 직접 카드 처리는 의도적으로 전용 도구로 모델링하지 않았으며, PCI 규정 준수가 필요합니다.

API 범위 및 참조

전용 도구는 2026년 8월 기준 MyFatoorah의 문서화된 v3 경로를 사용합니다:

  • GET /v3/payment-methods

  • POST /v3/payments

  • GET /v3/payments/{paymentId}

  • GET /v3/invoices/{invoiceId}

  • GET /v3/invoices/externalIdentifier/{externalIdentifier}

  • POST /v3/refunds

  • GET /v3/refunds/{refundId}

참조:

라이선스

MIT

Available Tools

7 tools
myfatoorah_api_requestAdvanced MyFatoorah API requestA
Destructive

Escape hatch for documented MyFatoorah v2/v3 endpoints not covered by another tool. Accepts only safe relative /v2/ or /v3/ paths and GET, POST, or PUT. Absolute URLs are blocked so credentials cannot be sent elsewhere. POST/PUT require confirm=true.

NameRequiredDescriptionDefault
bodyNo
pathYesRelative path beginning with /v2/ or /v3/.
methodNoGET
confirmNoMust be true for POST or PUT.
idempotencyKeyNo

Output Schema

NameRequiredDescription
responseYes

TDQS

A4.4/5.0
Behavior5/5

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

Beyond the annotations, the description discloses substantial behavioral constraints: only safe relative /v2/ or /v3/ paths are accepted, only GET/POST/PUT methods, absolute URLs are blocked to prevent credential exfiltration, and POST/PUT require confirm=true. These align with (and add detail to) the destructiveHint=true annotation; no contradiction.

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?

Four short sentences, each earning its place: purpose first, then method/path constraints, then the safety rationale, then the mutation gate. No filler or 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?

With an output schema present, return values need no explanation, and the annotations plus description cover the safety profile well. The remaining gaps are body format and idempotencyKey usage guidance, which an agent needs for correct POST/PUT invocations, but the core contract is otherwise fully specified.

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

Parameters3/5

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

Schema coverage is only 40%, so the description carries part of the burden. It adds real value for path (relative-only, absolute URLs blocked) and reinforces the confirm gate, but it leaves body format and idempotencyKey semantics completely unexplained — meaningful gaps for a generic request tool. The POST/PUT confirm requirement merely restates the schema's confirm description.

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

Purpose5/5

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

The description states a specific purpose — an escape hatch for documented MyFatoorah v2/v3 endpoints — and explicitly scopes it to endpoints 'not covered by another tool,' which differentiates it from the six sibling tools that cover specific payment/invoice/refund operations. The resource (MyFatoorah API endpoints) and scope (only uncovered endpoints) are unambiguous.

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 gives a clear selection criterion: use this tool only when a documented endpoint is not covered by another tool. This implies sibling tools should be preferred for their respective operations, though it does not name them explicitly or give a when-not-to-use example.

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

myfatoorah_create_paymentCreate MyFatoorah payment or invoice linkA

Creates a payment/invoice using POST /v3/payments. In a live environment this creates a real payable invoice. Omit paymentMethod to show all enabled methods; use notificationOption for invoicing. The returned PaymentURL is where the customer pays.

NameRequiredDescriptionDefault
amountYesPayment amount; must be greater than zero.
advancedNoAdditional documented v3 request fields. Explicit fields above take precedence.
currencyNoDisplay currency. Defaults to the account base currency.
customerNo
languageNo
suppliersNo
webhookUrlNoPer-payment webhook URL.
paymentExpiryNoUTC ISO-8601 expiration time.
paymentMethodNoApiName from myfatoorah_get_payment_methods; omit to show enabled methods.
idempotencyKeyNo
redirectionUrlNoCustomer return URL after payment.
userDefinedFieldsNo
externalIdentifierNo
notificationOptionNo
displayPaymentMethodsNo

Output Schema

NameRequiredDescription
responseYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already establish that this is not read-only and not idempotent; the description adds the crucial consequence that in live environments it creates a real payable invoice, and the PaymentURL is the customer-facing payment destination. This is exactly the kind of real-world context needed for a financial write operation, and there is no contradiction with 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?

Four short sentences, each contributes a distinct fact: endpoint, live consequence, key parameter behaviors, and result URL. No filler and purpose 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 complex 15-parameter financial tool, the description supplies the essential operational context: live invoice risk, payment-method behavior, invoicing mode, and customer payment URL. The schema and output schema cover most parameter and return details, so the remaining gaps around idempotency and sandbox behavior are not fatal.

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

Parameters3/5

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

Schema description coverage is only 47%, so the description should compensate for under-documented parameters. It does add useful meaning for paymentMethod (omit to show enabled methods) and notificationOption (invoicing), but other fields like idempotencyKey, suppliers, and displayPaymentMethods receive no extra explanation, leaving gaps.

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

Purpose5/5

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

Description opens with a specific verb ('Creates') and resource ('payment/invoice') plus the exact endpoint POST /v3/payments. It also states the key outcome ('real payable invoice' in live, PaymentURL for customer), which clearly distinguishes it from the get/refund sibling tools.

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

Usage Guidelines4/5

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

It gives clear operational guidance: omit paymentMethod to surface all enabled methods, and use notificationOption for invoicing. The live-environment warning frames when the call has real financial effect, though it does not explicitly name sibling alternatives, so it stops short of a 5.

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

myfatoorah_create_refundCreate a MyFatoorah refundA
Destructive

Creates a real full or partial refund using POST /v3/refunds. This moves money in live environments. Call only after the user explicitly approves the exact PaymentId and amount; confirm must be true.

NameRequiredDescriptionDefault
amountYes
commentNo
confirmYesMust be true after explicit user approval.
paymentIdYes
idempotencyKeyNo
externalIdentifierNo
supplierRefundedAmountNo
serviceChargeOnCustomerNo

Output Schema

NameRequiredDescription
responseYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already mark destructiveHint=true/readOnlyHint=false, but the description adds non-redundant context: the refund is 'real', moves money in live environments, and requires explicit user approval of exact PaymentId and amount. No contradiction with 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 tight sentences: the first states the action and risk, the second provides the mandatory approval guard. There is no filler or redundant restatement of schema content.

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 output schema and destructive annotations, the description covers the essentials: what it does, that it moves real money, and the safety precondition. It could additionally mention duplicate/retry behavior since idempotentHint=false, but for a refund creation call this is a minor gap.

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

Parameters3/5

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

Schema description coverage is only 13%, so the description must compensate. It adds meaning for the required parameters: 'full or partial' explains amount and 'confirm must be true' restates the approval gate. However, it does not help with the five optional parameters such as idempotencyKey, supplierRefundedAmount, or serviceChargeOnCustomer, so compensation is incomplete.

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?

States it creates a real full or partial refund via POST /v3/refunds, a specific verb+resource that is clearly distinct from create_payment and get_refund among siblings. 'Moves money in live environments' reinforces what operation this is.

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?

Gives an explicit call condition ('only after the user explicitly approves the exact PaymentId and amount; confirm must be true'), which tells an agent when it is safe to invoke a destructive refund. It does not name sibling alternatives such as get_refund for verification, so it lacks explicit exclusions or alternative routing.

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

myfatoorah_get_invoiceGet MyFatoorah invoiceA
Read-onlyIdempotent

Gets an invoice by exactly one lookup type. Invoice ID uses /v3/invoices/{value}; external identifier returns the most recent matching invoice and uses /v3/invoices/externalIdentifier/{value}.

NameRequiredDescriptionDefault
valueYesInvoice ID or merchant-provided external identifier.
lookupByYes

Output Schema

NameRequiredDescription
responseYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior. The description adds useful behavioral detail beyond that, particularly the exact endpoint routing and the fact that external identifier lookup returns the most recent matching invoice. No contradiction with 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 no filler. The purpose is front-loaded, and each clause carries distinct information: the lookup constraint, the invoice-ID path, and the external-identifier path with its recency behavior.

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?

The tool has only two parameters, an output schema, and annotations covering safety and idempotence. The description provides the remaining necessary operational details, including endpoints and the semantics of external identifier lookups, so an agent has everything needed to call it correctly.

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

Parameters4/5

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

Schema description coverage is only 50%, with lookupBy having no description beyond its enum. The description compensates by mapping lookupBy values to specific endpoint paths and clarifying that externalIdentifier resolves to the most recent matching invoice, adding meaning beyond the schema.

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

Purpose5/5

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

The description states a specific action, 'Gets an invoice', and precisely defines the two lookup modes with endpoint paths. The resource (invoice) is clearly distinct from sibling tools that retrieve payments, refunds, or payment methods, so an agent can select it without ambiguity.

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 clearly conveys when this tool is appropriate: when an invoice needs to be retrieved by exactly one lookup type. It does not explicitly name alternatives or exclusion conditions, but the sibling tools are organized by resource, making the intended context evident.

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

myfatoorah_get_paymentGet MyFatoorah payment detailsA
Read-onlyIdempotent

Gets authoritative payment details by PaymentId using GET /v3/payments/{paymentId}. Treat payment as successful only when Invoice.Status is PAID and Transaction.Status is SUCCESS.

NameRequiredDescriptionDefault
paymentIdYesPaymentId from a callback or payment response.

Output Schema

NameRequiredDescription
responseYes

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds valuable behavioral context beyond annotations: it is authoritative, uses a specific GET endpoint, and defines the exact success criteria (Invoice.Status = PAID and Transaction.Status = SUCCESS). No contradiction with 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 concise sentences with no filler. The first sentence front-loads the action, resource, and endpoint, while the second delivers the critical success rule. Every sentence earns its place.

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

Completeness4/5

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

The tool is simple with a single parameter, high schema coverage, rich annotations, and an output schema. The description covers the essential success logic and authoritative nature, making it complete enough for correct invocation. It could be slightly stronger with an explicit pointer to sibling tools, but this is not essential for a read-only getter.

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

Parameters3/5

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

Schema coverage is 100%, with paymentId documented as 'PaymentId from a callback or payment response.' The description mentions 'by PaymentId' but adds no additional semantic detail beyond what the schema provides, so it meets the baseline without exceeding it.

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

Purpose4/5

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

Description states a specific verb ('Gets'), resource ('payment details'), and identifier ('PaymentId'), with a direct API endpoint. It is distinct from siblings by focusing on payment details, but it does not explicitly differentiate itself from myfatoorah_get_invoice, which could be confused for a closely related operation.

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

Usage Guidelines3/5

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

The description implies usage: use this tool when you have a PaymentId and need authoritative payment details, especially to verify success. However, it gives no explicit guidance on when to prefer this over siblings like myfatoorah_get_invoice or myfatoorah_api_request, nor any exclusions.

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

myfatoorah_get_payment_methodsGet MyFatoorah payment methodsA
Read-onlyIdempotent

List payment methods enabled for this account. Read ApiName from the result and pass it as paymentMethod when creating a hosted payment.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
responseYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already cover read-only, idempotent, open-world, and non-destructive behavior. The description adds value by scoping results to the current account and by disclosing that the output contains an ApiName field that must be reused. This is useful behavioral context beyond what annotations provide.

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 tight sentences with no filler. The first states the core action and scope; the second provides a concrete next step. 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.

Completeness5/5

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

For a zero-parameter read-only listing tool with a full output schema and extensive annotations, the description covers the action, the account scoping, and the downstream usage of the result. Nothing critical is missing 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.

Parameters4/5

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

The tool has zero parameters, so the baseline is 4. The description does not need to explain parameter semantics, and the schema coverage is 100% by definition.

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 and resource: 'List payment methods enabled for this account.' This clearly distinguishes it from the create/get/refund siblings, and the second sentence explains how the result is used downstream.

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 gives clear contextual guidance: call this to discover payment methods, then read ApiName and pass it as paymentMethod when creating a hosted payment. It does not explicitly list exclusions or alternative tools, but the workflow context is sufficient given the sibling operations are quite different.

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

myfatoorah_get_refundGet MyFatoorah refund detailsA
Read-onlyIdempotent

Gets a refund by RefundId using GET /v3/refunds/{refundId}. Refund statuses include Refunded, Canceled, and Pending.

NameRequiredDescriptionDefault
refundIdYes

Output Schema

NameRequiredDescription
responseYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already convey read-only, idempotent, non-destructive behavior. The description adds meaningful context beyond those hints by naming the HTTP endpoint and listing possible refund statuses (Refunded, Canceled, Pending), which helps the agent interpret results. No contradiction with 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 no filler: the first front-loads the action and endpoint, the second adds useful status context. Every word earns its place.

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

Completeness4/5

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

The tool is a simple read operation, annotations cover safety, and an output schema exists so return-value documentation is unnecessary. The description is complete enough for correct invocation; only usage-vs-alternatives context is lightly missing.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate. It does so by identifying refundId as the RefundId used for lookup and tying it to the URL path. For a single, self-named parameter this is sufficient additional meaning beyond the raw schema.

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

Purpose5/5

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

The description states a specific verb ('Gets'), the resource (a refund), the lookup key (RefundId), and the exact endpoint (GET /v3/refunds/{refundId}). This clearly distinguishes it from sibling tools like myfatoorah_get_payment and myfatoorah_get_invoice.

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

Usage Guidelines3/5

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

The description implies the tool is used when you have a RefundId and need refund details, but it does not explicitly discuss when to prefer this over sibling tools such as myfatoorah_get_payment, myfatoorah_get_invoice, or myfatoorah_create_refund. No exclusions or alternatives are named.

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.1.0
    • First observedmyfatoorah_api_request
    • First observedmyfatoorah_create_payment
    • First observedmyfatoorah_create_refund
    • First observedmyfatoorah_get_invoice
    • First observedmyfatoorah_get_payment
    • First observedmyfatoorah_get_payment_methods
    • First observedmyfatoorah_get_refund

TDQS

A4.2/5.0

Scored across 7 tools

Disambiguation5/5

Each core tool targets a distinct resource and action: payment methods, payments, invoices, and refunds are clearly separated. The api_request escape hatch is explicitly scoped to endpoints not covered by the other tools, so it complements rather than overlaps with them.

Naming Consistency4/5

Six tools consistently follow the myfatoorah_verb_noun pattern, which is predictable and readable. The only deviation is myfatoorah_api_request, a noun-style escape hatch, which is a minor exception rather than a systemic inconsistency.

Tool Count5/5

Seven tools is well-scoped for a payment-focused server: it covers payment methods, payment creation/retrieval, invoice retrieval, refund creation/retrieval, plus one generic escape hatch. Every tool earns its place, and the count is neither bloated nor too thin.

Completeness4/5

The set covers the core payment workflow: create payment, check payment status, retrieve invoice, create refund, and check refund status. It lacks explicit cancel/update/list operations, but the api_request escape hatch covers documented endpoints not individually modeled, so agents are not left with a hard dead end.

Maintenance

ActivityStale
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables AI agents to manage API keys and child keys with budgets and spending caps, set plans and model routing, handle wallet payments and top-ups, and verify signed receipts through MCP tools.
    265 npm
    2
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Enables AI agents to perform and manage payments through the Model Context Protocol, including paying, checking balances and history, registering bots, setting spending limits, discovering supported networks and tokens, inspecting commissions, and managing bot pools. It also supports governed tool calls with policy decisions, human approval, and tamper-evident audit traces.
    12
    7 npm
    Apache 2.0