agentbank-merchant-mcp
Official@curless/agentbank-merchant-mcp
agentbank를 위한 판매자 측 MCP 서버입니다.
판매자가 MCP 클라이언트(Claude Desktop)에서 자신의 주문과 실시간 Curless 지갑 잔액(판매자의 Curless 계정으로 정산된 실제 자금)을 조회할 수 있게 해줍니다.
환경 변수를 통한 Curless API 키 — OAuth 없음으로 인증합니다. (OAuth 경로는 claude.ai에서 URL로 추가하는 원격 /mcp 커넥터이며, 이 서버는 Claude Desktop / stdio 클라이언트를 위한 간단한 토큰 기반 경로입니다.) 구매자용 @curless/agentbank-mcp와 분리되어 있어 두 페르소나가 동일한 도구 세트를 공유하지 않습니다. 원격 /mcp 커넥터와 동일한 MCP Apps 카드를 렌더링하며, 카드를 지원하지 않는 호스트를 위한 마크다운 테이블 폴백을 제공합니다.
도구
주문:
list_orders— 이 판매자의 주문(에이전트가 결제한 내역), 최신순; 상태 / 프로토콜 / 통화 / 날짜로 필터링.get_summary— 주문 집계: 통화별 건수 + 총액 + 프로토콜/상태별 분류.get_balance— 통화별 실시간 Curless 지갑 잔액(사용 가능 / 동결).get_order— 주문 하나 전체: 라인 항목 + 결제에 사용된 카드.
환불:
list_refund_requests— 구매자들이 내 주문에 대해 제기한 환불 요청(대기열; 상태로 필터링).approve_refund— 요청 승인 → Curless로 전달(Curless가 확인하면 주문이 환불됨).reject_refund— 요청 거부(메모는 선택 사항).refund_order— 내 주문 중 하나를 직접 환불(구매자 요청 불필요).
8개 도구 모두 동일한 MCP Apps 카드(주문 목록 / 상세 / 요약 / 지갑 / 환불 대기열)로 렌더링되며, 카드를 지원하지 않는 호스트를 위한 마크다운 폴백을 제공합니다.
Related MCP server: empresa-mcp-demo
사용법 (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"
}
}
}
}환경 변수 | 설명 |
| 온보딩 시 Curless가 발급한 Curless API 키 |
| Curless 판매자 ID, 예: |
서버는 기본적으로 https://mcp.curless.ai와 통신합니다 — 설정할 필요가 없습니다. (로컬 개발 전용: 로컬 API를 가리키도록 AGENTBANK_API_URL=http://localhost:3000을 설정하세요.)
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