toreador-mcp-server
This server allows AI assistants to generate crypto QR codes and manage cryptocurrency payment sessions via the Toreador platform.
Generate Crypto QR Codes: Create QR codes for native tokens (BTC, ETH, SOL, POL) or Solana SPL tokens (USDC on Solana). Returns a base64 PNG data URI and an on-chain payment URI (BIP21, EIP-681, or Solana Pay format). Free to use — no API key required.
Create Hosted Payment Sessions: Set up a hosted payment session for ERC-20 stablecoins (USDC, USDT, EURC) on Ethereum, Polygon, or Base. Returns a session ID, a 6-character security code, and a hosted payment URL. Sessions expire after 15 minutes. Requires a Pro plan API key.
Check Payment Status: Poll the current status of an ERC-20 payment session by session ID. Returns status values (
pending,submitted,confirming,completed,expired, orfailed), along with on-chain confirmation count and transaction hash once submitted.List QR Code History: Retrieve the 50 most recent QR code generations for the authenticated account, including token, chain, amount, recipient, and timestamp.
List Payment Sessions: Retrieve the 50 most recent ERC-20 payment sessions, including status, transaction hash, confirmations, and timestamps.
Generate QR codes for Bitcoin payments, supporting native BTC transfers.
Generate QR codes for ETH payments and create hosted payment sessions for ERC-20 stablecoins on Ethereum.
Generate QR codes for POL payments and create hosted payment sessions for ERC-20 stablecoins on Polygon.
Generate QR codes for SOL and Solana SPL token payments.
@toreador/mcp-server
Official Model Context Protocol server for Toreador. Lets Claude Desktop, Cursor, and any other MCP-capable assistant generate crypto QR codes and manage payment sessions on your behalf.
⚠️ Requires a Pro plan API key (
tdr_...) from your Toreador dashboard. The MCP server runs locally and uses your key to callhttps://toreador.io/api/v1/public.
Tools exposed
Tool | What it does |
| Generate a QR code for native tokens (BTC, ETH, SOL, POL) or Solana SPL (USDC on Solana). Returns the on-chain payment URI and a base64 PNG data URI. |
| Create a hosted payment session for ERC-20 stablecoins (USDC, USDT, EURC) on Ethereum, Polygon or Base. Returns a session ID, security code and a hosted payment URL. |
| Poll the status of an ERC-20 payment session: |
| List the 50 most recent QR code generations. |
| List the 50 most recent ERC-20 payment sessions. |
Related MCP server: paybysquare-generator
Install in Claude Desktop
Edit Claude Desktop's config file:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%/Claude/claude_desktop_config.jsonLinux:
~/.config/Claude/claude_desktop_config.json
Add the toreador entry under mcpServers:
{
"mcpServers": {
"toreador": {
"command": "npx",
"args": ["-y", "@toreador/mcp-server"],
"env": {
"TOREADOR_API_KEY": "tdr_your_key_here"
}
}
}
}Restart Claude Desktop. You should see the 5 Toreador tools in the tools menu.
Install in Cursor
In Cursor settings → MCP → "Add new MCP server", paste:
{
"command": "npx",
"args": ["-y", "@toreador/mcp-server"],
"env": { "TOREADOR_API_KEY": "tdr_..." }
}Example prompts
Once installed, try these prompts in your MCP client:
"Generate a Bitcoin QR code for 0.001 BTC to bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh."
"Create a USDC payment session for 50 USDC on Polygon to 0x742d35Cc6634C0532925a3b844Bc9e7595f2bD18."
"What's the status of session ses_123?"
"Show me my last 10 payment sessions."
The assistant will pick the right tool, call Toreador, and return the result — including the QR code data URI which most clients can render inline.
Configuration
Environment variable | Default | Description |
| required | Your Pro plan API key. Format: |
|
| Override the API base URL (useful for testing). |
|
| Per-request timeout in milliseconds. |
Trust and safety
Local only. The MCP server runs on your machine via stdio. Your API key never leaves your computer except in outbound HTTPS calls to
toreador.io.Non-custodial. Toreador never holds funds. The MCP tools only generate QR codes and read session state — they cannot move money.
Read or create, no destruction. Tools either generate new payment objects or read existing ones. There is no "delete" or "refund" tool.
Build from source
git clone https://github.com/Bentonabento/toreador-sdk.git
cd toreador-sdk/mcp
npm install
npm run build
TOREADOR_API_KEY=tdr_... node dist/index.jsThe server will boot, print [toreador-mcp] ready (5 tools registered) to
stderr, and wait for MCP requests on stdin.
License
MIT
Available Tools
5 toolstoreador_create_sessionA
Create a hosted payment session for ERC-20 stablecoins on EVM chains (USDC, USDT, EURC on Ethereum, Polygon or Base). Returns a session ID, a 6-character security code to display to the payer, and a URL to a Toreador-hosted payment page where the payer connects their wallet. Sessions expire 15 minutes after creation. PRO PLAN REQUIRED. For native tokens or Solana SPL, use toreador_generate_qr instead.
| Name | Required | Description | Default |
|---|---|---|---|
| token | Yes | Stablecoin symbol. One of: USDC, USDT, EURC. | |
| chainId | Yes | EVM chain. One of: ethereum, polygon, base. | |
| amount | Yes | Amount in the token's natural unit (e.g. "100" for 100 USDC). | |
| recipientAddress | Yes | Destination EVM wallet address (0x...). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses key behaviors: returns session ID, security code, and payment page URL; session expires after 15 minutes; requires pro plan. No annotations provided, but description adequately covers the mutation nature and constraints.
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 sentences, front-loaded with the main purpose. No wasted words; each sentence provides useful information.
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 4-parameter create tool with no output schema, the description covers return values, expiration, and alternative tool. Lacks details on error scenarios or authentication, but is fairly complete for the task.
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 baseline is 3. Description adds minimal extra meaning beyond the schema: it restates the allowed values for token and chainId but does not elaborate on format or constraints for amount or recipientAddress.
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?
Clearly states the tool creates a hosted payment session for ERC-20 stablecoins on EVM chains, listing specific tokens and chains. It distinguishes from the sibling toreador_generate_qr.
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?
Explicitly states when to use this tool (for ERC-20 stablecoins on EVM chains) and when not to (for native tokens or Solana SPL, use toreador_generate_qr). Also notes pro plan requirement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
toreador_generate_qrA
Generate a crypto QR code for a native token (BTC, ETH, SOL, POL) or a Solana SPL token (USDC on Solana). Returns the QR data URI (PNG base64) and the on-chain payment URI (BIP21, EIP-681, Solana Pay). FREE — no API key needed for these chains. For ERC-20 stablecoins on Ethereum/Polygon/Base (USDT, USDC, EURC), use toreador_create_session (Pro plan required).
| Name | Required | Description | Default |
|---|---|---|---|
| token | Yes | Token symbol. One of: BTC, ETH, SOL, POL, USDC (Solana only). | |
| chainId | Yes | Chain identifier. One of: bitcoin, ethereum, polygon, base, solana. | |
| amount | Yes | Amount as a decimal string in the token's natural unit (e.g. "0.001" for BTC, "50" for USDC). Use a string to preserve decimal precision. | |
| recipientAddress | Yes | Destination wallet address. Must match the chain (bech32 for BTC, EIP-55 for EVM, base58 for Solana). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of behavioral disclosure. It states the tool returns a QR data URI and payment URI, and that it is free, implying no state changes. However, it does not explicitly confirm non-destructiveness or describe side effects, but the context suggests a read-only operation.
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 concise with two sentences. The first sentence clearly defines the tool's purpose and output, and the second provides additional context (free usage and alternative). No unnecessary information, well front-loaded.
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?
Given the tool's moderate complexity, full schema coverage, and no output schema, the description sufficiently covers what the tool does, its inputs, and when to use it. It mentions the output structure (QR data URI and payment URI) and distinguishes sibling tools. No gaps are apparent.
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 covers all 4 parameters with detailed descriptions (100% coverage). The description does not add significant meaning beyond what the schema already provides, such as the list of tokens and the requirement for decimal string amounts. Thus, baseline score of 3 is appropriate.
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 tool generates a crypto QR code for specific native tokens and Solana SPL tokens, and specifies what it returns (QR data URI and payment URI). It distinguishes itself from the sibling tool toreador_create_session by noting that for ERC-20 stablecoins, that other tool should be used.
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 tells when to use this tool (for native tokens and Solana SPL tokens) and when to use the alternative toreador_create_session (for ERC-20 stablecoins). It also mentions that no API key is needed, providing clear usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
toreador_get_payment_statusA
Get the current status of an ERC-20 payment session by ID. Status values: pending, submitted, confirming, completed, expired, failed. Includes on-chain confirmation count and tx hash once submitted.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | Yes | Session ID returned by toreador_create_session. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so description bears full burden; it discloses status values and return fields, sufficient for a simple read tool.
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 concise sentences, first is front-loaded with purpose, no wasted words.
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 read tool with full schema coverage, the description explains return values and statuses, adequate without output schema.
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%, baseline 3; description adds minimal context about sessionId origin beyond schema.
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?
Clearly states the tool retrieves payment session status by ID, lists status values and included information, distinguishing it from siblings.
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?
Implicitly indicates use when a sessionId is available but lacks explicit guidance on when to use versus siblings or when not to.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
toreador_list_historyA
List the 50 most recent QR code generations for the authenticated account. Returns a list of payment requests with token, chain, amount, recipient and timestamp.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that the tool lists history for the authenticated account and returns specific fields, but does not mention side effects, permission requirements, rate limits, or error conditions. Adequate but not comprehensive.
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 sentences front-load the purpose and limit, then specify returned fields. No wasted words, every sentence serves a clear function.
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?
No output schema exists, but the description details the returned list structure (token, chain, amount, recipient, timestamp). It also mentions limit (50 recency) and authentication scope. However, it could be more complete by statically declaring the tool as read-only or explaining ordering.
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 zero parameters, so schema coverage is 100%. The description does not need to add parameter information. Baseline for 0 parameters is 4, and the description meets this without adding unnecessary detail.
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 tool lists the 50 most recent QR code generations for the authenticated account, specifying the returned fields (token, chain, amount, recipient, timestamp). This distinguishes it from sibling tools like toreador_create_session, toreador_generate_qr, toreador_get_payment_status, and toreador_list_sessions.
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 usage for viewing history but provides no explicit when-to-use or when-not-to-use guidance compared to alternatives. While the context from sibling names helps, the description itself lacks direct comparisons or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
toreador_list_sessionsA
List the 50 most recent ERC-20 payment sessions for the authenticated account. Includes status, tx hash, confirmations and timestamps.
| 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 burden. It explicitly states 'list' (implying read-only) and lists included data fields (status, tx hash, confirmations, timestamps). It does not disclose rate limits or further behavioral traits, but for a simple read operation, this is sufficient.
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?
A single, clear sentence with no extraneous words. Every phrase adds value: '50 most recent', 'ERC-20 payment sessions', 'authenticated account', and the list of included fields.
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?
Given the simplicity (no parameters, no output schema), the description covers the essentials. However, it does not mention pagination or how to retrieve older sessions, which could be useful context. Overall adequate but not perfect.
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 zero parameters (100% coverage trivially). The description adds significant meaning by specifying the count (50 most recent) and included fields, which is valuable context beyond the empty schema.
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 tool lists the 50 most recent ERC-20 payment sessions for the authenticated account. It specifies the resource (sessions), verb (list), and scope (50 most recent, authenticated account), distinguishing it from siblings like create_session and generate_qr.
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 usage for viewing recent sessions but does not explicitly state when to use this tool versus alternatives like list_history. No when-not or alternative tools are mentioned, leaving room for improvement.
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. Dates show when Glama detected each change.
5 tool updates
v0.2.5- First observed
toreador_create_session - First observed
toreador_generate_qr - First observed
toreador_get_payment_status - First observed
toreador_list_history - First observed
toreador_list_sessions
TDQS
Each tool has a distinct purpose: creating sessions for ERC-20 stablecoins, generating QR codes for native tokens, checking session status, listing QR history, and listing sessions. No overlap or ambiguity.
All tool names follow a consistent 'toreador_verb_noun' pattern (e.g., create_session, generate_qr, get_payment_status, list_history, list_sessions). Verbs and nouns are clearly chosen and consistent.
With 5 tools, the server is well-scoped for its purpose of handling crypto payments. It covers creation, generation, status checks, and history listing without being overly numerous or sparse.
The tool set covers ERC-20 sessions well (create, status, list) but lacks a status checker for QR-generated payments (native tokens/SPL). This is a notable gap that could cause agents to be unable to confirm payment completion for those types.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Non-custodial crypto payments for AI assistants: balances, payments, and create payment links.
Keyless non-custodial crypto payments for AI agents: payment links and tip jars, no API key.
Create and manage QR codes on me-qr.com from AI clients like Claude and ChatGPT.
Pay-per-action access to APIs and MCP tools over Lightning L402 and Base USDC x402.
Related MCP Servers
- 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-
- FlicenseAqualityDmaintenanceEnables to generate, decode, and validate PayBySquare QR codes for Slovak payments, with MCP integration for use with Claude Desktop and other MCP clients.42-
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to manage Bitcoin micropayments, service offers, and escrow contracts through MCP tools, without requiring a Lightning node.17MIT
- AlicenseAqualityBmaintenanceKeyless crypto payments for AI agents. One MCP call turns any wallet address into a non-custodial crypto payment link or tip jar, no API key and no account, with funds settling straight to your wallet at a 0% platform fee (USDC/USDT, BTC, LTC, DASH, DOGE, ZCASH).367MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Logitale/toreador-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server