idpay-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@idpay-mcpCreate a payment for 50000 IRR with order ID ORD-001"
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.
idpay-mcp
MCP server for IDPay payment gateway (Iran). Supports payment creation, verification, inquiry, transaction listing, and payment links. Uses X-API-KEY header with optional X-SANDBOX mode.
Tools (8)
Tool | Description |
| Create a payment |
| Verify a payment |
| Get payment details |
| List transactions |
| Create a payment link |
| Get payment link details |
| List all payment links |
| Delete a payment link |
Related MCP server: vnpay-mcp
Quick Start
{
"mcpServers": {
"idpay": {
"command": "npx",
"args": ["-y", "@theyahia/idpay-mcp"],
"env": {
"IDPAY_API_KEY": "<YOUR_API_KEY>",
"IDPAY_SANDBOX": "0"
}
}
}
}Environment Variables
Variable | Required | Description |
| Yes | API key from IDPay dashboard |
| No | Set to "1" for sandbox mode |
Demo Prompts
"Create a payment for 50000 IRR with order ID ORD-001"
"Verify payment abc123 for order ORD-001"
"List my recent transactions"
"Create a payment link for 100000 IRR"
"Delete payment link lnk_abc123"
License
MIT
Available Tools
8 toolscreate_linkC
Create a payment link.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Payment link name/title | |
| amount | Yes | Payment link amount in IRR | |
| description | Yes | Payment link description |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description carries the full burden of behavioral disclosure. It only says 'Create a payment link' and does not mention side effects, permissions, idempotency, or any other operational behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that is front-loaded with the verb and resource. It is not verbose or redundant, though it is extremely minimal.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description needs to provide more context but does not. It omits required fields, currency, and expected outcome, leaving the agent with insufficient information for full understanding.
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 baseline is 3. The description itself adds no parameter detail beyond what the schema already provides; it does not mention amount, description, or name.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it creates a payment link, identifying the specific resource and action. It distinguishes from siblings like create_payment by using 'payment link' as the object, but does not explicitly contrast with 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 provides no guidance on when to use this tool versus alternatives like create_payment or get_link. It simply states the action without 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.
create_paymentC
Create an IDPay payment.
| Name | Required | Description | Default |
|---|---|---|---|
| No | Payer email | ||
| name | No | Payer name | |
| phone | No | Payer phone number | |
| amount | Yes | Payment amount in IRR (min 1000) | |
| callback | Yes | Callback URL after payment | |
| order_id | Yes | Unique order ID from your system | |
| description | No | Payment description |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden. It only states that a payment is created, with no mention of side effects, return value, authentication requirements, or payment flow steps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence, but it is under-specified for a tool with 7 parameters. It lacks any structural breakdown or elaboration, though it has no fluff.
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?
There is no output schema, no annotations, and minimal description. Missing critical context about what happens after creation (e.g., response format, payment URL, redirect flow) and how this tool fits into the broader payment lifecycle.
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 all parameters are documented. The description adds no extra parameter context, but the schema already provides sufficient meaning for each field.
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 'Create an IDPay payment' clearly states a specific action (create) on a specific resource (IDPay payment). It distinguishes from siblings like create_link by the resource type, but does not elaborate on what an IDPay payment entails.
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 usage guidance is provided. The description does not mention when to use this tool versus alternatives like verify_payment or create_link, nor any prerequisites or scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_linkB
Delete a payment link.
| Name | Required | Description | Default |
|---|---|---|---|
| link_id | Yes | Payment link ID to delete |
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 only states the action 'delete' with no elaboration on permanence, required permissions, or response format. This is minimal and typical of a destructive operation without additional 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 a single, direct sentence that states the purpose without unnecessary words. It is appropriately sized for a simple delete 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?
Given the tool's simplicity (one parameter, no output schema), the description is minimally sufficient to identify the operation. However, it lacks behavioral context (e.g., permanence of deletion, error handling) that would be helpful for a destructive action, though the low complexity partially offsets this.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already describes the only parameter (link_id) as 'Payment link ID to delete' with 100% coverage. The tool description adds no further parameter semantics beyond that, so a 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 a specific action (delete) and target (payment link), which distinguishes it from siblings like create_link, get_link, and list_links. It is concise and 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 description provides no guidance on when to use this tool versus alternatives. It simply says 'Delete a payment link' without mentioning any preconditions, side effects, or scenarios where other link tools would be more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_linkB
Get payment link details.
| Name | Required | Description | Default |
|---|---|---|---|
| link_id | Yes | Payment link ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The word 'Get' implies a read-only operation, which is a behavioral disclosure, but no additional context is given about response format, errors, or side effects. With no annotations, the description carries the full burden and only partially fulfills it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no wasted words. It is front-loaded and efficiently conveys the core purpose, meeting the standard of every sentence earning 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 simple get-by-id tool with one well-documented parameter, the description is minimally sufficient. However, it provides no information about return values, error conditions, or expected output, leaving gaps that are acceptable given the low complexity but not filling them.
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 schema already provides a clear description for the single parameter 'link_id' with 100% coverage. The description adds no extra semantic meaning beyond what the schema declares, so the baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get') and resource ('payment link details'), making it evident what the tool does. However, it doesn't explicitly differentiate from sibling tools like get_payment, though the resource is specific enough.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like list_links or get_payment. The usage context is implied by the name but not articulated, and there are no exclusions or alternative recommendations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_paymentC
Get payment details by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Payment ID from IDPay | |
| order_id | Yes | Your order ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the full burden of behavioral disclosure. 'Get' implies a read operation, but the description does not explicitly state that it is safe/read-only, nor does it describe the return format, error behavior, or required permissions. Minimal behavioral detail is provided.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that front-loads the action. It avoids unnecessary verbosity while being sufficiently informative for a simple retrieval tool. Slightly more detail could be added without breaking conciseness, but the current structure is 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?
Without an output schema or annotations, the description is incomplete. It does not explain what 'payment details' includes, how this differs from verify_payment, or provide edge-case context. The tool has two required parameters and a specific domain (IDPay), but the description offers no contextual richness.
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 schema provides clear meanings for both 'id' (Payment ID from IDPay) and 'order_id' (Your order ID). The description's 'by ID' adds no additional semantic value and could be ambiguous due to two IDs, but the schema fully compensates, so the baseline 3 applies.
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 (Get) and resource (payment details), clearly indicating the tool's retrieval function. It is distinct from create/verify siblings in purpose, though it does not explicitly differentiate itself from verify_payment. The 'by ID' phrase is slightly ambiguous given two ID parameters, but the core purpose is clear.
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 offers no guidance on when to use this tool versus alternatives like verify_payment or list_transactions. It simply states the action, leaving the agent to infer usage from the name and context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_linksA
List all payment links.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries the full burden. It states the operation ('list all') but does not disclose whether pagination is used, what fields are returned, or any potential side effects. For a simple list, this is adequate but lacks extra 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 a single, concise sentence with no unnecessary words. It is front-loaded and immediately communicates the tool's purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (no parameters, no output schema), the description adequately explains what it does. It lacks details about return format or pagination, but these are less critical for a zero-parameter list operation.
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 properties, so schema description coverage is 100%. The description adds no parameter details because there are none, but the baseline of 4 applies for zero-parameter tools.
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 'List all payment links' is specific with verb 'list' and resource 'payment links'. It clearly distinguishes from siblings like get_link (singular) and create_link, and from list_transactions (which lists transactions, not links).
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 an agent needs to retrieve all payment links, but provides no explicit exclusions or alternatives. It does not mention that get_link is for a single link or that list_transactions is for transactions, so guidance is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_transactionsC
List payment transactions.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (0-based) | |
| date_to | No | End date (Unix timestamp) | |
| date_from | No | Start date (Unix timestamp) | |
| page_size | No | Items per page |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations available, the description carries the full burden. It merely restates the tool's name and provides no information about read-only behavior, pagination defaults, date filtering, or return format.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with no redundant wording. It is front-loaded with the key action and resource, though it lacks detail.
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 four parameters and no output schema, this description is too thin. It does not explain pagination behavior, the meaning of date filters, or what the response looks like, leaving the agent to rely solely on schema parameter descriptions.
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 parameters are fully documented in the schema. The description adds no additional parameter context but does not need to because the schema handles 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 'List payment transactions' clearly states the action (list) and the resource (payment transactions). It distinguishes itself from sibling tools like list_links and create_payment, which operate on different resources or 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?
No guidance is provided on when to use this tool versus alternatives. It does not mention that this is for retrieving a paginated list as opposed to getting a single payment (get_payment) or creating one (create_payment).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verify_paymentD
Verify an IDPay payment.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Payment ID from IDPay | |
| order_id | Yes | Your order ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations available, the description carries the full burden of disclosing behavior. It only says 'Verify', which gives no information about side effects, external API calls, authentication requirements, or what the tool actually does beyond the name. No return format or error behavior is described.
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 short at one phrase, but this is under-specification rather than good conciseness. It doesn't earn its place because it provides no more information than the tool name. A concise but informative description would add context, but this one merely restates.
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 only two parameters and no output schema, so the description is the primary source of context. It fails to explain what verification involves, what the result looks like, or how it differs from related payment tools. This is completely inadequate for an agent to correctly select and invoke the 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 input schema has 100% coverage with descriptions for both parameters ('Payment ID from IDPay' and 'Your order ID'). The description adds no additional meaning, so the baseline of 3 is appropriate since the schema already documents the parameters adequately.
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 'Verify an IDPay payment' is almost a direct restatement of the tool name 'verify_payment'. It does not specify what verifying means (e.g., checking status, validating against IDPay), nor does it distinguish this from the sibling tool get_payment. This is essentially a tautology with a brand name attached.
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 verify_payment versus alternatives such as get_payment or list_transactions. No context is provided about scenarios where verification is needed, nor are exclusions or prerequisites mentioned.
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.
8 tool updates
v1.0.1- First observed
create_link - First observed
create_payment - First observed
delete_link - First observed
get_link - First observed
get_payment - First observed
list_links - First observed
list_transactions - First observed
verify_payment
TDQS
Scored across 8 tools
Each tool clearly targets a distinct resource: payment links (list/create/get/delete) and payments (create/verify/get), with transactions listed separately. There is no ambiguity as the purpose of each tool is unique.
All tool names follow a consistent verb_noun pattern (e.g., list_links, create_payment, verify_payment). The verbs and nouns are predictable and consistently use snake_case.
With 8 tools, the server is well-scoped for a payment processing domain, covering both payments and payment links without unnecessary redundancy. The number is appropriate and neither too sparse nor overwhelming.
The tool set covers the core lifecycle for payments (create, verify, get) and payment links (create, list, get, delete). The only notable missing operation is an update for payment links, but this is a minor gap and does not severely hinder the primary workflows.
Maintenance
Related MCP Connectors
MCP server for Modern Treasury — payment orders, transactions, counterparties and ledgers.
A paid remote MCP for AI SDK MCP gateway registry, built to return verdicts, receipts, usage logs, a
Tenzro Network MCP server: wallet, identity, payments, inference, staking, bridges, verification.
Official PicSee MCP server for short links, link management, click analytics, and optional OAuth.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceA Python-based MCP server for managing Paytm payment links and transactions. It enables users to create payment links, list created links, and retrieve transaction details for specific payment links.-
- AlicenseBqualityDmaintenanceMCP server for VNPay payment gateway (Vietnam). Supports payment URL generation, transaction queries, refunds, tokenized payments, and IPN verification with HMAC-SHA512 signing.810 npmMIT
- AlicenseBqualityFmaintenanceMCP server for Payme payment system (Uzbekistan). Supports transactions, statements, payment links, and balance queries via JSON-RPC 2.0.810 npmMIT
- AlicenseAqualityDmaintenanceMCP server for Bank of Georgia iPay payment gateway, enabling payment orders, refunds, recurring payments, and pre-authorization via OAuth 2.0 + JWT.816 npmMIT