Skip to main content
Glama

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.

tool

HTTP route

price

what the agent gets

render_page

POST /render

$0.01

a public page opened in a real headless Chrome, returned as clean Markdown, a PNG screenshot or a PDF

host_file

POST /files

$0.01

up to 10 MB stored at a public link for 1 to 168 hours, free to download

schedule_callback

POST /later

$0.005

a URL called 60 seconds to 7 days from now (GET, or POST with a JSON body), plus a free status page

recent_launches

POST /launches

$0.005

every 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_topics

POST /trends

$0.01

what 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

endpoint

URL

HTTP routes

https://x402-paywall.huntercarver24.workers.dev

MCP, all five tools

https://x402-mcp.huntercarver24.workers.dev/mcp (registry: io.github.huntercarver24/signal-desk)

MCP, the two feeds only

https://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.

Try it before paying. /radar shows the launch feed and trend radar 30 minutes late, free (JSON). For free calls to the live routes, open an issue and ask for a voucher. Send it as an X-Voucher header on any HTTP route, or as a header on the MCP connection: the call's price comes off the voucher instead of a wallet, and a failed call is refunded.

Use it

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

Any HTTP client

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

claude plugin marketplace add huntercarver24/signal-desk
claude plugin install x402-pay@signal-desk
export 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:

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

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.

ElizaOS

eliza/ is an ElizaOS 1.7 plugin for the two feeds. It adds two paid actions, SIGNAL_DESK_TRENDS and SIGNAL_DESK_LAUNCHES, and a free provider, SIGNAL_DESK_RADAR, with the 30-minute-late preview. It pays with SIGNAL_DESK_VOUCHER or with SIGNAL_DESK_PRIVATE_KEY (USDC on Base). SIGNAL_DESK_MAX_USD_PER_CALL caps the price, default $0.01, and is checked before anything is signed. Build and install steps are in eliza/README.md.

Related MCP server: Ausca

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 in the title and headlines and by a model check on each topic before it is shown. The free preview also hides vulgar coin names; the paid data is as launched.

  • 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.

The launch feed was down from October 29 to November 1, 2026, when its only data provider cut the project off. It now reads Solana through Shyft's free tier, with public endpoints as fallbacks. If it falls behind again, launch calls refuse for free and this monitor fails.

License

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

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI agents to discover, pay for, and invoke x402-priced services such as document OCR, document analysis, media transcription, remote browser sessions, and receive-only email inboxes using USDC on Base, with no API keys and receipt-backed results.
    38
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI agents to call pay-per-request AI and web tools—including web-to-Markdown reading, PDF extraction, translation, compliance lookups, domain/email/Solana data, and prediction-market intelligence—without accounts or API keys, settling each call in USDC via x402 on Base, Solana, or Arc.
    MIT