crypto-payer-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@crypto-payer-mcpRequest a payment for user token abc123"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Crypto Payer MCP Server
MCP (Model Context Protocol) Server for Crypto Payer Solution - cryptocurrency payment integration.
Quick Start
1. Create Configuration File
Create .env file in one of these locations:
# Option 1: Home directory (recommended)
~/.crypto-payer-mcp.env
# Option 2: XDG config directory
~/.config/crypto-payer-mcp/.env
# Option 3: Current working directory
./.envExample .env file:
# Required
CRYPTO_PAYER_OPERATOR_ID=your-operator-id
CRYPTO_PAYER_SECRET_KEY=your-secret-key
CRYPTO_PAYER_OPERATOR_NAME=Your Operator Name
CRYPTO_PAYER_PUBLIC_KEY="-----BEGIN PUBLIC KEY-----\nMIICIjAN...\n-----END PUBLIC KEY-----"
# Optional (defaults to testnet)
CRYPTO_PAYER_API_URL=https://dev-api.bclass-solution.com/v1
CRYPTO_PAYER_DOMAIN_URL=https://dev-front.bclass-solution.com2. Configure Claude Desktop
Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"crypto-payer": {
"command": "npx",
"args": ["-y", "crypto-payer-mcp"]
}
}
}That's it! The server automatically loads configuration from your .env file.
Advanced: Custom .env Path
{
"mcpServers": {
"crypto-payer": {
"command": "npx",
"args": ["-y", "crypto-payer-mcp"],
"env": {
"CRYPTO_PAYER_ENV_FILE": "/path/to/your/.env"
}
}
}
}Related MCP server: AlgoVoi MCP Server
Configuration File Locations
The server searches for .env file in this order:
CRYPTO_PAYER_ENV_FILEenvironment variable (if set)./.env(current working directory)~/.crypto-payer-mcp.env(home directory)~/.config/crypto-payer-mcp/.env(XDG config)
Available Tools
Tool | Description |
| Request a new payment session from PLATFORM |
| Generate X-Operator-Authorization header |
| Verify webhook signature (RSA-SHA512) |
| Build payment page URL |
| Parse webhook event data |
| Get current configuration (shows loaded .env path) |
Environment Variables
Variable | Required | Description |
| Yes | Operator ID from PLATFORM |
| Yes | Secret key from PLATFORM |
| Yes | RSA public key for webhook verification |
| Yes | Your operator display name |
| No | API URL (default: testnet) |
| No | Domain URL (default: testnet) |
| No | Custom path to .env file |
API Endpoints
Environment | API URL | Domain URL |
Testnet |
|
|
Mainnet |
|
|
Usage Examples
1. Check Configuration
Tool: get_config
Output: {
"envFile": "/Users/you/.crypto-payer-mcp.env",
"platformApiUrl": "https://dev-api.bclass-solution.com/v1",
"operatorId": "260f52c4...",
"operatorSecretKey": "****",
"isConfigured": true
}2. Request Payment
Tool: request_payment
Input: { "userAccessToken": "user-jwt-token-from-your-system" }
Output: {
"result": true,
"data": { "paymentId": "eGrtTN7mIHTtd0uNLGnPweKtz2qXcVoq" }
}3. Build Payment URL
Tool: build_payment_url
Input: { "paymentId": "eGrtTN7mIHTtd0uNLGnPweKtz2qXcVoq" }
Output: {
"url": "https://dev-front.bclass-solution.com?paymentId=xxx&id=xxx&name=xxx"
}4. Verify Webhook
Tool: verify_webhook
Input: {
"signature": "base64-signature-from-header",
"webhookBody": {
"event": "DEPOSIT_COMPLETED",
"timestamp": 1746776884590,
"data": { "user": {...}, "result": {...} }
}
}
Output: { "isValid": true, "event": "DEPOSIT_COMPLETED", "message": "Signature verified" }5. Parse Webhook Event
Tool: parse_webhook_event
Input: {
"webhookBody": {
"event": "DEPOSIT_COMPLETED",
"timestamp": 1746776884590,
"data": {
"user": { "id": "user_123", "name": "john" },
"result": { "id": "tx_abc", "amount": { "amount": "100" }, "instrument": { "symbol": "USDT" } }
}
}
}
Output: {
"eventType": "DEPOSIT_COMPLETED",
"category": "deposit",
"status": "completed",
"user": { "id": "user_123", "name": "john" },
"amount": { "amount": "100", "currency": "USDT", "network": "Ethereum" }
}Supported Webhook Events
Deposit Events
DEPOSIT_PROCESSING- Deposit is being processedDEPOSIT_COMPLETED- Deposit completed successfully
Withdraw Events
WITHDRAW_REQUESTED- Withdrawal requested by userWITHDRAW_REJECTED- Withdrawal rejected by adminWITHDRAW_APPROVED- Withdrawal approved by adminWITHDRAW_PENDING- Withdrawal pendingWITHDRAW_PROCESSING- Withdrawal being processedWITHDRAW_COMPLETED- Withdrawal completedWITHDRAW_FAILED- Withdrawal failed
Development
# Clone the repository
git clone https://github.com/syamai/crypto-payer-mcp.git
cd crypto-payer-mcp
# Install dependencies
npm install
# Create local .env for testing
cp .env.example .env
# Edit .env with your credentials
# Build
npm run build
# Run locally
npm startLicense
MIT - see LICENSE
Available Tools
6 toolsbuild_payment_urlA
Build the complete payment URL for redirecting users to the PLATFORM payment page. Combines the platform domain with paymentId and operator information.
| Name | Required | Description | Default |
|---|---|---|---|
| paymentId | Yes | The payment ID received from request_payment | |
| operatorId | No | The operator ID (optional, uses env CRYPTO_PAYER_OPERATOR_ID if not provided) | |
| operatorName | No | The operator name (optional, uses env CRYPTO_PAYER_OPERATOR_NAME if not provided) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure, and it does explain that the tool combines the platform domain with paymentId and operator information. This indicates a pure URL-construction operation rather than a state-changing API call, though it does not explicitly say whether any network call is made or describe the exact return shape.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no filler. The core action and purpose are front-loaded, and the second sentence adds only the necessary composition detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-complexity URL builder with fully documented parameters and no output schema, the description plus schema is sufficient for an agent to invoke it correctly. It could have explicitly placed the tool in the request_payment flow, but the schema's paymentId description already establishes that relationship.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already describes all three parameters fully, including the fallback environment variables for operatorId and operatorName. The description only references 'operator information' generically and adds no meaningful detail beyond what the schema provides, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('Build') and resource ('the complete payment URL'), then states the intended purpose: redirecting users to the PLATFORM payment page. This clearly differentiates it from siblings like request_payment, which creates the payment, and the webhook/auth/configuration tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides clear context: this tool is used after a payment exists, to produce the URL that users should be redirected to. It does not explicitly name alternatives or state when not to use it, but the purpose is unambiguous and the schema ties paymentId to request_payment.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_auth_headerA
Generate the X-Operator-Authorization header value for PLATFORM API requests. Uses SHA-512 hash of operator credentials encoded in Base64.
| Name | Required | Description | Default |
|---|---|---|---|
| operatorId | No | The operator ID (optional, uses env CRYPTO_PAYER_OPERATOR_ID if not provided) | |
| operatorSecretKey | No | The operator secret key (optional, uses env CRYPTO_PAYER_SECRET_KEY if not provided) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description bears the full burden of explaining behavior. It usefully states the algorithm (SHA-512 hash plus Base64 encoding), but it does not explicitly clarify that this is a pure local computation, whether there are side effects, or how parameters interact with the environment fallback beyond what the schema already says.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two focused sentences with no filler. The first sentence identifies the tool's output and scope, and the second explains the core algorithm. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-complexity, two-optional-parameter helper, the description plus schema is nearly sufficient. It names the output and the mechanism, but because there is no output schema and no annotations, a small note about the return value being a plain string header value would make it fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description does not add parameter-level details beyond the schema; 'operator credentials' generically covers both parameters, while the schema already documents each parameter and its environment variable fallback.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Generate'), a specific resource ('X-Operator-Authorization header value'), and the target context ('PLATFORM API requests'). It is clearly distinct from the sibling tools, which deal with payments, wehooks, URLs, and config.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context: this tool is for generating an auth header for PLATFORM API requests. It does not explicitly name exclusions or alternatives, but the scope is specific enough that an agent should understand when it applies and when it does not.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_configA
Get the current Crypto Payer configuration (with sensitive values masked). Useful for debugging and verifying environment setup.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose a key behavioral trait: sensitive values are masked. This prevents an agent from expecting secret values in the output. The verb 'get' plus the tool's nature imply a read-only operation, covering the most relevant behavioral aspects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences deliver the core purpose and a usage context with no redundancy or filler. The primary function is front-loaded, and the secondary sentence adds meaningful guidance without bloating the description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless tool with no output schema, the description covers what the tool returns (the configuration), the critical masking behavior, and when to use it. An agent has all necessary information to invoke the tool correctly without further assumptions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and the schema is trivially complete. The description adds no parameter-specific details because there are none to add. The baseline score of 4 for a parameterless tool applies appropriately.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get') and a clear resource ('current Crypto Payer configuration'), making the tool's function immediately obvious. It also distinguishes itself from its payment/webhook/URL siblings by focusing on configuration, so there is no ambiguity about which operation is performed.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states its utility for debugging and verifying environment setup, giving a concrete when-to-use context. It doesn't explicitly name alternatives, but the tool's unique purpose among siblings makes exclusions unnecessary. This is clear context, just not a full when/where-not breakdown.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
parse_webhook_eventB
Parse and extract information from a webhook event. Returns structured data about the transaction including user, amount, network, and status.
| Name | Required | Description | Default |
|---|---|---|---|
| webhookBody | Yes | The complete webhook request body |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does disclose the output behavior ('Returns structured data...'), which is helpful. However, it does not mention whether the tool verifies the webhook signature or validates the event, whether it can throw on malformed input, or if it assumes a prior verification step. This is a meaningful gap given the verify_webhook sibling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no filler. It front-loads the action and immediately states the return value. Every sentence earns its place, making it efficient and easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is adequate for a simple parse operation but has clear gaps. It does not mention which webhook event types are supported, how to handle invalid bodies, or the relationship to verify_webhook. Since there is no output schema, the description should provide more context about what 'structured data' entails, though it does list the key fields.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage for the single parameter webhookBody, explaining it as 'The complete webhook request body'. The tool description adds no extra semantic detail about the parameter format, expected event types, or timestamp handling. Baseline 3 is appropriate since the schema already carries the weight.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb ('Parse and extract information') and resource ('webhook event'), and summarizes the return value (structured transaction data with user, amount, network, status). It is easy to understand what this tool does. However, it does not explicitly differentiate itself from the sibling verify_webhook, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives. The sibling list includes verify_webhook, which is highly relevant for webhook handling, but the description does not note whether parsing should occur before or after verification, or that verify_webhook should be used for authenticity checks. The agent is left to infer usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
request_paymentA
Request a new payment session from Crypto Payer PLATFORM. Returns a paymentId that can be used to construct the payment URL. Requires user access token for authentication.
| Name | Required | Description | Default |
|---|---|---|---|
| userAccessToken | Yes | The user access token from OPERATOR system |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It does disclose that a new payment session is created and that authentication is required. However, it omits important payment-related behaviors such as session expiration, idempotency, duplicate session creation, or whether funds are reserved.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short, purposeful sentences with the main action front-loaded. No filler; each sentence adds value: the action, the return value, and the authentication requirement.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool with no output schema, the description provides the essential return value and its purpose. It could be more explicit about the surrounding workflow and error cases, but it is not missing critical call-time information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline of 3 applies. The description only restates the authentication requirement without adding meaningful new details about the token format or how to obtain it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the core action: 'Request a new payment session' from the Crypto Payer PLATFORM. It also distinguishes itself from build_payment_url by explaining that it returns a paymentId used to construct the payment URL, not the URL itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the workflow order: authenticate with a user access token, receive a paymentId, then construct the payment URL. However, it does not explicitly name sibling tools like generate_auth_header or build_payment_url, nor does it state when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verify_webhookB
Verify the signature of a webhook event from PLATFORM. Uses RSA-SHA512 signature verification with the operator's public key.
| Name | Required | Description | Default |
|---|---|---|---|
| publicKey | No | The public RSA key in PEM format (optional, uses env CRYPTO_PAYER_PUBLIC_KEY if not provided) | |
| signature | Yes | The x-payer-signature header value from the webhook request | |
| webhookBody | Yes | The complete webhook request body containing event and data |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It does add useful context about the RSA-SHA512 algorithm and public key, but it does not state what happens on success or failure, such as whether it returns a boolean or throws on an invalid signature.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two focused sentences: the first identifies the action and resource, the second adds the verification algorithm and key source. No filler, repetition, or unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description should explain verification outcomes or at least indicate the return/error behavior. It does not. The PLATFORM placeholder also leaves the webhook source unspecified, making the definition incomplete for an agent deciding how to handle the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the parameters are already documented in the schema. The description adds little beyond the algorithm context, which is already reflected in the publicKey and signature semantics. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb ('Verify'), a specific resource ('signature of a webhook event from PLATFORM'), and the cryptographic method ('RSA-SHA512'). This distinguishes it from sibling parse_webhook_event, which would parse rather than validate the event.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The intended use is implied by the verb and resource, but the description gives no explicit 'use this when' or 'use parse_webhook_event instead' guidance. An agent must infer when verification is the right step among the sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
6 tool updates
v1.0.0- First observed
build_payment_url - First observed
generate_auth_header - First observed
get_config - First observed
parse_webhook_event - First observed
request_payment - First observed
verify_webhook
TDQS
Scored across 6 tools
Each tool targets a distinct action: payment session creation, auth header generation, webhook signature verification, URL construction, webhook parsing, and config retrieval. Even closely related webhook tools are separated by verification versus parsing, and request_payment versus build_payment_url are clearly different stages.
All tool names follow a consistent verb_noun snake_case pattern: request_, generate_, verify_, build_, parse_, get_. There are no mixed conventions or vague verbs.
Six tools is a well-scoped set for a payment integration server. Each tool covers a distinct part of the payment flow without redundancy or bloat.
The set covers the core flow: create a payment request, build the redirect URL, generate API auth, and verify/parse incoming webhooks. A notable gap is the lack of a direct payment-status lookup or cancellation/refund operation, though webhooks may partially cover status delivery.
Maintenance
Related MCP Connectors
MCP server with quote and live cryptocurrency price tools, local and cloud-deployed transports.
Billing proxy for MCP servers. Adds Stripe and x402 crypto payments without writing billing code.
MCP server for Modern Treasury — payment orders, transactions, counterparties and ledgers.
- mcpOAuthcom.stripe
MCP server integrating with Stripe - tools for customers, products, payments, and more.
Related MCP Servers
- AlicenseBqualityFmaintenanceA comprehensive Model Context Protocol (MCP) server for BTCPayServer integration, providing tools for payment processing, store management, user administration, webhook handling and more with full API coverage.35 npm3MIT
- FlicenseAqualityBmaintenanceAccept crypto payments on Algorand, VOI, Hedera & Stellar. Create hosted checkout links, verify on-chain payments, and generate MPP/x402/AP2 challenges from any MCP client. Supports all 16 AlgoVoi networks (USDC + native on mainnet + testnet).111-
- AlicenseBqualityDmaintenanceMCP server for VNPay payment gateway (Vietnam). Supports payment URL generation, transaction queries, refunds, tokenized payments, and IPN verification with HMAC-SHA512 signing.810 npmMIT
- AlicenseAqualityDmaintenanceA local MCP server for handling X402 payment-protected HTTP endpoints, offering tools for order placement, signing, and payment submission with multiple signing modes and blockchain networks.724 npm1MIT