@coinpaprika/mcp 1.3.1 → 1.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -0
- package/dist/index.js +12 -12
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to the CoinPaprika MCP Server will be documented in this file.
|
|
4
4
|
|
|
5
|
+
## [1.3.2] - 2026-07-29
|
|
6
|
+
|
|
7
|
+
### Changed
|
|
8
|
+
|
|
9
|
+
- **Sharpened 12 tool descriptions that were the lowest on tool-definition quality.** Each now enumerates every enum value (e.g. `resolveId` type: coin/exchange/people/tags), states each parameter's default and range, describes the returned shape and no-match behavior, and names the sibling tool to use instead. Fixed a description-vs-schema contradiction in `resolveId` (it claimed a single canonical id while exposing a `limit` of up to 250; it now correctly describes a ranked candidate list). No behavior, parameter, or output change.
|
|
10
|
+
|
|
5
11
|
## [1.3.1] - 2026-07-29
|
|
6
12
|
|
|
7
13
|
### Changed
|
package/dist/index.js
CHANGED
|
@@ -881,7 +881,7 @@ server.tool(
|
|
|
881
881
|
// ─── Tool 7: getCoinOHLCVHistorical (paid: Starter+) ───
|
|
882
882
|
server.tool(
|
|
883
883
|
'getCoinOHLCVHistorical',
|
|
884
|
-
"Get OHLC candles (open, high, low, close
|
|
884
|
+
"Get OHLC candles (open, high, low, close, volume) for a coin. Use for 'daily chart last month', 'hourly candles since Jan 1'. For one past price use getTickersHistoricalById; for the latest candle use getCoinOHLCVLatest. Read-only. Params: coinId (required) canonical id like 'btc-bitcoin' (resolve via resolveId); start (required) and end (optional, default now) accept 'yyyy-mm-dd' or ISO 8601; interval (optional, default '24h'): one of '5m', '15m', '30m', '1h', '6h', '12h', '24h'; quote (optional, default 'usd'); limit (optional, default 50, max 250) caps candles. Requires a Starter+ plan (COINPAPRIKA_API_KEY).",
|
|
885
885
|
{
|
|
886
886
|
coinId: z.string().describe(COIN_ID_DESCRIPTION),
|
|
887
887
|
start: z.string().describe("Start date (ISO 8601 or yyyy-mm-dd)"),
|
|
@@ -1002,7 +1002,7 @@ server.tool(
|
|
|
1002
1002
|
// ─── Tool 13: getTickersHistoricalById (paid: Starter+) ───
|
|
1003
1003
|
server.tool(
|
|
1004
1004
|
'getTickersHistoricalById',
|
|
1005
|
-
"Get a coin's price
|
|
1005
|
+
"Get a coin's price, market cap and volume at past times as point-in-time snapshots (not OHLC candles). Use for 'price of BTC last Tuesday', 'ETH market cap on 2024-01-01'. For OHLC chart candles use getCoinOHLCVHistorical; for the current price use getTickersById. Read-only. Params: coinId (required) canonical id like 'btc-bitcoin' (resolve via resolveId); start (required) and end (optional, default now) accept 'yyyy-mm-dd' or ISO 8601; interval (optional, default '5m'); quote (optional, default 'usd'); limit (optional, default 50, max 250) caps points. Requires a Starter+ plan (COINPAPRIKA_API_KEY).",
|
|
1006
1006
|
{
|
|
1007
1007
|
coinId: z.string().describe(COIN_ID_DESCRIPTION),
|
|
1008
1008
|
start: z.string().describe("Start date (ISO 8601 or yyyy-mm-dd)"),
|
|
@@ -1024,7 +1024,7 @@ server.tool(
|
|
|
1024
1024
|
// ─── Tool 14: getPeopleById ───
|
|
1025
1025
|
server.tool(
|
|
1026
1026
|
'getPeopleById',
|
|
1027
|
-
"Get profile
|
|
1027
|
+
"Get the profile of one person in crypto by id: name, description or bio, teams_count, positions held, and linked projects plus social and code accounts. Use for 'who is Vitalik Buterin', 'background on Charlie Lee', 'projects tied to this founder'. Find the personId first with search or resolveId using type 'people'; this tool needs the exact id, not a name. Read-only. Params: personId (required) is a canonical person id such as 'vitalik-buterin' or 'satoshi-nakamoto'; an unknown id returns not found. No API key required.",
|
|
1028
1028
|
{ personId: z.string().describe("Person ID (e.g., vitalik-buterin)") },
|
|
1029
1029
|
async ({ personId }) => {
|
|
1030
1030
|
try {
|
|
@@ -1039,7 +1039,7 @@ server.tool(
|
|
|
1039
1039
|
// ─── Tool 15: getTags ───
|
|
1040
1040
|
server.tool(
|
|
1041
1041
|
'getTags',
|
|
1042
|
-
"List all CoinPaprika tags (categories such as defi, stablecoin, memecoin, ai) used to group coins. Use for 'what categories exist', 'list
|
|
1042
|
+
"List all CoinPaprika tags (categories such as 'defi', 'stablecoin', 'memecoin', 'ai') used to group coins, returned as a list with each tag's id, name, coin_counter and ico_counter. Use for 'what crypto categories exist', 'list market sectors', or to find a tagId before calling getTagById. For the coins inside one tag use getTagById. Read-only. Params: additionalFields (optional, default none) is a comma-separated list of extra sections per tag, valid values 'coins' and 'icos' (example 'coins,icos'; omit for just summaries); limit (optional, default 50, max 250) caps how many tags return. No API key required.",
|
|
1043
1043
|
{
|
|
1044
1044
|
additionalFields: z.string().optional().describe("Comma-separated additional fields (e.g., coins,icos)"),
|
|
1045
1045
|
limit: z.number().optional().default(50).describe("Number of tags to return (default: 50, max: 250)")
|
|
@@ -1061,7 +1061,7 @@ server.tool(
|
|
|
1061
1061
|
// ─── Tool 16: getTagById ───
|
|
1062
1062
|
server.tool(
|
|
1063
1063
|
'getTagById',
|
|
1064
|
-
"Get details for a
|
|
1064
|
+
"Get details for one CoinPaprika tag (a category such as 'defi' or 'stablecoin'): its id, name, description, coin_counter, ico_counter, and optionally the coins and ICOs grouped under it. Use for 'what coins are in the defi tag', 'show the stablecoin category', 'tokens tagged ai'. To list every tag or find a tagId first use getTags. Read-only. Params: tagId (required) is a tag id from getTags such as 'defi'; additionalFields (optional, default none) is a comma-separated list of extra sections, valid values 'coins' and 'icos' (example 'coins,icos'). An unknown tagId returns an error. No API key required.",
|
|
1065
1065
|
{
|
|
1066
1066
|
tagId: z.string().describe("Tag ID (e.g., blockchain-service)"),
|
|
1067
1067
|
additionalFields: z.string().optional().describe("Comma-separated additional fields (e.g., coins,icos)")
|
|
@@ -1080,7 +1080,7 @@ server.tool(
|
|
|
1080
1080
|
// ─── Tool 17: getExchanges ───
|
|
1081
1081
|
server.tool(
|
|
1082
1082
|
'getExchanges',
|
|
1083
|
-
"List
|
|
1083
|
+
"List exchanges tracked by CoinPaprika as a list ranked by rank, each with id, name, trust score, active market count and 24h volume. Use for 'top exchanges by volume', 'biggest crypto exchanges', or to find an exchangeId before calling getExchangeByID. For one exchange's full stats use getExchangeByID; for its trading pairs use getExchangeMarkets. Read-only. Params: quotes (optional, default 'usd') is a comma-separated list of quote currencies for the volume figures, for example 'usd,btc'; limit (optional, default 50, max 250) caps how many exchanges return. No API key required.",
|
|
1084
1084
|
{
|
|
1085
1085
|
quotes: z.string().optional().describe("Comma-separated quote currencies"),
|
|
1086
1086
|
limit: z.number().optional().default(50).describe("Number of exchanges to return (default: 50, max: 250)")
|
|
@@ -1121,7 +1121,7 @@ server.tool(
|
|
|
1121
1121
|
// ─── Tool 19: getExchangeMarkets ───
|
|
1122
1122
|
server.tool(
|
|
1123
1123
|
'getExchangeMarkets',
|
|
1124
|
-
"List the trading pairs (markets) on a
|
|
1124
|
+
"List the trading pairs (markets) on one exchange as a list, each with the pair, base and quote coin ids, latest price, 24h volume and category. Use for 'what pairs trade on Binance', 'markets on Kraken', 'BTC pairs on Coinbase'. For exchange-level stats such as trust score use getExchangeByID; find the exchangeId first with getExchanges. Read-only. Params: exchangeId (required) is an exchange id such as 'binance'; quotes (optional, default 'usd') is a comma-separated list of quote currencies for the figures, e.g. 'usd,btc'; limit (optional, default 50, max 250) caps how many markets return. No API key required.",
|
|
1125
1125
|
{
|
|
1126
1126
|
exchangeId: z.string().describe("Exchange ID (e.g., binance)"),
|
|
1127
1127
|
quotes: z.string().optional().describe("Comma-separated quote currencies"),
|
|
@@ -1162,7 +1162,7 @@ server.tool(
|
|
|
1162
1162
|
// ─── Tool 21: getContracts ───
|
|
1163
1163
|
server.tool(
|
|
1164
1164
|
'getContracts',
|
|
1165
|
-
"List the token contract addresses tracked on a
|
|
1165
|
+
"List the token contract addresses tracked on one platform as a list, mapping each contract to its CoinPaprika coin id. Use for 'contracts on ethereum', 'what tokens does BSC have', or to map a contract address to a coin id. Find the platformId first with getPlatforms; for one contract's live price use getTickerByContract, and for its history use getHistoricalTickerByContract. Read-only. Params: platformId (required) is a platform id such as 'eth-ethereum' or 'bsc-binance-smart-chain'; limit (optional, default 50, max 250) caps how many contracts return. An unknown platformId returns an error. No API key required.",
|
|
1166
1166
|
{
|
|
1167
1167
|
platformId: z.string().describe("Platform ID (e.g., eth-ethereum)"),
|
|
1168
1168
|
limit: z.number().optional().default(50).describe("Number of contracts to return (default: 50, max: 250)")
|
|
@@ -1201,7 +1201,7 @@ server.tool(
|
|
|
1201
1201
|
// ─── Tool 23: getHistoricalTickerByContract (paid: Starter+) ───
|
|
1202
1202
|
server.tool(
|
|
1203
1203
|
'getHistoricalTickerByContract',
|
|
1204
|
-
"Get
|
|
1204
|
+
"Get a token's price and market history by its contract address, as a time series. Use for 'token price on 2024-01-01 by address', 'hourly history for a contract'. For its current price use getTickerByContract; by coin id use getTickersHistoricalById. Read-only. Params: platformId (required) chain id like 'eth-ethereum'; contractAddress (required) token address; start (required) and end (optional, default now) accept 'yyyy-mm-dd' or ISO 8601; interval (optional, default '5m'); quote (optional, default 'usd'); limit (optional, default 50, max 250) caps points. Requires a Starter+ plan (COINPAPRIKA_API_KEY).",
|
|
1205
1205
|
{
|
|
1206
1206
|
platformId: z.string().describe("Platform ID (e.g., eth-ethereum)"),
|
|
1207
1207
|
contractAddress: z.string().describe("Contract address"),
|
|
@@ -1248,7 +1248,7 @@ server.tool(
|
|
|
1248
1248
|
// ─── Tool 25: resolveId ───
|
|
1249
1249
|
server.tool(
|
|
1250
1250
|
'resolveId',
|
|
1251
|
-
"Resolve a coin name or symbol
|
|
1251
|
+
"Resolve a fuzzy coin, exchange, person or tag name or symbol to a ranked list of candidate CoinPaprika ids, best first (take the top one). Call FIRST when you have a bare name or symbol but need an id, since ids are not derivable, then pass the id to getTickersById for price. Returns candidates with id, name, symbol, type and rank; an empty list means no match. Read-only. Params: type (required; one of 'coin', 'exchange', 'people', 'tags') sets entity kind; query (required) is the fuzzy text; limit (optional, default 50, max 250) caps candidates. Answers 'id for AAVE', 'resolve Vitalik'. No API key required.",
|
|
1252
1252
|
{
|
|
1253
1253
|
type: z.enum(['coin', 'exchange', 'people', 'tags']).describe("Resource type to resolve"),
|
|
1254
1254
|
query: z.string().describe("Fuzzy search query"),
|
|
@@ -1315,7 +1315,7 @@ server.tool(
|
|
|
1315
1315
|
// ─── Tool 28: getMappings (paid: Business) ───
|
|
1316
1316
|
server.tool(
|
|
1317
1317
|
'getMappings',
|
|
1318
|
-
"
|
|
1318
|
+
"Cross-reference CoinPaprika ids with external or legacy identifiers. Returns crosswalk rows linking a CoinPaprika id to its external ids; only matching rows return and no match returns an empty list. Use for 'map CoinPaprika id to CoinGecko', 'which coin is this CoinMarketCap id', 'find id for an ISIN'. Read-only. All params are optional string filters; provide at least one, extra filters narrow further: coinpaprika (a CoinPaprika id), coinmarketcap, coingecko, cryptocompare (each that provider's id), isin (an ISIN code), dti (a Digital Token Identifier). Requires a Business plan (COINPAPRIKA_API_KEY).",
|
|
1319
1319
|
{
|
|
1320
1320
|
coinpaprika: z.string().optional().describe("CoinPaprika ID to look up"),
|
|
1321
1321
|
coinmarketcap: z.string().optional().describe("CoinMarketCap ID to look up"),
|
|
@@ -1342,7 +1342,7 @@ server.tool(
|
|
|
1342
1342
|
// ─── Tool 29: getChangelogIDs (paid: Starter+) ───
|
|
1343
1343
|
server.tool(
|
|
1344
1344
|
'getChangelogIDs',
|
|
1345
|
-
"
|
|
1345
|
+
"List ids of recent changes to CoinPaprika's coin and exchange listings (additions, renames, delistings) as a paginated feed, newest first, so you can sync or reconcile a local dataset. Returns change records, each with the affected id and change type; an empty page means no more changes. Use for 'what listings changed recently', 'new or delisted coins', 'listing changelog'. For the current full coin list use getCoins instead. Read-only. Params: page (optional, default 1) selects the page; limit (optional, default 50) sets records per page. Requires a Starter+ plan (COINPAPRIKA_API_KEY).",
|
|
1346
1346
|
{
|
|
1347
1347
|
page: z.number().optional().default(1).describe("Page number (default: 1)"),
|
|
1348
1348
|
limit: z.number().optional().default(50).describe("Number of results per page (default: 50)")
|
package/package.json
CHANGED