Tunzaa MCP Server
OfficialTunzaa MCP 서버
AI 기반 결제 통합을 위한 그라운딩(Grounding)
Tunzaa MCP 서버는 커뮤니티를 위해 구축된 개발자 중심 도구입니다. 이 서버는 AI 에이전트(바이브 코더)가 Tunzaa 생태계를 위한 완벽하고 환각 없는 통합 코드를 생성할 수 있도록 고충실도 그라운딩 데이터, 통합 문서, "골든" 코드 패턴을 제공합니다.
🚀 빠른 시작 (가장 빠른 방법)
복제하거나 종속성을 설치할 필요 없이 GitHub에서 직접 서버를 실행할 수 있습니다.
1. Claude Desktop
claude_desktop_config.json에 다음을 추가하세요:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"tunzaa": {
"command": "npx",
"args": ["-y", "github:Tunzaa/tunzaa_mcp"]
}
}
}2. Cursor
Settings -> Features -> MCP로 이동합니다.
+ Add New MCP Server를 클릭합니다.
Name:
Tunzaa| Type:command| Value:npx -y github:Tunzaa/tunzaa_mcp
3. Windsurf
~/.codeium/config.json에 다음을 추가하세요:
{
"mcpServers": {
"tunzaa": {
"command": "npx",
"args": ["-y", "github:Tunzaa/tunzaa_mcp"]
}
}
}Related MCP server: MCP Midtrans Documentation Server
🧭 바이브 코딩 워크플로우
이 서버는 몇 분 안에 Tunzaa 통합을 구축할 수 있도록 설계되었습니다. AI 어시스턴트와 함께 다음 흐름을 따르세요:
그라운딩: 이 MCP 서버를 프로젝트에 추가합니다.
탐색: AI에게 다음과 같이 요청합니다: "Tunzaa 리소스를 나열하고 인증 가이드를 읽어줘."
시뮬레이션: 도구를 실행합니다:
create_demo_shop을 사용하여 성공적인 통합의 실시간 추적을 확인합니다.생성: AI에게 다음과 같이 요청합니다: "그라운딩 추적과 node-express 예제를 바탕으로 내 앱을 위한 결제 페이지를 만들어줘."
🏪 그라운딩 "데모 샵"
create_demo_shop 도구는 이 플랫폼의 핵심입니다. 단순히 데이터를 반환하는 것이 아니라 **실시간 그라운딩 추적(Live Grounding Trace)**을 제공합니다.
사용 방법:
시뮬레이션 트리거: AI 에이전트에게 다음과 같이 말합니다: "Tunzaa create_demo_shop 도구를 실행해서 결제 흐름을 이해해줘."
추적 검토: 에이전트는 인증, 결제 시작, 할부 생성을 포함한 일련의 호출 순서를 받게 됩니다.
프로덕션 구현: 추적의 각 단계에는 에이전트가 실제 코드에서 상태, 헤더, 참조 ID를 처리하는 방법을 알려주는 "그라운딩 인사이트"가 포함되어 있습니다.
보일러플레이트: 에이전트에게 다음과 같이 요청합니다: "문서 리소스에서 찾은 모범 사례를 사용하여 그라운딩 추적을 [Node/Python/PHP] 구현으로 변환해줘."
✨ 기능
통합 문서: AI 에이전트가 MCP 리소스를 통해 인증, 결제, 웹훅에 대한 가이드를 직접 "읽을" 수 있습니다.
골든 패턴: Express.js, React Hooks 등을 위한 내장 코드 스니펫.
바이브 코더 최적화: 풍부한 스키마 설명과 교육용 추적(
create_demo_shop을 통해)으로 환각 제로 보장.기본 모의 모드: 실제 Tunzaa API 구조와 일치하는 "골든" 모의 데이터를 생성합니다.
라이브 모드(선택 사항): Tunzaa 샌드박스/프로덕션에 대한 실시간 검증.
🛠️ 사용법 (라이브 모드)
AI가 Tunzaa 계정의 실제 데이터를 검증하게 하려면(예: 거래 상태 확인), 구성의 env 블록에 자격 증명을 추가하세요:
"env": {
"TUNZAA_API_KEY": "your_api_key",
"TUNZAA_SECRET_KEY": "your_secret_key",
"TUNZAA_ENVIRONMENT": "sandbox"
}🏗️ 로컬 개발
서버에 기여하거나 수정하려면 다음을 수행하세요:
git clone https://github.com/Tunzaa/tunzaa_mcp.gitcd tunzaa_mcp && pnpm install && pnpm run build구성에서 로컬 경로를 사용하세요:
"args": ["/ABSOLUTE/PATH/TO/tunzaa_mcp/dist/index.js"]
라이선스
ISC
Available Tools
10 toolscreate_demo_shopB
The ultimate grounding tool. Executes a full sequence of Tunzaa API calls (Token -> Payment -> Installments). Use this to see a 'live trace' of the API, allowing you to generate perfect integration code.
| Name | Required | Description | Default |
|---|---|---|---|
| api_url | No | Optional URL to simulate the Tunzaa environment for grounding. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. While it mentions executing a sequence of API calls and generating a 'live trace', it doesn't disclose important behavioral aspects: whether this creates persistent data, what authentication is required, whether it's idempotent, what side effects occur, or what the output format looks like. The description provides some context about the multi-step nature but misses critical operational details.
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 appropriately concise with two sentences that each serve a distinct purpose: the first explains what the tool does, the second explains when to use it. There's no redundant information or unnecessary elaboration. The structure could be slightly improved by front-loading the core functionality more clearly, but overall it's efficient.
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 this is a multi-step API execution tool with no annotations and no output schema, the description is insufficiently complete. It doesn't explain what the tool actually creates (despite the name 'create_demo_shop'), what the output looks like, what errors might occur, or important behavioral constraints. For a tool that presumably orchestrates multiple API calls with potential side effects, more comprehensive documentation is needed.
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% description coverage, with the single parameter 'api_url' clearly documented as 'Optional URL to simulate the Tunzaa environment for grounding.' The description doesn't add any meaningful parameter semantics beyond what the schema already provides - it doesn't explain when to use the api_url parameter, what values are valid, or how it affects the execution. Baseline 3 is appropriate when schema coverage is complete.
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 states the tool 'executes a full sequence of Tunzaa API calls (Token -> Payment -> Installments)', which provides a clear high-level purpose. However, it doesn't specify what resource is being created (a 'demo shop' as implied by the name) or differentiate from sibling tools like 'initiate_payment' or 'get_token' that handle individual steps. The phrase 'ultimate grounding tool' is vague marketing language rather than functional specification.
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 states 'Use this to see a 'live trace' of the API, allowing you to generate perfect integration code', which provides clear context about when this tool should be used (for API exploration and code generation). However, it doesn't mention when NOT to use it or explicitly contrast with sibling tools that handle individual API steps, leaving some ambiguity about alternative approaches.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_installmentB
Create a new installment plan. Use this to understand the complex object structure required for installment-based payments.
| Name | Required | Description | Default |
|---|---|---|---|
| customer | Yes | ||
| name | Yes | The name of the item or plan (e.g., 'Samsung S24 Ultra - 12 Month Plan'). | |
| description | Yes | Brief description of the product or service being financed. | |
| total_amount | Yes | The total price of the item to be paid in installments. | |
| payment_frequency | Yes | How often the customer will make payments. | |
| start_date | Yes | The date of the first installment payment (YYYY-MM-DD). | |
| end_date | Yes | The expected completion date for all payments (YYYY-MM-DD). | |
| custom_interval | No | Number of days between installments if frequency is 'custom'. | |
| address | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions 'complex object structure,' hinting at input complexity, but fails to disclose critical traits: whether this is a write operation (implied by 'create'), permission requirements, side effects (e.g., database changes), error handling, or response format. For a mutation tool with zero annotation coverage, this is a significant gap.
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 appropriately sized with two sentences that are front-loaded: the first states the purpose, and the second adds context. There's no wasted text, but the second sentence could be more actionable (e.g., specifying key parameters). It's efficient but not perfectly structured for maximum 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?
Given the complexity (9 parameters, nested objects, no output schema, and no annotations), the description is incomplete. It doesn't address the mutation nature, potential side effects, error scenarios, or what happens after creation (e.g., returns a plan ID). For a tool with high parameter count and no structured safety hints, more context is needed to guide effective use.
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 78% (high), so the baseline is 3 even with no parameter info in the description. The description adds minimal value beyond the schema by noting 'complex object structure,' but doesn't explain parameter interactions (e.g., 'custom_interval' depends on 'payment_frequency') or provide examples. It compensates slightly but not enough to raise the score.
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 purpose: 'Create a new installment plan.' It specifies the action (create) and resource (installment plan), which is specific and unambiguous. However, it doesn't differentiate from sibling tools like 'edit_installment_plan' or 'initiate_payment,' which would require explicit comparison for a score of 5.
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 implied usage guidance: 'Use this to understand the complex object structure required for installment-based payments.' This suggests it's for creating plans with structured data, but it lacks explicit when-to-use rules, alternatives (e.g., vs. 'edit_installment_plan'), or exclusions. No misleading information is present, but guidance is minimal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_installment_planC
Cancel/Delete an existing installment plan. Use this to verify the cancellation response structure.
| Name | Required | Description | Default |
|---|---|---|---|
| plan_id | Yes | The numeric ID of the plan to cancel/delete. | |
| address | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that the tool performs a cancellation/deletion (implying a destructive mutation) and mentions verifying the response structure, but lacks critical behavioral details: it doesn't specify if the deletion is reversible, what permissions or authentication are required, any rate limits, side effects (e.g., impact on related payments), or error handling. For a mutation tool with zero annotation coverage, this is a significant gap in transparency.
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, front-loading the primary action ('Cancel/Delete an existing installment plan.') and following with a secondary purpose. There is no wasted text, but the second sentence about verifying response structure feels somewhat disconnected and could be integrated more smoothly. Overall, it's efficient but not perfectly structured.
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 complexity (a destructive mutation with 2 parameters, 50% schema coverage, no output schema, and no annotations), the description is incomplete. It lacks details on behavioral traits, full parameter meanings, output expectations, and usage context. The mention of response structure verification is insufficient to cover these gaps, making it inadequate for safe and effective agent use.
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 50% (only 'plan_id' has a description). The description adds no parameter-specific information beyond what the schema provides—it doesn't explain the 'address' parameter or provide additional context for 'plan_id'. With low schema coverage, the description fails to compensate for undocumented parameters, resulting in minimal added value. The baseline is adjusted downward due to the coverage gap, but the description doesn't worsen it.
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 purpose with specific verbs ('Cancel/Delete') and identifies the resource ('an existing installment plan'). It distinguishes from siblings like 'edit_installment_plan' and 'get_installment_plan' by focusing on removal rather than modification or retrieval. However, it doesn't explicitly differentiate from all siblings (e.g., 'create_installment' is for creation, but this is implied).
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 minimal guidance: it states to use this tool for cancellation/deletion, but offers no context on when to use it versus alternatives (e.g., when not to delete, prerequisites like plan status). It mentions verifying the cancellation response structure, which hints at a testing use case, but this is vague and doesn't clarify operational scenarios. No explicit when/when-not or alternative tool references are included.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
edit_installment_planC
Update an existing installment plan. Use this to understand which fields are mutable via the Tunzaa API.
| Name | Required | Description | Default |
|---|---|---|---|
| plan_id | Yes | The numeric ID of the plan to modify. | |
| updates | Yes | A map of fields to update (e.g., {'description': 'New description'}). | |
| address | No |
TDQS
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 states this is an update operation, implying mutation, but doesn't cover critical aspects like required permissions, whether changes are reversible, rate limits, error handling, or what the response entails. The mention of 'mutable via the Tunzaa API' adds some context but is insufficient for a mutation tool.
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, front-loading the core purpose. However, the second sentence about 'mutable via the Tunzaa API' could be more integrated or omitted if it doesn't add actionable guidance, slightly reducing efficiency.
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 of a mutation tool with 3 parameters, no annotations, no output schema, and incomplete parameter coverage, the description is inadequate. It fails to provide necessary context on behavior, usage, or output, leaving significant gaps for an AI agent to operate effectively.
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 67% (2 out of 3 parameters have descriptions). The description adds minimal value beyond the schema, as it doesn't explain parameter meanings, constraints, or examples beyond the schema's details for 'plan_id' and 'updates'. The 'address' parameter lacks documentation in both schema and description, but the baseline is 3 due to moderate schema coverage.
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 ('Update') and resource ('an existing installment plan'), making the purpose evident. However, it doesn't explicitly differentiate from sibling tools like 'create_installment' or 'delete_installment_plan', which would require more specific context about when to use each.
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 minimal guidance, mentioning only that it's for updating plans and referencing the Tunzaa API for mutable fields. It lacks explicit when-to-use instructions, alternatives (e.g., vs. create_installment), prerequisites, or exclusions, leaving usage context unclear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_installment_planB
Get details of a specific installment plan. Use this to see the precise fields returned for a plan (status, schedules, etc.).
| Name | Required | Description | Default |
|---|---|---|---|
| plan_id | Yes | The unique numeric ID of the installment plan. | |
| address | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions that the tool returns details like 'status, schedules, etc.,' but does not disclose critical behavioral traits such as whether it's a read-only operation, authentication requirements, error handling, or rate limits. This leaves significant gaps for an AI agent to understand how to use it safely and effectively.
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 and well-structured, consisting of two sentences that efficiently convey the tool's purpose and usage. Every sentence adds value without redundancy, making it easy to parse and understand quickly.
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 moderate complexity (2 parameters, no output schema, no annotations), the description is minimally adequate. It explains what the tool does but lacks details on behavioral aspects, parameter usage, and output format. Without annotations or an output schema, more context would be helpful for the AI agent to use the tool correctly.
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 50% description coverage (only 'plan_id' is described). The description does not add any parameter-specific information beyond what the schema provides. It implies the tool retrieves details for a 'specific installment plan,' which aligns with the 'plan_id' parameter, but does not explain the purpose of the 'address' parameter or provide additional context. With moderate schema coverage, the baseline score of 3 is appropriate.
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 purpose: 'Get details of a specific installment plan.' It specifies the verb ('Get') and resource ('installment plan'), and mentions the type of details returned ('status, schedules, etc.'). However, it does not explicitly differentiate from sibling tools like 'list_installments' or 'get_payment_status,' which slightly reduces clarity.
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 implied usage guidance: 'Use this to see the precise fields returned for a plan.' This suggests it's for retrieving detailed information about a specific plan, but it does not explicitly state when to use this tool versus alternatives like 'list_installments' or 'get_payment_status,' nor does it mention prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_payment_statusB
Check the status of a payment transaction. Helpful for understanding the various status states (COMPLETED, PENDING, FAILED) for your application logic.
| Name | Required | Description | Default |
|---|---|---|---|
| transactionID | Yes | The 'transactionID' previously returned by 'initiate_payment'. | |
| address | No |
TDQS
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 mentions the tool checks status and lists possible states (COMPLETED, PENDING, FAILED), which gives some context about expected behavior. However, it lacks details on permissions, rate limits, error handling, or whether it's idempotent, which are important for a payment-related tool. The description does not contradict annotations, but it's insufficient for full transparency.
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 that efficiently convey the tool's purpose and utility. It is front-loaded with the main action ('Check the status...') and avoids unnecessary details. However, it could be slightly more structured by explicitly separating usage guidance from purpose, but overall it's well-sized with minimal waste.
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 no annotations, no output schema, and moderate schema coverage, the description provides basic purpose and status context but lacks completeness. It does not explain return values, error cases, or dependencies (e.g., requiring a valid 'transactionID' from 'initiate_payment'), which are crucial for effective tool use. The description is adequate as a starting point but has clear gaps for a payment status 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 50% (only 'transactionID' has a description). The description does not add meaning beyond the schema, as it does not explain parameters like 'address' or provide additional context for 'transactionID'. Since schema coverage is moderate, the baseline is 3, but the description fails to compensate for the undocumented 'address' parameter, leaving gaps in 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 tool's purpose with a specific verb ('Check') and resource ('status of a payment transaction'), distinguishing it from siblings like 'initiate_payment' (which creates payments) and 'get_installment_plan' (which retrieves plan details). It explicitly mentions the tool helps understand status states, which adds clarity about its informational role.
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 by stating it's 'helpful for understanding the various status states... for your application logic,' suggesting it should be used to monitor payment outcomes. However, it does not explicitly state when to use this tool versus alternatives (e.g., vs. 'handle_callback' for real-time updates) or provide exclusions, leaving some ambiguity in context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_tokenA
Retrieve a Tunzaa access token. Refreshes internal token automatically. Use this to verify your API credentials and see the internal token structure.
| Name | Required | Description | Default |
|---|---|---|---|
| address | No | Optional override for the Tunzaa API base URL. |
TDQS
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 effectively describes key behaviors: the tool retrieves an access token, automatically refreshes internal tokens, and serves for credential verification and token structure inspection. It doesn't mention side effects, error conditions, or performance characteristics, but covers the core operational behavior adequately for a simple retrieval tool.
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 extremely concise (three sentences) with zero wasted words. Each sentence adds distinct value: the core function, an important behavioral detail (automatic refresh), and usage context. It's front-loaded with the primary purpose and efficiently structured.
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 low complexity (one optional parameter, no output schema, no annotations), the description is reasonably complete. It explains what the tool does, key behavior (automatic refresh), and primary use cases. For a simple token retrieval tool, this provides sufficient context, though it could benefit from mentioning response format or error handling.
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% description coverage, with one optional parameter ('address') fully documented in the schema. The description adds no parameter-specific information beyond what the schema provides. According to the rules, when schema_description_coverage is high (>80%), the baseline is 3 even with no param info in the description, which applies here.
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 purpose with specific verbs ('retrieve', 'refreshes') and identifies the resource ('Tunzaa access token'). It distinguishes from siblings by focusing on authentication tokens rather than payment/installment operations. However, it doesn't explicitly contrast with other authentication-related tools since none are listed among siblings.
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 implied usage context ('verify your API credentials', 'see the internal token structure'), suggesting this is for authentication validation and debugging. However, it lacks explicit guidance on when to use this versus alternatives (e.g., whether to call this before other operations) or any exclusion criteria. The mention of 'refreshes internal token automatically' hints at a maintenance use case but isn't framed as explicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
handle_callbackB
Simulate or handle the callback payload sent by Tunzaa to your webhook. Essential for grounding your webhook integration code with real payload examples.
| Name | Required | Description | Default |
|---|---|---|---|
| transaction_id | Yes | The unique Tunzaa transaction ID sent in the webhook. | |
| status | Yes | The final status of the payment (e.g., 'COMPLETED', 'FAILED', 'CANCELLED'). | |
| reference_id | No | Your system's unique order reference. | |
| amount | No | The amount confirmed by the provider. | |
| payment_date | No | The date the payment was completed. | |
| timestamp | No | UNIX timestamp of the event. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It mentions 'simulate or handle' which suggests both testing and production use, but doesn't clarify whether this is a read-only operation, if it modifies data, what permissions are needed, or what the response looks like. For a tool with no annotation coverage, this leaves significant behavioral 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 two concise sentences that efficiently convey the tool's purpose and value. The first sentence states what it does, the second explains why it's useful. There's no wasted verbiage or redundant 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 no annotations and no output schema, the description provides adequate basic purpose but lacks important behavioral context for a tool that appears to handle webhook payloads. It doesn't explain what happens after simulation/handling, whether there are side effects, or what the agent should expect as a result. For a 6-parameter tool in a payment system context, more completeness would be helpful.
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 fully documents all 6 parameters. The description doesn't add any parameter-specific information beyond what's in the schema (e.g., it doesn't explain format details or provide examples). With complete schema coverage, the baseline score of 3 is appropriate.
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 purpose: 'Simulate or handle the callback payload sent by Tunzaa to your webhook.' It specifies the verb ('simulate or handle') and resource ('callback payload'), but doesn't explicitly differentiate from sibling tools like 'get_payment_status' or 'initiate_payment' which handle different aspects of the payment flow.
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 some usage context: 'Essential for grounding your webhook integration code with real payload examples.' This implies it's used for testing or development with webhooks, but doesn't explicitly state when to use it versus alternatives like 'get_payment_status' for checking status directly, or provide clear exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
initiate_paymentB
Initiate a payment request (M-Pesa, etc.) via Tunzaa. Call this to inspect the response structure needed to implement mobile money flows in your local code.
| Name | Required | Description | Default |
|---|---|---|---|
| customer_msisdn | Yes | Customer phone number in local format (e.g., 0744550667). Essential for Mobile Money push. | |
| amount | Yes | Transaction amount as a string to avoid precision issues (e.g., '5000'). | |
| reference | Yes | Unique order reference from your system. Used to match callbacks. | |
| address | No | Optional override for API base URL. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It mentions the tool is for initiating payments and inspecting response structures, but it doesn't disclose critical behavioral traits like whether this is a live transaction or demo, authentication requirements, rate limits, error handling, or what happens after initiation (e.g., callback triggering). For a payment tool with zero annotation coverage, this is a significant gap.
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 appropriately sized with two sentences. The first sentence states the purpose clearly, and the second provides usage context. There's no wasted text, and it's front-loaded with the core function. However, the second sentence could be more direct about tool usage rather than focusing on code implementation.
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 of a payment initiation tool with no annotations and no output schema, the description is incomplete. It lacks details on behavioral aspects (e.g., transaction effects, security), doesn't explain the response structure mentioned, and provides minimal guidance on usage. For a tool that likely involves financial transactions, this is inadequate despite the good schema coverage.
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 all 4 parameters thoroughly. The description doesn't add any parameter-specific semantics beyond what's in the schema (e.g., it doesn't explain format details for 'customer_msisdn' or 'reference' beyond the schema's descriptions). With high schema coverage, the baseline score of 3 is appropriate as the description doesn't compensate with extra insights.
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 purpose: 'Initiate a payment request (M-Pesa, etc.) via Tunzaa.' It specifies the action (initiate) and resource (payment request) with platform context (Tunzaa). However, it doesn't explicitly differentiate from sibling tools like 'get_payment_status' or 'handle_callback' beyond the 'initiate' verb.
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 implied usage guidance: 'Call this to inspect the response structure needed to implement mobile money flows in your local code.' This suggests it's for development/testing purposes, but it doesn't explicitly state when to use this vs. alternatives like 'get_payment_status' or provide clear exclusions. The context is somewhat clear but lacks explicit alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_installmentsA
List existing installment plans. Use this to see how pagination and plan summaries are returned by the Tunzaa API.
| Name | Required | Description | Default |
|---|---|---|---|
| from | No | Starting index for pagination. | |
| limit | No | Number of plans to return per page. | |
| address | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that the tool returns paginated results and plan summaries, which is useful behavioral context. However, it doesn't cover other aspects like rate limits, authentication needs, or error handling, leaving gaps for a read 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 two sentences with zero waste, front-loading the core purpose and efficiently adding usage context. Every word earns its place, making it highly concise and well-structured.
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 read tool with 3 parameters, 67% schema coverage, and no output schema, the description provides basic purpose and behavioral hints but lacks details on return format, error cases, or the 'address' parameter. It's minimally adequate but has clear gaps given the 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 67% (2 out of 3 parameters have descriptions). The description adds no parameter-specific information beyond what the schema provides, such as explaining the 'address' parameter. Baseline is 3 since the schema does moderate lifting, but the description doesn't compensate for the undocumented 'address' parameter.
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 verb ('List') and resource ('existing installment plans'), making the purpose unambiguous. It distinguishes from siblings like 'get_installment_plan' by indicating it returns multiple plans rather than a single one, though it doesn't explicitly name alternatives.
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 for viewing pagination and plan summaries, suggesting it's for browsing multiple plans. However, it doesn't explicitly state when to use this vs. alternatives like 'get_installment_plan' for single plans or provide exclusions, leaving some ambiguity.
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.
10 tool updates
v1.0.0- First observed
create_demo_shop - First observed
create_installment - First observed
delete_installment_plan - First observed
edit_installment_plan - First observed
get_installment_plan - First observed
get_payment_status - First observed
get_token - First observed
handle_callback - First observed
initiate_payment - First observed
list_installments
TDQS
Scored across 10 tools
Each tool has a clearly distinct purpose targeting specific resources and actions in the Tunzaa API workflow, such as token retrieval, payment initiation, installment plan management, and callback handling. There is no overlap or ambiguity between tools, making it easy for an agent to select the correct one based on the task.
All tool names follow a consistent verb_noun pattern with clear, descriptive actions like 'create', 'get', 'list', 'edit', 'delete', 'initiate', and 'handle'. The naming is uniform throughout, using snake_case consistently without any deviations or mixed conventions.
With 10 tools, the server is well-scoped for its purpose of demonstrating and interacting with the Tunzaa API. Each tool serves a specific, necessary function in the payment and installment workflow, avoiding bloat while covering core operations from authentication to transaction management.
The tool set provides complete coverage of the Tunzaa API domain, including token management, payment initiation and status checks, full CRUD operations for installment plans, and webhook callback handling. There are no obvious gaps, ensuring agents can handle the entire integration lifecycle without dead ends.
Maintenance
Related MCP Connectors
Stripe payments for AI agents. Create links, verify, manage customers.
Let AI agents add Yolfi crypto checkout, paylinks, webhooks, and status checks.
Pakistan payments for AI agents — Safepay checkout via Safepay. Never holds funds.
Tanzania payments for AI agents — M-Pesa / Tigo Pesa via Flutterwave. Never holds funds.
Related MCP Servers
- FlicenseNot gradedqualityNot gradedmaintenanceEnables AI agents to interact with multiple payment providers (Stripe, Paystack) through a unified API. Supports payment initialization, verification, refunds, customer management, and invoicing without requiring knowledge of specific provider implementations.2-
- AlicenseAqualityDmaintenanceEnables AI agents to integrate Midtrans payments by providing comprehensive documentation, API references, and code examples for 15+ payment methods across 5 languages. Includes tools for generating charge requests, webhook handlers, and searching documentation without requiring API keys.91MIT

Afro.tools MCP Serverofficial
AlicenseNot gradedqualityBmaintenanceProvides AI agents with structured, verified specs for African APIs like Wave and Paycard, enabling automatic integration code generation without manual documentation parsing.20Apache 2.0- AlicenseNot gradedqualityDmaintenanceEnables AI agents to test Cashfree payment integrations end-to-end by creating orders, simulating payments, listening to webhooks, and verifying signatures via MCP tools.MIT