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 個工具