PayRam
by payram.com · remote · no sign-in to list tools · v1.2.0 · published by com.payram
Install, configure, operate and integrate self-hosted PayRam crypto payment gateways.
44 tools: 12 do something that can't be undone, 20 change things and 12 only read.
Scanned Oct 21, 2026
- Deletes or cancels0Claude Code: deny
- Can't be undone12Claude Code: ask: see these tools
- Changes things20Claude Code: ask: see these tools
- Only reads12Claude Code: allow: see these tools
32 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http payram https://mcp.payram.com/mcpFindings
Matches of fixed checks, with the text they matched.
The title refers to ".env".
What this check looks forMatched text
title: "Generate Payram .env Template"
The annotations title refers to ".env".
What this check looks forMatched text
annotations.title: "Generate Payram .env Template"
The description refers to ".env".
What this check looks forMatched text
description: "Creates a .env template for configuring a merchant bac..."
The server marks "payram_setup_plan" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "start": a word for a change.
The server marks "generate_env_template" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "generate_env_template" says "generate": a word for a change.
The server marks "generate_setup_checklist" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "generate_setup_checklist" says "generate": a word for a change.
Show 26 more findingsShow fewer
The server marks "generate_payment_sdk_snippet" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "generate_payment_sdk_snippet" says "generate": a word for a change.
The server marks "generate_payment_http_snippet" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "generate_payment_http_snippet" says "generate": a word for a change.
The server marks "generate_payment_status_snippet" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "generate_payment_status_snippet" says "generate": a word for a change.
The server marks "generate_payment_route_snippet" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "generate_payment_route_snippet" says "generate": a word for a change.
The server marks "snippet_nextjs_payment_route" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "snippet_nextjs_payment_route" says "payment": a word that usually means money moves, which cannot be taken back.
The server marks "snippet_express_payment_route" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "snippet_express_payment_route" says "payment": a word that usually means money moves, which cannot be taken back.
The server marks "snippet_fastapi_payment_route" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "snippet_fastapi_payment_route" says "payment": a word that usually means money moves, which cannot be taken back.
The server marks "snippet_laravel_payment_route" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "snippet_laravel_payment_route" says "payment": a word that usually means money moves, which cannot be taken back.
The server marks "snippet_go_payment_handler" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "snippet_go_payment_handler" says "payment": a word that usually means money moves, which cannot be taken back.
The server marks "snippet_spring_payment_controller" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "snippet_spring_payment_controller" says "payment": a word that usually means money moves, which cannot be taken back.
The server marks "generate_payout_sdk_snippet" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "generate_payout_sdk_snippet" says "generate": a word for a change.
The server marks "generate_payout_status_snippet" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "generate_payout_status_snippet" says "generate": a word for a change.
The server marks "generate_payout_recipient_flow_snippet" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "generate_payout_recipient_flow_snippet" says "generate": a word for a change.
The server marks "generate_referral_sdk_snippet" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "generate_referral_sdk_snippet" says "generate": a word for a change.
The server marks "generate_referral_validation_snippet" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "generate_referral_validation_snippet" says "generate": a word for a change.
The server marks "generate_referral_status_snippet" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "generate_referral_status_snippet" says "generate": a word for a change.
The server marks "generate_referral_route_snippet" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "generate_referral_route_snippet" says "generate": a word for a change.
The server marks "generate_webhook_handler" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "generate_webhook_handler" says "generate": a word for a change.
The server marks "generate_webhook_event_router" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "generate_webhook_event_router" says "generate": a word for a change.
The server marks "generate_mock_webhook_event" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "generate_mock_webhook_event" says "generate": a word for a change.
The server marks "generate_topup_integration_snippet" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "generate_topup_integration_snippet" says "generate": a word for a change.
The server marks "scaffold_payram_app" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "generate": a word for a change.
- Infopayram_doctor
The description mentions "credentials".
What this check looks forMatched text
description: "...URL — works from the hosted MCP without credentials: reachability, health, TLS certificate,..."
The description mentions "credentials".
What this check looks forMatched text
description: "..., plus which tool to use next. Needs no credentials and no access to the server; what you p..."
The description mentions "credentials".
What this check looks forMatched text
description: "...against the merchant's PayRam API with credentials that stay on your machine: which endpoi..."
The description mentions "credentials".
What this check looks forMatched text
description: "Confirm hosting, credentials, and environment variables before gener..."
Tools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
44 tools
Can't be undone 12Claude Code: ask
generate_payment_http_snippetGenerates a raw HTTP sample for creating a Payram payment in the requested language.1 finding
Why it is in this group
- The name "generate_payment_http_snippet" says "generate": a word for a change.
- The name "generate_payment_http_snippet" also says "payment": a word that usually means money moves, which cannot be taken back.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "generate_payment_http_snippet" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "generate_payment_http_snippet" says "generate": a word for a change.
Description, as the server wrote it Generates a raw HTTP sample for creating a Payram payment in the requested language.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
- title: Generate HTTP payment snippet
generate_payment_route_snippetGenerates a ready-to-use backend endpoint (e.g., /api/pay/create) that creates a Payram payment.1 finding
Why it is in this group
- The name "generate_payment_route_snippet" says "generate": a word for a change.
- The name "generate_payment_route_snippet" also says "payment": a word that usually means money moves, which cannot be taken back.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "generate_payment_route_snippet" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "generate_payment_route_snippet" says "generate": a word for a change.
Description, as the server wrote it Generates a ready-to-use backend endpoint (e.g., /api/pay/create) that creates a Payram payment.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
- title: Generate payment route snippet
generate_payment_sdk_snippetGenerates backend code using the official Payram JS/TS SDK to create a payment.1 finding
Why it is in this group
- The name "generate_payment_sdk_snippet" says "generate": a word for a change.
- The name "generate_payment_sdk_snippet" also says "payment": a word that usually means money moves, which cannot be taken back.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "generate_payment_sdk_snippet" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "generate_payment_sdk_snippet" says "generate": a word for a change.
Description, as the server wrote it Generates backend code using the official Payram JS/TS SDK to create a payment.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
- title: Generate SDK payment snippet
generate_payout_recipient_flow_snippetGenerates the recommended OTP-verified payout flow: create recipient → validate OTP → create payout against the saved recipient.1 finding
Why it is in this group
- The name "generate_payout_recipient_flow_snippet" says "generate": a word for a change.
- The name "generate_payout_recipient_flow_snippet" also says "payout": a word that usually means money moves, which cannot be taken back.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "generate_payout_recipient_flow_snippet" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "generate_payout_recipient_flow_snippet" says "generate": a word for a change.
Description, as the server wrote it Generates the recommended OTP-verified payout flow: create recipient → validate OTP → create payout against the saved recipient. Use this for repeat beneficiaries; use generate_payout_sdk_snippet for one-off direct payouts.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
- title: Generate 3-step recipient payout flow snippet
generate_payout_sdk_snippetGenerates a backend code snippet for creating a payout using the Payram JS/TS SDK.1 finding
Why it is in this group
- The name "generate_payout_sdk_snippet" says "generate": a word for a change.
- The name "generate_payout_sdk_snippet" also says "payout": a word that usually means money moves, which cannot be taken back.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "generate_payout_sdk_snippet" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "generate_payout_sdk_snippet" says "generate": a word for a change.
Description, as the server wrote it Generates a backend code snippet for creating a payout using the Payram JS/TS SDK.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
- title: Generate payout SDK snippet
generate_topup_integration_snippetFor EXISTING apps: emits the recommended top-up wallet integration — ledger schema + cumulative-credit webhook handler + atomic invoice-settle function.1 finding
Why it is in this group
- The name "generate_topup_integration_snippet" says "generate": a word for a change.
- The name "generate_topup_integration_snippet" also says "topup": a word that usually means money moves, which cannot be taken back.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "generate_topup_integration_snippet" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "generate_topup_integration_snippet" says "generate": a word for a change.
Description, as the server wrote it For EXISTING apps: emits the recommended top-up wallet integration — ledger schema + cumulative-credit webhook handler + atomic invoice-settle function. Credits crypto payments to a user's balance first, then debits invoices from it, so over/under/late/duplicate payments become balance states, not payment exceptions. Pair with the payram-topup-wallet-integration skill. (New store with no users? Use the checkout/plugin path instead.)
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
- title: Generate top-up wallet integration
snippet_express_payment_routeReturns an Express router that posts to Payram's /api/v1/payment endpoint.1 finding
Why it is in this group
- The name "snippet_express_payment_route" says "payment": a word that usually means money moves, which cannot be taken back.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "snippet_express_payment_route" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "snippet_express_payment_route" says "payment": a word that usually means money moves, which cannot be taken back.
Description, as the server wrote it Returns an Express router that posts to Payram's /api/v1/payment endpoint.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
- title: Express create-payment route snippet
snippet_fastapi_payment_routeReturns a FastAPI handler that calls Payram's create-payment HTTP API.1 finding
Why it is in this group
- The name "snippet_fastapi_payment_route" says "payment": a word that usually means money moves, which cannot be taken back.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "snippet_fastapi_payment_route" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "snippet_fastapi_payment_route" says "payment": a word that usually means money moves, which cannot be taken back.
Description, as the server wrote it Returns a FastAPI handler that calls Payram's create-payment HTTP API.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
- title: FastAPI create-payment route snippet
snippet_go_payment_handlerReturns a Gin handler that proxies /api/pay/create to Payram's create-payment API.1 finding
Why it is in this group
- The name "snippet_go_payment_handler" says "payment": a word that usually means money moves, which cannot be taken back.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "snippet_go_payment_handler" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "snippet_go_payment_handler" says "payment": a word that usually means money moves, which cannot be taken back.
Description, as the server wrote it Returns a Gin handler that proxies /api/pay/create to Payram's create-payment API.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
- title: Go (Gin) create-payment route snippet
snippet_laravel_payment_routeReturns a Laravel controller that posts to Payram's /api/v1/payment endpoint.1 finding
Why it is in this group
- The name "snippet_laravel_payment_route" says "payment": a word that usually means money moves, which cannot be taken back.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "snippet_laravel_payment_route" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "snippet_laravel_payment_route" says "payment": a word that usually means money moves, which cannot be taken back.
Description, as the server wrote it Returns a Laravel controller that posts to Payram's /api/v1/payment endpoint.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
- title: Laravel create-payment route snippet
snippet_nextjs_payment_routeReturns a Next.js App Router API route that calls Payram's create-payment HTTP API.1 finding
Why it is in this group
- The name "snippet_nextjs_payment_route" says "payment": a word that usually means money moves, which cannot be taken back.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "snippet_nextjs_payment_route" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "snippet_nextjs_payment_route" says "payment": a word that usually means money moves, which cannot be taken back.
Description, as the server wrote it Returns a Next.js App Router API route that calls Payram's create-payment HTTP API.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
- title: Next.js create-payment route snippet
snippet_spring_payment_controllerReturns a Spring Boot controller that calls Payram's /api/v1/payment endpoint.1 finding
Why it is in this group
- The name "snippet_spring_payment_controller" says "payment": a word that usually means money moves, which cannot be taken back.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "snippet_spring_payment_controller" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "snippet_spring_payment_controller" says "payment": a word that usually means money moves, which cannot be taken back.
Description, as the server wrote it Returns a Spring Boot controller that calls Payram's /api/v1/payment endpoint.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
- title: Spring Boot create-payment controller snippet
Changes things 20Claude Code: ask
generate_env_templateCreates a .env template for configuring a merchant backend to talk to a self-hosted Payram server.4 findings
Why it is in this group
- The name "generate_env_template" says "generate": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- High
The title refers to ".env".
What this check looks forMatched text
title: "Generate Payram .env Template"
- High
The annotations title refers to ".env".
What this check looks forMatched text
annotations.title: "Generate Payram .env Template"
- High
The description refers to ".env".
What this check looks forMatched text
description: "Creates a .env template for configuring a merchant bac..."
- Warn
The server marks "generate_env_template" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "generate_env_template" says "generate": a word for a change.
Description, as the server wrote it Creates a .env template for configuring a merchant backend to talk to a self-hosted Payram server.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
- title: Generate Payram .env Template
generate_mock_webhook_eventGenerates a snippet to send mock Payram webhook events to your local endpoint for testing.1 finding
Why it is in this group
- The name "generate_mock_webhook_event" says "generate": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "generate_mock_webhook_event" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "generate_mock_webhook_event" says "generate": a word for a change.
Description, as the server wrote it Generates a snippet to send mock Payram webhook events to your local endpoint for testing.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
- title: Generate mock Payram webhook event
generate_payment_status_snippetGenerates backend code to query the status of a Payram payment.1 finding
Why it is in this group
- The name "generate_payment_status_snippet" says "generate": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "generate_payment_status_snippet" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "generate_payment_status_snippet" says "generate": a word for a change.
Description, as the server wrote it Generates backend code to query the status of a Payram payment.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
- title: Generate payment status snippet
generate_payout_status_snippetGenerates backend code to query the status of a payout using the Payram SDK.1 finding
Why it is in this group
- The name "generate_payout_status_snippet" says "generate": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "generate_payout_status_snippet" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "generate_payout_status_snippet" says "generate": a word for a change.
Description, as the server wrote it Generates backend code to query the status of a payout using the Payram SDK.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
- title: Generate payout status SDK snippet
generate_referral_route_snippetGenerates a backend route such as /api/referrals/create for logging referral events.1 finding
Why it is in this group
- The name "generate_referral_route_snippet" says "generate": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "generate_referral_route_snippet" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "generate_referral_route_snippet" says "generate": a word for a change.
Description, as the server wrote it Generates a backend route such as /api/referrals/create for logging referral events.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
- title: Generate referral route snippet
generate_referral_sdk_snippetGenerates a backend route or service snippet to create a referral event using the Payram SDK.1 finding
Why it is in this group
- The name "generate_referral_sdk_snippet" says "generate": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "generate_referral_sdk_snippet" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "generate_referral_sdk_snippet" says "generate": a word for a change.
Description, as the server wrote it Generates a backend route or service snippet to create a referral event using the Payram SDK.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
- title: Generate referral SDK snippet
generate_referral_status_snippetGenerates code to fetch referral progress, rewards, or status.1 finding
Why it is in this group
- The name "generate_referral_status_snippet" says "generate": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "generate_referral_status_snippet" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "generate_referral_status_snippet" says "generate": a word for a change.
Description, as the server wrote it Generates code to fetch referral progress, rewards, or status.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
- title: Generate referral status snippet
generate_referral_validation_snippetGenerates a snippet to validate referral IDs, statuses, and eligibility.1 finding
Why it is in this group
- The name "generate_referral_validation_snippet" says "generate": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "generate_referral_validation_snippet" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "generate_referral_validation_snippet" says "generate": a word for a change.
Description, as the server wrote it Generates a snippet to validate referral IDs, statuses, and eligibility.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
- title: Generate referral validation snippet
generate_setup_checklistReturns a step-by-step checklist of everything a merchant must configure to start using Payram.1 finding
Why it is in this group
- The name "generate_setup_checklist" says "generate": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "generate_setup_checklist" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "generate_setup_checklist" says "generate": a word for a change.
Description, as the server wrote it Returns a step-by-step checklist of everything a merchant must configure to start using Payram.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
- title: Generate Payram Setup Checklist
generate_webhook_event_routerGenerates a backend event router that dispatches Payram webhook events to domain handlers.1 finding
Why it is in this group
- The name "generate_webhook_event_router" says "generate": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "generate_webhook_event_router" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "generate_webhook_event_router" says "generate": a word for a change.
Description, as the server wrote it Generates a backend event router that dispatches Payram webhook events to domain handlers.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
- title: Generate Payram webhook event router
generate_webhook_handlerGenerates backend code to handle Payram webhook HTTP requests.1 finding
Why it is in this group
- The name "generate_webhook_handler" says "generate": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "generate_webhook_handler" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "generate_webhook_handler" says "generate": a word for a change.
Description, as the server wrote it Generates backend code to handle Payram webhook HTTP requests.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
- title: Generate Payram webhook HTTP handler
onboard_agent_setupDeprecated: use payram_setup_plan, which does this and lets you personalise it.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Deprecated: use payram_setup_plan, which does this and lets you personalise it. Returns the default headless plan (testnet, USDC on Base).
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
- title: Onboard: install PayRam as an agent (deprecated)
payram_ops_playbookExact, copy-paste recipes for day-2 operations and troubleshooting that YOU run against the merchant's PayRam API with credentials that stay on your machine: which endpoint, which …1 finding
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Info
The description mentions "credentials".
What this check looks forMatched text
description: "...against the merchant's PayRam API with credentials that stay on your machine: which endpoi..."
Description, as the server wrote it Exact, copy-paste recipes for day-2 operations and troubleshooting that YOU run against the merchant's PayRam API with credentials that stay on your machine: which endpoint, which credential (public / dashboard JWT / project API key), a curl+jq command, how to read the answer, and what not to do. Start with "connect". Tasks: connect, health, version_check, workers, restart_worker, node_sync, site_url, payment_options, unswept_funds, payments_today, payment_lookup, stuck_payment, create_payment_link, payouts, webhooks, logs, daily_check. Omit task to list them.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
- title: PayRam ops playbook (direct API recipes)
payram_runbookStep-by-step procedures for changes to a running PayRam, each step marked agent vs human with hard stops: set_site_url, change_domain, ssl_setup, ssl_renewal_fix, firewall_ports, u…No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Step-by-step procedures for changes to a running PayRam, each step marked agent vs human with hard stops: set_site_url, change_domain, ssl_setup, ssl_renewal_fix, firewall_ports, upgrade, backup, restore, add_chain, smart_bridge, mainnet_cutover, operator_setup, rotate_api_key, reset_test_install, shopify_connector, woocommerce_plugin, secure_analytics_mcp, install_failed, custom_port_or_proxy, external_database, forgot_root_password. Omit task to list them.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
- title: PayRam runbooks (one-off admin tasks)
payram_setup_planStart here to install PayRam on a VPS.1 finding
Why it is in this group
- The description's first verb is "start": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "payram_setup_plan" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "start": a word for a change.
Description, as the server wrote it Start here to install PayRam on a VPS. Returns an ordered, personalised plan — prepare server → install → claim admin + set public URL → wallets (incl. Smart Bridge review) → API key + first payment link → hardening → store/app integration — with who runs each step (agent shell vs human/dashboard), exact commands, what success looks like, and hard stops that need the human (cold wallet, mainnet spend, root-only settings). Ask the user first whether you can run commands on their server (access "ssh") or only chat with them (access "human_runs_commands": they run each command and paste the output back). Pass stage to resume mid-way; payram_doctor tells you the stage of a running server.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
- title: Plan a PayRam install (step by step)
payram_troubleshootSomething is not working?1 finding
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Info
The description mentions "credentials".
What this check looks forMatched text
description: "..., plus which tool to use next. Needs no credentials and no access to the server; what you p..."
Description, as the server wrote it Something is not working? Describe the problem in plain words and/or paste the error or log text. Returns the known PayRam problems it matches, what each usually means, how to confirm it and the fix, plus which tool to use next. Needs no credentials and no access to the server; what you paste is not stored. Call with nothing to list known problems. For a live check of a running server use payram_doctor.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
- title: Troubleshoot a PayRam problem
prepare_payram_testConfirm hosting, credentials, and environment variables before generating demo apps.1 finding
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Info
The description mentions "credentials".
What this check looks forMatched text
description: "Confirm hosting, credentials, and environment variables before gener..."
Description, as the server wrote it Confirm hosting, credentials, and environment variables before generating demo apps.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
- title: Payram Test Readiness Checklist
scaffold_payram_appGenerates a minimal full-stack app skeleton with Payram payments and payouts routes (and a simple UI) for a chosen language and framework.1 finding
Why it is in this group
- The description's first verb is "generate": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "scaffold_payram_app" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "generate": a word for a change.
Description, as the server wrote it Generates a minimal full-stack app skeleton with Payram payments and payouts routes (and a simple UI) for a chosen language and framework.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
- title: Scaffold Payram Payments & Payouts App
suggest_file_structureSuggests a recommended backend folder/file structure for integrating Payram.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Suggests a recommended backend folder/file structure for integrating Payram.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
- title: Suggest Payram File Structure
test_payram_connectionDeprecated: use payram_doctor, which does this and more.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Deprecated: use payram_doctor, which does this and more. Read-only check that a PayRam server is reachable and healthy and, if an API key is supplied, that the key is accepted. Never creates payments.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
- title: Test PayRam connectivity (deprecated)
Only reads 12Claude Code: allow
explain_payment_flowDescribe how payments move from customer initiation through settlement.No findings
Why it is in this group
- The name "explain_payment_flow" says "explain": a word for reading.
Description, as the server wrote it Describe how payments move from customer initiation through settlement.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
- title: Payment Flow Guide
explain_payram_basicsExplain Payram's product pillars, architecture, payments, and payouts capabilities.No findings
Why it is in this group
- The name "explain_payram_basics" says "explain": a word for reading.
Description, as the server wrote it Explain Payram's product pillars, architecture, payments, and payouts capabilities.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
- title: Payram Basics Overview
explain_payram_conceptsGlossary-backed explanation of Payram terminology and constraints.No findings
Why it is in this group
- The name "explain_payram_concepts" says "explain": a word for reading.
Description, as the server wrote it Glossary-backed explanation of Payram terminology and constraints.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
- title: Core Payram Concepts
explain_payram_securityAnswer "is PayRam safe / trustworthy / audited?": why an agent can use it without holding secrets, the independent smart contract audit (what it covers and what it does not), and h…No findings
Why it is in this group
- The name "explain_payram_security" says "explain": a word for reading.
Description, as the server wrote it Answer "is PayRam safe / trustworthy / audited?": why an agent can use it without holding secrets, the independent smart contract audit (what it covers and what it does not), and how to verify the report.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
- title: Is PayRam safe? Security and trust
explain_referral_flowDetail the referrer/referee lifecycle and required APIs.No findings
Why it is in this group
- The name "explain_referral_flow" says "explain": a word for reading.
Description, as the server wrote it Detail the referrer/referee lifecycle and required APIs.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
- title: Referral Flow Guide
explain_referrals_basicsSummarize how Payram referral campaigns are configured and managed.No findings
Why it is in this group
- The name "explain_referrals_basics" says "explain": a word for reading.
Description, as the server wrote it Summarize how Payram referral campaigns are configured and managed.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
- title: Referral Basics Overview
get_agent_setup_flowReturns the canonical PayRam headless-agent guide: agent CLI commands, env vars, merchant vs operator mode, wallet flows, adding chains, troubleshooting.No findings
Why it is in this group
- The name "get_agent_setup_flow" says "get": a word for reading.
Description, as the server wrote it Returns the canonical PayRam headless-agent guide: agent CLI commands, env vars, merchant vs operator mode, wallet flows, adding chains, troubleshooting. Long (~11k tokens). For a short personalised plan use payram_setup_plan.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
- title: Get the headless agent guide (full reference)
get_payram_doc_by_idReturns the markdown for a Payram doc given its id, e.g.No findings
Why it is in this group
- The name "get_payram_doc_by_id" says "get": a word for reading.
Description, as the server wrote it Returns the markdown for a Payram doc given its id, e.g. "features/payouts".
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
- title: Get Payram Doc By ID
get_payram_linksSurface official documentation, website, and community links.No findings
Why it is in this group
- The name "get_payram_links" says "get": a word for reading.
Description, as the server wrote it Surface official documentation, website, and community links.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
- title: Payram Important Links
get_referral_dashboard_guideExplain how to embed and manage the referral dashboard experience.No findings
Why it is in this group
- The name "get_referral_dashboard_guide" says "get": a word for reading.
Description, as the server wrote it Explain how to embed and manage the referral dashboard experience.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
- title: Referral Dashboard Guide
list_payram_docsLists the available Payram doc ids.No findings
Why it is in this group
- The name "list_payram_docs" says "list": a word for reading.
Description, as the server wrote it Lists the available Payram doc ids. Optionally scope by a prefix such as "features".
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
- title: List Payram Docs
payram_doctorRead-only diagnosis of a PayRam server by its public URL — works from the hosted MCP without credentials: reachability, health, TLS certificate, installed vs latest version, worker…1 finding
Why it is in this group
- The description's first verb is "read": a word for reading.
Findings
- Info
The description mentions "credentials".
What this check looks forMatched text
description: "...URL — works from the hosted MCP without credentials: reachability, health, TLS certificate,..."
Description, as the server wrote it Read-only diagnosis of a PayRam server by its public URL — works from the hosted MCP without credentials: reachability, health, TLS certificate, installed vs latest version, worker states. Optionally validates an API key without creating anything. Returns ranked likely causes and exact fixes for the first failing stage. Run this first when anything PayRam-related fails.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
- title: Diagnose a PayRam server
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 1.2.0. Values in angle brackets are yours to fill in.
claude mcp add --transport http payram https://mcp.payram.com/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__payram__payram_doctor",
"mcp__payram__get_agent_setup_flow",
"mcp__payram__explain_payram_basics",
"mcp__payram__explain_payram_security",
"mcp__payram__get_payram_links",
"mcp__payram__explain_payment_flow",
"mcp__payram__explain_payram_concepts",
"mcp__payram__explain_referrals_basics",
"mcp__payram__explain_referral_flow",
"mcp__payram__get_referral_dashboard_guide",
"mcp__payram__get_payram_doc_by_id",
"mcp__payram__list_payram_docs"
],
"ask": [
"mcp__payram__payram_setup_plan",
"mcp__payram__payram_troubleshoot",
"mcp__payram__payram_runbook",
"mcp__payram__payram_ops_playbook",
"mcp__payram__generate_env_template",
"mcp__payram__generate_setup_checklist",
"mcp__payram__suggest_file_structure",
"mcp__payram__generate_payment_sdk_snippet",
"mcp__payram__generate_payment_http_snippet",
"mcp__payram__generate_payment_status_snippet",
"mcp__payram__generate_payment_route_snippet",
"mcp__payram__snippet_nextjs_payment_route",
"mcp__payram__snippet_express_payment_route",
"mcp__payram__snippet_fastapi_payment_route",
"mcp__payram__snippet_laravel_payment_route",
"mcp__payram__snippet_go_payment_handler",
"mcp__payram__snippet_spring_payment_controller",
"mcp__payram__generate_payout_sdk_snippet",
"mcp__payram__generate_payout_status_snippet",
"mcp__payram__generate_payout_recipient_flow_snippet",
"mcp__payram__generate_referral_sdk_snippet",
"mcp__payram__generate_referral_validation_snippet",
"mcp__payram__generate_referral_status_snippet",
"mcp__payram__generate_referral_route_snippet",
"mcp__payram__generate_webhook_handler",
"mcp__payram__generate_webhook_event_router",
"mcp__payram__generate_mock_webhook_event",
"mcp__payram__generate_topup_integration_snippet",
"mcp__payram__prepare_payram_test",
"mcp__payram__scaffold_payram_app",
"mcp__payram__test_payram_connection",
"mcp__payram__onboard_agent_setup"
],
"deny": []
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as payram. Review it before you use it.