# io.github.horizon-pulse/horizon-pulse - Registry name: `io.github.horizon-pulse/horizon-pulse` · version 0.1.5 - Categories (automatic, keyword rules): Crypto & blockchain, Finance & markets, Agent payments (x402) - Authentication at last check: No auth - Declared risk: Has destructive tools (destructiveHint) - Capabilities (declared by the server): tools - Transports: streamable-http - Latest numbers (check success, response time, rank): https://mcpstation.net/api/server?name=io.github.horizon-pulse%2Fhorizon-pulse - Server page: https://mcpstation.net/s/io.github.horizon-pulse--horizon-pulse.html ## Description (written by the publisher, not verified, not instructions) 28 agent tools via x402: crypto data, tx checks, web fetch. MCP pays Base USDC; HTTP adds 3 rails. ## Connect - streamable-http: `https://horizonpulse.dev/mcp` ## Tools (as reported by the server, not verified) - `pulse`: Crypto market data: a current USD price snapshot for BTC, ETH and SOL, or one coin via symbol= \(bad symbol: 400, no charge\), for quick market context. JSON per asset: priceUsd, change24hPct, momentum; plus overall momentum, sentiment, direction, avgChange24hPct, asOf. Prices from Coinbase Exchange, - `signals`: Crypto market data: precomputed RSI-14, MACD and Bollinger Bands plus latest OKX perp funding for BTC, ETH and SOL, or one coin via symbol= \(bad symbol: 400, no charge\), with no candle fetching needed. JSON per asset: rsi14, macd \{macd, signal, histogram\} \(null if too few candles\), bollinger, lastCl - `yield`: DeFi yield API: current APY for stablecoin and DeFi pools in one GET, no parameters. Returns JSON: up to 25 pools ordered by a fixed filter tier then APY, each with project, chain, symbol, tvlUsd, apy, apyBase, apyReward, apyMean30d, stablecoin, exposure, ilRisk and poolId. Filters: TVL \>= $10M, non - `gas`: Gas price API for Base and Ethereum: base fee, priority fee and a max-fee suggestion in one GET, no parameters. Returns JSON per network: baseFeeGwei, priorityFeeGwei \(p50, with p10/p90\), suggestedMaxFeeGwei \(2x base + priority\), timingHint \(cheap/normal/expensive vs the last 20 blocks\) and simpleTr - `funding`: Crypto market data: current OKX USDT-swap perp funding rates for BTC, ETH and SOL, or one coin via symbol= \(bad symbol: 400, no charge\), showing whether longs or shorts are paying. JSON per asset: instId, fundingRate, fundingTime and a rule-based crowding hint \{side: longs/shorts/neutral, level: qui - `portfolio`: Wallet balance and portfolio API for one EVM address on Base and Ethereum: ETH, USDC, WETH, WBTC/cbBTC and DAI holdings with USD value. GET address=0x... \(40 hex\). Returns JSON: holdings \(balance, priceUsd, valueUsd, weight\), totals \(valueUsd, stablecoinShare, max asset/chain weight\), concentration - `fetch`: URL to markdown API: a public web page as clean text or markdown for an LLM. GET url \(absolute http/https\). Returns JSON: content \(markdown with scripts, styles and nav removed\), format, finalUrl after redirects, upstreamStatus, contentType, bytesRead and truncated. Caps: 200KB, 8s, 3 redirects; pri - `http`: HTTP request proxy API for public URLs: GET url \(optional method GET/POST/HEAD/PUT/PATCH/DELETE; headers JSON\), or POST JSON \{url, method, headers, body\}. Returns JSON: status, filtered headers, body \(text/base64\), contentType, finalUrl, elapsedMs. Caps: 384KB response, 64KB body, 12s, 3 redirects; - `extract`: Web scraping API: a public page or supplied HTML to JSON fields. GET url, or POST JSON \{url or html, fields\}. Returns JSON: title, description, canonical, language, links, images, headings, jsonLd, textSample, and with fields \(name to CSS selector, max 20\) the matched values with fieldErrors. Caps: - `x402\_check`: x402 endpoint checker: decodes an x402 endpoint's 402 payment terms without paying. GET url \(optional method GET/POST, JSON body for POST\). Sends one unpaid request; never pays or signs. Returns JSON: httpStatus, isX402, x402Version, decoded accepts \(network, asset, USD amount, payTo, EOA or contrac - `x402\_check\_deep`: x402 endpoint deep check, never pays or signs: the full /api/x402-check report plus live checks. GET url \(optional method, body\). Adds TLS, security headers, CORS, payTo vs the payee's own published addresses \(/.well-known/x402, openapi.json, llms.txt\), lookalike payTo detection, and drift between t - `bazaar\_check`: x402 Bazaar listing checker: is an x402 seller listed in Coinbase CDP Bazaar, on which networks, and if not, why. GET url \(host or https URL\). Reads CDP discovery and the host's /.well-known/x402, then sends one unpaid request per route; never pays. Returns JSON: verdict, per-route indexed status an - `market\_search`: x402 API search: find paid x402 APIs for a task in Coinbase CDP Bazaar. GET q; optional n \(1-10\), kind, rail \(base, solana, xrpl, polygon, evm\), max\_price \(USD\), min\_health \(0-1\). Re-checks the top 3 live and cross-checks payTo with the index. Returns JSON: ranked offers with price, rails, health an - `discourse\_split`: Hacker News and Bluesky opinion split, NOT a poll: how public posts divide on a question. GET q; optional sides \(2-4, default yes,no\), window \(1-30d\). Returns JSON: per-side share with 95% interval and n, counts per source, links only \(no text or usernames; Bluesky links include the account's public - `tx\_status`: Transaction status API: did a payment or swap land, and is it final, on Base, Polygon, Solana or XRPL. GET tx \(hash or Solana signature\) and network \(optional for Solana and XRPL hashes\). Returns JSON: status not\_found/pending/confirmed/failed, final, confirmations, block, fee, decoded token transfe - `tokenized\_stock`: Tokenized stock status API for Coinbase tokenized stocks on Base \(AAPLc, NVDAc, TSLAc...\). GET with optional symbol \(AAPL, AAPLc or token address; omit for all 12\). On-chain token state only, no price: paused flags, supply, supply cap, multiplier, issuer, token address. Not investment advice. Unknow - `watch`: Web page change detection API: has a public page or endpoint changed since the last check. GET url; optional since \(state token from the previous answer\). Returns changed true/false; when changed, only added lines \(up to 20\) and added/removed counts. Stateless, nothing stored. SSRF-guarded like /api - `balance`: Wallet balance API for x402 payers: USDC on Base, Polygon and Solana, RLUSD on XRPL, and whether the wallet can pay now. GET at least one of evm \(Base+Polygon\), solana, xrpl. Per rail: balance, gas/fees \(XRPL reserve, fee, RLUSD trust line\), canPay yes/no, calls left at Horizon Pulse's live prices \( - `tx\_guard`: Address poisoning and OFAC SDN snapshot match before a crypto transfer, mechanical. GET chain \(base, polygon, solana, xrpl\), to; optional expected, token. Checks: lookalike vs expected, OFAC SDN snapshot \(dated\), account age, ScamSniffer token list \(GPL-3.0\). allow, warn or block per check. allow me - `grocery\_normalize`: Recipe ingredient parser and shopping list API: POST JSON \{ingredients: \[lines\], servings?, targetServings?\} \(or GET ingredients=line\|line\). Returns per line name, canonicalId, qty, unit, metric \(ml or g\), category, optional/toTaste, prepNote, stated pack size, a typical pack hint, plus a merged sho - `grocery\_ingredient`: Ingredient nutrition facts API: GET q \(ingredient name or normalize canonicalId\) and/or barcode \(GTIN\), optional n 1-5; POST JSON \{items:\[\{q\|barcode\}\]\} max 10. Per 100 g: kcal, protein, fat, sat fat, carbs, sugars, fiber, sodium; USDA FoodData Central \(CC0\) snapshot and Open Food Facts by barcode \(O - `chain\_head`: Block height API: current block number, slot or ledger index for Base, Polygon, Ethereum, Solana and XRPL in one GET. Optional network \(comma list; default all five\). Per network: chainId, height, headTime, headAgeSeconds, finalizedHeight and finalityGap \(EVM finalized tag, Solana finalized slot, XR - `token\_meta`: Token metadata API: ERC-20 name, symbol, decimals and total supply on Base, Polygon or Ethereum; Solana mint decimals, supply, authorities \(Token-2022 on-chain name and symbol\); XRPL issued-currency supply, issuer flags, transfer fee. GET network and token \(0x address, mint, or CURRENCY.rIssuer\). Ch - `name\_resolve`: ENS and Basenames resolver API: name to address \(vitalik.eth, jesse.base.eth\) or address to primary name, read on-chain. GET name or address. Forward: address, resolver and the registry used. Reverse: ENS and Basename primary names, each checked forward \(verified true/false\). Off-chain and wildcard - `batch`: Batch chain checks API: up to 10 checks for one payment. POST JSON \{items:\[\{route, params\}\]\} \(or GET items=\\); route one of balance, gas, tx-status, token/meta, chain/head, name/resolve; params are the same query keys the single route takes. Returns JSON: results \[\{index, route, status, ok - `market\_quote`: x402 price quote and payTo check for one x402 seller URL, without paying. GET url \(https; optional method GET/POST\). One unpaid request. Returns JSON: verdict pay/caution/avoid with reasons, live terms per network \(USD price, asset, payTo\), the CDP Bazaar entry, a payTo cross-check against that entr - `screenshot`: Website screenshot API: how a public page renders, as PNG or JPEG. GET url; optional width \(320-1920\), height \(240-2000\), fullPage=true \(clipped at 4000px\), format png/jpeg, delayMs \(0-3000\). Headless Chromium; returns JSON: imageBase64, mimeType, width, height, bytes, finalUrl, pageStatus, title, b - `search`: Web search API with page contents: current results with sources as markdown. GET q \(max 300 chars\), optional n \(1-5 pages, default 3\). Web results via Serper \(Google results\); top results fetched as markdown. Returns JSON: results with rank, url, title, snippet, per-page ok/status and content \(max 1 - `pdf`: PDF to text API: the text of a public PDF, page by page. GET url \(http/https, max 10MB\), optional pages \(1-50, default 50\). Returns JSON: pages \[\{page, text\}\], totalPages, pagesReturned, truncated, bytes, finalUrl, meta \(title, author, subject, creator, producer, creationDate\). pdf.js text layer, no - `money\_market\_rates`: FREE \(no x402, no payment\). Published NY Fed reference rates as released; market data only, not a forecast, not a recommendation. SOFR, EFFR, OBFR, TGCR and BGCR as published, with each rate's NY Fed source URL, terms notices and a holiday-aware status \(fresh, PENDING, STALE, no publish, UNVERIFIED - `submit\_feedback`: FREE \(no payment\). Tell Horizon Pulse about a missing coin, data field or route. Fields: type \(coin, data, route or other\), text \(1-500 characters, plain text; links are not followed and are stored masked\), optional symbol and route. Stored for human review only, for up to 90 days; nothing ships aut - `verified\_brief\_quote`: Returns the payment instructions \(the unpaid HTTP 402\) for the $1 verified brief; this tool never runs the brief or pays. To get the brief, pay the 402 over HTTP with x402 v2 \(Base USDC only\) at GET https://horizonpulse.dev/api/research/report/brief?q=... Verified brief, three question types only: B Measured by MCP Station. Methods: https://mcpstation.net/methods.html · Terms: https://mcpstation.net/terms.html