Daily board of what crypto YouTube channels said: coin calls, stances, catalysts. Free, no key.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
What crypto YouTube channels said, as a daily board β coin calls, stances, dated catalysts β served over MCP. Free, no API key.
https://cryptoport-mcp.cryptoport-port.workers.dev/mcpcom.thecryptoport/cryptoport-port (official MCP registry, registry.modelcontextprotocol.io)Claude Code:
Any MCP client that speaks streamable-HTTP remotes:
Free tools: latest_board, search. Everything served is commentary on public statements by
named channels; every payload carries stale / stale_days / built_from_brief_date β read
them. Not financial advice, not real-time.
MCP server + x402-payable HTTP endpoints over thecryptoport.com's daily board.
Network: Base Sepolia (eip155:84532) β testnet, throughout. No mainnet sign-off exists and
none is assumed. Nothing is charged in real money on any network this server talks to.
Master's ruling of record for this build is C+ (2026-08-24): build the paid-port mechanics
now on testnet only; the paid tier itself stays declined and the mainnet switch is the day-60
ruling. The prices below exist so the payment handshake is real, not because anyone is billed.
Runtime owner: Dex. Ward wrote the money, screening and licensing logic; Dex stands the process up and keeps it alive. See "Handoff to Dex" below.
| Tool | Price (testnet USDC) | HTTP twin |
|---|---|---|
latest_board | free | GET /api/v1/board |
search(q, limit) | free | GET /api/v1/search?q= |
coin(ticker) | 0.005 | GET /api/v1/coin/:ticker |
stance_history(ticker) | 0.01 | GET /api/v1/stance_history/:ticker |
catalysts(window) | 0.01 | GET /api/v1/catalysts?window= |
board_snapshot(date) | 0.02 β not charged today | GET /api/v1/board_snapshot/:date |
Free meta: GET /healthz, GET /x402/routes (the price table), GET /.well-known/mcp.json.
MCP: POST /mcp (streamable HTTP) and npm run mcp-stdio (stdio).
The MCP tools are thin proxies onto the HTTP twins inside the same process. One code path for pricing, screening, refusal and the published-field gate, so the two surfaces cannot disagree.
llms.txt says, in the site's own words: "there is no hidden paid tier of the same rows."
That sentence is a constraint on this build, and it holds: every paid payload names the free
static file the same facts live in (upstream). What is priced is form, not exclusivity β
a parsed dated series instead of an arc string, a windowed catalyst query instead of a full
file. If a future paid tool ever returns a fact the free tier does not, that llms.txt line
becomes false and has to change first. β flagged to Larry, not decided here.
Data comes from the rung-0 emitter: CRYPTOPORT_DATA_DIR, else
<repo>/../../Documents/Claude/myPKA/infra/cryptoport-site/dist, falling back to staging
when dist has no feed.json. It is read once at boot into memory β the request path never
touches the filesystem, which is what makes src/worker.js (Cloudflare Workers) a deployment
choice rather than a rewrite.
Streamable HTTP instead: point the client at http://localhost:8402/mcp.
Chosen: x402 v2 middleware in front of the paid routes + the free public testnet facilitator
| Rejected | Why |
|---|---|
| A bespoke access/subscription contract | Pure audit surface for something x402 does natively per call. |
| A self-hosted facilitator | Right idea, wrong scale. Buys decentralisation we do not need and adds a service to keep alive. |
| API keys + Stripe | Reintroduces accounts, PII and an operator in the loop; wrong shape for anonymous agents. |
| Any token, subscription NFT or fractionalised instrument | Pre-CLARITY securities exposure for zero benefit. Hard no. |
@x402/paywall (a peer dep of @x402/hono) | Installs 716 packages including WalletConnect, for a browser paywall UI no agent will ever see. @x402/hono works without it; verified. |
Header names are read out of @x402/core, not transcribed from a blog: request X-PAYMENT,
response X-PAYMENT-RESPONSE, and the 402 carries the terms in the payment-required header
(base64 JSON) β the terms are also repeated in the JSON body so an agent does not have to
base64-decode a header to learn a price. Package generation matters: the scoped @x402/* v2
packages are pinned in package.json and coexist on npm with the v1 x402-hono/x402-next.
No license is signed and no license hash is referenced here. This rung sells access to a
compilation of public statements; there is no geometry, no licensable work product, and no
EIP-712 typed-data license in the design. The license string in every payload is rung 0's own
attribution notice, passed through untouched.
src/inputs.js. Any argument named like portfolio / holdings /
position / allocation / balance / risk profile / cost basis / PnL / leverage / stop-loss /
"should I buy" is refused with 400 and a plain reason, on HTTP and MCP alike, before
payment is even considered. Values are never inspected β we refuse the shape, we do not read
the data. Every tool description says so.src/sdn.js. A local check of every
0x⦠address found anywhere in the decoded X-PAYMENT payload against OFAC's published SDN
digital-currency address list (991 addresses, 124 EVM, published 08/24/2026), fetched
read-only by scripts/sdn-refresh.js from OFAC's own endpoint and vendored as
data/sdn-addresses.json. A listed payer gets 403, is never settled and is never served.
Not KYT: it screens the paying address, it does not trace funds. No KYC, no accounts, no PII
β collecting identity for a $0.005 data call creates a worse surface than it mitigates.src/allowlist.js. quality, counterweight, rank and
presence never leave the process, however they are spelled, and any undeclared key raises
too. The held-back list has one source of truth β
infra/cryptoport-site/allowlist.py β and test/allowlist-parity.test.js fails if the two
drift. Upstream rows are projected on load, so a widened emitter cannot silently widen this
surface.Proof the gates can fail (the point of having them):
test/sdn.test.js refuses a genuinely OFAC-listed address end-to-end over HTTP, then removes
that one address from the list and asserts the same call is not refused β so the 403 is
demonstrably coming from the gate and not from somewhere else. test/b2-leak.test.js injects
each held-back column into the upstream JSON and asserts every tool either raises or projects it
away, and that the HTTP surface answers 500 with no leaked value in the body.
payTo. It signs nothing, holds no approvals, calls no
contract. The server does not need its key and refuses to start if any
*PRIVATE_KEY / *RECOVERY_KEY / MNEMONIC / SEED_PHRASE variable is present in its
environment (test/network-guard.test.js).~/projects/cad-on-chain/scripts/keygen.js pattern, with
one change: the key is written straight to .env.sepolia (mode 600) and never printed.
stdout ends up in terminals, transcripts and session logs, and "no private key in a repo, a
note or a log" has no testnet exemption.payTo is a CDP-managed Server Wallet or it does not exist.No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/cryptoport-port-2)<a href="https://allmcps.com/mcp/cryptoport-port-2"><img src="https://allmcps.com/api/badge/cryptoport-port-2?style=directory" alt="Cryptoport Port on AllMCPs" /></a>