io.b3os/coingecko 1.0.0 · crypto, market-data, prices · MIT

Crypto market data from CoinGecko with your own CoinGecko Demo API key (free from coingecko.com): prices by coin ID or token contract, market rankings with caps, volumes and supply, price history, search across coins, exchanges, categories and NFTs, trending searches, global market totals and exchange rankings. Pro keys use another host and header and are not supported yet.

Every call's result carries upstream_status and timing: validate_ms, inject_ms, render_ms, upstream_ms, map_ms and total_ms. upstream is the service's time; the others are B3OS's own (call actions). The snippets below show no timing values, because a fixture records none.

Connection

coingecko, type api_key: CoinGecko Demo API key.

A CoinGecko Demo API key from your CoinGecko developer dashboard, sent as the x-cg-demo-api-key header to api.coingecko.com only.

How to get one: docs.coingecko.com.

The credential is sent only to api.coingecko.com.

Store the credential once as a vault connection for this pack and key, then name its id in a call's connections. Leave the key out and B3OS uses the project's newest connection for the pack and key without a subject (connections).

Hosts it reaches: api.coingecko.com.

Actions

ActionEffectMCP toolTitle
get-token-pricereadcoingecko__get-token-priceGet Token Price
get-token-price-by-contractreadcoingecko__get-token-price-by-contractGet Token Price By Contract
get-coin-marketsreadcoingecko__get-coin-marketsGet Coin Markets
get-market-chartreadcoingecko__get-market-chartGet Market Chart
searchreadcoingecko__searchSearch
get-trendingreadcoingecko__get-trendingGet Trending
get-global-marketreadcoingecko__get-global-marketGet Global Market
get-exchangesreadcoingecko__get-exchangesGet Exchanges List
get-global-defireadcoingecko__get-global-defiGet Global DeFi Data
get-derivatives-exchangesreadcoingecko__get-derivatives-exchangesGet Derivatives Exchanges
get-coin-tickersreadcoingecko__get-coin-tickersGet Coin Tickers
get-exchange-tickersreadcoingecko__get-exchange-tickersGet Exchange Tickers
get-exchange-volume-chartreadcoingecko__get-exchange-volume-chartGet Exchange Volume Chart
get-derivatives-exchanges-listreadcoingecko__get-derivatives-exchanges-listGet Derivatives Exchanges List

get-token-price

Get Token Price. Current price of coins by CoinGecko ID (bitcoin, ethereum, ...) in one or more currencies, optionally with market cap, 24-hour volume, 24-hour change and the last update time. One entry per requested coin; found is false for unknown IDs.

Ref io.b3os/coingecko/get-token-price@1.0.0 · effect read · connection coingecko · MCP tool coingecko__get-token-price

bash
curl -s https://beta-api.b3os.org/v1/actions/call \ -H "Authorization: Bearer $B3OS_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "ref": "io.b3os/coingecko/get-token-price@1", "input": { "coinIds": ["bitcoin", "ethereum", "no-such-coin"], "vsCurrencies": ["usd", "eur"], "includeMarketCap": true, "include24hVol": true, "include24hChange": true, "includeLastUpdatedAt": true }, "connections": {"coingecko": "conn_01m5t6cbgdjs1ketgcqwa2sne8"} }'

Output, labeled fixture: Get Token Price (response trimmed from a keyless call to CoinGecko's public API on 2026-10-26). From the bundle's fixtures/get-token-price.json, not a live call.

json
{ "prices": [ { "id": "bitcoin", "found": true, "quotes": [ { "currency": "usd", "price": 80105, "marketCap": 1610393957539.592, "volume24h": 18974800256.91741, "change24h": -0.28366599046807417 }, { "currency": "eur", "price": 71478, "marketCap": 1436956138706.5356, "volume24h": 16931233244.047663, "change24h": -0.3101441585239594 } ], "lastUpdatedAt": 1793003661 }, { "id": "ethereum", "found": true, "quotes": [ { "currency": "usd", "price": 2322.94, "marketCap": 283780394264.46173, "volume24h": 8233057124.182843, "change24h": -0.40153164947297915 }, { "currency": "eur", "price": 2072.76, "marketCap": 253217529582.57346, "volume24h": 7346365104.965475, "change24h": -0.42797852008138393

The first 40 of 52 lines; the fixture file has the rest.

When the service answers with an error, the call fails with upstream_error and pack_error.code is one of:

pack_error.codeService statusRetryableMessage
not_found404noCoinGecko has no coin, platform, contract or exchange with that id.
connection_unauthorized401noCoinGecko rejected the API key (missing or invalid Demo key); check the connection.
forbidden403noThis CoinGecko endpoint needs a paid plan.
rate_limited429yesCoinGecko rate limit reached for this key; retry shortly.
invalid_request400, 422noCoinGecko rejected the request parameters.

get-token-price-by-contract

Get Token Price By Contract. Current price of tokens by contract address on one platform (ethereum, base, arbitrum-one, polygon-pos, solana, ...) in one or more currencies, optionally with market cap, 24-hour volume and change. EVM addresses must be lowercase. found is false for tokens CoinGecko does not track.

Ref io.b3os/coingecko/get-token-price-by-contract@1.0.0 · effect read · connection coingecko · MCP tool coingecko__get-token-price-by-contract

bash
curl -s https://beta-api.b3os.org/v1/actions/call \ -H "Authorization: Bearer $B3OS_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "ref": "io.b3os/coingecko/get-token-price-by-contract@1", "input": { "platform": "ethereum", "contractAddresses": ["0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"], "vsCurrencies": ["usd"], "includeMarketCap": true, "include24hChange": true }, "connections": {"coingecko": "conn_01m5t6cbgdjs1ketgcqwa2sne8"} }'

Output, labeled fixture: Get Token Price By Contract (response trimmed from a keyless call to CoinGecko's public API on 2026-10-26). From the bundle's fixtures/get-token-price-by-contract.json, not a live call.

json
{ "tokens": [ { "contractAddress": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", "platform": "ethereum", "found": true, "quotes": [ { "currency": "usd", "price": 0.999723, "marketCap": 71471956880.81377, "volume24h": null, "change24h": 0.01960091722832427 } ], "lastUpdatedAt": null } ]}

When the service answers with an error, the call fails with upstream_error and pack_error.code is one of:

pack_error.codeService statusRetryableMessage
not_found404noCoinGecko has no coin, platform, contract or exchange with that id.
connection_unauthorized401noCoinGecko rejected the API key (missing or invalid Demo key); check the connection.
forbidden403noThis CoinGecko endpoint needs a paid plan.
rate_limited429yesCoinGecko rate limit reached for this key; retry shortly.
invalid_request400, 422noCoinGecko rejected the request parameters.

get-coin-markets

Get Coin Markets. Get market data for cryptocurrencies with prices, market cap, volume, and supply metrics. Returns current price, 24h high/low/volume, price change percentages (24h, 7d, 14d, 30d, 1y), ATH/ATL, circulating/total/max supply, and optional 7-day sparkline. Sorted by market cap by default. Supports pagination (100/page, max 250), filtering by category (DeFi, Layer 1, Meme), and filtering by coin IDs. Ideal for: market overview dashboards, leaderboards, coin comparisons, category analysis, screeners.

Ref io.b3os/coingecko/get-coin-markets@1.0.0 · effect read · connection coingecko · MCP tool coingecko__get-coin-markets

bash
curl -s https://beta-api.b3os.org/v1/actions/call \ -H "Authorization: Bearer $B3OS_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "ref": "io.b3os/coingecko/get-coin-markets@1", "input": { "vsCurrency": "usd", "perPage": 2, "priceChangePercentage": "1h,7d" }, "connections": {"coingecko": "conn_01m5t6cbgdjs1ketgcqwa2sne8"} }'

Output, labeled fixture: Get Coin Markets (response trimmed from a keyless call to CoinGecko's public API on 2026-10-26). From the bundle's fixtures/get-coin-markets.json, not a live call.

json
{ "coins": [ { "id": "bitcoin", "symbol": "btc", "name": "Bitcoin", "image": "https://coin-images.coingecko.com/coins/images/1/large/bitcoin.png?1696501400", "currentPrice": 80105, "marketCap": 1609859405926, "marketCapRank": 1, "fullyDilutedValuation": 1609870696950, "totalVolume": 18979611260, "high24h": 80825, "low24h": 79332, "priceChange24h": -227.8764004373661, "priceChangePercentage24h": -0.28367, "marketCapChange24h": -5082830653.121094, "marketCapChangePercentage24h": -0.31474, "circulatingSupply": 20103596, "totalSupply": 20103737, "maxSupply": 21000000, "ath": 126080, "athChangePercentage": -36.46507, "athDate": "2025-10-06T10:57:42.000Z", "atl": 67.81, "atlChangePercentage": 118032.9487, "atlDate": "2013-07-05T16:00:00.000Z", "lastUpdated": "2026-10-26T08:33:47.000Z", "sparkline7d": null, "priceChangePercentage1hInCurrency": -0.0234, "priceChangePercentage24hInCurrency": null, "priceChangePercentage7dInCurrency": -3.3663, "priceChangePercentage14dInCurrency": null, "priceChangePercentage30dInCurrency": null, "priceChangePercentage200dInCurrency": null, "priceChangePercentage1yInCurrency": null }, { "id": "ethereum", "symbol": "eth",

The first 40 of 77 lines; the fixture file has the rest.

When the service answers with an error, the call fails with upstream_error and pack_error.code is one of:

pack_error.codeService statusRetryableMessage
not_found404noCoinGecko has no coin, platform, contract or exchange with that id.
connection_unauthorized401noCoinGecko rejected the API key (missing or invalid Demo key); check the connection.
forbidden403noThis CoinGecko endpoint needs a paid plan.
rate_limited429yesCoinGecko rate limit reached for this key; retry shortly.
invalid_request400, 422noCoinGecko rejected the request parameters.

get-market-chart

Get Market Chart. Get historical price, market cap, and volume data for a cryptocurrency as time series. Returns [timestamp, value] pairs from oldest to newest. Granularity: 5-min (1d), hourly (2-90d), daily (90d+). Set interval='daily' to force daily data. Range: 1 day to 'max'. Ideal for: price charts, trend analysis, return calculations, backtesting strategies.

Ref io.b3os/coingecko/get-market-chart@1.0.0 · effect read · connection coingecko · MCP tool coingecko__get-market-chart

bash
curl -s https://beta-api.b3os.org/v1/actions/call \ -H "Authorization: Bearer $B3OS_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "ref": "io.b3os/coingecko/get-market-chart@1", "input": { "coinId": "bitcoin", "vsCurrency": "usd", "days": 1, "interval": "daily" }, "connections": {"coingecko": "conn_01m5t6cbgdjs1ketgcqwa2sne8"} }'

Output, labeled fixture: Get Market Chart (response trimmed from a keyless call to CoinGecko's public API on 2026-10-26). From the bundle's fixtures/get-market-chart.json, not a live call.

json
{ "coinId": "bitcoin", "vsCurrency": "usd", "prices": [ {"timestamp": 1792972800000, "value": 80048.84794045369}, {"timestamp": 1793003590000, "value": 80090.31978908328} ], "marketCaps": [ {"timestamp": 1792972800000, "value": 1609254730125.7483}, {"timestamp": 1793003590000, "value": 1610393957539.5923} ], "totalVolumes": [ {"timestamp": 1792972800000, "value": 14036774037.123045}, {"timestamp": 1793003590000, "value": 18974800256.91741} ]}

When the service answers with an error, the call fails with upstream_error and pack_error.code is one of:

pack_error.codeService statusRetryableMessage
not_found404noCoinGecko has no coin, platform, contract or exchange with that id.
connection_unauthorized401noCoinGecko rejected the API key (missing or invalid Demo key); check the connection.
forbidden403noThis CoinGecko endpoint needs a paid plan.
rate_limited429yesCoinGecko rate limit reached for this key; retry shortly.
invalid_request400, 422noCoinGecko rejected the request parameters.

Search. Search for cryptocurrencies, exchanges, categories, and NFTs by name or symbol. Returns ranked results with images and identifiers. Supports partial/fuzzy matching. Results ranked by market cap. Ideal for: finding CoinGecko coin IDs, token discovery, building search UIs, identifier lookups.

Ref io.b3os/coingecko/search@1.0.0 · effect read · connection coingecko · MCP tool coingecko__search

bash
curl -s https://beta-api.b3os.org/v1/actions/call \ -H "Authorization: Bearer $B3OS_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "ref": "io.b3os/coingecko/search@1", "input": {"query": "uni"}, "connections": {"coingecko": "conn_01m5t6cbgdjs1ketgcqwa2sne8"} }'

Output, labeled fixture: Search (response trimmed from a keyless call to CoinGecko's public API on 2026-10-26). From the bundle's fixtures/search.json, not a live call.

json
{ "coins": [ { "id": "uniswap", "name": "Uniswap", "apiSymbol": "uniswap", "symbol": "UNI", "marketCapRank": 26, "thumb": "https://coin-images.coingecko.com/coins/images/12504/thumb/uniswap-logo.png", "large": "https://coin-images.coingecko.com/coins/images/12504/large/uniswap-logo.png" }, { "id": "united-stables", "name": "United Stables", "apiSymbol": "united-stables", "symbol": "U", "marketCapRank": 61, "thumb": "https://coin-images.coingecko.com/coins/images/71157/thumb/united-stables-logo.jpg", "large": "https://coin-images.coingecko.com/coins/images/71157/large/united-stables-logo.jpg" } ], "exchanges": [ { "id": "uniswap-v4-ethereum", "name": "Uniswap V4 (Ethereum)", "marketType": "spot", "thumb": "https://coin-images.coingecko.com/markets/images/11846/thumb/uniswap.jpg", "large": "https://coin-images.coingecko.com/markets/images/11846/large/uniswap.jpg" } ], "categories": [ { "id": "units-network-ecosystem", "name": "Unit0 Network Ecosystem" } ], "nfts": [ { "id": "ape-reunion", "name": "Ape Reunion",

The first 40 of 45 lines; the fixture file has the rest.

When the service answers with an error, the call fails with upstream_error and pack_error.code is one of:

pack_error.codeService statusRetryableMessage
not_found404noCoinGecko has no coin, platform, contract or exchange with that id.
connection_unauthorized401noCoinGecko rejected the API key (missing or invalid Demo key); check the connection.
forbidden403noThis CoinGecko endpoint needs a paid plan.
rate_limited429yesCoinGecko rate limit reached for this key; retry shortly.
invalid_request400, 422noCoinGecko rejected the request parameters.

Get Trending. Get trending cryptocurrencies, NFT collections, and categories based on CoinGecko search popularity. Returns top 15 coins, 7 NFTs, and 6 categories ranked by trending score. Includes images, market cap rank, BTC price, and scores. Ideal for: discovering hot tokens, trending lists, market sentiment tracking, social signals.

Ref io.b3os/coingecko/get-trending@1.0.0 · effect read · connection coingecko · MCP tool coingecko__get-trending

bash
curl -s https://beta-api.b3os.org/v1/actions/call \ -H "Authorization: Bearer $B3OS_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "ref": "io.b3os/coingecko/get-trending@1", "input": {}, "connections": {"coingecko": "conn_01m5t6cbgdjs1ketgcqwa2sne8"} }'

Output, labeled fixture: Get Trending (response trimmed from a keyless call to CoinGecko's public API on 2026-10-26, the trending coin rewritten). From the bundle's fixtures/get-trending.json, not a live call.

json
{ "coins": [ { "id": "ethereum", "coinId": 279, "name": "Ethereum", "symbol": "ETH", "marketCapRank": 2, "thumb": "https://coin-images.coingecko.com/coins/images/279/thumb/ethereum.png", "small": "https://coin-images.coingecko.com/coins/images/279/small/ethereum.png", "large": "https://coin-images.coingecko.com/coins/images/279/large/ethereum.png", "slug": "ethereum", "priceBtc": 0.02899, "score": 0, "data": { "price": 2322.94, "priceChangePercentage24h": {"usd": -1.21, "eur": -1.24, "btc": -0.93}, "marketCap": "$283,547,371,711", "totalVolume": "$8,235,147,341" } } ], "nfts": [ { "id": "clonex", "name": "Clone X", "symbol": "CloneX", "thumb": "https://coin-images.coingecko.com/nft_contracts/images/265/standard/clonex.png?1707287243", "nativeCurrencySymbol": "eth", "floorPriceInNativeCurrency": 0.1659081, "floorPrice24hPercentageChange": 16.82230566824904, "data": { "floorPrice": "0.17 ETH", "floorPriceInUsd24hPercentageChange": "16.82230566824904", "h24Volume": "9.20 ETH", "h24AverageSalePrice": "0.18 ETH" } } ], "categories": [

The first 40 of 59 lines; the fixture file has the rest.

When the service answers with an error, the call fails with upstream_error and pack_error.code is one of:

pack_error.codeService statusRetryableMessage
not_found404noCoinGecko has no coin, platform, contract or exchange with that id.
connection_unauthorized401noCoinGecko rejected the API key (missing or invalid Demo key); check the connection.
forbidden403noThis CoinGecko endpoint needs a paid plan.
rate_limited429yesCoinGecko rate limit reached for this key; retry shortly.
invalid_request400, 422noCoinGecko rejected the request parameters.

get-global-market

Get Global Market. Get global cryptocurrency market statistics and overview data. Returns total market cap, 24h volume, BTC/ETH dominance %, active coin count, and market counts in multiple currencies. Ideal for: market dashboards, dominance tracking, sentiment analysis, macro indicators.

Ref io.b3os/coingecko/get-global-market@1.0.0 · effect read · connection coingecko · MCP tool coingecko__get-global-market

bash
curl -s https://beta-api.b3os.org/v1/actions/call \ -H "Authorization: Bearer $B3OS_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "ref": "io.b3os/coingecko/get-global-market@1", "input": {}, "connections": {"coingecko": "conn_01m5t6cbgdjs1ketgcqwa2sne8"} }'

Output, labeled fixture: Get Global Market (response trimmed from a keyless call to CoinGecko's public API on 2026-10-26). From the bundle's fixtures/get-global-market.json, not a live call.

json
{ "data": { "activeCryptocurrencies": 22503, "upcomingIcos": 0, "ongoingIcos": 49, "endedIcos": 3376, "markets": 1518, "totalMarketCap": { "btc": 33484884.57555906, "eth": 1154995052.0621147, "usd": 2673462494597.553, "eur": 2385805950566.3403 }, "totalVolume": { "btc": 651896.7441582198, "eth": 22485892.470649946, "usd": 52048006673.714485, "eur": 46447797299.64282 }, "marketCapPercentage": { "btc": 60.08263036286357, "eth": 10.57554515006201, "usdt": 6.816177327627446, "bnb": 3.6121102621805656 }, "marketCapChangePercentage24hUsd": -3.3504761803850007, "updatedAt": 1793003085 }}

When the service answers with an error, the call fails with upstream_error and pack_error.code is one of:

pack_error.codeService statusRetryableMessage
not_found404noCoinGecko has no coin, platform, contract or exchange with that id.
connection_unauthorized401noCoinGecko rejected the API key (missing or invalid Demo key); check the connection.
forbidden403noThis CoinGecko endpoint needs a paid plan.
rate_limited429yesCoinGecko rate limit reached for this key; retry shortly.
invalid_request400, 422noCoinGecko rejected the request parameters.

get-exchanges

Get Exchanges List. Retrieves a list of all cryptocurrency exchanges ranked by trust score (highest first). Returns exchange details, trust score, and 24h volume with pagination (default 100, max 250 per page). Ideal for: discovering exchanges, building exchange directories, comparing exchange trustworthiness.

Ref io.b3os/coingecko/get-exchanges@1.0.0 · effect read · connection coingecko · MCP tool coingecko__get-exchanges

bash
curl -s https://beta-api.b3os.org/v1/actions/call \ -H "Authorization: Bearer $B3OS_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "ref": "io.b3os/coingecko/get-exchanges@1", "input": {"perPage": 2}, "connections": {"coingecko": "conn_01m5t6cbgdjs1ketgcqwa2sne8"} }'

Output, labeled fixture: Get Exchanges List (documented response shape, example values). From the bundle's fixtures/get-exchanges.json, not a live call.

json
{ "exchanges": [ { "id": "binance", "name": "Binance", "yearEstablished": 2017, "country": "Cayman Islands", "description": "", "url": "https://www.binance.com/", "image": "https://coin-images.coingecko.com/markets/images/52/small/binance.jpg", "hasTradingIncentive": false, "trustScore": 10, "trustScoreRank": 1, "tradeVolume24hBtc": 120345.67, "tradeVolume24hBtcNormalized": 120345.67 }, { "id": "coinbase", "name": "Coinbase Exchange", "yearEstablished": 2012, "country": "United States", "description": "", "url": "https://www.coinbase.com/", "image": "https://coin-images.coingecko.com/markets/images/23/small/coinbase.jpg", "hasTradingIncentive": false, "trustScore": 10, "trustScoreRank": 2, "tradeVolume24hBtc": 25678.9, "tradeVolume24hBtcNormalized": 25678.9 } ], "page": 1, "perPage": 2}

When the service answers with an error, the call fails with upstream_error and pack_error.code is one of:

pack_error.codeService statusRetryableMessage
not_found404noCoinGecko has no coin, platform, contract or exchange with that id.
connection_unauthorized401noCoinGecko rejected the API key (missing or invalid Demo key); check the connection.
forbidden403noThis CoinGecko endpoint needs a paid plan.
rate_limited429yesCoinGecko rate limit reached for this key; retry shortly.
invalid_request400, 422noCoinGecko rejected the request parameters.

get-global-defi

Get Global DeFi Data. DeFi market totals over CoinGecko's top 100 DeFi coins: DeFi market cap, Ethereum market cap, the DeFi-to-ETH ratio, 24-hour trading volume, DeFi dominance of the whole crypto market, and the top DeFi coin with its share. All values except topCoinDefiDominance are decimal strings, as CoinGecko returns them.

Ref io.b3os/coingecko/get-global-defi@1.0.0 · effect read · connection coingecko · MCP tool coingecko__get-global-defi

bash
curl -s https://beta-api.b3os.org/v1/actions/call \ -H "Authorization: Bearer $B3OS_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "ref": "io.b3os/coingecko/get-global-defi@1", "input": {}, "connections": {"coingecko": "conn_01m5t6cbgdjs1ketgcqwa2sne8"} }'

Output, labeled fixture: Get Global DeFi Data (response trimmed from a keyless call to CoinGecko's public API on 2026-10-26). From the bundle's fixtures/get-global-defi.json, not a live call.

json
{ "data": { "defiMarketCap": "114010914990.92168", "ethMarketCap": "283830644077.8192", "defiToEthRatio": "40.181255607972886", "tradingVolume24h": "3395505024.636828", "defiDominance": "4.133315198616085", "topCoinName": "Lido Staked Ether", "topCoinDefiDominance": 19.747047469808294 }}

When the service answers with an error, the call fails with upstream_error and pack_error.code is one of:

pack_error.codeService statusRetryableMessage
not_found404noCoinGecko has no coin, platform, contract or exchange with that id.
connection_unauthorized401noCoinGecko rejected the API key (missing or invalid Demo key); check the connection.
forbidden403noThis CoinGecko endpoint needs a paid plan.
rate_limited429yesCoinGecko rate limit reached for this key; retry shortly.
invalid_request400, 422noCoinGecko rejected the request parameters.

get-derivatives-exchanges

Get Derivatives Exchanges. Derivatives exchanges with market data, ranked by open interest by default (or by name or 24-hour volume): open interest and 24-hour volume in BTC, perpetual and futures pair counts, logo, year established, country, description and website. tradeVolume24hBtc is a decimal string. Page with perPage and page; get-derivatives-exchanges-list gives every ID and name in one call.

Ref io.b3os/coingecko/get-derivatives-exchanges@1.0.0 · effect read · connection coingecko · MCP tool coingecko__get-derivatives-exchanges

bash
curl -s https://beta-api.b3os.org/v1/actions/call \ -H "Authorization: Bearer $B3OS_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "ref": "io.b3os/coingecko/get-derivatives-exchanges@1", "input": {"order": "open_interest_btc_desc", "perPage": 2}, "connections": {"coingecko": "conn_01m5t6cbgdjs1ketgcqwa2sne8"} }'

Output, labeled fixture: Get Derivatives Exchanges (response trimmed from a keyless call to CoinGecko's public API on 2026-10-26). From the bundle's fixtures/get-derivatives-exchanges.json, not a live call.

json
{ "exchanges": [ { "name": "CoinW (Futures)", "id": "coinw_futures", "openInterestBtc": 55180582.05, "tradeVolume24hBtc": "55092446.68", "numberOfPerpetualPairs": 387, "numberOfFuturesPairs": 0, "image": "https://coin-images.coingecko.com/markets/images/1509/small/coinw_new_logo.png?1713837839", "yearEstablished": 2017, "country": null, "description": "What Is CoinW?\nCoinW is a centralized cryptocurrency exchange established in 2017.\n\nFounded in 2017, CoinW has grown into one of the world’s leading cryptocu...", "url": "https://www.coinw.com/futures/usdt/" }, { "name": "Binance (Futures)", "id": "binance_futures", "openInterestBtc": 418659.56, "tradeVolume24hBtc": "499017.64", "numberOfPerpetualPairs": 821, "numberOfFuturesPairs": 14, "image": "https://coin-images.coingecko.com/markets/images/466/small/binance_futures.jpg?1706864452", "yearEstablished": 2019, "country": "Cayman Islands", "description": "", "url": "https://www.binance.com/" } ]}

When the service answers with an error, the call fails with upstream_error and pack_error.code is one of:

pack_error.codeService statusRetryableMessage
not_found404noCoinGecko has no coin, platform, contract or exchange with that id.
connection_unauthorized401noCoinGecko rejected the API key (missing or invalid Demo key); check the connection.
forbidden403noThis CoinGecko endpoint needs a paid plan.
rate_limited429yesCoinGecko rate limit reached for this key; retry shortly.
invalid_request400, 422noCoinGecko rejected the request parameters.

get-coin-tickers

Get Coin Tickers. Trading pairs of one coin across exchanges (centralized and DEX): base and target symbols, exchange, last price, 24-hour volume, prices and volumes converted to BTC, ETH and USD, bid-ask spread, trust score, stale and anomaly flags, and trade URL. 100 tickers per page, sorted by trust score unless order says otherwise; exchangeIds narrows to some exchanges and depth adds the cost to move the price 2%.

Ref io.b3os/coingecko/get-coin-tickers@1.0.0 · effect read · connection coingecko · MCP tool coingecko__get-coin-tickers

bash
curl -s https://beta-api.b3os.org/v1/actions/call \ -H "Authorization: Bearer $B3OS_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "ref": "io.b3os/coingecko/get-coin-tickers@1", "input": { "coinId": "bitcoin", "exchangeIds": "kraken", "order": "volume_desc", "depth": true }, "connections": {"coingecko": "conn_01m5t6cbgdjs1ketgcqwa2sne8"} }'

Output, labeled fixture: Get Coin Tickers (response trimmed from a keyless call to CoinGecko's public API on 2026-10-26). From the bundle's fixtures/get-coin-tickers.json, not a live call.

json
{ "name": "Bitcoin", "tickers": [ { "base": "XBT", "target": "USD", "market": { "name": "Kraken", "identifier": "kraken", "hasTradingIncentive": false, "logo": null }, "last": 80038.4, "volume": 1448.31595582, "costToMoveUpUsd": 21329618.7876, "costToMoveDownUsd": 19845865.93, "convertedLast": {"btc": 1.001247, "eth": 34.693327, "usd": 80129}, "convertedVolume": {"btc": 1450, "eth": 50247, "usd": 116052199}, "trustScore": null, "bidAskSpreadPercentage": 0.010125, "timestamp": "2026-10-26T13:19:55+00:00", "lastTradedAt": "2026-10-26T13:19:55+00:00", "lastFetchAt": "2026-10-26T13:19:50+00:00", "isAnomaly": false, "isStale": false, "tradeUrl": "https://pro.kraken.com/app/trade/XBT-USD", "tokenInfoUrl": null, "coinId": "bitcoin", "targetCoinId": null }, { "base": "XBT", "target": "EUR", "market": { "name": "Kraken", "identifier": "kraken", "hasTradingIncentive": false, "logo": null }, "last": 71548.2,

The first 40 of 59 lines; the fixture file has the rest.

When the service answers with an error, the call fails with upstream_error and pack_error.code is one of:

pack_error.codeService statusRetryableMessage
not_found404noCoinGecko has no coin, platform, contract or exchange with that id.
connection_unauthorized401noCoinGecko rejected the API key (missing or invalid Demo key); check the connection.
forbidden403noThis CoinGecko endpoint needs a paid plan.
rate_limited429yesCoinGecko rate limit reached for this key; retry shortly.
invalid_request400, 422noCoinGecko rejected the request parameters.

get-exchange-tickers

Get Exchange Tickers. Trading pairs listed on one exchange: base and target symbols, last price, 24-hour volume, prices and volumes converted to BTC, ETH and USD, bid-ask spread, trust score, stale and anomaly flags, and trade URL. 100 tickers per page; order base_target keeps paging stable; coinIds keeps only pairs involving those coins; depth adds the cost to move the price 2%.

Ref io.b3os/coingecko/get-exchange-tickers@1.0.0 · effect read · connection coingecko · MCP tool coingecko__get-exchange-tickers

bash
curl -s https://beta-api.b3os.org/v1/actions/call \ -H "Authorization: Bearer $B3OS_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "ref": "io.b3os/coingecko/get-exchange-tickers@1", "input": {"exchangeId": "kraken", "coinIds": "ethereum"}, "connections": {"coingecko": "conn_01m5t6cbgdjs1ketgcqwa2sne8"} }'

Output, labeled fixture: Get Exchange Tickers (response trimmed from a keyless call to CoinGecko's public API on 2026-10-26). From the bundle's fixtures/get-exchange-tickers.json, not a live call.

json
{ "name": "Kraken", "tickers": [ { "base": "ETH", "target": "USD", "market": { "name": "Kraken", "identifier": "kraken", "hasTradingIncentive": false, "logo": null }, "last": 2314.86, "volume": 19709.16420017, "costToMoveUpUsd": null, "costToMoveDownUsd": null, "convertedLast": {"btc": 0.02895792, "eth": 1.000892, "usd": 2317.48}, "convertedVolume": {"btc": 570.736, "eth": 19727, "usd": 45675636}, "trustScore": null, "bidAskSpreadPercentage": 0.010432, "timestamp": "2026-10-26T13:19:55+00:00", "lastTradedAt": "2026-10-26T13:19:55+00:00", "lastFetchAt": "2026-10-26T13:19:50+00:00", "isAnomaly": false, "isStale": false, "tradeUrl": "https://pro.kraken.com/app/trade/ETH-USD", "tokenInfoUrl": null, "coinId": "ethereum", "targetCoinId": null }, { "base": "ETH", "target": "EUR", "market": { "name": "Kraken", "identifier": "kraken", "hasTradingIncentive": false, "logo": null }, "last": 2069.32,

The first 40 of 59 lines; the fixture file has the rest.

When the service answers with an error, the call fails with upstream_error and pack_error.code is one of:

pack_error.codeService statusRetryableMessage
not_found404noCoinGecko has no coin, platform, contract or exchange with that id.
connection_unauthorized401noCoinGecko rejected the API key (missing or invalid Demo key); check the connection.
forbidden403noThis CoinGecko endpoint needs a paid plan.
rate_limited429yesCoinGecko rate limit reached for this key; retry shortly.
invalid_request400, 422noCoinGecko rejected the request parameters.

get-exchange-volume-chart

Get Exchange Volume Chart. Trading volume history of one exchange in BTC (spot or derivatives exchange IDs, such as binance or binance_futures): one point per 10 minutes for 1 day, hourly for 7 and 14 days, daily for 30 days and more. timestamp is Unix milliseconds. get-exchanges and get-derivatives-exchanges-list give the IDs.

Ref io.b3os/coingecko/get-exchange-volume-chart@1.0.0 · effect read · connection coingecko · MCP tool coingecko__get-exchange-volume-chart

bash
curl -s https://beta-api.b3os.org/v1/actions/call \ -H "Authorization: Bearer $B3OS_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "ref": "io.b3os/coingecko/get-exchange-volume-chart@1", "input": {"exchangeId": "binance", "days": 1}, "connections": {"coingecko": "conn_01m5t6cbgdjs1ketgcqwa2sne8"} }'

Output, labeled fixture: Get Exchange Volume Chart (response trimmed from a keyless call to CoinGecko's public API on 2026-10-26). From the bundle's fixtures/get-exchange-volume-chart.json, not a live call.

json
{ "exchangeId": "binance", "volumes": [ {"timestamp": 1792933800000, "volumeBtc": 57668.06874727863}, {"timestamp": 1792934400000, "volumeBtc": 57616.33787580532}, {"timestamp": 1792935000000, "volumeBtc": 57511.25862129381} ]}

When the service answers with an error, the call fails with upstream_error and pack_error.code is one of:

pack_error.codeService statusRetryableMessage
not_found404noCoinGecko has no coin, platform, contract or exchange with that id.
connection_unauthorized401noCoinGecko rejected the API key (missing or invalid Demo key); check the connection.
forbidden403noThis CoinGecko endpoint needs a paid plan.
rate_limited429yesCoinGecko rate limit reached for this key; retry shortly.
invalid_request400, 422noCoinGecko rejected the request parameters.

get-derivatives-exchanges-list

Get Derivatives Exchanges List. ID and name of every derivatives exchange CoinGecko tracks (219 on 2026-10-26), with no market data: use it to find the ID for get-derivatives-exchanges or another derivatives call.

Ref io.b3os/coingecko/get-derivatives-exchanges-list@1.0.0 · effect read · connection coingecko · MCP tool coingecko__get-derivatives-exchanges-list

bash
curl -s https://beta-api.b3os.org/v1/actions/call \ -H "Authorization: Bearer $B3OS_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "ref": "io.b3os/coingecko/get-derivatives-exchanges-list@1", "input": {}, "connections": {"coingecko": "conn_01m5t6cbgdjs1ketgcqwa2sne8"} }'

Output, labeled fixture: Get Derivatives Exchanges List (response trimmed from a keyless call to CoinGecko's public API on 2026-10-26). From the bundle's fixtures/get-derivatives-exchanges-list.json, not a live call.

json
{ "exchanges": [ {"id": "coinw_futures", "name": "CoinW (Futures)"}, {"id": "binance_futures", "name": "Binance (Futures)"}, {"id": "hyperliquid", "name": "Hyperliquid (Futures)"} ]}

When the service answers with an error, the call fails with upstream_error and pack_error.code is one of:

pack_error.codeService statusRetryableMessage
not_found404noCoinGecko has no coin, platform, contract or exchange with that id.
connection_unauthorized401noCoinGecko rejected the API key (missing or invalid Demo key); check the connection.
forbidden403noThis CoinGecko endpoint needs a paid plan.
rate_limited429yesCoinGecko rate limit reached for this key; retry shortly.
invalid_request400, 422noCoinGecko rejected the request parameters.
Ask a question... ⌘I