cardzero-mcp
cardzero-mcp
CardZero 的 MCP 服务器 —— 一个为 Base 链上的 AI 智能体提供的智能合约钱包,以 USDC 计价。
赋予你的 AI 智能体以下能力:
创建钱包并查询 USDC 余额
发送直接 USDC 支付(收取 2% 平台费)
支付 x402 保护的 HTTP 资源(HTTP 402 付费墙)
运行 ERC-8183 托管任务 (escrow Jobs) 以进行 A2A 服务交付(收取 2% 平台费 + 5% 评估费)
在链上查询支付/任务状态
CardZero 是底层的 API 层;此 MCP 封装了 REST 端点,因此任何支持 MCP 的客户端(Claude Desktop、Claude Code、Cursor、VS Code 等)都可以通过 stdio 调用它们。
前提条件
CardZero API 密钥 和 钱包 ID,在 CardZero 控制面板 认领钱包后获取。
Related MCP server: x402tools MCP Server
配置
Claude Desktop
编辑 ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"cardzero": {
"command": "npx",
"args": ["-y", "cardzero-mcp"],
"env": {
"CARDZERO_API_KEY": "czapi_...",
"CARDZERO_WALLET_ID": "wallet_..."
}
}
}
}Claude Code
claude mcp add cardzero -- npx -y cardzero-mcp或者添加到项目中的 .mcp.json:
{
"mcpServers": {
"cardzero": {
"command": "npx",
"args": ["-y", "cardzero-mcp"],
"env": {
"CARDZERO_API_KEY": "czapi_...",
"CARDZERO_WALLET_ID": "wallet_..."
}
}
}
}Cursor
设置 → MCP 服务器 → 添加新服务器:
名称:
cardzero命令:
npx -y cardzero-mcp环境变量:
CARDZERO_API_KEY,CARDZERO_WALLET_ID
VS Code
添加到 .vscode/settings.json:
{
"mcp": {
"servers": {
"cardzero": {
"command": "npx",
"args": ["-y", "cardzero-mcp"],
"env": {
"CARDZERO_API_KEY": "czapi_...",
"CARDZERO_WALLET_ID": "wallet_..."
}
}
}
}
}环境变量
变量 | 必需 | 描述 |
| 是(用于工具调用) | 来自 CardZero 控制面板的智能体 API 密钥 ( |
| 是(用于钱包范围工具) | 来自 CardZero 控制面板的钱包 ID ( |
| 否 | API 基础 URL — 默认为 |
即使没有这些变量,服务器也会启动并响应 tools/list — 单个工具调用随后会返回一个清晰的 config_missing 错误。
可用工具 (10)
直接支付
工具 | 描述 |
| 创建一个新的 CardZero 钱包。返回地址 + 人类所有者的一次性认领密钥。无需身份验证。 |
| 查询钱包当前的 USDC 余额。 |
| 向任何以太坊地址发送 USDC。从你的钱包中扣除 2% 的费用。 |
| 查看最近的支付历史。 |
| 通过 ID 查询特定支付。无需身份验证。 |
x402
工具 | 描述 |
| 支付 x402 保护的 HTTP 资源。返回一个用于重试请求的支付标头。 |
ERC-8183 任务(托管 / A2A 服务交付)
工具 | 描述 |
| 创建一个任务,托管 USDC 直到提供者交付且评估者批准。 |
| 将预算锁定到托管中。状态: |
| 提供者提交交付成果。状态: |
| 读取当前状态(状态、交易、评估结果)。无需身份验证 — 任务状态是公开的。 |
工作原理
此 MCP 服务器是一个调用 CardZero REST API 的轻量级客户端。它在你的机器上本地运行,并通过 stdio 与你的 AI 助手通信。本地不存储任何数据。
AI Assistant (Claude / Cursor / VS Code)
⇅ stdio (JSON-RPC)
cardzero-mcp (local Node process)
⇅ HTTPS
api.cardzero.ai → Base mainnet (USDC + ERC-4337 + ERC-8004 + ERC-8183)开发
git clone https://github.com/mrocker/cardzero-mcp.git
cd cardzero-mcp
npm install
npm run dev # tsx-watch the source
npm run build # compile to ./dist资源
完整的 LLM 友好语料库: https://cardzero.ai/llms-full.txt
主网合约: 记录在 /docs/reference/contracts
许可证
MIT
Available Tools
10 toolscreate_jobA
Create a Job that escrows USDC payment until a Provider delivers and an Evaluator approves. Use this for A2A service delivery (vs send_payment for direct transfers). Confirm budget + provider with user first. Provider must have a CardZero wallet (Sprint 9 MVP requirement).
| Name | Required | Description | Default |
|---|---|---|---|
| providerAddress | Yes | Provider's wallet address (0x-prefixed, must be a CardZero wallet) | |
| budgetUsdc | Yes | Budget in microUSDC (6 decimals), e.g. "10000000" for $10 USDC | |
| expiredAt | Yes | Unix timestamp (seconds). Must be at least 86400 (1 day) from now. | |
| title | Yes | Short title describing the work | |
| description | Yes | Detailed description: what Provider must deliver to be paid | |
| evaluatorRule | Yes | Evaluator rule that decides complete/reject when Provider submits | |
| idempotencyKey | No | Optional: prevent duplicate Jobs on retry |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries full burden. It explains the escrow mechanism and provider requirement but omits details like expiry behavior, cancellability, or what happens on submission failure. Adequate but not comprehensive for a financial 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?
Three sentences with no waste. First sentence states purpose, second gives usage context and alternative, third provides prerequisite. Efficiently structured and 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 complexity (7 params, nested evaluatorRule, no output schema), the description is relatively complete but misses behavioral details like what happens when job expires or if conditions aren't met. Without annotations, more context on return values or side effects would improve completeness.
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 input schema already documents all parameters with descriptions. The description adds no additional semantic value for parameters beyond usage guidance, 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?
Description clearly states the tool creates a job that escrows USDC for A2A service delivery. It distinguishes itself from send_payment for direct transfers, providing a specific verb and resource with a clear delineation 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?
Explicitly tells when to use (A2A service delivery vs send_payment) and includes a prerequisite: confirm budget and provider with user, and provider must have a CardZero wallet. This is high-quality guidance for an AI agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_walletA
Create a new CardZero wallet. Returns a wallet address and one-time claim key for the human owner. No authentication required.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Optional display name for the wallet |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that no authentication is needed and that it returns a wallet address and claim key, which is helpful. However, it does not mention potential side effects or idempotency, so it's adequate but not exceptional.
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 that cover purpose and key behavioral info without any fluff. Every word 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?
The description is complete for a simple creation tool with one optional parameter. It specifies the return values despite no output schema, and the lack of annotations is partially compensated by clear behavioral statements. Minor gap: it doesn't mention if wallet creation is idempotent.
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% coverage with a single optional parameter ('name') that already includes a description. The tool description adds no additional meaning to this parameter, which is acceptable given the schema's completeness.
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 action ('Create a new CardZero wallet') and specifies the outputs ('Returns a wallet address and one-time claim key for the human owner'). It distinguishes itself from sibling tools like create_job or fund_job by focusing solely on wallet creation.
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 'No authentication required,' providing a key usage condition. While it doesn't mention alternatives or exclusion scenarios, this is reasonable for a creation tool and leaves little ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fund_jobA
Fund a Job created via create_job. Locks the budget USDC into escrow. Requires that the Job is in 'open' state. Two on-chain operations: USDC.approve(jobs) + Jobs.fund. Status: open → funded.
| Name | Required | Description | Default |
|---|---|---|---|
| jobId | Yes | Job ID returned by create_job (job_...) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses the tool's behavior: it performs two on-chain operations (USDC.approve and Jobs.fund), changes status from 'open' to 'funded', and requires the job to be open. This is transparent for a mutation 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?
The description is three sentences with no wasted words. It front-loads purpose, then constraints, then operations. Every sentence serves a distinct 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?
Given the tool's simplicity (one parameter, no output schema, but involves on-chain actions), the description covers purpose, prerequisites, side effects, and resulting state. No gaps remain.
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 single parameter jobId has a schema description clarifying it's the ID from create_job. The description adds value by specifying the origin of the ID, which helps the agent understand the required input beyond the 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 'Fund' and resource 'Job created via create_job', distinguishes it from sibling tools like create_job (which creates), and specifies the action of locking USDC into escrow.
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 requires the Job to be in 'open' state and describes the two on-chain operations. However, it does not explicitly state when not to use or list alternatives, though the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_balanceA
Check the current USDC balance of your CardZero wallet.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description indicates a read operation but does not disclose any behavioral details beyond that, such as whether it is rate-limited or requires authentication. Since no annotations are provided, the description carries the burden, which is only partially met.
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 a single sentence that is front-loaded with the verb 'Check', and every word is essential. There is no fluff.
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 does not explain what the return value looks like (e.g., a number or string). The tool is simple, but the agent might benefit from knowing the output format.
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?
With zero parameters and 100% schema coverage, the description adds no parameter information, but the baseline for 0 parameters is 4. The description is adequate for a parameterless tool.
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 checks the current USDC balance of the CardZero wallet, using a specific verb and resource. It distinguishes from siblings like create_job or create_wallet, which are clearly different operations.
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 explicit guidance on when to use this tool or when not to. It is implied that it is used when the agent needs to check the balance, but no alternatives or exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_jobA
Get the current state of a Job (status, budget, transactions, evaluation outcome). No authentication required — Job state is public.
| Name | Required | Description | Default |
|---|---|---|---|
| jobId | Yes | Job ID (job_...) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully carries the burden. It discloses that the operation is read-only and publicly accessible, which are key behavioral traits. However, it does not specify error handling or rate limits.
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 front-loading the core purpose and adding a critical access note. Every sentence adds value with no redundancy.
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 tool is simple with one parameter and no output schema. The description adequately covers what is returned and access requirements, meeting completeness needs.
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% for the single parameter 'jobId', which is described as 'Job ID (job_...)'. The description adds no further meaning beyond the schema, so 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 retrieves the current state of a Job, listing specific fields (status, budget, transactions, evaluation outcome). This distinctively separates it from sibling tools like create_job (creation) and fund_job (funding).
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 states no authentication is required and the job state is public, giving clear context for when to use. However, it does not explicitly mention when not to use or name alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_paymentA
Check the status of a specific payment by its ID. No authentication required.
| Name | Required | Description | Default |
|---|---|---|---|
| paymentId | Yes | Payment ID (pay_...) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states the tool is read-only and requires no authentication, which are key behavioral traits. However, it does not detail error handling or possible status values, leaving some transparency gaps.
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 extremely concise with two sentences, no redundant information. Every word contributes to understanding the tool's purpose and a key constraint (no auth).
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 covers the core purpose and a notable behavioral attribute. It lacks detail on return format or possible statuses, but given the tool's simplicity, it is largely 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 description coverage is 100% for the single parameter paymentId, which is clearly described as 'Payment ID (pay_...)'. The description adds context ('Check the status') but does not significantly enhance meaning beyond the 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 'Check the status of a specific payment by its ID', which is a specific verb-resource combination. It distinguishes from sibling tools like list_payments (which lists multiple) and send_payment (which creates payments).
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 mentions 'No authentication required', which is a usage condition but does not explicitly guide when to use this tool versus alternatives like list_payments or send_payment. Usage is implied but not fully specified.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_paymentsB
View recent payment history for your CardZero wallet.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of records to return (default: 20) | |
| offset | No | Number of records to skip for pagination (default: 0) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It only says 'View recent payment history' but doesn't disclose that it returns a list, ordering, or side effects. Minimal behavioral context.
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 sentence, no extraneous information. Efficient and 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?
No output schema, and description does not explain what the response contains (e.g., list of payment objects). For a simple listing tool, more detail on return format or default behavior would be helpful.
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% for parameters (limit and offset). Description adds no value beyond the schema; baseline 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 it lists payment history for the wallet, using a specific verb and resource. It distinguishes from siblings like get_payment (single) and send_payment (send).
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 vs alternatives like get_payment for a specific payment or send_payment for sending. No mention of pagination or filtering implications.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pay_x402A
Pay for an x402-protected HTTP resource (HTTP 402 Payment Required). Use after receiving a 402 response. Returns a paymentHeader to include in the retry request as X-PAYMENT header.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The URL that returned HTTP 402 | |
| maxAmount | Yes | Maximum USDC to pay, e.g. "1.00" | |
| recipient | Yes | Merchant's Ethereum address (from the 402 response) | |
| network | No | Chain ID, defaults to "eip155:8453" (Base Mainnet) | |
| asset | No | USDC contract address (from the 402 response) | |
| idempotencyKey | No | Optional key to prevent duplicate payments on retry |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, so description carries full burden. Mentions returning paymentHeader but lacks details on failure modes, irreversibility, or confirmation steps.
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 fluff, front-loaded with purpose. Every word 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?
No output schema; description covers return value usage but omits error handling, balance checks, and other important behavioral context for a payment 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% with good parameter descriptions; description adds context for the returned header but doesn't significantly improve parameter understanding.
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?
Clear verb 'Pay' and specific resource 'x402-protected HTTP resource' distinguish it from siblings like send_payment. States use case after 402 response.
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 'Use after receiving a 402 response'. Missing explicit alternatives among siblings, but context is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_paymentA
Send a USDC payment to any Ethereum address. A 2% service fee is deducted automatically from your wallet. Confirm amount and recipient with the user before calling.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Recipient Ethereum address (0x-prefixed, 42 chars) | |
| amount | Yes | USDC amount as string, e.g. "2.50" | |
| memo | No | Optional note for the payment | |
| idempotencyKey | No | Optional key to prevent duplicate payments on retry |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavior. It mentions the automatic 2% service fee deduction, but does not cover return types, gas costs, or reversibility. Some transparency, but incomplete.
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 states purpose, second adds fee and confirmation instructions. No unnecessary words; each sentence adds value.
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 and no annotations, the description should explain return values or side effects. It does not mention what the tool returns (e.g., transaction hash) or any network-related details, leaving important 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 coverage is 100%, so baseline is 3. The description adds the confirmation guidance but does not add meaning beyond the schema's parameter 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 sends a USDC payment to any Ethereum address. The verb 'Send' and resource 'USDC payment' are specific, and it distinguishes from siblings like 'pay_x402' and read-only tools like 'get_payment'.
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 instructs to confirm amount and recipient with the user before calling, providing clear usage guidance. However, it does not explicitly differentiate when to use this tool versus the sibling 'pay_x402'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
submit_jobA
Submit a deliverable for a Job (Provider side). Posts the deliverable hash on-chain; Evaluator then auto-approves or rejects. Status: funded → submitted.
| Name | Required | Description | Default |
|---|---|---|---|
| jobId | Yes | Job ID (job_...) | |
| contentHash | Yes | 32-byte hex hash of the deliverable (0x... + 64 hex chars). Use keccak256 of canonical content. | |
| contentURI | No | Optional: URL where the deliverable can be fetched |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It reveals that the deliverable hash is posted on-chain and that the evaluator auto-approves or rejects, which adds important behavioral context beyond the operation itself.
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 extremely concise, with two sentences that front-load the key purpose and side. Every word adds value, no filler.
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 explains the flow and status transition, which is helpful given no output schema. However, it lacks details on return values or error conditions, which would improve completeness.
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?
All input parameters have descriptions in the schema (100% coverage), so the baseline is 3. The description does not add new meaning beyond what the schema already provides.
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 submits a deliverable for a Job on the provider side, using specific verbs and resources. It distinguishes itself from sibling tools like create_job or fund_job by focusing on submission.
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 after the job is funded (Status: funded → submitted) but does not explicitly state prerequisites or when not to use it. Alternatives are not mentioned, but the context makes it clear.
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.
10 tool updates
v0.2.0- First observed
create_job - First observed
create_wallet - First observed
fund_job - First observed
get_balance - First observed
get_job - First observed
get_payment - First observed
list_payments - First observed
pay_x402 - First observed
send_payment - First observed
submit_job
TDQS
Scored across 10 tools
Tools have distinct purposes overall, but send_payment and pay_x402 both involve sending payments, potentially causing slight confusion. Descriptions help differentiate them.
All tools follow a consistent verb_noun pattern with underscores, e.g., create_job, get_balance, send_payment. No mixing of styles.
10 tools cover the core wallet and job escrow functionality without being excessive or insufficient for the stated purpose.
Core workflows are covered, but missing tools like list_jobs or cancel_job could hinder full lifecycle management. Minor gap.
Maintenance
Related MCP Connectors
Pay-per-call tools for autonomous agents, settled in USDC on Base via x402.
Give your AI agent an x402 wallet: discover and pay for services in USDC, or earn from your own.
AI music, video, image, and voice tools callable by agents with USDC payments via x402 on Base.
x402 toolkit for AI agents: paid web, AI, and Base chain tools per call in USDC. Free tools too.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceUSDC payments for AI agents on Base. Direct transfers, pre-funded tabs, x402 paywall handling, and service discovery.74 npmMIT
- AlicenseAqualityCmaintenanceProvides AI agents with 10 pay-per-call utility tools (QR generation, DNS lookup, OCR, etc.) using USDC on Base via the x402 protocol, with agent's private key never leaving the agent.1135 npmMIT

token4u-mcpofficial
AlicenseAqualityBmaintenanceEnables AI agents to call LLM APIs via x402 micropayments in USDC on Base network, manage a local wallet, and query consumption records.351 npmMIT
PayAgents MCP Serverofficial
AlicenseAqualityBmaintenanceEnables AI agents to autonomously make policy-controlled payments for APIs and tools via Bitcoin Lightning (L402) and Base USDC (x402), including paying paywalled endpoints, checking balances, and reviewing transactions.311 npmMIT