cardzero-mcp
cardzero-mcp
CardZero용 MCP 서버 — Base 네트워크에서 USDC로 표시되는 AI 에이전트용 스마트 컨트랙트 지갑입니다.
AI 에이전트에게 다음과 같은 기능을 제공합니다:
지갑 생성 및 USDC 잔액 확인
직접 USDC 결제 전송 (플랫폼 수수료 2%)
x402 보호 HTTP 리소스 결제 (HTTP 402 페이월)
A2A 서비스 제공을 위한 ERC-8183 에스크로 작업 실행 (플랫폼 수수료 2% + 평가자 수수료 5%)
온체인 결제/작업 상태 조회
CardZero는 기본 API 계층이며, 이 MCP는 REST 엔드포인트를 래핑하여 MCP 호환 클라이언트(Claude Desktop, Claude Code, Cursor, VS Code 등)가 stdio를 통해 호출할 수 있도록 합니다.
사전 요구 사항
지갑을 생성한 후 CardZero 대시보드에서 얻을 수 있는 CardZero API 키와 지갑 ID가 필요합니다.
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
설정(Settings) → MCP 서버(MCP Servers) → 새 서버 추가(Add new server):
이름:
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리소스
웹사이트: https://cardzero.ai
전체 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