CoinGecko
The io.b3os/coingecko pack: 14 actions with call snippets, fixture outputs, connection setup and error codes, generated from version 1.0.0.
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
| Action | Effect | MCP tool | Title |
|---|---|---|---|
get-token-price | read | coingecko__get-token-price | Get Token Price |
get-token-price-by-contract | read | coingecko__get-token-price-by-contract | Get Token Price By Contract |
get-coin-markets | read | coingecko__get-coin-markets | Get Coin Markets |
get-market-chart | read | coingecko__get-market-chart | Get Market Chart |
search | read | coingecko__search | Search |
get-trending | read | coingecko__get-trending | Get Trending |
get-global-market | read | coingecko__get-global-market | Get Global Market |
get-exchanges | read | coingecko__get-exchanges | Get Exchanges List |
get-global-defi | read | coingecko__get-global-defi | Get Global DeFi Data |
get-derivatives-exchanges | read | coingecko__get-derivatives-exchanges | Get Derivatives Exchanges |
get-coin-tickers | read | coingecko__get-coin-tickers | Get Coin Tickers |
get-exchange-tickers | read | coingecko__get-exchange-tickers | Get Exchange Tickers |
get-exchange-volume-chart | read | coingecko__get-exchange-volume-chart | Get Exchange Volume Chart |
get-derivatives-exchanges-list | read | coingecko__get-derivatives-exchanges-list | Get 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
bashcurl -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"} }'
tsimport { B3OS } from "@b3os/sdk";const b3os = new B3OS();const result = await b3os.actions.call({ 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" },});console.log(result.output);
pythonfrom b3os import B3OSb3os = B3OS()result = b3os.actions.call({ "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"},})print(result["output"])
json{ "method": "tools/call", "params": { "name": "coingecko__get-token-price", "arguments": { "coinIds": ["bitcoin", "ethereum", "no-such-coin"], "vsCurrencies": ["usd", "eur"], "includeMarketCap": true, "include24hVol": true, "include24hChange": true, "includeLastUpdatedAt": true } }}
Expose the pack as tools with --packs coingecko on the local server or ?packs=coingecko on the remote URL, and the agent calls coingecko__get-token-price with the action's input. The tool uses your newest connection for each key without a subject. Without exposing the pack, actions_call takes the same input with ref.
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.code | Service status | Retryable | Message |
|---|---|---|---|
not_found | 404 | no | CoinGecko has no coin, platform, contract or exchange with that id. |
connection_unauthorized | 401 | no | CoinGecko rejected the API key (missing or invalid Demo key); check the connection. |
forbidden | 403 | no | This CoinGecko endpoint needs a paid plan. |
rate_limited | 429 | yes | CoinGecko rate limit reached for this key; retry shortly. |
invalid_request | 400, 422 | no | CoinGecko 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
bashcurl -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"} }'
tsimport { B3OS } from "@b3os/sdk";const b3os = new B3OS();const result = await b3os.actions.call({ 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" },});console.log(result.output);
pythonfrom b3os import B3OSb3os = B3OS()result = b3os.actions.call({ "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"},})print(result["output"])
json{ "method": "tools/call", "params": { "name": "coingecko__get-token-price-by-contract", "arguments": { "platform": "ethereum", "contractAddresses": ["0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"], "vsCurrencies": ["usd"], "includeMarketCap": true, "include24hChange": true } }}
Expose the pack as tools with --packs coingecko on the local server or ?packs=coingecko on the remote URL, and the agent calls coingecko__get-token-price-by-contract with the action's input. The tool uses your newest connection for each key without a subject. Without exposing the pack, actions_call takes the same input with ref.
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.code | Service status | Retryable | Message |
|---|---|---|---|
not_found | 404 | no | CoinGecko has no coin, platform, contract or exchange with that id. |
connection_unauthorized | 401 | no | CoinGecko rejected the API key (missing or invalid Demo key); check the connection. |
forbidden | 403 | no | This CoinGecko endpoint needs a paid plan. |
rate_limited | 429 | yes | CoinGecko rate limit reached for this key; retry shortly. |
invalid_request | 400, 422 | no | CoinGecko 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
bashcurl -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"} }'
tsimport { B3OS } from "@b3os/sdk";const b3os = new B3OS();const result = await b3os.actions.call({ ref: "io.b3os/coingecko/get-coin-markets@1", input: { vsCurrency: "usd", perPage: 2, priceChangePercentage: "1h,7d" }, connections: { coingecko: "conn_01m5t6cbgdjs1ketgcqwa2sne8" },});console.log(result.output);
pythonfrom b3os import B3OSb3os = B3OS()result = b3os.actions.call({ "ref": "io.b3os/coingecko/get-coin-markets@1", "input": { "vsCurrency": "usd", "perPage": 2, "priceChangePercentage": "1h,7d", }, "connections": {"coingecko": "conn_01m5t6cbgdjs1ketgcqwa2sne8"},})print(result["output"])
json{ "method": "tools/call", "params": { "name": "coingecko__get-coin-markets", "arguments": { "vsCurrency": "usd", "perPage": 2, "priceChangePercentage": "1h,7d" } }}
Expose the pack as tools with --packs coingecko on the local server or ?packs=coingecko on the remote URL, and the agent calls coingecko__get-coin-markets with the action's input. The tool uses your newest connection for each key without a subject. Without exposing the pack, actions_call takes the same input with ref.
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.code | Service status | Retryable | Message |
|---|---|---|---|
not_found | 404 | no | CoinGecko has no coin, platform, contract or exchange with that id. |
connection_unauthorized | 401 | no | CoinGecko rejected the API key (missing or invalid Demo key); check the connection. |
forbidden | 403 | no | This CoinGecko endpoint needs a paid plan. |
rate_limited | 429 | yes | CoinGecko rate limit reached for this key; retry shortly. |
invalid_request | 400, 422 | no | CoinGecko 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
bashcurl -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"} }'
tsimport { B3OS } from "@b3os/sdk";const b3os = new B3OS();const result = await b3os.actions.call({ ref: "io.b3os/coingecko/get-market-chart@1", input: { coinId: "bitcoin", vsCurrency: "usd", days: 1, interval: "daily" }, connections: { coingecko: "conn_01m5t6cbgdjs1ketgcqwa2sne8" },});console.log(result.output);
pythonfrom b3os import B3OSb3os = B3OS()result = b3os.actions.call({ "ref": "io.b3os/coingecko/get-market-chart@1", "input": { "coinId": "bitcoin", "vsCurrency": "usd", "days": 1, "interval": "daily", }, "connections": {"coingecko": "conn_01m5t6cbgdjs1ketgcqwa2sne8"},})print(result["output"])
json{ "method": "tools/call", "params": { "name": "coingecko__get-market-chart", "arguments": { "coinId": "bitcoin", "vsCurrency": "usd", "days": 1, "interval": "daily" } }}
Expose the pack as tools with --packs coingecko on the local server or ?packs=coingecko on the remote URL, and the agent calls coingecko__get-market-chart with the action's input. The tool uses your newest connection for each key without a subject. Without exposing the pack, actions_call takes the same input with ref.
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.code | Service status | Retryable | Message |
|---|---|---|---|
not_found | 404 | no | CoinGecko has no coin, platform, contract or exchange with that id. |
connection_unauthorized | 401 | no | CoinGecko rejected the API key (missing or invalid Demo key); check the connection. |
forbidden | 403 | no | This CoinGecko endpoint needs a paid plan. |
rate_limited | 429 | yes | CoinGecko rate limit reached for this key; retry shortly. |
invalid_request | 400, 422 | no | CoinGecko rejected the request parameters. |
search
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
bashcurl -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"} }'
tsimport { B3OS } from "@b3os/sdk";const b3os = new B3OS();const result = await b3os.actions.call({ ref: "io.b3os/coingecko/search@1", input: { query: "uni" }, connections: { coingecko: "conn_01m5t6cbgdjs1ketgcqwa2sne8" },});console.log(result.output);
pythonfrom b3os import B3OSb3os = B3OS()result = b3os.actions.call({ "ref": "io.b3os/coingecko/search@1", "input": {"query": "uni"}, "connections": {"coingecko": "conn_01m5t6cbgdjs1ketgcqwa2sne8"},})print(result["output"])
json{ "method": "tools/call", "params": {"name": "coingecko__search", "arguments": {"query": "uni"}}}
Expose the pack as tools with --packs coingecko on the local server or ?packs=coingecko on the remote URL, and the agent calls coingecko__search with the action's input. The tool uses your newest connection for each key without a subject. Without exposing the pack, actions_call takes the same input with ref.
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.code | Service status | Retryable | Message |
|---|---|---|---|
not_found | 404 | no | CoinGecko has no coin, platform, contract or exchange with that id. |
connection_unauthorized | 401 | no | CoinGecko rejected the API key (missing or invalid Demo key); check the connection. |
forbidden | 403 | no | This CoinGecko endpoint needs a paid plan. |
rate_limited | 429 | yes | CoinGecko rate limit reached for this key; retry shortly. |
invalid_request | 400, 422 | no | CoinGecko rejected the request parameters. |
get-trending
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
bashcurl -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"} }'
tsimport { B3OS } from "@b3os/sdk";const b3os = new B3OS();const result = await b3os.actions.call({ ref: "io.b3os/coingecko/get-trending@1", input: {}, connections: { coingecko: "conn_01m5t6cbgdjs1ketgcqwa2sne8" },});console.log(result.output);
pythonfrom b3os import B3OSb3os = B3OS()result = b3os.actions.call({ "ref": "io.b3os/coingecko/get-trending@1", "input": {}, "connections": {"coingecko": "conn_01m5t6cbgdjs1ketgcqwa2sne8"},})print(result["output"])
json{ "method": "tools/call", "params": {"name": "coingecko__get-trending", "arguments": {}}}
Expose the pack as tools with --packs coingecko on the local server or ?packs=coingecko on the remote URL, and the agent calls coingecko__get-trending with the action's input. The tool uses your newest connection for each key without a subject. Without exposing the pack, actions_call takes the same input with ref.
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.code | Service status | Retryable | Message |
|---|---|---|---|
not_found | 404 | no | CoinGecko has no coin, platform, contract or exchange with that id. |
connection_unauthorized | 401 | no | CoinGecko rejected the API key (missing or invalid Demo key); check the connection. |
forbidden | 403 | no | This CoinGecko endpoint needs a paid plan. |
rate_limited | 429 | yes | CoinGecko rate limit reached for this key; retry shortly. |
invalid_request | 400, 422 | no | CoinGecko 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
bashcurl -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"} }'
tsimport { B3OS } from "@b3os/sdk";const b3os = new B3OS();const result = await b3os.actions.call({ ref: "io.b3os/coingecko/get-global-market@1", input: {}, connections: { coingecko: "conn_01m5t6cbgdjs1ketgcqwa2sne8" },});console.log(result.output);
pythonfrom b3os import B3OSb3os = B3OS()result = b3os.actions.call({ "ref": "io.b3os/coingecko/get-global-market@1", "input": {}, "connections": {"coingecko": "conn_01m5t6cbgdjs1ketgcqwa2sne8"},})print(result["output"])
json{ "method": "tools/call", "params": {"name": "coingecko__get-global-market", "arguments": {}}}
Expose the pack as tools with --packs coingecko on the local server or ?packs=coingecko on the remote URL, and the agent calls coingecko__get-global-market with the action's input. The tool uses your newest connection for each key without a subject. Without exposing the pack, actions_call takes the same input with ref.
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.code | Service status | Retryable | Message |
|---|---|---|---|
not_found | 404 | no | CoinGecko has no coin, platform, contract or exchange with that id. |
connection_unauthorized | 401 | no | CoinGecko rejected the API key (missing or invalid Demo key); check the connection. |
forbidden | 403 | no | This CoinGecko endpoint needs a paid plan. |
rate_limited | 429 | yes | CoinGecko rate limit reached for this key; retry shortly. |
invalid_request | 400, 422 | no | CoinGecko 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
bashcurl -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"} }'
tsimport { B3OS } from "@b3os/sdk";const b3os = new B3OS();const result = await b3os.actions.call({ ref: "io.b3os/coingecko/get-exchanges@1", input: { perPage: 2 }, connections: { coingecko: "conn_01m5t6cbgdjs1ketgcqwa2sne8" },});console.log(result.output);
pythonfrom b3os import B3OSb3os = B3OS()result = b3os.actions.call({ "ref": "io.b3os/coingecko/get-exchanges@1", "input": {"perPage": 2}, "connections": {"coingecko": "conn_01m5t6cbgdjs1ketgcqwa2sne8"},})print(result["output"])
json{ "method": "tools/call", "params": {"name": "coingecko__get-exchanges", "arguments": {"perPage": 2}}}
Expose the pack as tools with --packs coingecko on the local server or ?packs=coingecko on the remote URL, and the agent calls coingecko__get-exchanges with the action's input. The tool uses your newest connection for each key without a subject. Without exposing the pack, actions_call takes the same input with ref.
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.code | Service status | Retryable | Message |
|---|---|---|---|
not_found | 404 | no | CoinGecko has no coin, platform, contract or exchange with that id. |
connection_unauthorized | 401 | no | CoinGecko rejected the API key (missing or invalid Demo key); check the connection. |
forbidden | 403 | no | This CoinGecko endpoint needs a paid plan. |
rate_limited | 429 | yes | CoinGecko rate limit reached for this key; retry shortly. |
invalid_request | 400, 422 | no | CoinGecko 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
bashcurl -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"} }'
tsimport { B3OS } from "@b3os/sdk";const b3os = new B3OS();const result = await b3os.actions.call({ ref: "io.b3os/coingecko/get-global-defi@1", input: {}, connections: { coingecko: "conn_01m5t6cbgdjs1ketgcqwa2sne8" },});console.log(result.output);
pythonfrom b3os import B3OSb3os = B3OS()result = b3os.actions.call({ "ref": "io.b3os/coingecko/get-global-defi@1", "input": {}, "connections": {"coingecko": "conn_01m5t6cbgdjs1ketgcqwa2sne8"},})print(result["output"])
json{ "method": "tools/call", "params": {"name": "coingecko__get-global-defi", "arguments": {}}}
Expose the pack as tools with --packs coingecko on the local server or ?packs=coingecko on the remote URL, and the agent calls coingecko__get-global-defi with the action's input. The tool uses your newest connection for each key without a subject. Without exposing the pack, actions_call takes the same input with ref.
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.code | Service status | Retryable | Message |
|---|---|---|---|
not_found | 404 | no | CoinGecko has no coin, platform, contract or exchange with that id. |
connection_unauthorized | 401 | no | CoinGecko rejected the API key (missing or invalid Demo key); check the connection. |
forbidden | 403 | no | This CoinGecko endpoint needs a paid plan. |
rate_limited | 429 | yes | CoinGecko rate limit reached for this key; retry shortly. |
invalid_request | 400, 422 | no | CoinGecko 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
bashcurl -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"} }'
tsimport { B3OS } from "@b3os/sdk";const b3os = new B3OS();const result = await b3os.actions.call({ ref: "io.b3os/coingecko/get-derivatives-exchanges@1", input: { order: "open_interest_btc_desc", perPage: 2 }, connections: { coingecko: "conn_01m5t6cbgdjs1ketgcqwa2sne8" },});console.log(result.output);
pythonfrom b3os import B3OSb3os = B3OS()result = b3os.actions.call({ "ref": "io.b3os/coingecko/get-derivatives-exchanges@1", "input": {"order": "open_interest_btc_desc", "perPage": 2}, "connections": {"coingecko": "conn_01m5t6cbgdjs1ketgcqwa2sne8"},})print(result["output"])
json{ "method": "tools/call", "params": { "name": "coingecko__get-derivatives-exchanges", "arguments": {"order": "open_interest_btc_desc", "perPage": 2} }}
Expose the pack as tools with --packs coingecko on the local server or ?packs=coingecko on the remote URL, and the agent calls coingecko__get-derivatives-exchanges with the action's input. The tool uses your newest connection for each key without a subject. Without exposing the pack, actions_call takes the same input with ref.
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.code | Service status | Retryable | Message |
|---|---|---|---|
not_found | 404 | no | CoinGecko has no coin, platform, contract or exchange with that id. |
connection_unauthorized | 401 | no | CoinGecko rejected the API key (missing or invalid Demo key); check the connection. |
forbidden | 403 | no | This CoinGecko endpoint needs a paid plan. |
rate_limited | 429 | yes | CoinGecko rate limit reached for this key; retry shortly. |
invalid_request | 400, 422 | no | CoinGecko 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
bashcurl -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"} }'
tsimport { B3OS } from "@b3os/sdk";const b3os = new B3OS();const result = await b3os.actions.call({ ref: "io.b3os/coingecko/get-coin-tickers@1", input: { coinId: "bitcoin", exchangeIds: "kraken", order: "volume_desc", depth: true, }, connections: { coingecko: "conn_01m5t6cbgdjs1ketgcqwa2sne8" },});console.log(result.output);
pythonfrom b3os import B3OSb3os = B3OS()result = b3os.actions.call({ "ref": "io.b3os/coingecko/get-coin-tickers@1", "input": { "coinId": "bitcoin", "exchangeIds": "kraken", "order": "volume_desc", "depth": True, }, "connections": {"coingecko": "conn_01m5t6cbgdjs1ketgcqwa2sne8"},})print(result["output"])
json{ "method": "tools/call", "params": { "name": "coingecko__get-coin-tickers", "arguments": { "coinId": "bitcoin", "exchangeIds": "kraken", "order": "volume_desc", "depth": true } }}
Expose the pack as tools with --packs coingecko on the local server or ?packs=coingecko on the remote URL, and the agent calls coingecko__get-coin-tickers with the action's input. The tool uses your newest connection for each key without a subject. Without exposing the pack, actions_call takes the same input with ref.
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.code | Service status | Retryable | Message |
|---|---|---|---|
not_found | 404 | no | CoinGecko has no coin, platform, contract or exchange with that id. |
connection_unauthorized | 401 | no | CoinGecko rejected the API key (missing or invalid Demo key); check the connection. |
forbidden | 403 | no | This CoinGecko endpoint needs a paid plan. |
rate_limited | 429 | yes | CoinGecko rate limit reached for this key; retry shortly. |
invalid_request | 400, 422 | no | CoinGecko 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
bashcurl -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"} }'
tsimport { B3OS } from "@b3os/sdk";const b3os = new B3OS();const result = await b3os.actions.call({ ref: "io.b3os/coingecko/get-exchange-tickers@1", input: { exchangeId: "kraken", coinIds: "ethereum" }, connections: { coingecko: "conn_01m5t6cbgdjs1ketgcqwa2sne8" },});console.log(result.output);
pythonfrom b3os import B3OSb3os = B3OS()result = b3os.actions.call({ "ref": "io.b3os/coingecko/get-exchange-tickers@1", "input": {"exchangeId": "kraken", "coinIds": "ethereum"}, "connections": {"coingecko": "conn_01m5t6cbgdjs1ketgcqwa2sne8"},})print(result["output"])
json{ "method": "tools/call", "params": { "name": "coingecko__get-exchange-tickers", "arguments": {"exchangeId": "kraken", "coinIds": "ethereum"} }}
Expose the pack as tools with --packs coingecko on the local server or ?packs=coingecko on the remote URL, and the agent calls coingecko__get-exchange-tickers with the action's input. The tool uses your newest connection for each key without a subject. Without exposing the pack, actions_call takes the same input with ref.
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.code | Service status | Retryable | Message |
|---|---|---|---|
not_found | 404 | no | CoinGecko has no coin, platform, contract or exchange with that id. |
connection_unauthorized | 401 | no | CoinGecko rejected the API key (missing or invalid Demo key); check the connection. |
forbidden | 403 | no | This CoinGecko endpoint needs a paid plan. |
rate_limited | 429 | yes | CoinGecko rate limit reached for this key; retry shortly. |
invalid_request | 400, 422 | no | CoinGecko 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
bashcurl -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"} }'
tsimport { B3OS } from "@b3os/sdk";const b3os = new B3OS();const result = await b3os.actions.call({ ref: "io.b3os/coingecko/get-exchange-volume-chart@1", input: { exchangeId: "binance", days: 1 }, connections: { coingecko: "conn_01m5t6cbgdjs1ketgcqwa2sne8" },});console.log(result.output);
pythonfrom b3os import B3OSb3os = B3OS()result = b3os.actions.call({ "ref": "io.b3os/coingecko/get-exchange-volume-chart@1", "input": {"exchangeId": "binance", "days": 1}, "connections": {"coingecko": "conn_01m5t6cbgdjs1ketgcqwa2sne8"},})print(result["output"])
json{ "method": "tools/call", "params": { "name": "coingecko__get-exchange-volume-chart", "arguments": {"exchangeId": "binance", "days": 1} }}
Expose the pack as tools with --packs coingecko on the local server or ?packs=coingecko on the remote URL, and the agent calls coingecko__get-exchange-volume-chart with the action's input. The tool uses your newest connection for each key without a subject. Without exposing the pack, actions_call takes the same input with ref.
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.code | Service status | Retryable | Message |
|---|---|---|---|
not_found | 404 | no | CoinGecko has no coin, platform, contract or exchange with that id. |
connection_unauthorized | 401 | no | CoinGecko rejected the API key (missing or invalid Demo key); check the connection. |
forbidden | 403 | no | This CoinGecko endpoint needs a paid plan. |
rate_limited | 429 | yes | CoinGecko rate limit reached for this key; retry shortly. |
invalid_request | 400, 422 | no | CoinGecko 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
bashcurl -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"} }'
tsimport { B3OS } from "@b3os/sdk";const b3os = new B3OS();const result = await b3os.actions.call({ ref: "io.b3os/coingecko/get-derivatives-exchanges-list@1", input: {}, connections: { coingecko: "conn_01m5t6cbgdjs1ketgcqwa2sne8" },});console.log(result.output);
pythonfrom b3os import B3OSb3os = B3OS()result = b3os.actions.call({ "ref": "io.b3os/coingecko/get-derivatives-exchanges-list@1", "input": {}, "connections": {"coingecko": "conn_01m5t6cbgdjs1ketgcqwa2sne8"},})print(result["output"])
json{ "method": "tools/call", "params": { "name": "coingecko__get-derivatives-exchanges-list", "arguments": {} }}
Expose the pack as tools with --packs coingecko on the local server or ?packs=coingecko on the remote URL, and the agent calls coingecko__get-derivatives-exchanges-list with the action's input. The tool uses your newest connection for each key without a subject. Without exposing the pack, actions_call takes the same input with ref.
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.code | Service status | Retryable | Message |
|---|---|---|---|
not_found | 404 | no | CoinGecko has no coin, platform, contract or exchange with that id. |
connection_unauthorized | 401 | no | CoinGecko rejected the API key (missing or invalid Demo key); check the connection. |
forbidden | 403 | no | This CoinGecko endpoint needs a paid plan. |
rate_limited | 429 | yes | CoinGecko rate limit reached for this key; retry shortly. |
invalid_request | 400, 422 | no | CoinGecko rejected the request parameters. |