monapay-mcp
OfficialMCP server giúp AI agent hoặc lập trình viên tích hợp MONA Pay ngay trong IDE: quản lý tài khoản, nối ngân hàng, tạo VietQR, tra giao dịch, cấu hình webhook và kiểm chữ ký.
Kiểm tra kết nối và hồ sơ tài khoản (monapay_whoami, monapay_me)
Nối tài khoản ACB và tạo tài khoản ảo qua OTP (monapay_link_bank_start/verify_otp, monapay_notification_register/verify_otp)
Liệt kê tài khoản ngân hàng và tài khoản ảo (monapay_list_bank_accounts, monapay_list_virtual_accounts)
Tạo và huỷ VietQR động cho đơn hàng (monapay_create_qr, monapay_cancel_qr)
Tra giao dịch tiền vào theo VA để đối soát (monapay_list_transactions)
Quản lý webhook: tạo, sửa, xoá, danh sách (monapay_create/update/delete/list_webhooks)
Bắn thử webhook, xem lịch sử gửi và thống kê thành công/P95 (monapay_test_webhook, monapay_webhook_logs, monapay_webhook_stats)
Gửi lại thông báo webhook/Telegram cho giao dịch (monapay_retry_transaction)
Tạo client_secret mới và kiểm chữ ký HMAC-SHA256 ngay tại chỗ (monapay_generate_key, monapay_verify_signature)
Lấy code mẫu nhận webhook PHP/Node/Python (monapay_generate_webhook_snippet)
Truy cập tài liệu dạng markdown qua resource monapay://docs/...
Allows triggering or retrying MONA Pay transaction notifications sent via Telegram.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@monapay-mcpCreate a VietQR code for order #12345 and check if the webhook was received."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
monapay-mcp — MCP server cho MONA Pay
MONA Pay là cổng thanh toán và API ngân hàng của The MONA Group, giúp doanh nghiệp Việt Nam nhận và xác nhận tiền chuyển khoản theo thời gian thực qua tài khoản ảo (VA), VietQR, webhook, Telegram, email và nhóm Zalo, thiết kế để cả lập trình viên lẫn AI agent tích hợp trong vài phút. Miễn phí hoàn toàn, tiền không đi qua MONA Pay.
monapay-mcp cho Claude Code, Cursor, Codex (hoặc bất kỳ client MCP nào) gọi thẳng MONA Pay ngay trong lúc code: tạo VietQR cho đơn, tra giao dịch, cấu hình và bắn thử webhook, kiểm chữ ký HMAC, lấy code mẫu nhận webhook. Không cần rời IDE.
Cài đặt
Cần Node ≥ 18 và một tài khoản MONA Pay (đăng ký xong dùng ngay, không cần duyệt): https://my.monapay.vn/auth?mode=register
npx monapay-mcp # chạy server qua stdioBiến môi trường:
Biến | Bắt buộc | Ý nghĩa |
| có (khuyến nghị) | client_id của API key tạo trong dashboard |
| có (khuyến nghị) | client_secret hiện một lần; dùng lấy OAuth token và ký quyền cho lệnh ghi |
| cách cũ | tên đăng nhập MONA Pay; chỉ dùng khi không có client credentials |
| cách cũ | mật khẩu; tài khoản bật 2FA không dùng được cách này |
| không | mặc định |
Claude Code
claude mcp add monapay \
-e MONAPAY_CLIENT_ID=client_id_cua_anh_chi \
-e MONAPAY_CLIENT_SECRET=client_secret_cua_anh_chi \
-- npx -y monapay-mcpCursor (.cursor/mcp.json)
{
"mcpServers": {
"monapay": {
"command": "npx",
"args": ["-y", "monapay-mcp"],
"env": { "MONAPAY_CLIENT_ID": "client_id", "MONAPAY_CLIENT_SECRET": "client_secret" }
}
}
}Codex (~/.codex/config.toml)
[mcp_servers.monapay]
command = "npx"
args = ["-y", "monapay-mcp"]
env = { MONAPAY_CLIENT_ID = "client_id", MONAPAY_CLIENT_SECRET = "client_secret" }Claude Desktop (claude_desktop_config.json)
{
"mcpServers": {
"monapay": {
"command": "npx",
"args": ["-y", "monapay-mcp"],
"env": { "MONAPAY_CLIENT_ID": "client_id", "MONAPAY_CLIENT_SECRET": "client_secret" }
}
}
}Cách cũ: username/password
Nếu chưa tạo API key, có thể đặt MONAPAY_USERNAME và MONAPAY_PASSWORD. Nên chuyển sang client_id/client_secret; tài khoản bật 2FA không login bằng mật khẩu được.
Related MCP server: Tunzaa MCP Server
Tool
Tool | Làm gì |
| kiểm tra kết nối, đếm bank/VA và gợi ý kênh thông báo tiếp theo |
| hồ sơ tài khoản đang đăng nhập |
| nối tài khoản ACB và tạo VA bằng OTP lần 1 |
| bật thông báo tiền vào bằng OTP lần 2 |
| tài khoản ngân hàng đã nối, tài khoản ảo (VA) |
| xem hoặc thiết lập hồ sơ dùng cho trang thanh toán |
| tạo link thu tiền, kiểm tra, lọc và huỷ phiên thanh toán |
| tạo / huỷ VietQR động cho đơn hàng |
| tra giao dịch tiền vào theo VA (đối soát) |
| cấu hình webhook (HMAC-SHA256 khuyến nghị) |
| bắn thử, lịch sử từng lần gửi, tỷ lệ thành công / P95 |
| Tạo giao dịch tiền vào giả cho VA đã nối (webhook/Telegram/email/Zalo chạy như thật, không tính hạn mức). |
| cấu hình email cho tối đa 10 người nhận |
| xác minh bằng mã 6 số, gửi lại mã và gửi email thử |
| lịch sử meta, tỷ lệ thành công / P95 và nhóm lỗi gửi email |
| xem và gỡ địa chỉ bị chặn gửi |
| xem và cấu hình thông báo vào nhóm Zalo |
| gửi thử và tra lịch sử gửi nhóm Zalo |
| gửi lại webhook hoặc Telegram cho một giao dịch |
| sinh client_secret mới |
| xoay secret của key hiện tại khi nghi bị lộ; sau đó phải cập nhật |
| kiểm chữ ký webhook ngay tại chỗ, không gọi mạng |
| code mẫu endpoint nhận webhook PHP / Node / Python đúng chuẩn |
Resource: monapay://docs/llms (mục lục tài liệu máy đọc), monapay://docs/{slug} (một trang docs dạng markdown, ví dụ monapay://docs/webhooks/tich-hop-webhook). Prompt: integrate-monapay (6 bước để agent tự tích hợp).
monapay_rotate_key dùng X-Client-Secret hiện tại để xoay đúng key khớp với MONAPAY_CLIENT_ID. Secret cũ hết hiệu lực ngay; hãy thay MONAPAY_CLIENT_SECRET trong cấu hình MCP và khởi động lại plugin/agent.
Ví dụ hội thoại
"Tích hợp nhận tiền chuyển khoản cho web Laravel này bằng MONA Pay."
Agent sẽ: gọi monapay_me → lấy code mẫu bằng monapay_generate_webhook_snippet(language="php") → viết endpoint vào dự án → monapay_create_webhook(auth_type="HMAC_SHA256", secret_key=...) → monapay_test_webhook → đọc monapay_webhook_logs để chắc endpoint trả 200 → dùng monapay_create_checkout cho từng đơn và đợi CHECKOUT_PAID.
Nối ngân hàng bằng OTP (4 bước)
OTP do ACB gửi về số điện thoại đăng ký của chủ tài khoản. Agent phải hỏi người dùng ở bước 2 và bước 4, tuyệt đối không tự đoán OTP.
Gọi
monapay_link_bank_startvới số tài khoản ACB, số điện thoại, loại khách hàng, prefix VA và mã định danh. Tool trảacb_request_id; ACB gửi OTP lần 1.Hỏi người dùng OTP rồi gọi
monapay_link_bank_verify_otp. Tool trảvirtual_account_idvà số VA.Gọi
monapay_notification_registervớivirtual_account_id; ACB gửi OTP lần 2.Hỏi người dùng OTP lần 2 rồi gọi
monapay_notification_verify_otp. Từ đây tiền vào sẽ được MONA Pay chuyển tiếp qua webhook đã cấu hình.
Nếu OTP sai hoặc hết hạn, gọi lại bước trước để ACB gửi mã mới.
Thông báo nhóm Zalo
Nhóm của khách phải có bot Gấu Mona do MONA thêm vào. group_id gồm 10–25 chữ số: khách hàng MONA lấy trong MONA Account/PMS tại dự án → kết nối Zalo → chatId, hoặc nhờ đội MONA tra theo tên nhóm. Người dùng chưa phải khách MONA chưa thể tự thêm bot; liên hệ MONA qua 1900 636 648 để nối nhóm Zalo.
Gọi monapay_create_zalo_group với group_id, tên dễ nhớ và các sự kiện cần nhận: TRANSACTION_IN, CHECKOUT_PAID, WEBHOOK_FAILED, VA_CREATED. Có thể giới hạn theo virtual_account_id, gửi thử bằng monapay_test_zalo_group, rồi kiểm tra bằng monapay_zalo_group_logs.
Zalo không parse Markdown. message_template phải là text thuần và hỗ trợ các biến {amount}, {description}, {virtual_account_number}, {transaction_code}, {transfer_date}; dạng {{amount}} cũng được hỗ trợ.
Chữ ký webhook
X-Mona-Signature: sha256=<hex> với hex = HMAC-SHA256(secret, "<X-Mona-Timestamp>.<raw_body>"), từ chối nếu timestamp lệch quá 300 giây, so sánh constant-time. transaction_code không đổi qua mọi lần gửi lại, dùng làm khoá chống trùng. Chi tiết: https://monapay.vn/docs/webhooks/bao-mat
Phát triển
npm install && npm test # build + node --test
MONAPAY_CLIENT_ID=... MONAPAY_CLIENT_SECRET=... npm run smoke # gọi thật vài tool GETTài liệu: https://monapay.vn/docs · llms.txt: https://monapay.vn/llms.txt · OpenAPI: https://monapay.vn/openapi.json · Hotline 1900 636 648 · info@themona.global
Available Tools
17 toolsmonapay_cancel_qrHuỷ mã QRC
Huỷ một mã VietQR động đã tạo. / Cancel a dynamic QR.
| Name | Required | Description | Default |
|---|---|---|---|
| qr_code_id | Yes |
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 only says 'cancel' without explaining whether cancellation is permanent, what side effects occur, whether existing payment attempts are affected, or whether the operation can be reversed. This is thin for a mutation-like operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise bilingual line with no filler and the action verb is front-loaded. The Vietnamese and English duplicate the same content, which is slightly redundant, but overall it is appropriately sized for a simple one-parameter tool.
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 tool with no annotations and no output schema, the description does too little. It omits the operation's effects, prerequisites, return behavior, and any caveats. An agent acting on this description alone knows what the tool does but not enough about the consequences of invoking it.
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 single parameter qr_code_id has no schema description and the description does not explain its format, source, or semantics. An agent can infer that it identifies the QR to cancel, but nothing goes beyond that basic inference.
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 a specific action ('cancel') and a specific resource (a dynamic VietQR that has been created). This distinguishes it from sibling tools like monapay_create_qr, and the bilingual phrasing reinforces the intent without ambiguity.
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?
There is no guidance about when to use this tool versus alternatives. It does not mention that it applies only to previously created dynamic QRs, nor does it indicate when another sibling tool should be preferred. The usage context is only implicit from the tool name and brief phrase.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
monapay_create_qrTạo VietQR động cho đơn hàngA
Tạo mã VietQR động điền sẵn số tiền + nội dung cho một đơn hàng qua ACB. Khách quét là tiền vào tài khoản ảo, MONA Pay bắn webhook. / Create a dynamic VietQR for an order.
| Name | Required | Description | Default |
|---|---|---|---|
| amount | Yes | Số tiền VND (số nguyên) | |
| userId | No | ||
| orderId | Yes | Mã đơn hàng của hệ thống anh chị | |
| ownerType | No | PER cá nhân / ORG doanh nghiệp | PER |
| merchantId | Yes | Mã merchant (hiển thị ở dashboard mục Tạo QR) | |
| terminalId | No | WEB | |
| description | No | Nội dung chuyển khoản, nên chứa mã đơn | |
| loyaltyCode | No | ||
| ownerNumber | Yes | Số tài khoản ACB nhận tiền | |
| traceNumber | No | ||
| voucherCode | No | ||
| beneficiaryName | Yes | Tên đơn vị hưởng | |
| virtualAccountPrefix | Yes | Đầu số tài khoản ảo đã đăng ký |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and partially meets it: it discloses that the QR is dynamic, pre-fills amount and content, and that scanning results in payment to a virtual account plus a MONA Pay webhook. It does not mention side effects such as idempotency, expiry, or required permissions, but the described lifecycle is material and non-obvious.
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 short and front-loaded: first sentence states the action and payload, second gives the downstream effect, third is a compact English summary. Some redundancy exists between the Vietnamese and English lines, but no filler is present.
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?
Despite a 13-parameter schema and no output schema or annotations, the description does not specify what the tool returns (e.g. QR image, URL, code), expiration behavior, or required configuration steps beyond what the schema already says. It is adequate for intent recognition but not complete enough for an agent to anticipate the full invocation result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds mild semantic value by mapping 'số tiền + nội dung' to the amount and description parameters and by identifying that these are embedded in the QR. Schema coverage is 62%, so the schema already documents most key required fields; however, the description does not clarify the five undocumented optional parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Tạo mã VietQR động'), the resource (dynamic VietQR), the target ('cho một đơn hàng'), and the payment rail (ACB). This clearly distinguishes it from siblings like monapay_cancel_qr or monapay_list_virtual_accounts.
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 phrase 'cho một đơn hàng' and 'Create a dynamic VietQR for an order' gives a direct use case, and the second sentence explains the expected payment/webhook flow. It does not name alternatives or explicit exclusions, but the create/read/cancel split among siblings makes the intended scenario clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
monapay_create_webhookTạo cấu hình webhookB
Đăng ký URL nhận webhook khi có tiền vào; khuyến nghị auth_type HMAC_SHA256 + secret_key. / Create a webhook config.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| auth_type | No | HMAC_SHA256 | |
| secret_key | No | Secret ký HMAC hoặc giá trị API key | |
| webhook_url | Yes | ||
| api_key_name | No | Tên header khi auth_type=API_KEY, mặc định X-Webhook-Secret | |
| payload_format | No | application/json | |
| virtual_account_id | No | Chỉ bắn cho VA này; bỏ trống = mọi tài khoản |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full responsibility for behavioral disclosure. It explains the intended trigger ('when money comes in') and recommends an auth type, but it does not disclose what happens after creation, whether webhooks are immediately active, what permissions are required, whether duplicates are prevented, or what response the caller receives. For a mutation tool with no annotation coverage, this is a meaningful 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 short and front-loaded: it states the primary purpose first, then the auth recommendation. The English 'Create a webhook config' is largely redundant with the Vietnamese clause and the tool name, but the overall size is still appropriately concise and easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that the tool has 7 parameters, no annotations, no output schema, and only 43% schema description coverage, the description is not enough to fully guide an agent. It omits the required parameters, return behavior, payload format, and any caveats about webhook delivery. The basic purpose is clear, but contextual completeness is lacking for a configuration-creation 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?
The description adds some parameter-level meaning by identifying 'webhook_url' as the URL that receives the webhook and by recommending 'auth_type HMAC_SHA256 + secret_key'. However, schema description coverage is only 43%, and the required parameters 'name' and 'webhook_url' plus 'payload_format' are not explained in either the schema or the description. The description partially compensates for low coverage but not completely.
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 a specific verb ('Đăng ký') and resource ('URL nhận webhook') with a clear trigger ('khi có tiền vào'), and 'Create a webhook config' reinforces creation. It also distinguishes from siblings like monapay_list_webhooks, monapay_update_webhook, and monapay_delete_webhook through the create/register action.
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 when to use it: when you need to register a URL to receive incoming-fund webhooks. It also gives a recommended configuration ('auth_type HMAC_SHA256 + secret_key'), but it does not explicitly say when not to use it or mention alternatives such as updating, testing, or listing webhooks. The usage context is implied, not spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
monapay_delete_webhookXoá cấu hình webhookC
Xoá một webhook config. / Delete a webhook config.
| Name | Required | Description | Default |
|---|---|---|---|
| config_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure, but it only restates the action. It does not say whether deletion is permanent, what happens to associated webhook events, whether it is idempotent, or what errors can occur.
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 short and front-loaded, with no filler. The bilingual repetition is slightly redundant but not harmful.
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 destructive tool with no annotations and no output schema, this is too sparse. An agent would not know what to expect after invocation, whether the action is reversible, or how to handle a nonexistent config_id.
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 0% and the description adds no explicit meaning for config_id beyond identifying the config to delete. The parameter's role is inferable from the verb and name, but no format or source guidance is given.
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 operation: 'Delete a webhook config' (and the Vietnamese equivalent), naming a specific verb and resource. It is unambiguous against siblings like create/update/list/test, though it does not explicitly differentiate itself from them.
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?
There is no guidance on when to use this tool instead of monapay_update_webhook or monapay_test_webhook, and no mention of prerequisites such as the existence of the config. The context is entirely implicit in the verb 'delete'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
monapay_generate_keyTạo API key (client_secret)A
Sinh client_secret mới (hiện 1 lần) để dùng header X-Client-Secret. / Generate a client secret.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | mcp |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry all behavioral disclosure. It does reveal one critical trait: the client_secret is shown only once ('hiện 1 lần'). However, it does not disclose whether the previous secret is invalidated, any permission requirements, or the exact response shape, leaving some behavioral uncertainty.
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 short sentences (Vietnamese and English) with no fluff. The key facts—generation, one-time display, and header usage—are front-loaded and every word contributes.
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 low-complexity tool with one optional parameter and no output schema, the description covers the core generation and one-time display behavior, but it leaves the 'name' parameter undocumented and does not describe the response. The English half also omits the 'show once' caveat, creating minor gaps an agent must handle.
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 one parameter, 'name', with 0% description coverage, and the tool description does not mention it at all. Since schema coverage is low, the description was expected to compensate, but it provides no semantic guidance for the 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 uses a specific verb ('Sinh' / 'generate') and a specific resource ('client_secret') and states its purpose for the X-Client-Secret header. None of the 16 sibling tools generate a client secret, so it is clearly differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear usage context: it generates a client_secret intended for the X-Client-Secret header. While it does not explicitly mention alternatives or exclusions, the sibling tools are all about different concerns (QR, webhooks, transactions), so the intended use is reasonably clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
monapay_generate_webhook_snippetCode mẫu nhận webhookA
Trả code mẫu endpoint nhận webhook MONA Pay + verify HMAC đúng chuẩn cho PHP / Node / Python, kèm payload mẫu. / Get a webhook receiver snippet.
| Name | Required | Description | Default |
|---|---|---|---|
| language | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden. It does disclose that the output is a code sample for an endpoint plus HMAC verification and a sample payload, which is useful. It does not explicitly state that the tool has no side effects, does not register a webhook, or does not make network calls, though 'snippet' implies this.
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 short, front-loaded with the action ('Trả code mẫu'), and packs output, validation logic, languages, and sample payload into one sentence. The trailing English clause is mostly redundant with the Vietnamese text but not harmful.
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 single-parameter code-generation tool with no annotations and no output schema, the description explains the return content well enough: endpoint code, HMAC verification, languages, and sample payload. It could add an explicit note that no webhook is actually created or configured, but 'snippet' conveys that.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description mentions 'PHP / Node / Python', matching the language parameter's enum values, so an agent can infer what to pass. However, this adds little beyond the schema, which already enumerates the allowed values, and there is no additional detail about defaults, formats, or requirements.
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 uses a specific verb ('Trả'/'Get') and names the resource: a webhook receiver snippet with HMAC verification and sample payload for PHP/Node/Python. It clearly differentiates this code-generation tool from sibling operations like create_webhook or verify_signature, which perform live actions.
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 intended use is implied: call this when the user needs webhook receiver code in one of the listed languages. However, it never explicitly states when not to use it or names alternatives such as monapay_create_webhook for actual registration or monapay_verify_signature for runtime signature checks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
monapay_list_bank_accountsDanh sách tài khoản ngân hàng đã nốiA
Liệt kê tài khoản ngân hàng (ACB…) đã nối vào MONA Pay. / List linked bank accounts.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
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 does disclose the core behavior—listing linked bank accounts—and 'list' inherently suggests a read-only operation. However, it does not mention whether any authentication is needed, what the response structure looks like, or whether only active accounts are returned.
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 brief and front-loaded, with the key action and resource in the first words. The bilingual repetition is slightly redundant but not excessive, and the example 'ACB…' adds a useful hint about the account type.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple, zero-parameter, read-only list operation, the description is largely complete. It clearly states what is listed and the context. Since there is no output schema, the description could have mentioned the return format, but the basic invocation context is clear enough for an agent.
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 tool has zero parameters and the schema is empty with 100% coverage, so there are no parameter semantics to explain. The baseline of 4 applies because the description cannot add anything beyond the schema when no parameters exist.
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 uses a specific verb ('Liệt kê'/'List') with a clear resource ('tài khoản ngân hàng'/'bank accounts'), and explicitly scopes it to accounts linked to MONA Pay. The mention of 'ACB…' and 'bank accounts' distinguishes it from sibling tools like monapay_list_virtual_accounts and monapay_list_transactions.
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: use it when you need the list of linked bank accounts. However, it provides no explicit guidance about when not to use it or what to use instead, and there are similar sibling list tools (virtual accounts, transactions) that could be confused without further differentiation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
monapay_list_transactionsTra giao dịch tiền vàoA
Liệt kê giao dịch tiền vào theo tài khoản ảo, phân trang tối đa 100/trang; dùng để đối soát. / List incoming transactions.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| limit | No | ||
| virtual_account_number | Yes | Số tài khoản ảo (bắt buộc; lấy từ monapay_list_virtual_accounts) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the burden of behavioral disclosure. It reveals the incoming-transaction scope and pagination cap ('tối đa 100/trang'), and 'Liệt kê' implies a read operation. However, it does not mention response shape, ordering, date behavior, or error conditions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loads the core behavior and pagination constraint. The English translation duplicates the Vietnamese but is reasonably helpful, and there is no fluff, though a more structured usage line could add value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list operation, the description is enough to invoke the tool with the required `virtual_account_number`, and pagination constraints are present. However, with no output schema and no annotations, it omits return fields, ordering/filter behavior, and explicit alternative routing, leaving gaps the agent would have to discover.
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 only 33%, so the description should compensate for undocumented parameters. It restates the virtual-account filter and pagination limit, but does not explain the meaning or interaction of `page` and `limit` beyond what their names and schema constraints already show.
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 a specific operation: list incoming transactions filtered by virtual account ('Liệt kê giao dịch tiền vào theo tài khoản ảo') and adds the reconciliation use case. This clearly distinguishes it from sibling tools like monapay_list_virtual_accounts, monapay_list_bank_accounts, and QR/webhook tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a use case, 'dùng để đối soát' (for reconciliation), which gives some context for when to call it. However, it does not explicitly exclude alternatives or compare against related transaction tools such as monapay_retry_transaction, so the agent must infer boundaries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
monapay_list_virtual_accountsDanh sách tài khoản ảo (VA)A
Liệt kê tài khoản ảo thuộc một tài khoản ngân hàng. / List virtual accounts of a bank account.
| Name | Required | Description | Default |
|---|---|---|---|
| bank_account_id | Yes | UUID tài khoản ngân hàng (lấy từ monapay_list_bank_accounts) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral burden. It clearly indicates a read-only listing operation scoped to a bank account, but it does not disclose pagination, ordering, error behavior, or authentication requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single two-language sentence with no filler, and the core scoping information is front-loaded. It is appropriately concise for a simple list operation.
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 tool with one well-documented parameter and a straightforward list behavior, the description is largely complete. It does not describe the response format, but the low complexity and clear parameter source reduce the need for more detail.
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%, and the only parameter, bank_account_id, already has a clear description including its source from monapay_list_bank_accounts. The tool description adds no additional parameter semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Liệt kê' / 'List') with a clear resource ('virtual accounts of a bank account'), making the purpose unambiguous. The scope 'of a bank account' naturally differentiates it from sibling tool monapay_list_bank_accounts without needing extra explanation.
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 and parameter documentation imply that bank_account_id comes from monapay_list_bank_accounts, which provides a workflow context. However, it does not explicitly state when to use this tool versus alternatives or mention any exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
monapay_list_webhooksDanh sách cấu hình webhookB
Liệt kê webhook đã cấu hình. / List webhook configs.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
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 only restates the listing action and does not mention pagination, output format, permissions, ordering, or any side effects. There is no contradiction with annotations, but there is also very little added behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short and front-loaded, with the key action and resource stated immediately. The bilingual second sentence is redundant but not problematic; it adds minimal length without meaningful new 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?
This is a simple zero-parameter read-only tool, so a very brief description is somewhat acceptable. However, without an output schema or behavioral details, an agent does not know what fields the returned webhook configs contain or whether any response-specific considerations apply. It is adequate for basic invocation but not fully complete.
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 tool has zero parameters, so the baseline is 4. There are no parameters for the description to explain, and no additional parameter-level semantics are needed.
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 ('Liệt kê' / 'List') and the resource ('webhook đã cấu hình' / 'webhook configs'). This is sufficiently specific to distinguish it from sibling tools like create_webhook, delete_webhook, webhook_logs, and webhook_stats.
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?
There is no guidance about when to use this tool versus alternatives such as webhook_logs or webhook_stats. The verb 'list' implies a read operation, but the description does not provide explicit context, prerequisites, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
monapay_meHồ sơ tài khoản MONA PayA
Lấy thông tin tài khoản MONA Pay đang đăng nhập (id, tên, trạng thái). / Get current MONA Pay client profile.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It signals a read-only retrieval via 'Lấy/Get', and 'đang đăng nhập / current' indicates it acts on the authenticated session. It does not detail error or edge-case behavior, but the operation is simple enough that this is adequate.
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 one short bilingual sentence, front-loads the action and resource, and includes a parenthetical field list without padding. Every part earns its place.
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 zero-parameter, low-complexity profile lookup with no output schema, the description is adequately complete: it names the resource, scope, and key return fields. It could mention authentication failure handling, but the context signals do not suggest a need.
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 zero parameters, so there are no parameter semantics to clarify beyond the schema; the baseline for a 0-parameter tool is 4. The description additionally clarifies the fields that will be returned, which is useful given the absence of an output schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Lấy/Get' with a clear resource: the current MONA Pay client profile, and lists the returned fields (id, name, status). This is distinct from all sibling tools, which operate on bank accounts, QR codes, transactions, webhooks, and keys.
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 clearly scopes this tool to retrieving the currently logged-in MONA Pay account profile, so an agent knows when to select it. It does not explicitly discuss exclusions or alternatives, but the resource-level clarity is sufficient given the sibling names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
monapay_retry_transactionGửi lại thông báo của một giao dịchB
Gửi lại webhook hoặc Telegram cho giao dịch đã có. / Re-send webhook/Telegram for a transaction.
| Name | Required | Description | Default |
|---|---|---|---|
| target_id | No | ||
| target_type | No | WEBHOOK | |
| transaction_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full burden of explaining behavior. It does disclose the core side effect: it re-sends a webhook or Telegram notification. It does not, however, mention whether repeated calls can cause duplicate deliveries, whether it resends the original payload, or any authorization/rate-limit considerations, so transparency is only partially covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short and front-loaded with the action and resource. It is essentially one semantic statement repeated in Vietnamese and English; the duplication is minor and unlikely to confuse. It earns its place by being scannable and direct, though the bilingual repetition adds slight redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an action tool with no annotations and no output schema, the description is too sparse. It does not explain what happens after the resend, what errors or success responses to expect, how target_id relates to the transaction, or which contexts require a retry. An agent would need to guess about behavior and parameter meaning before invoking it 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?
Schema description coverage is 0%, so the description must explain what each parameter means, but it barely does. It loosely maps transaction_id to 'a transaction' and target_type to 'webhook/Telegram', but it does not explain target_id at all. The schema enum and default help for target_type, but target_id remains completely ambiguous, and the required parameter's format is not described.
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 a specific action ('Re-send') and a clear resource ('webhook/Telegram for a transaction'). It immediately distinguishes this tool from siblings like monapay_test_webhook, which tests a webhook, or monapay_list_webhooks, which lists webhooks. The purpose is unambiguous.
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 phrase 'for a transaction' and the 're-send' wording imply the tool is used when a notification for an existing transaction needs to be sent again. However, it does not explicitly say when to use this instead of alternatives, when not to use it, or that it is meant for failed deliveries. Usage context is only implied, not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
monapay_test_webhookBắn webhook thửA
MONA Pay gửi một giao dịch giả (is_dummy) tới URL để kiểm tra endpoint + chữ ký. / Send a dummy webhook.
| Name | Required | Description | Default |
|---|---|---|---|
| auth_type | No | ||
| secret_key | No | ||
| webhook_url | No | Bỏ trống = dùng config đã lưu |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. It does state that the webhook is fake and that the purpose is endpoint/signature testing, but it omits important behavioral details such as how auth_type and secret_key affect the request, what side effects occur, and what success/failure looks like.
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 one short bilingual sentence with no filler. It front-loads the core mechanism and purpose, and every part adds useful context beyond the title.
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 tool with no annotations, no output schema, and limited schema descriptions, the description supplies only the high-level purpose. An agent still lacks key context about how the three parameters work together, what the HTTP request will look like, and what response or error behavior to expect.
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 only 33%, with only webhook_url having an explanation. The tool description does not explain the roles of auth_type or secret_key, their relationship to signature testing, or how they interact with webhook_url. The enum values are self-explanatory, but the description should have compensated for the low schema coverage and did not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that MONA Pay sends a dummy transaction marked is_dummy to a URL to test the endpoint and signature. It identifies a specific verb, resource, and expected validation scenario, which distinguishes it from sibling tools like verify_signature or create_webhook.
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 gives the use case: testing an endpoint and signature. It does not name alternatives or explicitly say when not to use it, but the intended context is clear enough to guide selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
monapay_update_webhookSửa cấu hình webhookC
Cập nhật webhook (URL, secret, bật/tắt). / Update a webhook config.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| auth_type | No | ||
| config_id | Yes | ||
| is_active | No | ||
| secret_key | No | ||
| webhook_url | No | ||
| api_key_name | No | ||
| payload_format | No | ||
| virtual_account_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure, but it only says 'update webhook config' and lists some fields. It does not mention whether updates are partial or full, what happens to unspecified fields, idempotency, error conditions, or permissions needed.
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 short and front-loads the action and key fields. The bilingual duplication is somewhat redundant but not harmful. It earns a high score for brevity, though it sacrifices substance.
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?
A 9-parameter update operation with no annotations, no schema descriptions, and no output schema requires far more context. The description omits semantics for most parameters, return values, and behavioral caveats, making it insufficient for reliable tool invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% across 9 parameters. The description names only three fields (URL, secret, enable/disable) corresponding to webhook_url, secret_key, and is_active, leaving name, auth_type, api_key_name, payload_format, and virtual_account_id unexplained. It adds minimal semantic value and does not compensate for the empty schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Update') and resource ('webhook config'), and enumerates the mutable aspects (URL, secret, enable/disable), which distinguishes it from sibling tools like monapay_create_webhook and monapay_list_webhooks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus create/delete/test webhook operations. The description only restates the operation and gives no conditions, prerequisites, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
monapay_verify_signatureKiểm chữ ký webhook (offline)B
Tính và so chữ ký HMAC-SHA256 của một webhook MONA Pay từ raw body + timestamp + secret, không gọi mạng. / Verify a webhook signature locally.
| Name | Required | Description | Default |
|---|---|---|---|
| secret | Yes | ||
| raw_body | Yes | ||
| signature | Yes | ||
| timestamp | Yes | ||
| tolerance_sec | No | ||
| skip_time_check | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral burden. It usefully discloses that the tool is local, makes no network call, and computes/compares HMAC-SHA256 signatures. But it does not explain the default time-tolerance behavior, what happens on invalid signatures, or the return value contract.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a compact bilingual one-liner with the key action and inputs front-loaded. The Vietnamese/English restatement is slightly redundant but improves accessibility without bloat.
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 cryptographic verification tool with no annotations and no output schema, this is thin. It omits practical details such as the expected format of raw_body, timestamp format, how tolerance_sec is applied, and how success/failure is reported to the caller.
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 0%, so the description must compensate for parameter meaning. It adds meaning for raw_body, timestamp, and secret as HMAC inputs, but it never discusses the signature parameter or the optional tolerance_sec and skip_time_check parameters, whose defaults materially affect verification semantics.
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 a specific action — verifying a MONA Pay webhook signature — and names the exact mechanism: HMAC-SHA256 computed from raw body, timestamp, and secret. The 'no network call' / 'locally' phrasing clearly separates it from network-dependent sibling webhook tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a clear context: use this when you need to verify a webhook signature offline without making a network request. However, it does not explicitly name alternative tools or state when not to use it, so the agent must infer the intended workflow from the word 'verify' and the sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
monapay_webhook_logsLịch sử gửi webhookC
Lịch sử từng lần gửi (HTTP code, thời gian phản hồi, nhãn lỗi). / Webhook delivery logs.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| limit | No | ||
| status | No | ||
| to_date | No | ||
| from_date | No | YYYY-MM-DD |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Since no annotations are provided, the description carries the behavioral disclosure burden. It does add useful information by listing what each log entry contains (HTTP code, response time, error label), which conveys read-only inspection of past delivery events. However, it does not mention pagination, filtering behavior, result ordering, or any rate/limitation 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 short and front-loaded with the most important detail: what the logs contain. The bilingual repetition ('Lịch sử từng lần gửi' and 'Webhook delivery logs') is slightly redundant, but there is no filler or unrelated content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 5 optional parameters, no output schema, and no annotations, the description is incomplete. It explains the core return content but does not cover parameter semantics, filtering by status/date, pagination defaults, or what an agent can expect in the response. An agent would need to guess at meaningful usage details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds no meaning for the 5 input parameters. Schema description coverage is only 20% (from_date is described as YYYY-MM-DD), while page, limit, status, and to_date have no descriptions. Given the low schema coverage, the description should compensate, but it is entirely silent about how these parameters affect the logs returned.
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 identifies the tool as webhook delivery logs, and adds concrete detail: HTTP code, response time, and error label. This makes it distinguishable from related siblings like monapay_list_webhooks (configured webhooks) and monapay_webhook_stats (aggregate stats), though it does not explicitly name a sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no explicit guidance on when to use this tool versus alternatives. With multiple webhook-related siblings (list_webhooks, webhook_stats, test_webhook, retry_transaction), an agent is left to infer that this is for inspecting individual delivery attempts rather than managing webhook configuration or viewing aggregate statistics.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
monapay_webhook_statsThống kê webhookA
Tỷ lệ thành công, P95, phân loại lỗi. / Webhook delivery stats.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses what metrics are computed and implies a read-only behavior, but does not mention time range aggregation window, whether stats are real-time, or any side effects. For a stats tool, this is acceptable but not fully transparent.
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 short and front-loaded with the key metric categories. The bilingual phrasing is slightly redundant, but it does not add significant clutter and remains highly compact.
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?
The tool has no parameters and no output schema, so the description provides the essential meaning. However, important context such as default time range, data freshness, and exact response structure is omitted, leaving an agent to guess at operational specifics.
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 is empty and there are zero parameters, so parameter-level description is not required. The baseline of 4 applies because no parameter ambiguity exists.
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 names a concrete resource (webhook delivery stats) and lists specific metrics: success rate, P95 latency, and error classification. It is clear enough to distinguish from raw webhook_logs and webhook management tools, though it lacks a verb and explicit scope.
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 use when aggregated delivery statistics are needed, which separates it from listing, creating, or testing webhooks. However, it does not explicitly say when to choose this over monapay_webhook_logs or monapay_list_webhooks, leaving the decision to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool targets a distinct resource and action: profile, bank accounts, virtual accounts, QR codes, transactions, webhooks, and signature/key utilities. Even the webhook-related tools are cleanly separated by operation (create/update/delete/test/logs/stats). There is no meaningful overlap between tool responsibilities.
All tools share the consistent monapay_ prefix, and most follow a clear monapay_verb_noun pattern. Minor deviations exist, such as monapay_me, monapay_webhook_logs, and monapay_webhook_stats, which read as noun phrases rather than action-oriented names, but the overall convention is still predictable.
17 tools is slightly above the typical sweet spot for a well-scoped MCP server, but each tool earns its place in the payment/webhook lifecycle. QR management, webhook CRUD, webhook diagnostics, transaction lookup, and signature verification are all meaningful separate concerns.
The server covers the full incoming-payment workflow: QR creation/cancellation, bank/virtual account discovery, transaction reconciliation, webhook configuration and delivery monitoring, retry, and local HMAC verification. There are no obvious dead ends for the stated purpose of integrating with MONA Pay webhooks and VietQR payments.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Vietnam payments for AI agents — MoMo wallet QR, ATM, cards. Zero-setup sandbox. Never holds funds.
Let AI agents add Yolfi crypto checkout, paylinks, webhooks, and status checks.
Stripe payments for AI agents. Create links, verify, manage customers.
Form companies, manage bank accounts, cards, invoices and more — directly from your AI coding tools.
Related MCP Servers
- 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

Tunzaa MCP Serverofficial
FlicenseAqualityCmaintenanceEnables AI agents to integrate Tunzaa Payments by generating accurate boilerplate code and webhook handlers. Operates in mock mode by default with optional live verification against Tunzaa APIs when credentials are provided.10
RequestBin MCP Serverofficial
AlicenseAqualityDmaintenanceEnables AI coding agents to create webhook bins, inspect and replay HTTP requests, and stand up mock API endpoints directly from the editor.1314MIT- AlicenseAqualityAmaintenanceAgentPay VN — an MCP server that lets your AI agent collect real (fiat) payments over VietQR41MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/themonagroup/monapay-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server