Signal Desk paid tools

io.github.huntercarver24由 GitHub 账号 huntercarver24 发布v1.1.2更新于 Nov 1, 2026

x402-paid tools: render pages, host files, delayed callbacks, pump.fun launch feed, trend radar

已验证Streamable HTTP可网页运行网页搜索与抓取文件与存储金融

概览

AI 生成的概览

按次付费的远程 MCP 服务器:通过 x402 以 USDC 付费,可渲染网页、托管文件、安排延时回调,并提供 pump.fun 发币与热门话题数据。

可以做什么
  • 用无头浏览器渲染公开网页,返回干净的 Markdown、PNG 截图或 PDF
  • 上传最大 10 MB 的文件,获得 1 至 168 小时内有效的公开下载链接
  • 向公开 URL 安排延时 HTTP 回调,可带 JSON 请求体与请求头,延迟 60 秒至 7 天
  • 列出近期 pump.fun 代币发行,含创建者钱包及匹配到的热门话题
  • 列出 Google Trends 与 Polymarket 上正在热门的话题,按主题合并并按分数与变化速度排序
适用场景
适合需要把网页转成 Markdown、截图或 PDF,需要临时公开文件链接、延时 webhook,或想快速了解代币发行与热门话题的助手,并且能在无账号情况下按次支付几美分 USDC。
运行要求
远程 streamable HTTP 端点,无需账号或 API 密钥。付款需要支持 x402 的客户端和持有 USDC 的 Base 钱包,每次调用签署一笔转账(文档示例中通过 X402_PRIVATE_KEY 提供私钥)。JavaScript 客户端示例需 Node 20 或更高版本。发币数据源目前以免费 503 拒绝调用。
安装前请注意
每次调用都会在 Base 上花费真实 USDC,请使用只存几美分的临时钱包而非主钱包;客户端会按报价条款签署转账。上传的文件在过期前可被公开下载,回调会向你提供的 URL 发送请求。发币与趋势数据仅供参考,不评级也不推荐代币。没有账号,付款记录在链上。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Signal Desk paid tools,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Web executable,通过 Streamable HTTP。 远程服务在工作区中配置后即可从网页运行时运行。

交给智能体安装

把这段提示词粘贴到 Claude Code、Codex、Cursor 等智能体,或 SourceWeft 对话中。智能体会读取该服务器的安装指南,先向你展示发布者、端点和登录方式,经你同意后再把它添加到你的客户端。密钥不会写进任何命令。

阅读 https://sourceweft.com/mcp/io.github.huntercarver24%2Fsignal-desk/install.md,并按其中说明把这个 MCP 服务器接入我的客户端。修改任何配置之前,先告诉我它的发布者、端点和登录方式,等我确认。不要把 API 密钥写进命令或我会提交的文件;问我密钥应从哪里获取。

查看智能体所依据的安装指南

其他 MCP 客户端

把它添加到你客户端的 mcpServers 配置中。

{
  "mcpServers": {
    "signal-desk-paid-tools": {
      "type": "http",
      "url": "https://x402-mcp.huntercarver24.workers.dev/mcp"
    }
  }
}

README

Signal Desk

[monitor]

Pay-per-call tools for AI agents, paid in USDC on Base through x402. No account and no API key: the first call answers 402 Payment Required with the price, the agent's wallet signs a transfer for exactly that amount, and the second call gets the result plus a receipt. Settlement happens only after the work succeeded, so a call the service refuses is never charged.

toolHTTP routepricewhat the agent gets
render_pagePOST /render$0.01a public page opened in a real headless Chrome, returned as clean Markdown, a PNG screenshot or a PDF
host_filePOST /files$0.01up to 10 MB stored at a public link for 1 to 168 hours, free to download
schedule_callbackPOST /later$0.005a URL called 60 seconds to 7 days from now (GET, or POST with a JSON body), plus a free status page
recent_launchesPOST /launches$0.005every pump.fun token created in the last N minutes, with its creator, the creator's 7-day launch count, and the live Google Trends or Polymarket topic its name matches
trending_topicsPOST /trends$0.01what is trending now across Google Trends (US) and Polymarket, merged by topic, strongest first, with score, velocity, a type label and the headlines behind it
endpointURL
HTTP routeshttps://x402-paywall.huntercarver24.workers.dev
MCP, all five toolshttps://x402-mcp.huntercarver24.workers.dev/mcp (registry: io.github.huntercarver24/signal-desk)
MCP, the two feeds onlyhttps://x402-mcp.huntercarver24.workers.dev/feeds/mcp (registry: io.github.huntercarver24/pumpfun-trends)

Every route's fields, limits and an example are in its 402 answer and in GET / on the HTTP host. Every refusal (bad input, private address, executable upload) carries the same usage object, free.

Use it

Use a throwaway wallet holding a few cents of USDC on Base, never a main wallet.

Any HTTP client

js
import { x402Client } from "@x402/core/client";import { toClientEvmSigner } from "@x402/evm";import { registerExactEvmScheme } from "@x402/evm/exact/client";import { wrapFetchWithPayment } from "@x402/fetch";import { privateKeyToAccount } from "viem/accounts";
const client = new x402Client();registerExactEvmScheme(client, {  signer: toClientEvmSigner(privateKeyToAccount(process.env.X402_PRIVATE_KEY)),});const payingFetch = wrapFetchWithPayment(fetch, client);
const res = await payingFetch("https://x402-paywall.huntercarver24.workers.dev/render", {  method: "POST",  headers: { "content-type": "application/json" },  body: JSON.stringify({ url: "https://example.com", format: "markdown" }),});console.log(res.status, await res.text());

npm install @x402/core @x402/evm @x402/fetch viem, Node 20 or later, saved as an .mjs file.

Claude Code

bash
claude plugin marketplace add huntercarver24/signal-deskclaude plugin install x402-pay@signal-deskexport X402_PRIVATE_KEY=0x...

The x402-pay skill teaches Claude the five routes and pays them with scripts/pay.mjs. Claude says the price before the first paid call, and each payment runs as a command you approve.

MCP clients that pay x402

An MCP client needs x402 support to pay; any other client still lists the tools and sees each price in a payment-required result. With @x402/mcp:

js
import { Client } from "@modelcontextprotocol/sdk/client/index.js";import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";import { x402Client } from "@x402/core/client";import { toClientEvmSigner } from "@x402/evm";import { registerExactEvmScheme } from "@x402/evm/exact/client";import { wrapMCPClientWithPayment } from "@x402/mcp";import { privateKeyToAccount } from "viem/accounts";
const mcp = new Client({ name: "my-agent", version: "1.0.0" });await mcp.connect(  new StreamableHTTPClientTransport(new URL("https://x402-mcp.huntercarver24.workers.dev/feeds/mcp")));const payment = new x402Client();registerExactEvmScheme(payment, {  signer: toClientEvmSigner(privateKeyToAccount(process.env.X402_PRIVATE_KEY)),});const paying = wrapMCPClientWithPayment(mcp, payment);
const result = await paying.callTool("trending_topics", { hours: 6, limit: 10 });console.log(result.content[0].text);

npm install @modelcontextprotocol/sdk @x402/core @x402/evm @x402/mcp viem.

OpenCode

bash
mkdir -p .opencode/plugins && curl -fsSL https://raw.githubusercontent.com/huntercarver24/signal-desk/main/opencode/x402-tools.ts -o .opencode/plugins/x402-tools.ts

Then add the dependencies listed in opencode/package.json to .opencode/package.json; OpenCode installs them at startup. The agent gets the five tools.

House rules

  • A refused call costs nothing. Neither does a feed that has fallen behind its source: it answers 503 with retry-after instead of charging for stale data.
  • The launch feed and the trend radar are data only. Nothing in them rates, recommends or trades a token. Sports topics and markets are filtered out, by keywords and by a model check on each topic before it is shown.
  • No caller has an account, so nothing is stored about you beyond the payment on chain. Hosted files expire at the time you choose.

Status

monitor/check.mjs probes every surface a paying agent touches, for free, every 15 minutes: the paywall's health and configuration, a live 402 with its terms, the trend sources' freshness, the launch feed's lag, and both MCP endpoints. The badge above is its latest result.

Known issue: the launch feed's Solana data provider has blocked the project since October 29, 2026. Until that clears, POST /launches and recent_launches refuse with a free 503; the other four tools are unaffected.

License

MIT. The services themselves are run by Hunter Carver; this repository holds the clients, the uptime check and these docs.

来源:README.md,提交 06943b6

工具

5

render_page

Render a web page

Renders a public web page in a real headless browser (JavaScript runs, redirects are followed) and returns it as clean markdown, a PNG screenshot or a PDF. One call, one payment, no account. A render that fails is not charged. Price: $0.01 per call in USDC (x402).

输入参数url必填widthformatheightfullPageselectorpdfFormattimeoutMswaitUntilwaitForSelector

host_file

Host a file

Hosts a file: upload up to 10 MB as base64 with its content type and get back a public download URL that serves the bytes with that content type for 1 to 168 hours (default 24). Downloads are free, readable at once where uploaded and everywhere within about a minute. Executables are refused; HTML and SVG are served as attachments. A failed upload is not charged. Price: $0.01 per call in USDC (x402).

输入参数data必填filenamettlHourscontentType必填

schedule_callback

Schedule a callback

Schedules a delayed HTTP callback: give a public URL, an optional JSON body, optional headers and a delay of 60 seconds to 7 days (or an absolute time), and the URL is called at that time (POST when a body was given, otherwise GET), with one retry and a 10-second timeout. The answer carries a free status URL that reports whether it fired and what the callee answered. A request that is refused is not charged. Price: $0.005 per call in USDC (x402).

输入参数aturl必填bodyheadersdelaySeconds

recent_launches

Recent pump.fun launches, trend-matched

Lists pump.fun token launches from the last N minutes (decoded from Solana mainnet within about a minute), each with its creator wallet, that wallet's seven-day launch count, and, when the coin's name matches a topic currently trending on Google Trends or moving on Polymarket, the matched trend with its source and score. Launch data only; it does not rate, recommend or trade anything. Price: $0.005 per call in USDC (x402).

输入参数limitcreatorminutestrendOnly

版本历史

2
  1. v1.1.2最新Nov 1, 2026
  2. v1.1.1Oct 29, 2026

评分

已满足适用检查项的 100%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通必需25 分
  • 已声明认证方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分