agentbank-merchant-mcp
Official@curless/agentbank-merchant-mcp
Servidor MCP del lado del comerciante para agentbank. Permite a un comerciante leer sus propios pedidos y el saldo de la cartera Curless en tiempo real (fondos reales liquidados en la cuenta Curless del comerciante) desde un cliente MCP (Claude Desktop).
Autenticado por tu clave de API de Curless vía env — sin OAuth. (La ruta OAuth es el conector remoto /mcp añadido mediante URL en claude.ai; esta es la ruta simple basada en token para clientes de Claude Desktop / stdio.) Se mantiene separado del @curless/agentbank-mcp del comprador para que los dos perfiles no compartan una superficie de herramientas. Renderiza la misma tarjeta de MCP Apps que el conector remoto /mcp, con un respaldo de tabla markdown para hosts sin la tarjeta.
Herramientas
Pedidos:
list_orders— los pedidos de este comerciante (lo que los agentes han pagado), primero los más recientes; filtrar por estado / protocolo / moneda / fecha.get_summary— resumen de pedidos: recuento + importe bruto por moneda + desgloses por protocolo/estado.get_balance— el saldo de la cartera Curless en tiempo real por moneda (disponible / congelado).get_order— un pedido completo: líneas de pedido + la tarjeta con la que se pagó.
Reembolsos:
list_refund_requests— solicitudes de reembolso de los compradores sobre tus pedidos (la cola; filtrar por estado).approve_refund— aprobar una solicitud → se reenvía a Curless (el pedido se reembolsa una vez que Curless lo confirma).reject_refund— rechazar una solicitud (nota opcional).refund_order— reembolsar uno de tus pedidos directamente (sin necesidad de solicitud del comprador).
Los ocho se renderizan en la misma tarjeta de MCP Apps (lista de pedidos / detalle / resumen / cartera / cola de reembolsos) con un respaldo de markdown para hosts sin la tarjeta.
Related MCP server: empresa-mcp-demo
Uso (Claude Desktop claude_desktop_config.json)
{
"mcpServers": {
"agentbank-merchant": {
"command": "/usr/local/bin/npx",
"args": ["-y", "@curless/agentbank-merchant-mcp"],
"env": {
"AGENTBANK_MERCHANT_TOKEN": "<your-curless-api-key>",
"AGENTBANK_MERCHANT_ID": "429488"
}
}
}
}Variable | Descripción |
| tu clave de API de Curless (emitida por Curless en la incorporación) |
| tu id de comerciante de Curless, p. ej. |
El servidor se comunica con https://mcp.curless.ai por defecto — no es necesario configurarlo. (Solo desarrollo local: establece AGENTBANK_API_URL=http://localhost:3000 para apuntar a una API local.)
Available Tools
8 toolsapprove_refundADestructive
Approve a refund request → forwarded to Curless; the order refunds once Curless confirms. Pass the refund request id (rfr_…).
| Name | Required | Description | Default |
|---|---|---|---|
| refundRequestId | Yes | rfr_… |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate destructiveHint=true. Description adds important behavioral detail: the refund is forwarded to Curless and confirmed asynchronously. No contradictions with annotations.
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, no wasted words. First sentence states purpose and outcome; second sentence gives parameter instruction. Efficient and clear.
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 tool with one parameter and no output schema, the description sufficiently covers the workflow (forwarding to Curless, confirmation-based refund). No missing essential 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% with parameter description 'rfr_…'. Description repeats the format but adds no additional meaning. Baseline score 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?
Clearly states the action (approve), resource (refund request), and outcome (forwarded to Curless; order refunds after confirmation). Distinguishes from sibling tools like reject_refund and refund_order.
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?
Provides clear usage context: 'Pass the refund request id (rfr_…).' Does not explicitly state when not to use or mention alternatives, but context implies differentiation from siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_balanceBRead-only
This merchant's live Curless wallet balance, per currency.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the description adds limited value: it notes the balance is 'live' and 'per currency'. However, it does not explain how 'per currency' works given no schema parameters, nor does it disclose return format or caching behavior.
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?
Single short sentence that is front-loaded and contains no fluff. Every word serves a purpose.
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?
Simple tool with no output schema or parameters. Description covers resource and basic behavior but omits details like what constitutes balance (available/total/pending) or error conditions. Adequate but has gaps.
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 has zero parameters, so baseline is 4. Description does not need to add parameter meaning, but the phrase 'per currency' is implied without parameters, which could confuse; still acceptable.
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 identifies the resource (merchant's live Curless wallet balance) and granularity (per currency), distinguishing it from sibling tools about orders and refunds. However, it lacks a verb like 'retrieves' or 'gets' but is still unambiguous.
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?
No guidance on when to use this tool versus alternatives or prerequisites. Sibling tools are named but no explicit context provided for when to choose get_balance over others.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_orderARead-only
One order's full detail — line items + the card it was paid with. Pass the order id from list_orders.
| Name | Required | Description | Default |
|---|---|---|---|
| orderId | Yes | the order id, e.g. ord_… |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true. The description adds useful context about response contents (line items, card), going beyond annotations. No contradiction.
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 purpose, no wasted words. Efficient and clear.
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 tool with one parameter and no output schema, the description adequately explains what the tool returns and how to use it. Could mention additional fields but sufficient.
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% and describes the parameter clearly. The description adds a usage tip (getting ID from list_orders), providing extra value 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?
The description clearly states the verb (get), resource (order), and scope (full detail with line items and payment card). It distinguishes from sibling tools like list_orders and get_summary.
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?
Provides clear context: use to get full detail of a single order, and hints to pass the order ID from list_orders. No explicit when-not or alternatives, but adequate guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_summaryARead-only
This merchant's order roll-up: count + gross by currency + breakdowns by protocol/status. Same status/protocol/currency/date filters as list_orders.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | ISO timestamp upper bound | |
| from | No | ISO timestamp lower bound | |
| status | No | ||
| currency | No | ||
| protocol | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the description adds value by specifying the aggregation behavior (roll-up), which is beyond what annotations provide.
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 with no wasted words. The purpose is front-loaded and immediately clear.
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 no output schema, the description adequately explains the summary contents. However, it lacks details on return format or defaults, but is sufficient for a straightforward aggregation.
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 only 40%; only 'to' and 'from' have descriptions. The description says 'same filters as list_orders' but does not explain individual parameters like status, currency, or protocol, leaving gaps.
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 it provides an order roll-up with count and gross by currency, plus breakdowns by protocol/status. This distinguishes it from siblings like get_order or list_orders.
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 explicitly says filters are the same as list_orders, providing context on when to use it. However, it does not specify when not to use it or mention alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_ordersARead-only
List this merchant's orders (what agents have paid you), newest first. Filter by status / protocol / currency / date.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | ISO timestamp upper bound | |
| from | No | ISO timestamp lower bound | |
| limit | No | max rows (default 50, cap 200) | |
| offset | No | rows to skip | |
| status | No | order status (refunded/disputed surface Curless actions) | |
| currency | No | e.g. USDC, EUR, USD | |
| protocol | No | acp | x402 | a2a | ucp | … |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. Description adds that results are newest first, and that refunded/disputed statuses 'surface Curless actions', providing behavioral context beyond annotations.
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 efficient sentences. Core purpose is front-loaded: 'List this merchant's orders...'. 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?
Description covers filtering and ordering, but lacks details on return format (fields in each order) and pagination nuances despite limit/offset being present. Adequate but could be more 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 covers 100% of parameters with descriptions. Description groups filters (status/protocol/currency/date) but adds little beyond the schema. Baseline 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 lists the merchant's orders, sorted newest first, and lists available filters (status, protocol, currency, date). It distinguishes from siblings like get_order (single order) and list_refund_requests (different resource).
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 tells when to use (list orders) and hints at filtering context but does not explicitly state when not to use or provide alternatives. Sibling tool names are present but not referenced.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_refund_requestsARead-only
Buyers' refund requests on your orders. Default lists status=requested (the queue awaiting your decision); pass status to filter, or status=all for the full history.
| Name | Required | Description | Default |
|---|---|---|---|
| status | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. Description adds that it defaults to status=requested and allows filtering, which is consistent and provides useful behavioral context beyond annotations.
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 purpose, then default behavior and filtering. 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 list tool with 1 optional parameter and no output schema, the description covers the core purpose, default behavior, and filtering. Could mention that it returns a list, but that's implied.
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 has 1 parameter (status) with enum values but no description coverage (0%). Description adds meaning by explaining default is 'requested' and what 'all' does, partially compensating for the lack of schema descriptions.
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 it lists buyers' refund requests on orders, explicitly mentions default behavior (status=requested) and filtering options, distinguishing it from sibling action tools like approve_refund or reject_refund.
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?
Provides explicit guidance on default usage (status=requested for awaiting decisions) and how to filter (pass status or status=all for full history). Could briefly mention when not to use, but overall clear context is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
refund_orderADestructive
Directly refund one of your orders (no buyer request needed). Pass the order id (ord_…); optional partial amount + reason. Omit amount for a FULL refund. If you DO pass a partial amount, it is in the ORDER’S minor units — read the order first (get_order / list_orders) to see its currency and total, because the units differ by currency.
| Name | Required | Description | Default |
|---|---|---|---|
| amount | No | Partial refund in the ORDER'S minor units — the SAME units as the order's `amount` field shown by get_order/list_orders. The scale depends on the order's currency: 2 decimals for fiat (USD/EUR: 50000 = 500.00) but 6 decimals for stablecoins (USDC/USDT/RLUSD: 50000 = 0.05). So the same number means different money in different currencies — always check the order's currency first. Omit entirely for a full refund; must not exceed the order's remaining refundable amount. | |
| reason | No | optional reason, shown in the audit trail | |
| orderId | Yes | ord_… (from list_orders / get_order) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds behavioral context beyond annotations: notes no buyer request required, warns about amount unit differences by currency, and states the refund must not exceed remaining refundable amount. These details complement the destructiveHint annotation without contradiction.
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?
Single paragraph, front-loaded with primary action, no redundant words. Every sentence adds essential information (how to use, unit warning, when to omit amount). Highly efficient.
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 no output schema, the description adequately covers usage and warnings. It does not specify the response format or potential errors, but the main behavioral aspects (destructive nature, unit handling) are well addressed. Slight gap on success/error handling, but not critical for a mutation tool.
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. The description adds value by explaining the amount parameter's unit dependency on currency with concrete examples (fiat vs stablecoin), reinforcing the need to check the order first. This exceeds the baseline.
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 directly refunds an order without a buyer request, specifying the verb 'refund' and resource 'order'. This distinguishes it from siblings like approve_refund and reject_refund, which handle buyer-initiated requests.
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 says to omit amount for full refund, and to read the order first to check currency. Provides guidance on parameters (orderId required, amount optional with warning about units). Implicitly contrasts with refund request tools by stating 'no buyer request needed'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reject_refundA
Reject a refund request (optional note). Pass the refund request id (rfr_…).
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | ||
| refundRequestId | Yes | rfr_… |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate mutation but not destructive. Description adds no extra behavioral context beyond stating 'reject', which is already clear from the name. No contradiction with annotations.
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, no unnecessary words, directly addresses the core action and parameter.
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?
Covers purpose and main parameter, but lacks details on effects (e.g., customer notification, inventory impact) and no output schema. Adequate for simple action.
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 50%; description adds hint about ID format ('rfr_…') and labels note as optional, but does not provide additional semantics for note or error conditions.
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?
Description explicitly states 'Reject a refund request' and specifies the required ID format 'rfr_…'. Differentiates from sibling 'approve_refund' by action.
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?
Implies usage for rejecting refund requests, but no explicit guidance on when to use versus alternatives like 'approve_refund' or 'refund_order'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool has a distinct purpose: balance, single order, refund requests, approving/rejecting refunds, direct refunds, listing orders, and summary. No overlap; even the two refund actions are clearly separated by whether a buyer request exists.
All tools follow a consistent verb_noun pattern in snake_case: get_balance, get_order, list_refund_requests, approve_refund, reject_refund, refund_order, list_orders, get_summary. The verbs (get, list, approve, reject, refund) are predictably used.
With 8 tools, the server strikes an ideal balance: comprehensive enough to cover the merchant payment workflow (balance, orders, refunds, summary) without unnecessary bloat or missing essentials.
Core operations are covered: viewing balance, listing and getting orders, handling refunds (both direct and via requests), and a summary. Minor gap: no explicit order cancellation or update, but refunds effectively void orders. Still, a cancel_order tool could be missing.
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
MCP server for Modern Treasury — payment orders, transactions, counterparties and ledgers.
Public read-only MCP server for HODLXXI agent identity, trust, receipts, and verification.
Agent-commerce MCP server for x402/USDC payments and affiliate splits on Base.
MCP server for Boson Protocol — on-chain agentic commerce for physical & digital goods.
Related MCP Servers
- -licenseNot gradedqualityNot gradedmaintenanceAn MCP server that allows Claude Desktop to query Monad testnet for MON token balances of accounts.
- FlicenseNot gradedqualityDmaintenanceDemonstration MCP server for Claude Team integration, enabling querying of sample business data (orders, clients, products) and real-time currency exchange rates through natural language.
- AlicenseNot gradedqualityBmaintenanceMCP server for agent-native and human-accessible payments using MPP and x402 protocols, enabling payment flows from CLI or agent hosts.10MIT
- AlicenseNot gradedqualityDmaintenanceMCP server for ClawVault - an AI agent payment security layer that enables Claude to request payments, check limits, and manage transactions with configurable rules.74MIT
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/agentbankmcp/agentbank-merchant-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server