protogrid

Search / org.sky-1/rate-hub

rate-hub

R0· no sign-in

Indicative fiat and crypto rates over MCP, paid per request via x402 at $0.0001/request.

v0.19.0 · active · descriptor JSON · versions

An agent can connect right now, no human step.Remote endpoint, no authentication, reachable on the last probe.
Quality76good
Trust80of 100
Uptime, 30 days100%
Latency p50604 ms

Connect

8 clients · secrets stay placeholders
{
  "mcpServers": {
    "rate-hub": {
      "type": "http",
      "url": "https://x402-v1.sky-1.org/mcp",
      "headers": {
        "Authorization": "Bearer ${RATE_HUB_TOKEN}"
      }
    }
  }
}
claude mcp add --transport http rate-hub https://x402-v1.sky-1.org/mcp --header "Authorization: Bearer ${RATE_HUB_TOKEN}"
[mcp_servers.rate-hub]
url = "https://x402-v1.sky-1.org/mcp"
bearer_token_env_var = "RATE_HUB_TOKEN"
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "rate-hub": {
      "type": "remote",
      "url": "https://x402-v1.sky-1.org/mcp",
      "enabled": true,
      "headers": {
        "Authorization": "Bearer {env:RATE_HUB_TOKEN}"
      }
    }
  }
}
{
  "mcpServers": {
    "rate-hub": {
      "type": "http",
      "url": "https://x402-v1.sky-1.org/mcp",
      "headers": {
        "Authorization": "Bearer ${RATE_HUB_TOKEN}"
      }
    }
  },
  "deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=rate-hub&config=eyJ0eXBlIjoiaHR0cCIsInVybCI6Imh0dHBzOi8veDQwMi12MS5za3ktMS5vcmcvbWNwIiwiaGVhZGVycyI6eyJBdXRob3JpemF0aW9uIjoiQmVhcmVyICR7UkFURV9IVUJfVE9LRU59In19"
}
{
  "servers": {
    "rate-hub": {
      "type": "http",
      "url": "https://x402-v1.sky-1.org/mcp",
      "headers": {
        "Authorization": "Bearer ${RATE_HUB_TOKEN}"
      }
    }
  }
}
{
  "mcpServers": {
    "rate-hub": {
      "httpUrl": "https://x402-v1.sky-1.org/mcp",
      "headers": {
        "Authorization": "Bearer ${RATE_HUB_TOKEN}"
      }
    }
  }
}
extensions:
  "rate-hub":
    enabled: true
    name: "rate-hub"
    type: streamable_http
    uri: "https://x402-v1.sky-1.org/mcp"
    headers:
      "Authorization": "Bearer ${RATE_HUB_TOKEN}"
    timeout: 300

Placeholders to fill from your own secret store: ${RATE_HUB_TOKEN}. The registry never accepts secret values.

Quality 76 / 100good

protocol75 · weight 25
  • warn
    protocol.modernnewest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
  • n/a
    protocol.statelessonly applies to 2026-07-28 servers
  • pass
    protocol.transportstreamable HTTP
  • n/a
    protocol.list_ttlonly applies to 2026-07-28 servers
authorizationn/a · weight 15
  • n/a
    auth.prm, auth.as_metadata, auth.cimdno remote uses OAuth
  • n/a
    auth.secret_in_urlno templated URL
tool hygiene64 · weight 30
  • pass
    tools.descriptionsevery tool has a description
  • warn
    tools.description_length3 tools have descriptions over 1,024 characters, which crowds the context
  • pass
    tools.schemasevery tool has an object input schema
  • fail
    tools.annotationsno tool declares readOnlyHint or destructiveHint, so clients cannot tell safe calls from risky ones
  • fail
    tools.directory_hintsno tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: get_top (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); get_categories (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); get_daily (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); …
  • pass
    tools.token_costabout 2,224 tokens to load every tool
  • pass
    tools.api_dumptools are not a one-to-one API dump
stability100 · weight 15
  • pass
    stability.changesno tool changes in 30 days
  • pass
    stability.rug_pullno tool changed its meaning under the same name
dependenciesn/a · weight 15
  • n/a
    deps.known_vulns, deps.mcp_sdk_version, deps.resolvableno npm or PyPI package

7 tools, about 2,224 tokens to load them all · tool set 3819369265dc · checked 2026-10-20 21:18 UTC

Tool changes

No tool definition changes recorded. A server's first observation is its baseline; later probes record what changes.

Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.

Trust 80 / 100

no-repository
provenance45
liveness100
freshness100
hygiene80

+dns-namespace +reachable +uptime-100% +updated-10d-ago -no-repository

Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.

Endpoints

remoteauthreachableuptime 30dp50protocollast ok
https://x402-v1.sky-1.org/mcp streamable-httpnoneyes100%604 ms2025-11-252026-10-20

Tools (7)

get_categoriesCoin categories (GET /v1/categories): each category id and name with the catalog uids that belong to it, for example layer-1 or stablecoins. Join it with uids from get_rates or search_assets to group holdings. It changes about once a day; as_of says when it was refreshed. A coin can be in several categories, and only the larger coins of a category are listed. Categories without a catalog member are omitted. The result grows with the catalog (one uid list per category, both copies of the result). not_ready (503) before the first daily refresh; not_found when the server has categories switched off.
get_dailyImmutable daily rates for uids and UTC days (POST /v1/rates/daily). Days are UTC calendar dates (YYYY-MM-DD) in the past. Crypto history older than about a year is served at daily granularity from daily candles (source s8) back to the earliest day each asset has; an asset with no such history is out_of_range. Each item carries a status: ok = exact immutable rate; out_of_range = the day is before the archive start, after today UTC, before the first available day of a crypto asset, or before the asset was listed (final, do not retry); pending = transient upstream miss, retry after retry_after seconds; unsupported = unknown uid. Limits (assets, quotes, assets times days) are in get_meta. Edge cases: read resource ratehub://docs/behavior (behaviour notes).
get_metaAPI limits, supported quote currencies, and build info (GET /v1/meta).
get_ratesBatch indicative prices for catalog uids (POST /v1/rates). Prices are decimal strings. Uids are class-ranged (uid = class*1e8+seq; 1=fiat e.g. usd 100000001, 2=crypto e.g. btc 200000001). Use search_assets to find uids. Per-rate status: ok = fresh price; stale = last known price, upstream is late (see as_of); pending = in the catalog but not priced yet, wait retry_after seconds for that asset and ask again; unsupported = the uid is not in the catalog (a dynamic coin may have expired; look it up again). Size: about 0.4 KB per asset and quote without include (the result is sent twice, as text and as structuredContent; sizes here count both); sparkline adds a long price array per asset, so request it only when needed. Limits (max assets, max quote currencies) are in get_meta. Optional source (a code such as s1) returns that source's own price instead of the server's choice: source_code equals it, and an asset the source has no reading for is unsupported, never another source's price; exchange codes only answer when the deployment runs multi-source aggregation. A dynamic coin expires after 7 days without use and may get a new uid when registered again (also after a server reset): match it by symbol or a new search, not by a stored uid. Edge cases: read resource ratehub://docs/behavior (behaviour notes).
get_seriesPrice history of one asset for charts (GET /v1/rates/series). Crypto: every range. Fiat: 1d and 7d from rate-hub's own readings taken about every 30 minutes; 30d, 90d, 1y and max one point per UTC day from the daily archive (it has a start day, days without a document are skipped, a cold range fills over a few retries, so an early answer may have fewer points). A fiat with no reading in the range, or an unknown uid, answers status unsupported with empty points, not an error. status: ok = fresh series; stale = last cached series, upstream failed (see fetched_at); pending = not ready, retry after retry_after seconds; unsupported = unknown uid, an asset no upstream knows, or a fiat with no reading in the range. Size: about 110 bytes per point (both copies of the result). max_points (2..500, default 100) downsamples evenly and keeps the first and last point; pass 500 for full detail. A non-USD fiat quote clips the series at the start of the fiat archive (range max only), and with a dynamic coin an unsupported answer may mean its uid expired. Edge cases: read resource ratehub://docs/behavior (behaviour notes).
get_topTop crypto assets by market rank (GET /v1/top), with change and, by default, the market block (rank, market cap, volume, supply). Size: about 1 KB per asset with market (both copies of the result), smaller without. Default limit is 20 (max 250); pass include_market=false for a compact list. Items that cannot be priced in the requested quote are skipped. Edge cases: read resource ratehub://docs/behavior (behaviour notes).
search_assetsCatalog lookup (GET /v1/assets); use it to turn tickers or names into uids. Filters: q (free text), symbol, symbols (several tickers in one call), candidate (the uid of a candidates entry; registers that coin on demand; use alone), chain+contract (an unknown Solana mint can be registered on demand; mints are case-sensitive). Size: about 0.4 KB per asset (both copies of the result). Without any filter the default limit is 50 (the whole catalog is hundreds of assets); page with limit (1..1000) and after (next_after of the previous page). An explicit limit of 0 is an error. For a q lookup with few catalog hits, candidates lists at most 5 unregistered coins (not yet priced); pass a candidate's uid as candidate to register it and make it priceable. Dynamic coins expire after 7 days without use and may get a new uid after expiry or a server reset, so do not store a dynamic uid as identity; asset.icon is a placeholder image for an asset with no image source. Edge cases: read resource ratehub://docs/behavior (behaviour notes).

Schemas: list_tools.

Similar MCP servers

Official server.json
{
  "name": "org.sky-1/rate-hub",
  "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
  "remotes": [
    {
      "url": "https://x402-v1.sky-1.org/mcp",
      "type": "streamable-http",
      "headers": [
        {
          "name": "Authorization",
          "isSecret": true,
          "description": "Bearer rh402_... credit token returned once by the first x402 payment. Not needed for tools/list; tools/call without it answers with the x402 offer."
        }
      ]
    }
  ],
  "version": "0.19.0",
  "description": "Indicative fiat and crypto rates over MCP, paid per request via x402 at $0.0001/request."
}