402-mcp
402-mcp
Nostr: npub1mgvlrnf5hm9yf0n5mf9nqmvarhvxkc6remu5ec3vf8r0txqkuk7su0e7q2
L402 + x402 客户端 MCP,赋予 AI 智能体经济代理能力。发现、支付并使用任何受支付限制的 API —— 无需人工注册,无需 API 密钥,无需中间商。
发现 Nostr 上的付费 API —— 无需预先提供 URL
自动支付 支持闪电网络 (NWC)、Cashu 电子现金或人工二维码回退
凭据缓存并加密 存储于本地 (AES-256-GCM)
兼容任何 L402 服务器 —— toll-booth、Aperture 或任何未来的实现
快速开始
1. 安装
npx 402-mcp2. 连接到 Claude Code
claude mcp add 402-mcp -- npx 402-mcp3. 尝试使用
询问 Claude:“使用 l402-search 搜索付费笑话 API” —— 无需钱包,只需发现。
准备好进行付费调用了吗?请参阅完整快速入门指南以设置钱包,并观察您的智能体支付其首次 API 调用。
Related MCP server: Loop MCP DualRail
工作原理
graph LR
A["1. l402-config()"] --> B["2. l402-discover(url)"]
B --> C["3. Agent reasons<br/>about pricing"]
C --> D["4. l402-buy-credits()<br/>or l402-fetch()"]
D --> E["5. l402-fetch(url)<br/>with credentials"]
E --> F["6. Data returned<br/>+ balance cached"]示例会话:
Agent: "I need routing data from routing.trotters.cc"
1. l402-config()
-> nwcConfigured: true, maxAutoPaySats: 1000
2. l402-discover("https://routing.trotters.cc/api/route")
-> 10 sats/request, toll-booth detected, tiers available
3. Agent reasons: "I need ~20 requests. The 500-sat tier
gives 555 credits. Better value."
4. l402-buy-credits(url, amountSats=500)
-> Paid 500 sats, received 555 credits
5. l402-fetch("https://routing.trotters.cc/api/route?from=...&to=...")
-> 200 OK, route data, 545 credits remaining有关详细的架构和支付流程图,请参阅 docs/architecture.md。
配置
变量 | 默认值 | 描述 |
| - | 用于自主闪电网络支付的 Nostr Wallet Connect URI |
| - | Cashu 令牌存储文件路径 |
| 1000 | 安全上限;超过此金额的支付需要人工确认 |
|
| 持久化 macaroon/凭据存储 |
|
| 传输模式: |
| 3402 | HTTP 服务器端口 (当 |
|
| 多 URL 服务的首选传输顺序 (逗号分隔) |
| - | 用于 |
| - | 设置后作为所有请求的通用 SOCKS5 代理 |
| - | Handshake ( |
传输选择与回退
当 kind 31402 事件广播多个 URL(每个传输一个)时,402-mcp 会根据您的配置选择最佳 URL:
优先选择 —— 如果
TRANSPORT_PREFERENCE=tor且存在.onionURL,则优先尝试。可用性回退 —— 如果首选传输不可达(未配置代理、超时),客户端将回退到列表中的下一个 URL。
明网默认 —— 如果未设置偏好,则在
.onion或 HNS 条目之前尝试明网 URL。
服务可以为同一服务(相同定价、相同 macaroon 密钥)在不同传输上发布多个端点。这纯粹是为了抗审查;切换传输时无需重新认证。要访问 Tor 或 HNS 端点,您必须配置上述相应的代理/网关环境变量。
工具
核心 L402 (任何服务器)
工具 | 描述 |
| 内省支付能力(钱包、限额、凭据数量) |
| 探测端点以在不支付的情况下发现定价 |
| 支持 L402 的 HTTP 请求;如果在预算内则自动支付 |
| 支付特定发票(NWC、Cashu 或人工介入) |
| 列出已存储的凭据和缓存余额 |
| 检查服务器的缓存信用余额 |
| 在 Nostr 中继上发现 L402 服务 (kind 31402 公告) |
| 存储从支付页面获取的 L402 令牌 |
toll-booth 扩展
工具 | 描述 |
| 浏览并购买批量折扣层级 |
| 直接兑换 Cashu 令牌(避免闪电网络往返) |
支付方式
三种支付轨道,按优先级尝试:
NWC (Nostr Wallet Connect) —— 完全自主;从您连接的钱包支付
Cashu —— 完全自主;熔化电子现金令牌以支付发票
人工介入 —— 展示二维码,轮询结算状态
智能体可以按调用覆盖支付方式,或者您可以仅配置您想要的方式。
l402-fetch 透明地处理四种 HTTP 402 挑战变体:
协议 | 挑战头 | 支付 |
L402 |
| 通过钱包栈的闪电网络发票 |
IETF Payment ( |
| 通过钱包栈的闪电网络发票 |
xCashu (NUT-18) |
| 直接发送电子现金令牌(需要 Cashu 钱包) |
x402 |
| 链上 EVM 转账;通过 EIP-681 深层链接呈现给用户 |
安全性
MAX_AUTO_PAY_SATS 限制了任何单笔自主支付。超过此限额,智能体必须请求人工批准。智能体可以通过 l402-config 读取此限额并将其纳入购买决策。
隐私
402-mcp 仅在您的机器上本地存储凭据(~/.402-mcp/credentials.json,静态加密)。不会向任何第三方发送数据。无账户、无追踪、无分析。支付使用闪电网络或 Cashu —— 设计上即为假名。
生态系统
在 402.pub 浏览实时 L402 服务 —— 这是受支付限制 API 的去中心化市场。
项目 | 角色 |
与支付轨道无关的 HTTP 402 中间件 | |
按令牌付费的 AI 推理代理(基于 toll-booth 构建) | |
MCP 客户端 —— AI 智能体发现、支付并使用 L402 + x402 API | |
在 Nostr 上发布 L402 服务以实现去中心化发现 |
402-mcp 是 Lightning Labs 的 lightning-agent-tools 和 Coinbase 的 x402 的与支付轨道无关的替代方案 —— 无需闪电网络节点,支持多个钱包,凭据加密。
402-mcp | Lightning Labs 智能体工具 | |
支付轨道 | NWC + Cashu + 人工回退 | 仅限闪电网络 |
需要节点? | 否 —— 连接到任何 NWC 钱包 | 是 —— 运行 LND |
服务器兼容性 | 任何 L402 服务器 | 专注于 Aperture |
支出安全 | 单笔支付上限 + 滚动 60 秒窗口 | 单次调用最大成本 |
凭据存储 | 静态加密 (AES-256-GCM) | 文件权限 |
隐私 | 无 PII,SSRF 保护,错误清理 | 标准 |
如果您希望智能体运行自己的闪电网络节点,请使用 Lightning Labs 的工具。如果您希望智能体无需基础设施即可从任何钱包支付,请使用 402-mcp。
有关开发设置和指南,请参阅 CONTRIBUTING.md。
由 @forgesworn 构建。
闪电网络打赏:
thedonkey@strike.meNostr:
npub1mgvlrnf5hm9yf0n5mf9nqmvarhvxkc6remu5ec3vf8r0txqkuk7su0e7q2
ForgeSworn 工具包的一部分
ForgeSworn 为 Nostr 构建开源的加密身份、支付和协调工具。
库 | 功能 |
确定性子身份派生 | |
secp256k1 上的 SAG/LSAG 环签名 | |
Pedersen 承诺范围证明 | |
抗胁迫口头验证 | |
人类可读的验证令牌 | |
L402 支付中间件 | |
具有多边形覆盖范围的 Geohash 工具包 | |
NIP-VA 可验证证明 | |
基于纪元的加密访问控制 | |
保护隐私的信任网 |
许可证
Available Tools
14 toolsl402-balanceARead-only
Check cached credit balance for a server. Returns the last known balance from the credential store without making a network request. The "stale" flag is true if the balance was last updated more than 5 minutes ago.
| Name | Required | Description | Default |
|---|---|---|---|
| origin | Yes | The server origin (e.g. https://api.example.com) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses key behaviors beyond the readOnlyHint annotation: it returns 'last known balance' from a credential store, performs no network request, and explains the condition for the 'stale' flag (updated more than 5 minutes ago). This adds meaningful context that annotations alone don't 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 concise sentences deliver all essential information: the action, the caching behavior, and the staleness rule. Every sentence earns its place with no redundancy or 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?
For a simple one-parameter tool with no output schema, the description explains the return concept (balance and stale flag) sufficiently well. It stops short of detailing the full response structure or edge cases (e.g., no cached value), but given the simplicity, this is a minor gap.
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% and the only parameter 'origin' already has a clear description with a URI format and example. The description adds no additional parameter-specific meaning, so the 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 states a specific verb and resource: 'Check cached credit balance for a server.' It distinguishes this tool from siblings by emphasizing that it uses a cached value and makes no network request, which sets it apart from other l402 tools like l402-fetch or l402-pay.
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 clearly implies when to use this tool: when you want a fast, cached balance check without network overhead. However, it doesn't explicitly name alternatives or state when not to use it, so it lacks explicit exclusions that would merit a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
l402-buy-creditsADestructive
Buy credits from a toll-booth server with volume discounts. Omit amountSats to discover available tiers. Provide amountSats to purchase a specific tier. Only works with toll-booth servers.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The toll-booth server URL | |
| method | No | Payment method override | |
| amountSats | No | Amount in sats to purchase. Omit to list available tiers. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true and openWorldHint=true, so the safety profile is handled. The description adds the mode behavior and the toll-booth restriction, but it does not clarify side effects of a purchase, such as spending funds, irreversibility, or error/response 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?
Three short sentences front-load the purpose and immediately state the key branching behavior. Minor redundancy exists between 'from a toll-booth server' and 'Only works with toll-booth servers,' but overall it is tight.
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 three-parameter tool with no nested objects, core invocation is covered: required URL, optional method, optional amountSats, and the toll-booth constraint. However, there is no output schema and the description does not say what a successful purchase or tier-discovery response contains, which is a notable gap for a financial operation.
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%, so the baseline is 3. The narrative about omitting/providing amountSats adds a little clarity, but it largely repeats the schema's description of amountSats and does not enrich method or url beyond what the schema already says.
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 opens with a specific action ('Buy credits') and identifies the resource ('a toll-booth server') and a differentiator ('volume discounts'). It distinguishes this from sibling payment tools by restricting it to toll-booth servers, though it never names a sibling explicitly.
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 branching guidance: omit amountSats to discover tiers, provide amountSats to buy a specific tier, and only works with toll-booth servers. This gives clear when-to-use context, but it does not compare against siblings such as l402-pay or l402-discover, so it falls just short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
l402-configARead-only
Introspect the MCP's payment capabilities: which wallets are configured, spending limits, and stored credential count. Call this first to understand what payment methods are available.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, which the description aligns with by using 'Introspect'. The description adds value beyond the annotation by revealing what kind of read-only data is returned: wallet configuration, spending limits, and credential count. No hidden mutation or side effects are suggested.
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 tight sentences with no filler. The first sentence states exactly what the tool does and its outputs; the second gives actionable usage guidance. Every clause 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?
With no parameters and no output schema, the description sufficiently explains what the tool returns at a categorical level. It could be more explicit about output format or whether any setup is required, but for a zero-input introspection tool it is adequately complete for an agent to call it correctly.
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 tool has zero parameters, so there is no schema burden to compensate for. The description accurately describes the tool's no-input introspection behavior, and the baseline of 4 is appropriate since no parameter documentation is needed.
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 uses specific verb 'Introspect' with resource 'payment capabilities' and enumerates concrete outputs: wallets configured, spending limits, stored credential count. The instruction to call this first also distinguishes it from sibling tools like l402-pay or l402-fetch, making its role clear.
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 'Call this first to understand what payment methods are available', giving clear context for when to invoke it. It does not explicitly list alternatives or when not to use it, but the sequencing guidance and broad discovery purpose sufficiently differentiate it from siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
l402-credentialsARead-only
List all stored L402 credentials. Shows origin, cached credit balance, and server type. Balance values are cached and may be stale; check lastUsed timestamp.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already marks it safe, and the description adds genuinely useful behavior: balances are cached and possibly stale, and the lastUsed timestamp is the way to judge freshness. This is beyond the annotation and gives the agent a realistic expectation of data reliability. No contradiction exists.
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 tight sentences front-load the action and displayed fields, then add the stale-balance caveat. Every sentence carries operational value, and no redundant filler is present.
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 zero-parameter, read-only listing tool, this description is complete: it says what is listed, what fields are shown, and warns about cache freshness. The lack of an output schema is mitigated by naming the visible fields, and there are no params/options whose behavior would need elaboration.
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 is empty (0 parameters), so there are no parameter semantics for the description to enrich. With schema coverage at 100%, the description cannot add anything parameter-related, and the baseline of 4 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?
States the action ('List all stored L402 credentials') and the resource/scope precisely, then names the displayed fields (origin, cached credit balance, server type). This distinguishes it from siblings like l402-store-token or l402-balance by focusing on stored credentials rather than operations or current balance.
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?
Usage is only implied: an agent can infer this is for inspecting stored credentials, and the 'cached/may be stale' caveat hints that l402-balance might be the alternative for fresh numbers. However, it never explicitly states when to prefer this tool or names an alternative, so it stops short of clear routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
l402-discoverARead-only
Probe an endpoint to discover its L402 pricing without committing to payment. Returns the cost in sats, available payment methods, and credit tiers (if toll-booth server). The challenge is cached so a subsequent l402-pay can reuse it.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The URL to probe for L402 pricing | |
| method | No | HTTP method to use | GET |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint=true and openWorldHint=true already present, the description adds meaningful behavioral details: no payment is committed, the challenge is cached for later reuse, and responses include pricing and payment-method information. It does not contradict the annotations and gives enough context for safe usage.
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 compact and front-loaded: the core action appears first, followed by return-value highlights and the caching behavior. Every sentence earns its place without fluff or repetition.
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 probe tool with one required parameter and no output schema, the description covers what the tool returns, when to use it, and the relevant caching side effect. It does not specify failure behavior or non-L402 endpoints, but those are minor gaps given the overall clarity.
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 schema already documents both parameters and their defaults. The description reinforces that 'url' is the endpoint being probed but adds little about 'method' beyond what the schema provides. 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 uses a specific verb ('Probe') and resource ('endpoint') and states the purpose: discover L402 pricing without payment. It also names concrete outputs (cost in sats, payment methods, credit tiers) and distinguishes itself from l402-pay by mentioning challenge caching. This makes the tool's role clear even among many 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?
The description clearly implies the tool is a pre-payment discovery step: 'without committing to payment' and 'a subsequent l402-pay can reuse it' provide strong context for when to use it. It does not explicitly enumerate exclusions or alternative tools, but the intended workflow is evident.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
l402-fetchADestructive
Fetch a URL, paying its HTTP 402 challenge (L402, IETF Payment, Cashu or LNURLcash) when autoPay is true and the price is within MAX_AUTO_PAY_SATS, maxCostSats and the spend limits. Reuses stored credentials. Without autoPay, a 402 comes back with its price and paymentHash so the user can decide; l402-pay can then pay it. For x402 services, which this server supports only in an experimental custom format, returns the payment details for the user to pay in their own wallet. Response bodies are marked as untrusted content. With widget hosts, call l402-fetch-preview first to show the price.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The primary URL to request. When using search results, pass the first URL here and all URLs in the urls field. | |
| body | No | Request body (for POST/PUT) | |
| urls | No | All transport URLs from l402-search results (clearnet, onion, HNS). When present, transports are tried in preference order with automatic fallback on connection failure. | |
| method | No | HTTP method | GET |
| pubkey | No | Service pubkey from l402-search results — used to share credentials across all transport URLs for the same service | |
| txHash | No | Transaction hash from a completed x402 on-chain payment. When provided, retries the request with X-Payment header for server verification. | |
| autoPay | No | Automatically pay if within MAX_AUTO_PAY_SATS budget | |
| headers | No | Additional request headers | |
| maxCostSats | No | Most this call may pay, in sats. Pass the price the user saw in l402-fetch-preview so a server cannot charge more than it showed. Lowers MAX_AUTO_PAY_SATS for this call; never raises it. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare openWorldHint and destructiveHint, so the description adds value by explaining the payment side effects, credential reuse, untrusted response bodies, and the maxCostSats cap. It doesn't fully detail what happens to stored credentials or whether failures are reversible, but it covers the key behavioral traits 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?
The description is dense but well-organized, front-loading the core fetch-and-pay behavior before edge cases. Every sentence adds information, though the x402 and widget-host sentences could be seen as slightly crammed. Overall it earns its length.
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 complex tool with 9 parameters, no output schema, and payment side effects, the description covers the main flows, the autoPay decision, the preview routing, and the untrusted-content warning. It doesn't specify the exact return shape of a 402 response, but the description says the price and paymentHash come back, which is enough for an agent to proceed.
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 baseline is 3. The description adds meaning by explaining the relationship between maxCostSats and MAX_AUTO_PAY_SATS, the purpose of pubkey for sharing credentials, and the txHash retry behavior. It doesn't describe every parameter in prose, but the schema already does that.
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 fetches a URL and handles HTTP 402 payment challenges, distinguishing it from siblings like l402-pay and l402-fetch-preview. It names the specific protocols (L402, IETF Payment, Cashu, LNURLcash) and the autoPay behavior, so an agent can tell exactly what this tool does.
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 explains when to use autoPay vs not, when to call l402-fetch-preview first for widget hosts, and when to use l402-pay for a returned 402. It also mentions x402 experimental format handling. This is strong routing guidance relative to siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
l402-fetch-previewARead-only
Preview payment requirements for a URL without spending any sats. Returns cost, protocol, and payment method so a confirmation dialog can be shown. Use this before l402-fetch to give the user a chance to approve or cancel payment. For widget hosts, the result drives a payment confirmation dialog.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | URL to preview payment requirements for | |
| urls | No | Batch: multiple URLs to preview | |
| method | No | HTTP method | GET |
| pubkey | No | Nostr pubkey for xcashu auth | |
| headers | No | Additional request headers |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the description's claim of 'without spending any sats' reinforces but adds specific meaning (no financial side effect). It also describes what the tool returns (cost, protocol, payment method) and the intended UI usage, which goes beyond the annotation. However, it does not mention potential errors or connection issues, a minor gap given the annotations cover safety.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the primary purpose, and no filler. The usage guidance is embedded efficiently. Every clause 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?
For a preview tool with read-only annotations, the description covers the core purpose, return data, and usage context. It does not describe the exact output schema (since none exists), but that is compensated by stating the key fields. Minor gaps like error handling or authentication requirements are not addressed, but given the 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%, so each parameter is already documented. The description adds no parameter-specific usage detail beyond what the schema provides. It does not explain how to format arrays or headers, but the schema already covers that. Thus, 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 states a specific verb ('Preview'), resource ('payment requirements for a URL'), and outcome ('without spending any sats'). It clearly distinguishes from l402-fetch by positioning itself as a pre-check. The purpose is unambiguous and actionable.
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 instructs to 'Use this before l402-fetch' and gives the condition (to give the user a chance to approve or cancel payment). Also mentions the widget host context. This directly routes the agent to the correct tool and tells when not to use the alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
l402-payADestructive
Pay a challenge that l402-fetch or l402-discover returned, by its paymentHash, and store the credential so the next l402-fetch succeeds. For human wallets, polls the payment page for settlement for up to 120s; call it straight after showing the payment URL to the user. An invoice that did not come from such a challenge is paid only if the human approves it in the client.
| Name | Required | Description | Default |
|---|---|---|---|
| method | No | Payment method override. Defaults to wallet priority: NWC > Cashu > LNURLcash > human. | |
| invoice | No | BOLT-11 invoice. Leave out when paying a challenge by paymentHash; any other invoice needs the human to approve it. | |
| macaroon | No | Macaroon from the L402 challenge. Optional if paymentHash matches a cached challenge. | |
| paymentHash | No | Payment hash of a challenge from l402-fetch or l402-discover. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint and openWorldHint, but the description adds substantial behavioral detail: it stores credentials for the next fetch, polls the payment page for up to 120s for human wallets, and requires human approval for unrelated invoices. 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?
Three dense, purposeful sentences: the core action and effect come first, followed by the human-wallet polling behavior and timing, then the approval condition. There is no filler or redundant restating of schema content.
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 payment tool with no output schema, the description provides rich context: source of the challenge, credential storage, polling window, and human approval rule. The only minor gap is that it does not state what the caller receives on success, failure, or timeout.
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%, so the schema already documents all four parameters, including the paymentHash/invoice relationship and the human-approval caveat. The description reinforces these ideas but adds no new parameter-level format or constraint details 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 opens with a concrete verb-object pair: 'Pay a challenge ... by its paymentHash.' It names the exact source tools (l402-fetch or l402-discover), making it clearly distinct from payment-adjacent siblings like l402-buy-credits or l402-redeem-cashu.
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 gives clear timing guidance ('call it straight after showing the payment URL') and restricts automatic payment to challenges from l402-fetch or l402-discover. It does not explicitly list when to prefer an alternative payment sibling, so it falls just short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
l402-reconcileA
Resolve a payment whose outcome is unknown. While one is unresolved, auto-pay to that service is paused. Call with no arguments to list them, or with a paymentHash to ask the wallet (NWC lookup_invoice, or the Cashu mint for a reserved melt). A settled payment stores its credential when it can; a failed one is cleared. A preimage that hashes to the payment hash also settles it. abandon: true asks the human to confirm that the payment did not go out.
| Name | Required | Description | Default |
|---|---|---|---|
| abandon | No | Stop tracking the payment. Requires the human to approve through the client. | |
| preimage | No | Settlement preimage, if the human has one from their wallet | |
| paymentHash | No | Payment hash from an unknown-outcome payment. Omit to list unresolved payments. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only provide openWorldHint=true and destructiveHint=false, but the description adds substantial behavioral detail: auto-pay to the service is paused while unresolved, settled payments store credentials when possible, failed payments are cleared, and abandon requires human approval. This is far beyond what the annotations alone convey.
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 dense paragraph with the core purpose front-loaded, followed by invocation modes and parameter-specific behavior. Every sentence earns its place; there is no filler or repetition of schema details.
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 three optional parameters, no output schema, and significant side effects, the description covers invocation modes, resolution outcomes, credential storage, and the human-in-the-loop requirement. It does not describe the return format of listing unresolved payments, but this is a minor gap for an agent already given the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description adds real meaning beyond the schema: paymentHash triggers an NWC lookup_invoice or Cashu mint lookup, preimage must hash to the payment hash to settle, and abandon requires human confirmation. It enriches each parameter with behavioral context rather than repeating schema text.
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 states a specific verb and resource: 'Resolve a payment whose outcome is unknown' and immediately distinguishes the two main modes: listing unresolved payments versus resolving a specific one. This clearly separates it from siblings like l402-pay or l402-fetch by focusing on reconciliation of uncertain 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 gives explicit call patterns: call with no arguments to list, with paymentHash to query the wallet, with preimage to settle, or with abandon for human confirmation. It does not explicitly name sibling alternatives or state when not to use the tool, but the usage conditions are clear enough for an agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
l402-redeem-cashuADestructive
Redeem Cashu ecash tokens directly on a toll-booth server, avoiding the Lightning round-trip. Handles the two-step flow automatically (create invoice then redeem token). Only works with toll-booth servers.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The toll-booth server URL | |
| token | Yes | Cashu token string to redeem (e.g. cashuAey...) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description reveals an important behavioral trait: it automatically handles the two-step flow of creating an invoice then redeeming the token. It also clarifies that the tool only works against toll-booth servers. It does not detail the destructive consumption of the Cashu token, but destructiveHint=true already signals the mutation risk.
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-loaded with the core purpose, and contains no fluff. The only minor inefficiency is repeating the toll-booth-server constraint in both the first and final sentences.
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 two-parameter tool with no output schema, the description covers the main selection criteria, the target server type, and the internal two-step flow. It does not specify return values or post-redemption behavior, but the annotations and simple parameter surface make this a minor gap rather than a blocking one.
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 already documents both parameters with 100% coverage, so the baseline is 3. The description adds contextual flow details but no additional parameter-level 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 opens with a specific verb and resource: 'Redeem Cashu ecash tokens directly on a toll-booth server', and adds a clear differentiator by noting it avoids the Lightning round-trip. It also closes with a scope limitation ('Only works with toll-booth servers'), making it easy to distinguish from siblings like l402-pay or l402-fetch.
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 gives useful context for when to choose this tool: it is for direct Cashu redemption on toll-booth servers, avoids Lightning, and automates the two-step flow. It does not explicitly name alternative sibling tools or state 'use X instead', but the toll-booth-only constraint and direct-vs-Lightning framing provide adequate selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
l402-searchARead-only
Search Nostr relays for paid API announcements (kind 31402) and return their URLs, pricing and capabilities. Topic filters are sent to the relays; the payment method and query text are matched locally. Announcement text is written by whoever published it and is marked as untrusted content.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query to match against service names, descriptions, and capabilities | |
| relays | No | Nostr relay URLs to query (defaults to popular public relays) | |
| topics | No | Filter by topic tags (e.g. ["ai", "data"]) | |
| timeout | No | Relay subscription timeout in milliseconds (default 5000) | |
| maxResults | No | Maximum number of results to return (default 20) | |
| paymentMethod | No | Filter by payment rail, the first value of an announcement's pmi tag (e.g. "l402", "cashu", "xcashu", "lnurlcash", "x402", "payment"). A Cashu service may list "cashu", "xcashu" or both |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as read-only and open-world, and the description adds genuinely useful behavioral details: topic filters are sent to relays while payment/query matching happens locally, and announcement text is untrusted. It does not cover pagination or output shape, but for a read-only search tool this is sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three focused sentences: the first front-loads the action and result, the second clarifies the filtering behavior, and the third warns about content trustworthiness. No sentence is wasted.
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?
With no output schema, the description still names the high-level return values and the kind of content searched, and the input schema covers all six parameters. It could be slightly more explicit about result limits or failure behavior, but it gives an agent enough to call the tool correctly.
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%, so the parameters are already well documented. The description adds slight context about where query and payment-method filtering occurs, but it does not materially extend the parameter semantics 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 opens with a specific verb and resource: 'Search Nostr relays for paid API announcements (kind 31402)', and it lists the returned information (URLs, pricing, capabilities). It is clear about what the tool does, though it does not explicitly differentiate itself from siblings like l402-discover or l402-service-directory.
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 first sentence gives clear context for when to use this tool: when an agent needs to discover paid API announcements published on Nostr relays. It does not provide exclusions or direct alternatives, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
l402-service-directoryService DirectoryARead-only
Browse and search paid API services. Opens an interactive directory of L402/x402 services discovered on Nostr. Calls l402-search internally.
| 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 openWorldHint=true, covering safety and open-world behavior. The description adds value by revealing that the tool is interactive ('Opens an interactive directory') and that it internally calls l402-search, which implies a wrapper behavior and potential user-interface side effects. This is beyond the annotations and is not contradictory.
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 with zero waste. The primary purpose is front-loaded ('Browse and search paid API services'), and the additional details about the interactive directory and internal call are placed efficiently. Every sentence 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?
Given the tool has no parameters and annotations already convey read-only and open-world behavior, the description provides sufficient context to understand what the tool does. However, it does not describe the return format or what 'interactive' means precisely, and it does not differentiate from similar siblings. These gaps are minor for a zero-parameter tool, so a 4 is appropriate.
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 tool has zero parameters, so there is nothing to document. Per the instructions, a zero-parameter tool gets a baseline of 4 since the schema coverage is trivially 100% and no description compensation is needed. The description does not need to add parameter meaning.
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 states a clear verb and resource: 'Browse and search paid API services.' It adds context by mentioning it opens an interactive directory of L402/x402 services discovered on Nostr and that it calls l402-search internally. However, it does not explicitly differentiate itself from siblings like l402-search or l402-discover, which could be confused as alternatives, so it stops short of a 5.
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 context by saying it opens an interactive directory and calls l402-search internally, suggesting it is a higher-level wrapper for interactive browsing. But it provides no explicit 'when to use' vs 'when not to use' guidance, nor does it name any sibling tools as alternatives. The usage conditions are left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
l402-store-tokenAIdempotent
Store an L402 token (macaroon:preimage) obtained from a payment page. Use this when a user pastes back a token from a toll-booth payment page. The token is stored as a credential so subsequent l402-fetch calls are authenticated.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The service URL this token is for | |
| token | Yes | The L402 token in macaroon:preimage format |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavioral context beyond the idempotentHint annotation by stating the token is persistently 'stored as a credential' and that this makes subsequent l402-fetch calls authenticated. It does not contradict the annotations; the readOnlyHint=false aligns with the mutation implied by 'Store.'
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 with no wasted words. It front-loads the core action, then provides the usage trigger and downstream benefit, making it easy for an agent to parse quickly.
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 two-parameter store operation, the description covers what the token is, where it comes from, and why it matters. It does not describe the return value or error behavior, but given the simple side-effect model and the idempotentHint annotation, this is a minor gap rather than a blocking omission.
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 already has 100% coverage with clear descriptions for both parameters, including the token format 'macaroon:preimage'. The description reinforces the token format and purpose but does not add meaningfully 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 states a specific verb and resource: 'Store an L402 token (macaroon:preimage) obtained from a payment page.' It also clarifies the token's role as a stored credential for authenticating subsequent l402-fetch calls, making the purpose unambiguous and distinguishable from sibling tools like l402-credentials or l402-fetch.
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 gives an explicit trigger: 'Use this when a user pastes back a token from a toll-booth payment page.' It also explains the downstream effect by noting the token is stored for later l402-fetch authentication, but it does not explicitly mention alternatives or cases where this tool should not be used.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
l402-wallet-dashboardWallet DashboardARead-only
View wallet status, balances, and stored credentials. Opens an interactive dashboard showing NWC connection, Cashu balance, auto-pay limit, and credential list.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint-only annotation is complemented by the description's added behavioral detail that this 'opens an interactive dashboard' rather than merely returning data. This is important context for an agent deciding whether the tool is suitable for automated workflows. No contradiction with the read-only annotation exists.
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 carry the full message with no filler: the first states the action and subject, the second adds the specific dashboard contents. The information is front-loaded and every phrase 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?
For a zero-parameter, read-only dashboard tool, the description is largely complete: it names the visible elements (NWC connection, Cashu balance, auto-pay limit, credential list) and signals that the result is an interactive interface. A bit more context about how this relates to the sibling balance/credential tools would round it out.
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 tool has zero parameters, and the schema's property list is empty, so there is no parameter documentation burden on the description. The description correctly implies no inputs are required by framing the tool as a view-only dashboard.
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 uses a specific verb ('View') and resource ('wallet status, balances, and stored credentials'), making the core purpose clear. It also lists concrete dashboard contents, but it does not explicitly distinguish itself from siblings like l402-balance or l402-credentials.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for a consolidated wallet overview ('View wallet status, balances, and stored credentials') and clearly indicates an interactive dashboard. However, it does not state when to prefer this tool over the sibling balance, credential, or config tools, and provides no exclusions.
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.
3 tool updates
v4.3.1- Changed
l402-search1 field changed- changed
Input schema / properties / paymentMethod / descriptionPrevious value: -"Filter by payment method (e.g. \"l402\", \"cashu\", \"x402\", \"xcashu\")"New value: +"Filter by payment rail, the first value of an announcement's pmi tag (e.g. \"l402\", \"cashu\", \"xcashu\", \"lnurlcash\", \"x402\", \"payment\"). A Cashu service may list \"cashu\", \"xcashu\" or both"
- Added
l402-service-directory - Added
l402-wallet-dashboard
3 tool updates
v4.3.0- Changed
l402-fetch1 field changed- added
Input schema / properties / maxCostSatsAdded value: +{ + "description": "Most this call may pay, in sats. Pass the price the user saw in l402-fetch-preview so a server cannot charge more than it showed. Lowers MAX_AUTO_PAY_SATS for this call; never raises it.", + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" +}
- Changed
l402-pay2 fields changed- changed
Input schema / properties / invoice / descriptionPrevious value: -"BOLT-11 invoice to pay. Optional if paymentHash matches a cached challenge from l402-discover."New value: +"BOLT-11 invoice. Leave out when paying a challenge by paymentHash; any other invoice needs the human to approve it." - changed
Input schema / properties / paymentHash / descriptionPrevious value: -"Payment hash to look up cached challenge from l402-discover."New value: +"Payment hash of a challenge from l402-fetch or l402-discover."
- Added
l402-reconcile
11 tool updates
v4.2.1- First observed
l402-balance - First observed
l402-buy-credits - First observed
l402-config - First observed
l402-credentials - First observed
l402-discover - First observed
l402-fetch - First observed
l402-fetch-preview - First observed
l402-pay - First observed
l402-redeem-cashu - First observed
l402-search - First observed
l402-store-token
TDQS
Scored across 14 tools
Most tools have concrete, well-scoped jobs, but several read-only/status tools overlap: l402-credentials, l402-balance, l402-config, and l402-wallet-dashboard all expose balances, credentials, or wallet state, and l402-discover overlaps with l402-fetch-preview for discovering pricing. The descriptions help, but an agent could easily call the wrong one.
All names share the l402- prefix and lowercase kebab-case, but the grammatical pattern is mixed: verb-noun actions like l402-store-token and l402-buy-credits sit beside bare verbs like l402-pay and l402-fetch and nouns like l402-config and l402-credentials. This is readable but not a predictable verb_noun convention.
14 tools is within a reasonable range for an L402 payment server, and most tools serve a distinct workflow step. The count is slightly high because the status/introspection surface could be consolidated and l402-service-directory is essentially a wrapper around l402-search.
The payment lifecycle is well covered: discover, preview, fetch, pay, store tokens, buy credits, redeem cashu, and reconcile uncertain payments. Minor gaps remain, such as no explicit credential deletion/revocation or payment history beyond cached balances, but agents can work around these for core flows.
Maintenance
Related MCP Connectors
Pay-per-action access to APIs and MCP tools over Lightning L402 and Base USDC x402.
x402 pay-per-call APIs over MCP, settled in USDC on Base for autonomous agents and developers.
Monetize any MCP server: x402 paywall, pay-per-call billing in USDC on Base, agent marketplace.
Agent-native MCP for governed commerce, x402 payments, paid capabilities, and verifiable receipts.
Related MCP Servers
- AlicenseAqualityCmaintenanceMCP server that enables AI agents to make autonomous Bitcoin Lightning Network payments using the L402 protocol. Agents can pay for API access, purchase resources, and complete transactions without human intervention — invoice comes in, sats go out, done.179MIT

Loop MCP DualRailofficial
AlicenseNot gradedqualityBmaintenanceEnables AI agents to pay for MCP tool calls using either Bitcoin/Lightning (L402) or USDC (x402) rails, with unified settlement and a 21% discount for Bitcoin payments.32 npmMIT- FlicenseAqualityBmaintenanceMCP server for a live x402 payment gateway on Base (USDC). Lets AI agents discover, preview for free, then pay per call — with prepaid gasless payments, signed receipts, and delta delivery.7-
- AlicenseNot gradedqualityDmaintenanceMCP server for the x402 protocol that lets AI agents discover and call payment-gated HTTP APIs automatically.144 npmApache 2.0