Koskamo

Signal Desk MCP

Signal Desk is a community MCP server providing pay-per-call tools for AI agents, including page rendering, file hosting, delayed callbacks, and crypto trend feeds. It uses x402 for USDC payments on Base without requiring accounts or API keys.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

Signal Desk MCP logo, by huntercarver24Community listingStreamable HTTPNo sign-inEndpoint checked 2026-11-01Published by huntercarver24
MCP endpoint (Streamable HTTP)
https://x402-mcp.huntercarver24.workers.dev/mcp
Vendor documentation

What you can do with it

  • Render public web pages as markdown, PNG, or PDF
  • Host files up to 10MB with public download links
  • Schedule delayed HTTP callbacks with status tracking
  • Fetch recent pump.fun token launches and trending topics

Source and maintenance

Community listingRegistry 1.1.2
Maintenance checked

Protocol and capabilities

Server
signal-desk 1.1.2
MCP protocol
2025-06-18
Tools
5 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": true
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

Every tool here costs a fraction of a cent in USDC per call, paid through x402 on Base: call a tool and the first answer is a payment-required result carrying the terms (price, network, pay-to address); an x402 MCP client signs a USDC transfer for exactly those terms and calls again with the payment in _meta["x402/payment"]. A call the service refuses (bad input, blocked address) is not charged. Each tool's _meta also names the plain HTTP route that does the same thing for the same price.

Tools

5 advertised

render_page — Render a web page
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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

render_page input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "url"
  ],
  "properties": {
    "url": {
      "type": "string",
      "format": "uri",
      "description": "Public http(s) page to render. Private, local and cloud-metadata addresses are refused."
    },
    "width": {
      "type": "integer",
      "maximum": 1920,
      "minimum": 320,
      "description": "Viewport width in px, default 1280."
    },
    "format": {
      "enum": [
        "markdown",
        "screenshot",
        "pdf"
      ],
      "type": "string",
      "default": "markdown",
      "description": "markdown: the page's main content as text. screenshot: a PNG image. pdf: a PDF document."
    },
    "height": {
      "type": "integer",
      "maximum": 1920,
      "minimum": 320,
      "description": "Viewport height in px, default 800."
    },
    "fullPage": {
      "type": "boolean",
      "description": "screenshot: capture the whole page, up to 8000px tall."
    },
    "selector": {
      "type": "string",
      "maxLength": 256,
      "description": "CSS selector. markdown: convert only that element. screenshot: capture only that element."
    },
    "pdfFormat": {
      "enum": [
        "A4",
        "Letter"
      ],
      "type": "string",
      "description": "pdf: paper size, default A4."
    },
    "timeoutMs": {
      "type": "integer",
      "maximum": 25000,
      "minimum": 1000,
      "description": "Navigation timeout, default 15000."
    },
    "waitUntil": {
      "enum": [
        "load",
        "domcontentloaded",
        "networkidle0",
        "networkidle2"
      ],
      "type": "string",
      "description": "When the page counts as loaded, default networkidle2."
    },
    "waitForSelector": {
      "type": "string",
      "maxLength": 256,
      "description": "Wait until this CSS selector exists before capturing."
    }
  },
  "additionalProperties": false
}
render_page annotations
{
  "title": "Render a web page",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": false
}
host_file — Host a file
Advertised by the server during the last successful anonymous check.
Open-world

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

host_file input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "data",
    "contentType"
  ],
  "properties": {
    "data": {
      "type": "string",
      "minLength": 1,
      "description": "The file, base64 (standard or URL-safe alphabet). Up to 10485760 bytes decoded."
    },
    "filename": {
      "type": "string",
      "maxLength": 128,
      "minLength": 1,
      "description": "Suggested download name. Never used as the storage key."
    },
    "ttlHours": {
      "type": "integer",
      "maximum": 168,
      "minimum": 1,
      "description": "Hours the download URL keeps working, default 24."
    },
    "contentType": {
      "type": "string",
      "pattern": "^[A-Za-z0-9!#$&^_.+-]+\\/[A-Za-z0-9!#$&^_.+-]+",
      "maxLength": 128,
      "description": "MIME type the file is served with, e.g. image/png or application/pdf. Executable types are refused; text/html and image/svg+xml are served as attachments."
    }
  },
  "additionalProperties": false
}
host_file annotations
{
  "title": "Host a file",
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": false
}
schedule_callback — Schedule a callback
Advertised by the server during the last successful anonymous check.
Open-world

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

schedule_callback input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "url"
  ],
  "properties": {
    "at": {
      "type": "string",
      "description": "Absolute time with a timezone, e.g. 2026-10-28T15:00:00Z, 60 seconds to 7 days ahead. Give this or delaySeconds, not both."
    },
    "url": {
      "type": "string",
      "format": "uri",
      "description": "Public http(s) URL to call. Private, local and cloud-metadata addresses are refused, when scheduled and again when fired. Redirects are reported, not followed."
    },
    "body": {
      "description": "Any JSON value. Present: the callback is a POST with this as its JSON body (up to 65536 bytes). Absent: a GET."
    },
    "headers": {
      "type": "object",
      "description": "Extra request headers, up to 16, printable ASCII values up to 1024 characters. host, content-length and connection-level headers are refused.",
      "additionalProperties": {
        "type": "string"
      }
    },
    "delaySeconds": {
      "type": "integer",
      "maximum": 604800,
      "minimum": 60,
      "description": "Seconds from now, 60 to 604800. Give this or at, not both."
    }
  },
  "additionalProperties": false
}
schedule_callback annotations
{
  "title": "Schedule a callback",
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": false
}
recent_launches — Recent pump.fun launches, trend-matched
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

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

recent_launches input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "limit": {
      "type": "integer",
      "maximum": 200,
      "minimum": 1,
      "description": "Newest first (default 50)."
    },
    "creator": {
      "type": "string",
      "description": "Only launches by this creator wallet (base58)."
    },
    "minutes": {
      "type": "integer",
      "maximum": 1440,
      "minimum": 1,
      "description": "Look back this many minutes (default 10)."
    },
    "trendOnly": {
      "type": "boolean",
      "description": "Only launches matched to a live off-chain trend."
    }
  },
  "additionalProperties": false
}
recent_launches annotations
{
  "title": "Recent pump.fun launches, trend-matched",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": false
}
trending_topics — Trending topics, cross-source
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Lists topics trending right now across Google Trends (US realtime) and Polymarket (markets moving on volume), merged by topic, strongest first, each with score, score velocity per hour, first and last seen times, a type label (person, brand, event, place, meme, other), the headlines or market numbers behind it, and how many pump.fun launches in the last hour match it. Sources are polled every five minutes. Price: $0.01 per call in USDC (x402).

trending_topics input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "hours": {
      "type": "integer",
      "maximum": 48,
      "minimum": 1,
      "description": "Topics seen within this many hours (default 6)."
    },
    "limit": {
      "type": "integer",
      "maximum": 100,
      "minimum": 1,
      "description": "Strongest first (default 25)."
    },
    "source": {
      "enum": [
        "google_trends",
        "polymarket"
      ],
      "type": "string",
      "description": "Omit for both sources."
    },
    "minScore": {
      "type": "integer",
      "minimum": 0,
      "description": "Drop topics below this score."
    }
  },
  "additionalProperties": false
}
trending_topics annotations
{
  "title": "Trending topics, cross-source",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
329 ms
95th percentile latency
329 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 329 ms · metadata changed · 5 tool(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http signal-desk-mcp-workers https://x402-mcp.huntercarver24.workers.dev/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add signal-desk-mcp-workers --url https://x402-mcp.huntercarver24.workers.dev/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable signal-desk-mcp-workers in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "signal-desk-mcp-workers": {
      "url": "https://x402-mcp.huntercarver24.workers.dev/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "signal-desk-mcp-workers": {
      "type": "streamableHttp",
      "url": "https://x402-mcp.huntercarver24.workers.dev/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start signal-desk-mcp-workers and inspect its tools.
VS Code configuration
{
  "servers": {
    "signal-desk-mcp-workers": {
      "type": "http",
      "url": "https://x402-mcp.huntercarver24.workers.dev/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http signal-desk-mcp-workers https://x402-mcp.huntercarver24.workers.dev/mcp

Claude Desktop

Merge this into claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\), then restart Claude Desktop.
Claude Desktop configuration
{
  "mcpServers": {
    "signal-desk-mcp-workers": {
      "url": "https://x402-mcp.huntercarver24.workers.dev/mcp"
    }
  }
}

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "signal-desk-mcp-workers": {
      "serverUrl": "https://x402-mcp.huntercarver24.workers.dev/mcp"
    }
  }
}

Let your agent find its tools

Find servers like Signal Desk MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.