Skip to content
Qut Pay logo

Qut Pay MCP server

Which MCP servers are Qut Pay's own, from the official registry and from asking its own domain, whether they answer, and what they offer. A program checked each of these, nobody copied them from a product page.

read 2026-10-29

← Back to Qut Pay

Whose server it is
  • Registry namekz.qut/mcpverified in the MCP registry

The registry name sits under qut.kz. The registry only lets a publisher use that namespace after proving control of the domain through DNS or HTTP.

When we asked itchecked 2026-10-29
  • Stateanswerschecked 2026-10-29
  • Tools9
  • Server calls itselfqutpay
  • Server version0.1.2
  • Protocol version2025-06-18

On 2026-10-29 the server answered initialize and tools/list without a sign-in. First answer in 707 ms.

Should an agent connect itNot proven either way yet
  • Whether its tools do the product's job has not been judged yet.
  • Checked on 5 of the 7 days it takes to judge reliability.

Once connected

  • Keep approval on for qutpay_cancel_invoice: they delete, send or pay without saying so.
  • qutpay_create_invoice, qutpay_cancel_invoice change data without a sign-in: anyone with the address can call them.
  • Parameters are untyped or undescribed in 8 of 9 tools: check arguments before calling.

Said by rules from the measurements above. The likely first call is a model's pick from the tool list; read its description before relying on it.

Measured dailydaily checks: 5, the first on 2026-10-29
  • INITE MCP scoreafter a weeka score needs 7 daily checks: 5 so far
  • Use614 npm downloads a week
  • Answeredmeasuring5 of the 7 daily checks it takes to print a share
  • Median first answer972 ms
  • Space in an agent's context≈ 1,310 tokensthe definitions of all its tools (9), which an agent carries on every turn
  • Tool definitionsB · 85 of 100
  • Typed results0 of 9 toolsdeclared outputSchema: results come typed, read once
  • Parameters without a description: in 8 of 9

What an agent can do with it

  • not sure · Accept Kaspi QR payments on websites
  • not sure · Send payment invoices through a Telegram bot
  • cannot · Pass payment webhooks into 1C or Bitrix24

Each of the product's use cases, put to Jev against this server's tool list: can an agent do it with these tools?

Worth a look

  • Tools that delete, send or pay, marked as not destructive: qutpay_cancel_invoice
  • Tools that change data, on a server that answers without a sign-in: qutpay_create_invoice, qutpay_cancel_invoice

A program checks the server once a day: initialize and tools/list, no model. Tokens are the definitions' length at about four characters a token. The grade averages six checks of every tool's name, description, schema and annotations; it says how well the tools are described, not whether they work. The score weighs what was measured and nothing else: answering (25%), doing the product's job (25%), definitions (20%), context (10%), use (10%) and how readily a client connects (10%). A part that was not measured is left out, and a hidden instruction caps the score at 40. The state of vendors' MCP servers: method and numbers →

Tools it offers9 tools · read 2026-10-29
  • qutpay_account

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

  • qutpay_create_invoice

    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…

  • qutpay_get_invoice

    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.

  • qutpay_list_invoices

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

  • qutpay_cancel_invoice

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

  • qutpay_refund_invoice

    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.

  • qutpay_simulate_payment

    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.

  • qutpay_list_subscriptions

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

  • qutpay_get_subscription

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

How to connect

Add the server to your MCP client config. Claude Desktop, Cursor and most other clients read this shape:

{
  "mcpServers": {
    "qut": {
      "type": "http",
      "url": "https://api.qut.kz/mcp"
    }
  }
}

Add it

Claude Code, in a terminal

claude mcp add --transport http qut https://api.qut.kz/mcp

Add to CursorAdd to VS Code

claude.ai, ChatGPT and other clients: add https://api.qut.kz/mcp as a custom connector in the settings.

Also shipped through: npm

OpenAPI spec

24 paths, read 2026-10-29. Open the spec ↗

Each line is something a program found when it went looking: the registry entry, the server's own answer, a spec that parses. A missing line means we did not find it, not that it does not exist.