Qut Pay (Kaspi QR payments)

Kaspi QR payments (Kazakhstan) via Qut Pay: create invoices, check status, refund, sandbox tests.

我该使用它吗

质量与安全性

A
描述质量
98%
模式完整度
77%
命名质量
80%
投毒风险
100%
权限匹配度
100%
协议合规性
100%

基于对工具定义和协议合规性的自动分析。

上下文开销

~1,447token 数(工具定义)
~1.0 KB典型响应大小
对注意力有中等影响(占 128k 上下文窗口的 1.13%)

这是每次将服务器的工具加载到模型上下文窗口时所消耗的大致 token 数。数值越高,可用于其他任务的注意力就越少。

安装

一键安装

将以下内容添加到你的 `claude_desktop_config.json` 文件中:

{
  "mcpServers": {
    "mcp": {
      "command": "npx",
      "args": [
        "@qutpay/mcp"
      ]
    }
  }
}

可运行的软件包

npm@qutpay/mcp0.1.2stdio

远程端点

https://api.qut.kz/mcpstreamable-http

它能做什么

工具清单

工具(9)

🟢 只读🟡 写入🔴 删除⚪ 未知
🟢qutpay_account

Returns the organization behind the API key: mode (sandbox or live), tariff and limits, connected Kaspi cashiers, provider status. Call this first.

输入模式

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡qutpay_create_invoice(amount, description, externalOrderId, idempotencyKey, kind, ...)

Creates an invoice (QR by default, or pushed to the customer's Kaspi.kz app with kind="phone"). Returns payUrl (hosted pay page), qrImageUrl, deepLink, expiresAt (~3 min). Always pass idempotencyKey (e.g. "order-1001") so a retry never creates a second invoice. Amount in KZT, ≤ 2 decimals; whole tenge for kind="phone".

输入模式

{
  "type": "object",
  "properties": {
    "amount": {
      "type": "number",
      "exclusiveMinimum": 0,
      "description": "Amount in KZT, e.g. 2500 or 1500.5"
    },
    "description": {
      "type": "string",
      "maxLength": 255,
      "description": "Shown to the customer, e.g. \"Order #1001\""
    },
    "externalOrderId": {
      "type": "string",
      "maxLength": 120,
      "description": "Your order id; later GET /invoices?externalOrderId finds it"
    },
    "idempotencyKey": {
      "type": "string",
      "minLength": 1,
      "maxLength": 120,
      "description": "Unique per order; same key → same invoice"
    },
    "kind": {
      "type": "string",
      "enum": [
        "qr",
        "phone"
      ],
      "description": "\"qr\" (default) or \"phone\" (invoice pushed into the customer's Kaspi.kz app; needs customer.phone)"
    },
    "customer": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        },
        "phone": {
          "type": "string",
          "pattern": "^7\\d{10}$",
          "description": "7XXXXXXXXXX"
        },
        "email": {
          "type": "string",
          "format": "email"
        }
      },
      "additionalProperties": false
    },
    "successUrl": {
      "type": "string",
      "format": "uri"
    },
    "failUrl": {
      "type": "string",
      "format": "uri"
    },
    "metadata": {
      "type": "object",
      "additionalProperties": {},
      "description": "Returned unchanged in webhooks"
    }
  },
  "required": [
    "amount"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢qutpay_get_invoice(id, live)

Reads one invoice by id (inv_…). live=true asks Kaspi right now instead of the cached status. Status flow: new → pending → paid | failed | expired | cancelled; paid → partially_refunded → refunded.

输入模式

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "minLength": 1
    },
    "live": {
      "type": "boolean"
    }
  },
  "required": [
    "id"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢qutpay_list_invoices(status, externalOrderId, from, to, limit, ...)

Lists invoices of the organization, newest first. Filter by status, externalOrderId, date range (ISO), limit ≤ 50, offset for paging.

输入模式

{
  "type": "object",
  "properties": {
    "status": {
      "type": "string",
      "enum": [
        "new",
        "pending",
        "paid",
        "failed",
        "expired",
        "cancelled",
        "partially_refunded",
        "refunded"
      ]
    },
    "externalOrderId": {
      "type": "string"
    },
    "from": {
      "type": "string",
      "description": "ISO date/time, inclusive"
    },
    "to": {
      "type": "string",
      "description": "ISO date/time, exclusive"
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    },
    "offset": {
      "type": "integer",
      "minimum": 0
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴qutpay_cancel_invoice(id)

Closes a pending invoice. A QR may still be paid until expiresAt — then invoice.paid arrives anyway; handle it.

输入模式

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "minLength": 1
    }
  },
  "required": [
    "id"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴qutpay_refund_invoice(id, amount, reason, confirm)

Full refund (omit amount) or partial refund of a paid invoice. Needs the refunds:write scope. With a LIVE key real money is returned to the customer, so confirm=true is required and the merchant must have asked for this refund explicitly.

输入模式

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "minLength": 1
    },
    "amount": {
      "type": "number",
      "exclusiveMinimum": 0,
      "description": "Omit for a full refund"
    },
    "reason": {
      "type": "string",
      "maxLength": 255
    },
    "confirm": {
      "type": "boolean",
      "description": "Required (true) with a live key"
    }
  },
  "required": [
    "id"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
⚪qutpay_simulate_payment(id, status)

Completes a sandbox invoice as paid / failed / expired without Kaspi, so the whole flow including the merchant's webhook can be tested. Refuses to run with a live key.

输入模式

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "minLength": 1
    },
    "status": {
      "type": "string",
      "enum": [
        "paid",
        "failed",
        "expired"
      ],
      "description": "Default \"paid\""
    }
  },
  "required": [
    "id"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢qutpay_list_subscriptions(status, limit)

Read-only list of recurring invoice schedules. Needs the subscriptions:manage scope on the key.

输入模式

{
  "type": "object",
  "properties": {
    "status": {
      "type": "string",
      "enum": [
        "active",
        "paused",
        "cancelled"
      ]
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢qutpay_get_subscription(id)

Reads a recurring invoice schedule by id (sub_…). Needs the subscriptions:manage scope.

输入模式

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "minLength": 1
    }
  },
  "required": [
    "id"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

社区

评价此服务器

证据

最近观测

已验证未记录版本9 个工具