Install, configure, operate and integrate self-hosted PayRam crypto payment gateways.
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Describe how payments move from customer initiation through settlement.
This tool takes no arguments.
Describe how payments move from customer initiation through settlement.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}Explain Payram's product pillars, architecture, payments, and payouts capabilities.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}Glossary-backed explanation of Payram terminology and constraints.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}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.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}Detail the referrer/referee lifecycle and required APIs.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}Summarize how Payram referral campaigns are configured and managed.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}Creates a .env template for configuring a merchant backend to talk to a self-hosted Payram server.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {},
"additionalProperties": false
}Generates a snippet to send mock Payram webhook events to your local endpoint for testing.
| Argument | Type | Description |
|---|---|---|
| status* | string | Payment status to simulate in the mock webhook event |
| language* | string | Language/tool for the mock webhook request (curl for command-line testing) |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"language",
"status"
],
"properties": {
"status": {
"enum": [
"OPEN",
"CANCELLED",
"FILLED",
"PARTIALLY_FILLED",
"OVER_FILLED",
"UNDEFINED"
],
"type": "string",
"description": "Payment status to simulate in the mock webhook event"
},
"language": {
"enum": [
"curl",
"python",
"go",
"php",
"java"
],
"type": "string",
"description": "Language/tool for the mock webhook request (curl for command-line testing)"
}
},
"additionalProperties": false
}Generates a raw HTTP sample for creating a Payram payment in the requested language.
| Argument | Type | Description |
|---|---|---|
| language* | string | Programming language for the HTTP payment creation snippet |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"language"
],
"properties": {
"language": {
"enum": [
"python",
"go",
"php",
"java"
],
"type": "string",
"description": "Programming language for the HTTP payment creation snippet"
}
},
"additionalProperties": false
}Generates a ready-to-use backend endpoint (e.g., /api/pay/create) that creates a Payram payment.
| Argument | Type | Description |
|---|---|---|
| framework* | string | Web framework for the payment route handler (Express.js or Next.js) |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"framework"
],
"properties": {
"framework": {
"enum": [
"express",
"nextjs"
],
"type": "string",
"description": "Web framework for the payment route handler (Express.js or Next.js)"
}
},
"additionalProperties": false
}Generates backend code using the official Payram JS/TS SDK to create a payment.
| Argument | Type | Description |
|---|---|---|
| framework* | string | Target framework for the SDK payment snippet. generic-http provides a framework-agnostic example. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"framework"
],
"properties": {
"framework": {
"enum": [
"generic-http",
"express",
"nextjs"
],
"type": "string",
"description": "Target framework for the SDK payment snippet. generic-http provides a framework-agnostic example."
}
},
"additionalProperties": false
}Generates backend code to query the status of a Payram payment.
| Argument | Type | Description |
|---|---|---|
| style* | string | Style of code snippet: sdk uses the Payram SDK, http uses raw HTTP requests |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"style"
],
"properties": {
"style": {
"enum": [
"sdk",
"http"
],
"type": "string",
"description": "Style of code snippet: sdk uses the Payram SDK, http uses raw HTTP requests"
}
},
"additionalProperties": false
}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.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {},
"additionalProperties": false
}Generates a backend code snippet for creating a payout using the Payram JS/TS SDK.
| Argument | Type | Description |
|---|---|---|
| framework* | string | Target framework for the payout SDK snippet |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"framework"
],
"properties": {
"framework": {
"enum": [
"generic-http"
],
"type": "string",
"description": "Target framework for the payout SDK snippet"
}
},
"additionalProperties": false
}Generates backend code to query the status of a payout using the Payram SDK.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {},
"additionalProperties": false
}Generates a backend route such as /api/referrals/create for logging referral events.
| Argument | Type | Description |
|---|---|---|
| framework* | string | Web framework for the referral route handler (Express.js or Next.js) |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"framework"
],
"properties": {
"framework": {
"enum": [
"express",
"nextjs"
],
"type": "string",
"description": "Web framework for the referral route handler (Express.js or Next.js)"
}
},
"additionalProperties": false
}Generates a backend route or service snippet to create a referral event using the Payram SDK.
| Argument | Type | Description |
|---|---|---|
| framework* | string | Target framework for the referral SDK snippet |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"framework"
],
"properties": {
"framework": {
"enum": [
"generic-http"
],
"type": "string",
"description": "Target framework for the referral SDK snippet"
}
},
"additionalProperties": false
}Generates code to fetch referral progress, rewards, or status.
| Argument | Type | Description |
|---|---|---|
| style* | string | Style of code snippet: sdk uses the Payram SDK, backend-only shows direct API calls |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"style"
],
"properties": {
"style": {
"enum": [
"sdk",
"backend-only"
],
"type": "string",
"description": "Style of code snippet: sdk uses the Payram SDK, backend-only shows direct API calls"
}
},
"additionalProperties": false
}Generates a snippet to validate referral IDs, statuses, and eligibility.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {},
"additionalProperties": false
}Returns a step-by-step checklist of everything a merchant must configure to start using Payram.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {},
"additionalProperties": false
}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.)
| Argument | Type | Description |
|---|---|---|
| part | string | Which piece to emit: 'schema' (ledger DDL), 'webhook' (cumulative-credit handler), 'settle' (atomic invoice debit), or 'all'. |
| framework | string | Server framework for the webhook handler + settle function. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"part": {
"enum": [
"schema",
"webhook",
"settle",
"all"
],
"type": "string",
"default": "all",
"description": "Which piece to emit: 'schema' (ledger DDL), 'webhook' (cumulative-credit handler), 'settle' (atomic invoice debit), or 'all'."
},
"framework": {
"enum": [
"express",
"fastapi"
],
"type": "string",
"default": "express",
"description": "Server framework for the webhook handler + settle function."
}
},
"additionalProperties": false
}Generates a backend event router that dispatches Payram webhook events to domain handlers.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {},
"additionalProperties": false
}Generates backend code to handle Payram webhook HTTP requests.
| Argument | Type | Description |
|---|---|---|
| framework* | string | Web framework for the webhook handler code |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"framework"
],
"properties": {
"framework": {
"enum": [
"express",
"nextjs",
"fastapi",
"gin",
"laravel",
"spring-boot"
],
"type": "string",
"description": "Web framework for the webhook handler code"
}
},
"additionalProperties": false
}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.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {},
"additionalProperties": false
}Returns the markdown for a Payram doc given its id, e.g. "features/payouts".
| Argument | Type | Description |
|---|---|---|
| id* | string |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"minLength": 1
}
}
}Surface official documentation, website, and community links.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}Explain how to embed and manage the referral dashboard experience.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}Lists the available Payram doc ids. Optionally scope by a prefix such as "features".
| Argument | Type | Description |
|---|---|---|
| prefix | string |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"prefix": {
"type": "string"
}
}
}Deprecated: use payram_setup_plan, which does this and lets you personalise it. Returns the default headless plan (testnet, USDC on Base).
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| apiKey | string | Optional project API key to validate (never creates anything). Passing it puts the key in this conversation; prefer running payram_ops_playbook "connect" locally. |
| baseUrl | string | Public address of the PayRam server, same origin as the dashboard: https://pay.example.com, or just pay.example.com or an IP (https is tried first, then http). No :8080, no path. Required on the hosted MCP. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"apiKey": {
"type": "string",
"minLength": 1,
"description": "Optional project API key to validate (never creates anything). Passing it puts the key in this conversation; prefer running payram_ops_playbook \"connect\" locally."
},
"baseUrl": {
"type": "string",
"description": "Public address of the PayRam server, same origin as the dashboard: https://pay.example.com, or just pay.example.com or an IP (https is tried first, then http). No :8080, no path. Required on the hosted MCP."
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| task | string | Which recipe. Omit to get the index of tasks. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"task": {
"enum": [
"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"
],
"type": "string",
"description": "Which recipe. Omit to get the index of tasks."
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| task | string | Which runbook. Omit to list all. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"task": {
"enum": [
"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"
],
"type": "string",
"description": "Which runbook. Omit to list all."
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| ssl | string | letsencrypt (needs domain), own_certificate, proxy (Cloudflare/your own reverse proxy terminates TLS), none. Default: letsencrypt with a domain, none without. |
| path | string | agent = headless CLI after a one-time interactive install; human = installer + web dashboard |
| role | string | merchant: Take payments for your own business (default). operator: Run PayRam as a platform for other merchants and earn a fee on their volume. Must be chosen before the first project; the role locks once role-specific data exists. |
| stage | string | Where you are now; the plan starts from the next step |
| access | string | ssh = you can run commands on the server yourself. human_runs_commands = you only chat: the human runs each command and pastes the output back. Ask the user which applies before planning. |
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.
| Argument | Type | Description |
|---|---|---|
| id | string | Show one known problem by its id (from an earlier answer). |
| area | string | Narrow the search to one area. |
| output | string | Error text or log lines to match. Remove API keys, tokens, passwords and seed phrases first. |
| symptom | string | The problem in plain words, e.g. "payment link opens localhost" or "502 after upgrade". |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"id": {
"type": "string",
"maxLength": 80,
"description": "Show one known problem by its id (from an earlier answer)."
},
"area": {
"enum": [
"install",
"network",
"ssl",
"config",
"payments",
"deposits",
"sweeps",
"webhooks",
"api",
"operations",
"apps"
],
"type": "string",
"description": "Narrow the search to one area."
},
"output": {
"type": "string",
"maxLength": 20000,
"description": "Error text or log lines to match. Remove API keys, tokens, passwords and seed phrases first."
},
"symptom": {
"type": "string",
"maxLength": 2000,
"description": "The problem in plain words, e.g. \"payment link opens localhost\" or \"502 after upgrade\"."
}
}
}Confirm hosting, credentials, and environment variables before generating demo apps.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}Generates a minimal full-stack app skeleton with Payram payments and payouts routes (and a simple UI) for a chosen language and framework.
| Argument | Type | Description |
|---|---|---|
| appName | string | Name for the generated application. If not provided, defaults to payram-{framework}-starter |
| language* | string | Programming language for the application (node for JavaScript/TypeScript) |
| framework* | string | Web framework to use for scaffolding the application |
| includeWebhooks | boolean | Whether to include webhook handler code in the scaffolded application |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"language",
"framework"
],
"properties": {
"appName": {
"type": "string",
"minLength": 1,
"description": "Name for the generated application. If not provided, defaults to payram-{framework}-starter"
},
"language": {
"enum": [
"node",
"python",
"php",
"go",
"java"
],
"type": "string",
"description": "Programming language for the application (node for JavaScript/TypeScript)"
},
"framework": {
"enum": [
"express",
"nextjs",
"fastapi",
"laravel",
"gin",
"spring-boot"
],
"type": "string",
"description": "Web framework to use for scaffolding the application"
},
"includeWebhooks": {
"type": "boolean",
"default": true,
"description": "Whether to include webhook handler code in the scaffolded application"
}
},
"additionalProperties": false
}Returns an Express router that posts to Payram's /api/v1/payment endpoint.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {},
"additionalProperties": false
}Returns a FastAPI handler that calls Payram's create-payment HTTP API.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {},
"additionalProperties": false
}Returns a Gin handler that proxies /api/pay/create to Payram's create-payment API.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {},
"additionalProperties": false
}Returns a Laravel controller that posts to Payram's /api/v1/payment endpoint.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {},
"additionalProperties": false
}Returns a Next.js App Router API route that calls Payram's create-payment HTTP API.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {},
"additionalProperties": false
}Returns a Spring Boot controller that calls Payram's /api/v1/payment endpoint.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {},
"additionalProperties": false
}Suggests a recommended backend folder/file structure for integrating Payram.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| apiKey | string | Optional project API key to validate (nothing is created). Passing it exposes the key in this conversation. |
| baseUrl | string | PayRam URL, same origin as the dashboard (e.g. https://pay.example.com). Defaults to PAYRAM_BASE_URL in local mode. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"apiKey": {
"type": "string",
"minLength": 1,
"description": "Optional project API key to validate (nothing is created). Passing it exposes the key in this conversation."
},
"baseUrl": {
"type": "string",
"description": "PayRam URL, same origin as the dashboard (e.g. https://pay.example.com). Defaults to PAYRAM_BASE_URL in local mode."
}
}
}| domain | string | Public hostname for the gateway, e.g. pay.example.com. Omit if you only have an IP for now. |
| wallet | string | First deposit wallet: usdc_base (smart-contract wallet on Base, needs a little gas), btc (xpub, no gas), or both |
| network | string | testnet = free test coins (recommended first); mainnet = real money |
| integration | string | What will take payments once the gateway is up |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"ssl": {
"enum": [
"letsencrypt",
"own_certificate",
"proxy",
"none"
],
"type": "string",
"description": "letsencrypt (needs domain), own_certificate, proxy (Cloudflare/your own reverse proxy terminates TLS), none. Default: letsencrypt with a domain, none without."
},
"path": {
"enum": [
"agent",
"human"
],
"type": "string",
"default": "agent",
"description": "agent = headless CLI after a one-time interactive install; human = installer + web dashboard"
},
"role": {
"enum": [
"merchant",
"operator"
],
"type": "string",
"default": "merchant",
"description": "merchant: Take payments for your own business (default). operator: Run PayRam as a platform for other merchants and earn a fee on their volume. Must be chosen before the first project; the role locks once role-specific data exists."
},
"stage": {
"enum": [
"fresh",
"installed",
"account_created",
"wallet_ready",
"payment_link_created"
],
"type": "string",
"default": "fresh",
"description": "Where you are now; the plan starts from the next step"
},
"access": {
"enum": [
"ssh",
"human_runs_commands"
],
"type": "string",
"default": "ssh",
"description": "ssh = you can run commands on the server yourself. human_runs_commands = you only chat: the human runs each command and pastes the output back. Ask the user which applies before planning."
},
"domain": {
"type": "string",
"pattern": "^(?=.{1,253}$)([a-z0-9-]+\\.)+[a-z]{2,}$",
"description": "Public hostname for the gateway, e.g. pay.example.com. Omit if you only have an IP for now."
},
"wallet": {
"enum": [
"usdc_base",
"btc",
"both"
],
"type": "string",
"default": "usdc_base",
"description": "First deposit wallet: usdc_base (smart-contract wallet on Base, needs a little gas), btc (xpub, no gas), or both"
},
"network": {
"enum": [
"testnet",
"mainnet"
],
"type": "string",
"default": "testnet",
"description": "testnet = free test coins (recommended first); mainnet = real money"
},
"integration": {
"enum": [
"none",
"website",
"shopify",
"woocommerce"
],
"type": "string",
"default": "none",
"description": "What will take payments once the gateway is up"
}
}
}