payping-mcp
This server lets an AI agent securely read your PayPing merchant data and, after confirmation, create customers, products, payment links, coupons, and invoices.
View account profile, wallet balance, sales summaries, transactions, payment details, and withdrawals/settlements.
List and search customers, products, coupons, and invoices, and get full details including public pay page URLs.
Create customers and products with fixed or payer-set prices.
Create reusable public payment links for products.
Create percent or Toman discount coupons.
Create invoices for saved customers with line items, then have PayPing send them by SMS/email.
All create and send actions require user confirmation; no withdrawals, refunds, reversals, or deletions are possible.
Runs locally, sends the token only to PayPing, and supports read-only scopes.
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., "@payping-mcpwhat's my PayPing balance and today's sales?"
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.
💳 payping-mcp
Your PayPing merchant account, for AI agents. Let Claude, Cursor or Copilot read your balance, sales, transactions, customers, products, coupons and invoices, and create invoices, payment links and coupons after you confirm, all from your own machine.
Quick start · Token · Tools · Security · Troubleshooting · فارسی
What it can do
💰 Money: wallet balance, sales totals for a period, transactions, one payment's real status, settlements to your bank
🗂️ Shop data: list and search customers, products, coupons and invoices
🧾 Get paid: create a customer and an invoice with a pay page link, or a reusable payment link for a product, then have PayPing send the invoice by SMS/email
🔒 Safe by design: runs on your machine, talks only to PayPing, asks before creating anything, and cannot withdraw, refund, reverse a payment or delete anything
Related MCP server: MyFatoorah MCP
Quick start
You need:
a PayPing merchant account with a complete profile (PayPing only approves tokens for complete profiles)
an MCP client: Claude Code, Claude Desktop, Cursor, VS Code, or any other
Then:
Create a PayPing token and wait for PayPing to approve it.
Add the server to your MCP client.
1. Create a PayPing token
Sign in at app.payping.ir.
Open اتصالات (Connections) → توسعه دهندگان (Developers). The page title is توکن ها (Tokens).
Click توکن جدید (New token) and fill in the form:
Field
What to enter
توکن تست (test token)
Leave off to work with your real account.
نام توکن (token name)
Any name, e.g.
payping-mcp on my laptopآی‌پی‌های مجاز (allowed IPs)
Optional. If you fill it in, list the public IP your computer reaches PayPing from. Calls from any other IP fail with error code 166.
تاریخ انقضا (expiry date)
When the token stops working. Shorter is safer.
دسترسی‌ها (scopes)
See the table below.
توضیحات (description)
e.g.
MCP server for AI agentsرمز پیامکی (SMS code)
Click ارسال رمز (send code) and type the code PayPing sends to your phone.
Click توکن جدید to submit. Copy the token now: PayPing shows it only once.
Wait for approval. PayPing staff review every new token. After approval, wait about 10 more minutes; until then the token gets HTTP 401.
Scopes. The form preselects گزارش پرداخت‌ها and ساخت پرداخت. Remove ساخت پرداخت: this server never uses it. Then add what you need:
Panel label | Scope | Tools that need it |
گزارش پرداخت‌ها |
| transactions, payment detail, withdrawals |
مشاهده و گزارش از مشتریان |
| list and get customers |
ساخت و ویرایش مشتریان |
| create customer |
مشاهده و گزارش از محصولات |
| list and get products |
ساخت و ویرایش محصولات |
| create product, create payment link |
مشاهده و گزارش کدهای تخفیف |
| list and get coupons |
ساخت و ویرایش کدهای تخفیف |
| create coupon |
مشاهده و گزارش از فاکتورها |
| list and get invoices |
ساخت و ویرایش فاکتور |
| create and send invoices |
ساخت پرداخت |
| none: leave it out |
Want a read-only agent? Select only the read scopes. The create tools then fail with HTTP 403 and nothing in the account can change.
2. Add the server to your MCP client
Put your token where it says your-token.
claude mcp add payping -e PAYPING_TOKEN=your-token -- uvx payping-mcpThis saves the server, with the token, in your user config (~/.claude.json), not in the project. Add --scope user to use it in every project.
Settings → Developer → Edit Config, then add:
{
"mcpServers": {
"payping": {
"command": "uvx",
"args": ["payping-mcp"],
"env": { "PAYPING_TOKEN": "your-token" }
}
}
}Restart Claude Desktop after saving.
Click Install in Cursor at the top and fill in the token, or add the Claude Desktop block to ~/.cursor/mcp.json.
Add to .vscode/mcp.json. VS Code asks for the token once and stores it securely, so the file is safe to commit:
{
"inputs": [
{ "type": "promptString", "id": "payping-token", "description": "PayPing API token", "password": true }
],
"servers": {
"payping": {
"type": "stdio",
"command": "uvx",
"args": ["payping-mcp"],
"env": { "PAYPING_TOKEN": "${input:payping-token}" }
}
}
}Replace uvx payping-mcp with:
uvx --from git+https://github.com/sepehr071/payping-mcp payping-mcpIn JSON configs: "args": ["--from", "git+https://github.com/sepehr071/payping-mcp", "payping-mcp"].
It's a standard stdio MCP server: run uvx payping-mcp, or pip install payping-mcp and run payping-mcp, with
PAYPING_TOKEN in the environment.
3. Check that it works
Ask the agent: "Show my PayPing profile." You should see your PayPing username. If you see an error, look it up in Troubleshooting.
Then try:
"What is my PayPing balance and how much did I sell this month?"
"List this week's received payments and tell me which ones failed."
"Create an invoice for Ali Rezaei: 2 hours of consulting at 1,500,000 Toman each. Show me before you create it."
فاکتورهای پرداخت‌نشده این ماه را نشان بده.
How it works
AI agent (Claude, Cursor, Copilot, ...)
│
│ MCP over stdio
▼
payping-mcp (runs on your machine, holds PAYPING_TOKEN)
│
│ HTTPS (REST, Bearer token, optional proxy)
├──────▶ api.payping.ir (reports, customers, products, coupons, invoices)
└──────▶ oauth.payping.ir (profile)payping-mcp runs locally and calls PayPing's API with your own token. There's no hosted server in between.
Tools
All amounts are Toman, all dates UTC. Lists return at most 50 items per call and include total.
Read-only (15):
Tool | What it does |
| Account behind the token: username, name, contact, verification flags |
| Wallet balance |
| Total sales, count and daily averages for a period (default last 30 days) |
| Payments in a date range, received or paid |
| One payment by code, with its real status (paid and verified, cancelled, ...) |
| Settlements to your bank account |
| One settlement by code: IBAN, bank tracking number |
| Saved customers, searchable |
| One customer |
| Products (financial items), searchable |
| One product |
| Discount coupons |
| One coupon with buyer count and total |
| Invoices, filter by status or customer |
| One invoice with items and its pay page url |
Create and send (6; the agent must confirm with you first):
Tool | What it does |
| Save a customer; returns its code |
| Create a product with a fixed or payer-set price |
| Public pay page for a product: |
| Percent or Toman discount coupon |
| Invoice for a saved customer; returns its pay page |
| PayPing sends the invoice to the customer by SMS/email |
Privacy and security
Local only. The server runs on your machine and talks only to
api.payping.irandoauth.payping.ir. There is no relay server and no telemetry.The token never leaks. It is sent only in the
Authorizationheader to PayPing and never appears in tool output, errors or logs.Treat the token like a password. Anyone who has it can use your account within its scopes. Don't commit it; use VS Code
inputsor your client's user config. Give it only the scopes you need and an expiry date.Lost or leaked token? In the panel, open the token and use حذف (delete) or تعویض توکن (swap token, which issues a new value). Then update your MCP config.
Confirm before creating. Create and send tools are annotated
destructiveHint, so MCP clients ask before running them. Their descriptions also tell the agent to confirm the details with you.No money moves out. No tool can withdraw, refund, reverse a payment or delete anything.
Prompt-injection aware. Customer names, descriptions and notes come from other people. The server tells the agent to treat them as data, never as instructions.
Good to know
Toman, not Rial. PayPing uses Toman in every service, and so does every tool.
Balance and sales summary are less certain.
payping_get_balanceandpayping_get_sales_summaryuse endpoints from the PayPing dashboard, not the public API docs. If PayPing rejects them for API tokens, the tool error says so, and every other tool keeps working.No raw payments. Raw
POST /v3/paypayments are left out on purpose. They need your own callback server and a verify call within 10 minutes, or PayPing refunds the payer. Invoices and payment links use PayPing's own pay page instead.Changing scopes needs a swap. After you edit a token's website, return URL or scopes, PayPing applies the change only after تعویض توکن (swap token). The swap gives a new token value; put it in your MCP config.
Troubleshooting
The MCP client did not pass the token. Check the env block (or -e PAYPING_TOKEN=... for Claude Code) and restart the client.
One of these:
PayPing has not approved the token yet, or approved it less than 10 minutes ago.
The token expired. The panel shows منقضی شده (expired) on it.
The token was swapped or deleted, or was copied incompletely.
Add the scope from the scope table to the token, then تعویض توکن (swap token) and use the new value.
Your IP is not in the token's allowed IPs. Add your current public IP to آی‌پی‌های مجاز or clear the list. If you route through a proxy, the IP PayPing sees is the proxy's exit IP.
The server ignores system proxy settings on purpose. If your network needs a proxy to reach PayPing, set PAYPING_MCP_PROXY, e.g. http://127.0.0.1:10809. In testing, PayPing's API hosts answered both from Iran and from a foreign exit.
Use the full path to uvx (where uvx on Windows, which uvx on macOS/Linux) as command.
npx @modelcontextprotocol/inspector -e PAYPING_TOKEN=your-token uvx payping-mcpErrors that carry a PayPing trace id: give that id to PayPing support.
Configuration
Variable | Required | Meaning |
| yes | API token from the PayPing panel |
| no | HTTP proxy URL for every request, e.g. |
فارسی
payping-mcp به دستیار هوش مصنوعی شما (Claude، Cursor، Copilot و ...) اجازه می‌دهد موجودی، فروش، تراکنش‌ها، تسویه‌ها، مشتریان، محصولات، کدهای تخفیف و فاکتورهای حساب پی‌پینگ شما را ببیند، و پس از تأیید شما مشتری، محصول، لینک پرداخت، کد تخفیف و فاکتور بسازد.
روی سیستم خود شما اجرا می‌شود و توکن فقط به سرورهای پی‌پینگ فرستاده می‌شود.
برداشت، استرداد، برگشت پرداخت و حذف با این ابزار ممکن نیست.
مبالغ به تومان و تاریخ‌ها به وقت UTC هستند.
ساخت توکن:
در پنل پی‌پینگ به «اتصالات ← توسعه دهندگان» بروید و «توکن جدید» را بزنید.
نام توکن، تاریخ انقضا و توضیحات را وارد کنید. «آی‌پی‌های مجاز» اختیاری است؛ اگر پر کنید، درخواست از آی‌پی دیگر با خطای 166 رد می‌شود.
در «دسترسی‌ها» فقط موارد لازم را انتخاب کنید و «ساخت پرداخت» را حذف کنید؛ این ابزار به آن نیازی ندارد.
رمز پیامکی را بگیرید و وارد کنید. توکن فقط یک بار نمایش داده می‌شود؛ همان لحظه کپی کنید.
پروفایل شما باید کامل باشد. کارشناس پی‌پینگ توکن را تأیید می‌کند و تا حدود ۱۰ دقیقه بعد از تأیید ممکن است خطای 401 بگیرید.
نصب در Claude Code:
claude mcp add payping -e PAYPING_TOKEN=your-token -- uvx payping-mcpبعد بپرسید: «موجودی پی‌پینگ من چقدر است و این ماه چقدر فروختم؟»
توکن را مثل رمز عبور نگه دارید و در گیت قرار ندهید. اگر لو رفت، در پنل آن را حذف یا «تعویض توکن» کنید.
Development
git clone https://github.com/sepehr071/payping-mcp && cd payping-mcp
uv sync
uv run ruff check . && uv run ruff format --check .
uv run pytest -q # offline, against a mocked PayPing API
PAYPING_TOKEN=your-token uv run pytest -m live # read-only calls to the real APITools live in src/payping_mcp/reports.py (account, money) and shop.py (customers, products, coupons, invoices);
http.py is the only HTTP code. Each tool is a typed async function with a docstring that tells the agent when to
use it. Issues and PRs are welcome.
Releases: bump the version in pyproject.toml and server.json, then push a v* tag. GitHub Actions tests,
publishes to PyPI and the MCP Registry, and creates the GitHub Release.
Disclaimer
Unofficial and not affiliated with or endorsed by PayPing. It uses PayPing's API with your own token. Follow PayPing's terms.
License
Available Tools
21 toolspayping_create_couponPayPing: create couponADestructive
Create an active discount coupon and return its code. Creates real data: confirm with the user first.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | 'percent' off, or a fixed Toman amount off. | |
| name | Yes | ||
| amount | Yes | Percent (1-100) or Toman, per `kind`. | |
| max_uses | No | ||
| expires_on | No | Last valid day (YYYY-MM-DD). | |
| coupon_code | No | Code buyers type; omit to generate. | |
| product_codes | No | Limit to these products; omit for all. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=true, idempotentHint=false and openWorldHint=true, so the safety profile is covered. The description still adds value by spelling out that this creates real data, requires user confirmation, and returns a generated code -- context not present in the annotations.
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?
Two sentences, zero filler, and the action plus its caution are front-loaded. Nothing repeats structure already encoded elsewhere.
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?
An output schema exists, so the return value need not be re-explained, and the description still highlights the returned code. The remaining gap is behavioral detail (e.g. whether the coupon is immediately live or how it interacts with product_codes), minor given the annotation coverage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 71%, and the schema already explains kind, amount, expires_on, coupon_code and product_codes. The description contributes nothing about any of the seven parameters, 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?
States a specific verb and resource ("Create an active discount coupon") plus a notable side effect (returns its `code`), which is far more than a tautology. It is distinguishable from the get/list coupon siblings, though it never names 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?
Provides one real usage instruction -- confirm with the user first -- which is the right kind of guidance for a mutation. But it offers no when-not conditions, no prerequisites (e.g. do the referenced products need to exist?), and no routing to alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
payping_create_customerPayPing: create customerBDestructive
Save a new customer in the PayPing account and return it with its code (needed for invoices).
Creates real data: confirm the details with the user before calling.
| Name | Required | Description | Default |
|---|---|---|---|
| memo | No | Private note. | |
| No | |||
| phone | No | Mobile number, e.g. 09121234567. | |
| last_name | Yes | ||
| first_name | Yes | ||
| is_business | No | True for a company (legal person). | |
| national_id | No | National code or economic code. | |
| business_name | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=true, idempotentHint=false, openWorldHint=true, so the safety profile is covered. The description supplements this with the practical consequence ('Creates real data') and a required user-confirmation step, plus the returned `code` and why it matters. It doesn't cover failure modes, but the added context is real value beyond the annotations.
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?
Two tight sentences, front-loaded with what the tool produces, then the caution. No filler. Slightly terse on the parameters side, but 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?
A mutation tool with safety covered by annotations and an output schema that carries the return shape, so those gaps are acceptable. However, with 8 parameters at only 50% schema coverage and no description of required fields or business/national_id semantics, the definition is not complete for correct 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 description coverage is 50% across 8 parameters, and the description says nothing about any of them – no mention of required first_name/last_name, the is_business legal-person distinction, or national_id formats. The half of parameters lacking schema descriptions are left undocumented in both places, so the description fails to compensate.
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?
States a specific verb+resource ('Save a new customer in the PayPing account') and adds the return payload ('return it with its code'). This clearly separates it from the sibling read tools (get_customer, list_customers) and the other create_* tools. It does not name a sibling explicitly, which is why it's a 4 rather than 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives one procedural instruction ('confirm the details with the user before calling') but no when-to-use vs when-not guidance and no alternatives named. Usage is only implied from the create semantics.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
payping_create_invoicePayPing: create invoiceADestructive
Create an invoice for a saved customer, ready to pay, and return its code, payCode and url (the
public page where the customer pays). It is not sent; use payping_send_invoice or share the url.
Creates real data: confirm customer, items and prices with the user before calling.
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes | ||
| notes | No | Shown to the customer. | |
| title | No | ||
| due_date | No | Pay by this day (YYYY-MM-DD). | |
| customer_code | Yes | From payping_create_customer. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, openWorldHint=true, idempotentHint=false and readOnlyHint=false. The description adds genuinely additive context beyond them: 'Creates real data: confirm customer, items and prices with the user before calling', which flags real-world side effects and a verification step. It stops short of discussing reversibility or whether duplicates can be created, so not a 5.
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?
Three tight sentences with the core behavior and return value front-loaded, followed by the routing hint and the safety caution. No redundancy; every clause carries 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?
An output schema exists, yet the description still usefully names the returned code/payCode/url. For a destructive, non-idempotent mutation it supplies the needed caution, so an agent can call it correctly. Only minor gaps (e.g., currency/tax implications, error cases) remain.
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 60%, and the description only implies the customer is 'saved' (customer_code) and lists return fields; it adds no meaning for items, notes, title or due_date beyond what the schema already documents. With the schema doing most of the lifting, baseline 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?
States a specific verb and resource (create an invoice) plus its scope: for a saved customer, returns code/payCode/url. It also explicitly distinguishes itself from payping_send_invoice by noting the invoice 'is not sent', so an agent can differentiate it from the sibling without opening either schema.
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?
Gives an explicit alternative and the condition that selects it: 'It is not sent; use payping_send_invoice or share the url.' It also states a precondition for calling ('confirm customer, items and prices with the user'). Routing and prerequisites are both covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
payping_create_payment_linkPayPing: create payment linkADestructive
Make a permanent public payment page for a product and return its url (https://ppng.ir/d/...), which
anyone can open and pay. Creates real data: confirm with the user before calling.
| Name | Required | Description | Default |
|---|---|---|---|
| ask_address | No | Ask the payer for a postal address. | |
| product_code | Yes | ||
| redirect_url | No | Page to open after payment. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare destructiveHint=true and openWorldHint=true, but the description adds the crucial interpretation: this produces a *permanent public* page anyone can pay, and it creates real data requiring user confirmation. That is meaningful context beyond the flags, though it omits permanence/irreversibility details and any auth or rate-limit notes.
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?
Two tight sentences, zero waste. The identity/return value is front-loaded and the confirmation caveat follows immediately, with a concrete example URL that anchors the concept.
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?
An output schema exists, so return values need not be explained, and annotations carry the safety profile. The description covers the key behavioral caveat but leaves the required `product_code` and the optional parameters unexplained, a minor gap for a 3-parameter mutation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%: `ask_address` and `redirect_url` are documented in the schema, while `product_code` is undocumented. The description only implies the product input ('for a product') and adds nothing about the optional flags, so it does not compensate for the uncovered parameter. Baseline 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?
States a specific verb+resource ('make a permanent public payment page for a product') and commits to a concrete return value (the `url`). No sibling tool creates payment links, so the agent can distinguish this from the create_* and list_*/get_* family without opening schemas.
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?
Provides a real usage constraint ('confirm with the user before calling') because it creates real data, which is genuine guidance. However, it never states when this is the right tool versus alternatives or what preconditions (e.g. a valid product_code) are required; usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
payping_create_productPayPing: create productADestructive
Create a product (financial item) and return its code. Then payping_create_payment_link makes a public
payment page for it. Creates real data: confirm title and price with the user before calling.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | ||
| has_tax | No | Add VAT to the price. | |
| quantity | No | Stock; omit for unlimited. | |
| description | No | ||
| amount_toman | No | Price in Toman. | |
| amount_set_by_payer | No | Payer types the amount (donations); no price. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, openWorldHint=true and non-idempotent, so the safety burden is partially carried. The description adds value beyond that by stating 'Creates real data' and demanding user confirmation of title and price before the call, which is actionable behavioral guidance not present in annotations.
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?
Two short sentences, front-loaded with the core action and return value, then the downstream tool reference and the safety caution. No filler.
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?
An output schema exists, so return-value explanation isn't required, yet the description still names the returned `code` to enable chaining. Combined with the confirmation guidance, it is nearly complete; it stops short of noting duplicate/non-idempotent behavior for repeated calls.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 67%, and the description only alludes to 'title and price', mapping loosely to the title and amount_toman fields. It adds no detail for the remaining parameters (has_tax, quantity, amount_set_by_payer, description), leaving the schema to do most of the work.
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?
States a specific verb and resource ('Create a product') and clarifies the return value ('return its `code`'), which distinguishes it from read-side siblings like payping_get_product and payping_list_products. An agent knows immediately this is the write entry point for the product lifecycle.
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?
Explicitly routes the agent to the next step ('Then payping_create_payment_link makes a public payment page for it') and prescribes a confirmation workflow before invocation. It gives clear positive context but no explicit when-not-to-use guidance (e.g. duplicate handling).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
payping_get_balancePayPing: wallet balanceARead-onlyIdempotent
Current PayPing wallet balance in Toman (money received and not yet withdrawn).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=true, covering the safety profile. The description confirms it is a read of current balance but adds nothing beyond the parenthetical definition—no mention of rate limits, currency conversion caveats, or freshness. With annotations doing heavy lifting, a 3 is appropriate.
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?
Single sentence, front-loaded with the core purpose, no wasted words. The parenthetical is concise and earns its place by defining the balance scope.
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 read tool with a rich output schema and comprehensive annotations, the description is adequate. It states what the balance is and its currency (Toman). The only minor gap is lack of any freshness or scope caveats, but these are not critical given the structured data.
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?
Zero parameters, so baseline is 4. The description adds no parameter info, which is correct since there are none.
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?
States a specific verb (get) and resource (wallet balance), and clarifies scope with a parenthetical definition of what the balance represents ('money received and not yet withdrawn'). Clearly distinguishable from siblings like payping_get_withdrawal or payping_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?
No guidance on when to use this tool versus alternatives. It implies a read operation but doesn't state prerequisites, context, or exclusions relative to sibling tools like payping_get_sales_summary or payping_get_withdrawal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
payping_get_couponPayPing: coupon detailBRead-onlyIdempotent
One coupon by code: amount, expiry, max uses, number of buyers and their total spend.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds only a partial inventory of returned fields, which the output schema already carries, and says nothing about behavior on an unknown code or rate limits.
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?
A single dense sentence with the resource and lookup key front-loaded and zero filler. It is telegraphic rather than a complete sentence, but nothing in it is wasted.
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 one-required-parameter read tool with an output schema and full annotations, the essential selection information is present. The only real gap is what happens when the code does not match a coupon, which is minor for this tool shape.
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% for the single 'code' parameter, so the description must compensate. 'By code' does establish that the parameter is the coupon's lookup identifier, but it adds no format, length, or case-sensitivity guidance beyond what the schema's string type implies.
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 resource and lookup key ('One coupon by code'), making it distinguishable from payping_list_coupons without opening either schema. It never uses an explicit verb like 'retrieve', but the intent 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?
There is no when-to-use guidance, no routing to the sibling payping_list_coupons, and no prerequisites (e.g., a valid/known code, case sensitivity). Only the weakest implication exists that this is for looking up a coupon you already have a code for.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
payping_get_customerPayPing: customer detailBRead-onlyIdempotent
One customer by code: name, contact details, address, national id, memo.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the safety profile is covered. The description adds that a lookup is keyed on a code and enumerates returned fields, but says nothing about authentication, what happens on an unknown code, or error 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?
A single front-loaded fragment with no filler; the key constraint (lookup by code) comes first. Slightly under-specified rather than padded, which is the better failure mode here.
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?
An output schema exists, so the returned-field enumeration is redundant and the description need not explain returns. For a one-parameter read tool with full annotation coverage that is close to sufficient, but the absence of any routing to payping_list_customers leaves a real gap.
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 carries the burden for the single 'code' parameter. 'By code' establishes that the parameter is the customer identifier rather than, say, a name or phone number, but adds no format, source, or length guidance beyond the schema's constraints.
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?
Names a specific resource (customer) and the retrieval key (code), and 'One customer by code' implicitly contrasts with the sibling payping_list_customers by signalling a single-record fetch. It does not name that sibling explicitly, so an agent must infer the single-vs-list distinction.
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 when-to-use statement, no prerequisites, and no mention of payping_list_customers as the alternative for enumerating customers. The phrase 'by code' is the only hint about when this tool applies, which is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
payping_get_invoicePayPing: invoice detailBRead-onlyIdempotent
One invoice by code with its items, customer, status and payment code, plus url, the public page where
the customer pays.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is fully covered. The description adds only a content summary of the response and the meaning of `url` as the customer-facing payment page, which is modest added value for a read tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. The tail listing return fields is slightly redundant given the output schema exists, but the description remains tight and readable.
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 one-parameter read tool with a full output schema and complete annotations, the description covers purpose and the notable `url` field adequately. The only real gap is routing guidance versus payping_list_invoices and the origin/format of the code value.
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% for the single `code` parameter, so the description must compensate. It does state the lookup is 'by code', identifying the parameter as an invoice code, but adds no format, source, or example of where that code comes from.
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?
States a specific verb and resource: fetch 'one invoice by code', and enumerates what the record contains (items, customer, status, payment code, url). The singular 'one invoice' implicitly separates it from payping_list_invoices, though no sibling is named explicitly.
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 explicit when-to-use or when-not-to-use statement, and no alternative tool is named. The phrase 'by code' implies a single-record lookup, but the agent is left to infer that payping_list_invoices is the alternative for browsing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
payping_get_paymentPayPing: payment detailARead-onlyIdempotent
Full detail of one payment by its payment code: amount, dates, payer, card, fees, refund state and paymentStatus with a plain-English status_text. Use it to check whether a payment really succeeded.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, so the safety and repeat-call profile is fully covered without description help. The description's additional detail (refund state, plain-English status_text) is essentially a preview of the return payload, which the output schema already supplies, and it says nothing about error behavior for an unknown code or auth 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?
Two sentences, front-loaded with the resource and lookup key, no filler. The field enumeration is slightly long but each listed field tells the agent what to expect in a verification flow, so it largely 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?
With an output schema present, the description is not obligated to explain return values, and it still identifies the key, the scope (one payment vs. lists), and the primary purpose. For a single-parameter read tool with full annotation coverage, nothing essential is missing.
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?
There is a single parameter, 'code', with 0% schema description coverage, so the schema provides no meaning on its own. The description compensates partially by making clear it is the *payment* code (not an invoice or withdrawal code), which is a real disambiguation, but it adds no format, length, or example detail.
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 specific verb+resource (retrieve full detail of one payment) and enumerates the returned fields, so the agent knows exactly what it fetches. It implicitly separates itself from the list_* siblings by scoping to 'one payment by its payment code', but never names an alternative sibling such as payping_get_invoice or payping_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?
It gives a concrete when-to-use case: 'Use it to check whether a payment really succeeded.' That is clear context for selecting the tool, but there are no exclusions and no routing guidance versus closely related lookups like payping_get_invoice or payping_get_withdrawal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
payping_get_productPayPing: product detailBRead-onlyIdempotent
One product by code: title, description, price (Toman), stock, tax, image, category.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, open-world behavior, so the safety profile is covered. The description adds only that the result includes fields like price in Toman, stock and tax, which is mild extra context; it says nothing about auth needs, error behavior for a missing code, or rate limits.
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?
A single front-loaded clause with zero filler; the key scoping fact ('by code') comes first. It is terse to the point of missing context, but nothing in it is wasted.
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?
An output schema exists, so the enumerated fields are redundant rather than necessary, and for a single-parameter read-only tool the description is adequate. It nonetheless leaves usage context and error/missing-product behavior unstated.
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% for the single 'code' parameter, so the description carries some burden. 'One product by code' establishes that code identifies the product, but adds no format, source, or constraints (schema only gives maxLength 100) beyond that.
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 resource (one product) and the lookup key (by code), and the listed fields make the intent unambiguous. It does not explicitly name payping_list_products as the alternative, but 'One product by code' implicitly contrasts with the list 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?
No explicit when-to-use guidance, prerequisites, or alternatives are given. The reader can infer it is for fetching a single known product, but nothing routes the agent between this and payping_list_products or payping_create_product.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
payping_get_profilePayPing: account profileARead-onlyIdempotent
Show the PayPing account behind PAYPING_TOKEN: username, name, email, phone and verification flags. Use first to confirm the token works.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld and non-destructive, so safety is covered. The description adds real value beyond that: it identifies the exact fields exposed and positions the call as a token-validity probe, which is behavior the annotations don't convey. It omits any note on auth failure behavior or rate limits, keeping it short of a 5.
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?
Two short sentences, zero filler. The scope (what is shown) comes first and the usage guidance ('Use first...') is a tight, front-loaded follow-up.
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 no-parameter read tool with an output schema, so return-value documentation is unnecessary. The description covers what is returned, why it matters, and when to call it — nothing an agent needs is missing.
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 takes zero parameters, so the baseline is 4. There are no arguments whose semantics the description could clarify, and it correctly introduces none.
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?
Specific verb ('Show') plus resource ('the PayPing account behind PAYPING_TOKEN') and an explicit enumeration of returned fields (username, name, email, phone, verification flags). This distinguishes it from siblings like get_balance or list_transactions without the agent needing to open any schema.
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?
'Use first to confirm the token works' gives clear, actionable context for when to call it — as a prerequisite/health-check step. It stops short of naming an alternative tool or stating when not to use it, but the primary usage condition is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
payping_get_sales_summaryPayPing: sales summaryARead-onlyIdempotent
Sales totals for a period: total amount (Toman), transaction count and daily averages. Defaults to the last 30 days.
| Name | Required | Description | Default |
|---|---|---|---|
| to_date | No | Last day to include (YYYY-MM-DD, UTC). | |
| from_date | No | First day to include (YYYY-MM-DD, UTC). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive and openWorld, so the safety profile is covered. The description adds genuinely useful behavior beyond that: the reporting currency (Toman) and the effective default window when dates are omitted, which the schema alone does not resolve (it only shows null defaults).
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?
Two tight sentences: the returned metrics are front-loaded, the default period follows. Zero filler and nothing redundant with the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only aggregate with an output schema covering return values, the description is nearly sufficient: it names the metrics, currency, and default range. The only gap is routing guidance versus sibling tools, which keeps it from a 5.
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 baseline is 3, but the description adds the null-omission behavior ('defaults to the last 30 days') that the schema's null defaults leave ambiguous, clarifying how from_date/to_date behave when unset.
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?
States a specific verb+resource (sales summary) and enumerates the concrete outputs: total amount in Toman, transaction count, daily averages. This distinguishes it from list-oriented siblings like payping_list_transactions, but it never explicitly names an alternative, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The default window ('last 30 days') implies a typical usage context, but there is no explicit when-to-use or when-not-to-use guidance, nor any pointer to sibling aggregation tools such as payping_get_balance or payping_list_transactions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
payping_get_withdrawalPayPing: withdrawal detailARead-onlyIdempotent
Detail of one settlement by code: amount (Toman), request and payout dates, IBAN, bank tracking number.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is fully covered structurally. The description adds the currency unit (Toman) for the amount, which is genuinely useful context, but enumerates return fields that the output schema already provides.
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?
A single dense sentence with the resource and identifier front-loaded, followed by the useful field list. Nothing is wasted, though the return-field enumeration partly duplicates the output schema.
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 read tool with an output schema and full annotation coverage, the description supplies enough to call it correctly and sets expectations about the payload. The only real gap is not explaining where the code comes from.
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?
There is one required parameter ('code') at 0% schema description coverage, and the description only tells us the code identifies a settlement ('by code'). It does not clarify the code's format, source, or whether it is the same identifier used by payping_list_withdrawals, so the compensation for the coverage gap is thin.
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?
States a specific verb and resource ('Detail of one settlement by code'), which cleanly separates it from the sibling payping_list_withdrawals. It stops short of naming that sibling, so the differentiation is inferable rather than explicit.
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 'by code' implies you need a known settlement code, which is a usable precondition, but there is no explicit statement of when to use this versus payping_list_withdrawals or what to do if the code is unknown. Usage is implied rather than guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
payping_list_couponsPayPing: list couponsBRead-onlyIdempotent
List discount coupons: name, type (0 = percent, 1 = Toman), amount, code, active, products it applies to.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Items to return, 1-50 (PayPing's maximum is 50). | |
| offset | No | Skip this many items (paging). | |
| search | No | Text to search for. | |
| include_archived | No | Include archived items. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, so the safety profile is covered. The description adds the type-code semantics (0 = percent, 1 = Toman), which is genuine value beyond the annotations, but says nothing about paging behavior or result ordering.
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?
A single front-loaded sentence that enumerates the meaningful fields with zero filler. Nothing could be removed without losing 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?
With an output schema present, the field enumeration is somewhat redundant, and the annotations already carry the read-only profile. The definition is adequate for a simple list call but adds little beyond what structured fields already provide.
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% with all four parameters (limit, offset, search, include_archived) fully documented in the schema, including the 1-50 cap. The description adds no parameter detail beyond that, so 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?
States a specific verb and resource ('List discount coupons') and enumerates the returned fields, so the agent knows exactly what this yields. It distinguishes itself from the singular payping_get_coupon and payping_create_coupon siblings implicitly via 'list', but never names them explicitly.
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 when-to-use guidance and no mention of alternatives such as payping_get_coupon for a single coupon or payping_create_coupon for writes. The agent must infer usage from the verb alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
payping_list_customersPayPing: list customersBRead-onlyIdempotent
List saved customers (code, name, phone, email, business name) with the total count.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Items to return, 1-50 (PayPing's maximum is 50). | |
| offset | No | Skip this many items (paging). | |
| search | No | Text to search for. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered. The description adds that a total count is returned, which is mild extra context, but says nothing about paging behavior or rate limits.
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?
A single front-loaded sentence that names the resource, the returned fields and the count with zero filler. Nothing is wasted.
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?
An output schema exists, so return values need no elaboration, and the description notes the fields and total count. Given the simple 3-param read-only nature, it is largely complete, missing only usage routing.
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 limit, offset and search are fully documented in the schema with ranges and defaults. The description adds no syntax or semantic detail beyond what the schema provides, so 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?
States a specific verb (List) and resource (saved customers) and even enumerates the fields returned plus the total count. It is clearly distinguishable from the singular sibling payping_get_customer, though it never names that sibling explicitly.
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 list tool versus payping_get_customer, payping_search, or filtering via the search parameter. 'Saved customers' hints at scope but no when/when-not conditions or alternatives are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
payping_list_invoicesPayPing: list invoicesCRead-onlyIdempotent
List invoices: code, number, title, status (0 draft, 1 awaiting payment, 2 paid, 3 overdue, 4 cancelled), total (Toman), due and paid dates, customer.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Items to return, 1-50 (PayPing's maximum is 50). | |
| offset | No | Skip this many items (paging). | |
| search | No | Text to search for. | |
| status | No | ||
| customer_code | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds the returned field set and a status-code legend (0 draft ... 4 cancelled), which is useful context, but it never explains filtering behavior, paging semantics, or that the numeric status legend does not match the string enum in the schema.
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?
A single front-loaded sentence that leads with the verb and resource, with no filler or redundant preamble. The inline status legend is slightly verbose but readable and earns its place as field semantics.
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?
An output schema exists, so return values need not be spelled out — yet the description's entire content is a return-field list. For a five-parameter filtered list tool, the description omits how to filter, how to page, and when to prefer it over payping_get_invoice or payping_list_transactions, leaving real gaps.
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 60%, and the description contributes zero parameter information — it never mentions limit, offset, search, status, or customer_code. It spends its budget on return fields instead, leaving the filtering interface under-documented relative to the coverage gap.
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?
States a specific verb ('List') and resource ('invoices') and enumerates the fields returned, so the agent knows this is a paginated collection read rather than a single-record fetch. It does not explicitly distinguish itself from siblings like payping_get_invoice or payping_list_transactions, but the list/get distinction is inferable from the name.
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 when-to-use statement, no named alternatives, and no mention that the tool supports filtering by status, customer_code, or search despite those params existing. The agent must infer usage entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
payping_list_productsPayPing: list productsARead-onlyIdempotent
List products (PayPing "financial items"): code, title, price (Toman), stock, active, has a payment link.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Items to return, 1-50 (PayPing's maximum is 50). | |
| offset | No | Skip this many items (paging). | |
| search | No | Text to search for. | |
| include_archived | No | Include archived items. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is fully covered without the description. The description adds the useful detail that prices are in Toman and that items carry a payment link, but says nothing about pagination semantics, whether archived items are excluded by default, or rate limits.
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?
A single sentence with zero filler, front-loading the verb and resource before the field enumeration and the alias clarification. Nothing needs to be trimmed and nothing important is buried.
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?
An output schema exists, so the description is not obliged to explain return values, and annotations cover the safety profile. For a simple paginated list endpoint this is close to sufficient; the only mild gap is that it never routes the agent to get_product/create_product or explains the archived-item default, though the latter is implied by include_archived.
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 limit/offset/search/include_archived are already documented with defaults and bounds in the schema. The description adds no parameter-level meaning beyond that, which is the expected baseline of 3 when the schema does the heavy lifting.
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?
States a specific verb (List) and resource (products) and even resolves PayPing's domain alias ('financial items'), so an agent knows exactly what this returns. The enumerated fields (code, title, price, stock, active, payment link) pin down scope further. Plural 'List' versus the singular sibling payping_get_product is unambiguous from the name alone.
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 when-to-use guidance, no prerequisites, and never mentions alternatives such as payping_get_product for a single item or payping_create_product for writes. Usage is only inferable from the tool name, which is the definition of minimal guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
payping_list_transactionsPayPing: list transactionsARead-onlyIdempotent
List payments (newest first) with amount (Toman), payer, description, isPaid and payment code, plus the total count for the same filter. Use payping_get_payment with a code for full detail.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | 'received' = payments to you, 'paid' = payments you made; omit for both. | |
| limit | No | Items to return, 1-50 (PayPing's maximum is 50). | |
| offset | No | Skip this many items (paging). | |
| to_date | No | Last day to include (YYYY-MM-DD, UTC). | |
| from_date | No | First day to include (YYYY-MM-DD, UTC). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so safety is covered. The description adds genuine value beyond them: newest-first ordering, currency (Toman), the presence of a total count, and the exact field set returned. It stops short of mentioning pagination behavior or limits, which is a modest 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?
Two sentences, zero filler, with the result-shape information front-loaded and the alternative deferred to the end. Every clause 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?
With an output schema present and annotations covering safety, the description needn't explain return values in depth, and its scope, ordering and alternative routing are adequate for correct invocation. Minor omissions (paging behavior, relation to the other list siblings) keep it from a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents kind, limit, offset, from_date and to_date with formats and ranges. The description only alludes to 'the same filter' without adding syntax or defaults, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('List payments'), immediately enumerates the returned fields (amount in Toman, payer, description, isPaid, payment code), and names sort order ('newest first') plus the total count. It also explicitly routes the agent to the sibling payping_get_payment for full detail, so it is distinguishable without opening a schema.
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 second sentence gives a clear alternative and the condition that selects it ('Use payping_get_payment with a code for full detail'). It does not, however, state when to prefer this over the other list siblings (invoices, withdrawals, customers), so guidance is strong but not complete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
payping_list_withdrawalsPayPing: list withdrawalsARead-onlyIdempotent
List settlements (withdrawals to your bank account): date, amount (Toman), code and whether it was paid out, plus the total count.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Items to return, 1-50 (PayPing's maximum is 50). | |
| offset | No | Skip this many items (paging). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds two useful bits beyond that: amounts are in Toman (a currency-unit detail absent from the schema) and a total count is returned alongside the page. It says nothing about pagination limits or ordering, so this is a modest rather than rich contribution.
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?
One front-loaded sentence with the resource named first and the payload enumerated via a colon list; no filler, no restatement of the name or annotations.
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?
An output schema exists, so return values need not be explained, and annotations carry the safety profile; the description nonetheless briefly characterizes the payload (which is helpful for a Toman-currency, status-bearing list). The only meaningful gap is the absence of routing guidance against the get_withdrawal / list_transactions siblings.
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% — limit (1-50, default 20) and offset (paging) are fully documented in the schema. The description adds no parameter syntax or defaults of its own, 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?
States a specific verb ('List') and resource ('settlements (withdrawals to your bank account)'), and disambiguates from the sibling list tools (transactions, invoices, customers) by naming the bank-account-settlement resource. It even enumerates the returned fields (date, amount, code, paid status), so an agent knows exactly what it gets.
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 when-to-use guidance, no prerequisites, and no reference to alternatives such as payping_get_withdrawal for a single withdrawal or payping_list_transactions for payment activity. The agent must infer routing from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
payping_send_invoicePayPing: send invoiceADestructive
Send an invoice to its customer by SMS/email from PayPing. Messages a real person: confirm with the user before calling.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and openWorldHint=true, so the agent knows this has real-world, irreversible effects. The description adds the crucial detail that a human recipient is affected and user confirmation is needed, which is context annotations cannot express. It stops short of stating delivery failure behavior or rate limits.
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?
Two short sentences, front-loaded with the action and outcome, then the confirmation warning. No wasted words.
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 output schema covers return values and annotations cover safety, and the description supplies the human-impact warning. However, the sole required parameter is completely undocumented anywhere, which is a significant gap for a tool the agent must invoke 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?
One parameter ('code') with 0% schema description coverage and no explanation in the description. The agent cannot tell whether this is an invoice ID, a customer code, or something else, which is a real gap for a required identifier.
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?
States a specific verb+resource: sending an invoice to its customer via SMS/email from PayPing. This distinguishes it from read siblings (get_invoice, list_invoices) and from create_invoice, but does not explicitly name those 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?
Adds an explicit safety condition: the message reaches a real person, so the agent should confirm with the user first. It does not name a sibling as an alternative, but the when-to-use framing is concrete.
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.
21 tool updates
v0.1.0- First observed
payping_create_coupon - First observed
payping_create_customer - First observed
payping_create_invoice - First observed
payping_create_payment_link - First observed
payping_create_product - First observed
payping_get_balance - First observed
payping_get_coupon - First observed
payping_get_customer - First observed
payping_get_invoice - First observed
payping_get_payment - First observed
payping_get_product - First observed
payping_get_profile - First observed
payping_get_sales_summary - First observed
payping_get_withdrawal - First observed
payping_list_coupons - First observed
payping_list_customers - First observed
payping_list_invoices - First observed
payping_list_products - First observed
payping_list_transactions - First observed
payping_list_withdrawals - First observed
payping_send_invoice
TDQS
Scored across 21 tools
Each tool maps to a distinct action+resource: get vs list is consistently signalled by singular/plural names, and create/send operations are clearly separated. Descriptions explicitly clarify overlaps, such as list_transactions vs get_payment, so an agent can select the right tool without ambiguity.
All tool names use the same payping_ prefix and snake_case verb_noun pattern. Verbs are predictable (get, list, create, send) and resource names are consistent across pairs.
21 tools is on the heavy side for a single MCP server, but each maps to a distinct PayPing resource or action such as customers, products, coupons, invoices, payments, and withdrawals. The surface is broad rather than redundant, so it remains reasonable though somewhat large.
The set covers list/get for most resources and create/send for key workflows, including invoices, payment links, customers, products, and coupons. However, it lacks update/delete operations for mutable resources and has no refund or invoice-cancel tools, which are notable lifecycle gaps.
Maintenance
Related MCP Connectors
Verified, pay-per-use API tools for AI agents through one authenticated connection.
Read payment settings, orders and receipts, create payment links and API keys.
Stripe payments for AI agents. Create links, verify, manage customers.
Sell to people and AI agents: create products, a storefront, and USDC payment links from chat.
Related MCP Servers
- AlicenseAqualityDmaintenanceTalk to your DeonPay merchant account from any MCP-compatible AI host. Enables reading transactions, creating payment links, inspecting subscriptions, and more.2010 npmMIT
- AlicenseAqualityCmaintenanceEnables MCP hosts like Claude, VS Code, Cursor, and others to discover payment methods, create payment links, verify payments, inspect invoices, and manage refunds through focused tools, with a guided safe payment workflow and a restricted generic API escape hatch.725 npmMIT

cryptunnel-mcpofficial
AlicenseAqualityBmaintenanceEnables coding agents to create and look up crypto payments over stdio, returning checkout links, payment statuses, paged payment lists, and receivable currencies, with real payments gated behind an explicit opt-in environment flag.4MIT- AlicenseNot gradedqualityBmaintenanceLets AI clients work with one or more Stax Payments merchant accounts over stdio, discovering and switching between accounts, finding customers, listing saved payment methods, and reading transactions. Read-only by default, with opt-in write tools for creating customers, charging saved payment methods, capturing, refunding, and voiding transactions.MIT