@missionsquad/mcp-defillama 1.1.0 → 1.2.0

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/README.md CHANGED
@@ -6,9 +6,22 @@ No API key is required. The server routes each request to DefiLlama's category-s
6
6
 
7
7
  Published on npm as [`@missionsquad/mcp-defillama`](https://www.npmjs.com/package/@missionsquad/mcp-defillama).
8
8
 
9
+ ## Conventions
10
+
11
+ These apply to every tool:
12
+
13
+ - **Dates are human-readable.** Any datetime parameter accepts a 12-hour string such as `06/15/2024 03:30 PM` (UTC is assumed), `06/15/2024 03:30 PM America/New_York`, or `06/15/2024 03:30 PM +05:30`. A timezone, when supplied, is converted to UTC before the request is made. Raw UNIX seconds are also accepted. Date/timestamp fields in **responses** are likewise rendered as UTC strings (e.g. `01/01/2024 12:00:00 AM UTC`).
14
+ - **Responses are compact by default.** To stay within model context limits, large payloads are trimmed: lists are sorted and capped, time series are downsampled (≈30 points), and noisy/heavy fields (logos, descriptions, token-level histories) are dropped. The output is minified JSON.
15
+ - **Opt into more data** with these optional parameters where applicable:
16
+ - `full` (boolean) — return the complete, untrimmed response.
17
+ - `points` (number) — max time-series data points to keep (default 30).
18
+ - `limit` (number) — max items to keep for list endpoints.
19
+ - `includeTokens` (boolean) — include token-level breakdowns (`protocol_tvl`, `stablecoin_data`).
20
+ - For the DEX/options/fees overview & summary tools, the aggregate charts are excluded by default; set `excludeTotalDataChart: false` (or `full: true`) to include them.
21
+
9
22
  ## Tools
10
23
 
11
- The server exposes all **31** endpoints of the free (keyless) DefiLlama API as MCP tools. Required parameters are marked accordingly; everything else is optional.
24
+ The server exposes all **31** endpoints of the free (keyless) DefiLlama API as MCP tools. Required parameters are marked accordingly; everything else is optional. Each tool's description includes a ready-to-use example.
12
25
 
13
26
  ### TVL
14
27
 
@@ -26,18 +39,18 @@ The server exposes all **31** endpoints of the free (keyless) DefiLlama API as M
26
39
 
27
40
  - `defillama_get_token_prices` — Current prices of tokens.
28
41
  - `coins` (string[], required): e.g. `["ethereum:0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"]`.
29
- - `defillama_get_historical_prices` — Token prices at a historical timestamp.
30
- - `coins` (string[], required), `timestamp` (number, required): UNIX seconds.
31
- - `defillama_get_batch_historical_prices` — Prices for many coins at many timestamps.
32
- - `coins` (object, required): map of coin id → array of timestamps. `searchWidth` (string, optional).
42
+ - `defillama_get_historical_prices` — Token prices at a historical date/time.
43
+ - `coins` (string[], required), `timestamp` (datetime, required).
44
+ - `defillama_get_batch_historical_prices` — Prices for many coins at many dates/times.
45
+ - `coins` (object, required): map of coin id → array of datetime strings. `searchWidth` (string, optional).
33
46
  - `defillama_get_price_chart` — Price chart over time for the given coins.
34
- - `coins` (string[], required); optional `start`, `end`, `span`, `period`, `searchWidth`.
47
+ - `coins` (string[], required); optional `start` (datetime), `end` (datetime), `span`, `period`, `searchWidth`, `points`.
35
48
  - `defillama_get_price_percentage_change` — Percentage price change over a period.
36
- - `coins` (string[], required); optional `timestamp`, `lookForward`, `period`.
49
+ - `coins` (string[], required); optional `timestamp` (datetime), `lookForward`, `period`.
37
50
  - `defillama_get_first_prices` — Earliest recorded price for the given coins.
38
51
  - `coins` (string[], required).
39
- - `defillama_get_block` — Block height closest to a timestamp on a chain.
40
- - `chain` (string, required), `timestamp` (number, required).
52
+ - `defillama_get_block` — Block height closest to a date/time on a chain.
53
+ - `chain` (string, required), `timestamp` (datetime, required).
41
54
 
42
55
  ### Stablecoins
43
56
 
@@ -60,15 +60,26 @@ export interface ProtocolTvl {
60
60
  symbol: string;
61
61
  url: string;
62
62
  description: string;
63
- tvl: number;
63
+ /** Current TVL (number) or an aggregate historical series, depending on the endpoint shape. */
64
+ tvl: number | TvlItem[];
64
65
  tokensInUsd?: Array<{
65
66
  date: number;
66
67
  tokens: Record<string, number>;
67
68
  }>;
68
- tokens?: Record<string, TokenBalance>;
69
- chainTvls: Record<string, number>;
69
+ tokens?: Record<string, TokenBalance> | Array<{
70
+ date: number;
71
+ tokens: Record<string, number>;
72
+ }>;
73
+ /** Current TVL per chain (present on the live API). */
74
+ currentChainTvls?: Record<string, number>;
75
+ /** Per-chain TVL: flat current numbers, or historical {tvl,tokens,tokensInUsd} objects. */
76
+ chainTvls: Record<string, number | {
77
+ tvl?: TvlItem[];
78
+ tokens?: unknown;
79
+ tokensInUsd?: unknown;
80
+ }>;
70
81
  tvlPriceChange?: Record<string, number>;
71
- tvlList: TvlItem[];
82
+ tvlList?: TvlItem[];
72
83
  }
73
84
  export interface ChainTvlItem {
74
85
  date: number;
@@ -59,15 +59,7 @@ export class DefiLlamaClient {
59
59
  if (!protocol) {
60
60
  throw new Error("Protocol name is required");
61
61
  }
62
- const data = await this.request(DEFILLAMA_HOSTS.api, `/protocol/${protocol}`);
63
- // Ensure tvlList exists for downstream consumers that expect a series.
64
- if (!data.tvlList && data.tvl) {
65
- data.tvlList = [{
66
- date: Math.floor(Date.now() / 1000),
67
- totalLiquidityUSD: data.tvl,
68
- }];
69
- }
70
- return data;
62
+ return this.request(DEFILLAMA_HOSTS.api, `/protocol/${protocol}`);
71
63
  }
72
64
  /** GET /v2/historicalChainTvl — historical TVL across all chains. */
73
65
  async getHistoricalChainTvl() {
@@ -1 +1 @@
1
- {"version":3,"file":"defillama.client.js","sourceRoot":"","sources":["../../src/clients/defillama.client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"defillama.client.js","sourceRoot":"","sources":["../../src/clients/defillama.client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Date/time helpers.
3
+ *
4
+ * Tools accept and return human-readable 12-hour datetime strings, e.g.
5
+ * "06/15/2024 03:30:00 PM" (UTC assumed)
6
+ * "06/15/2024 03:30 PM America/New_York"
7
+ * "06/15/2024 03:30 PM +05:30"
8
+ *
9
+ * Input is always converted to UTC before being sent to DefiLlama (which works
10
+ * in UNIX seconds). Output UNIX timestamps are rendered back to UTC strings.
11
+ */
12
+ /**
13
+ * Parse a human datetime string (or UNIX seconds) into UTC UNIX seconds.
14
+ * Numbers and all-digit strings are treated as UNIX seconds and passed through.
15
+ */
16
+ export declare function parseDateTimeToUnix(input: string | number): number;
17
+ /** Render a UNIX timestamp (seconds, or milliseconds if large) as a UTC string. */
18
+ export declare function formatUnixToDateTime(value: number): string;
@@ -0,0 +1,92 @@
1
+ /**
2
+ * Date/time helpers.
3
+ *
4
+ * Tools accept and return human-readable 12-hour datetime strings, e.g.
5
+ * "06/15/2024 03:30:00 PM" (UTC assumed)
6
+ * "06/15/2024 03:30 PM America/New_York"
7
+ * "06/15/2024 03:30 PM +05:30"
8
+ *
9
+ * Input is always converted to UTC before being sent to DefiLlama (which works
10
+ * in UNIX seconds). Output UNIX timestamps are rendered back to UTC strings.
11
+ */
12
+ import { DateTime } from "luxon";
13
+ /** The canonical output format, e.g. "06/01/2026 04:37:45 PM UTC". */
14
+ const OUTPUT_FORMAT = "MM/dd/yyyy hh:mm:ss a 'UTC'";
15
+ /** Accepted input formats, tried in order (all interpreted in the given zone). */
16
+ const INPUT_FORMATS = [
17
+ "M/d/yyyy h:mm:ss a",
18
+ "M/d/yyyy h:mm a",
19
+ "M/d/yyyy h a",
20
+ "M/d/yyyy",
21
+ "yyyy-MM-dd h:mm:ss a",
22
+ "yyyy-MM-dd h:mm a",
23
+ "yyyy-MM-dd HH:mm:ss",
24
+ "yyyy-MM-dd HH:mm",
25
+ "yyyy-MM-dd",
26
+ ];
27
+ /** Matches a trailing timezone token: IANA name, numeric offset, or UTC/GMT/Z. */
28
+ const TZ_SUFFIX = /\s+([A-Za-z]+\/[A-Za-z0-9_+-]+|[+-]\d{2}:?\d{2}|Z|UTC|GMT)\s*$/;
29
+ const EXAMPLE = `e.g. "06/15/2024 03:30:00 PM" (UTC assumed), "06/15/2024 03:30 PM America/New_York", or "06/15/2024 03:30 PM +05:30"`;
30
+ /** Normalize a timezone token into something luxon understands. */
31
+ function normalizeZone(token) {
32
+ const upper = token.toUpperCase();
33
+ if (upper === "Z" || upper === "UTC" || upper === "GMT") {
34
+ return "utc";
35
+ }
36
+ // Numeric offset like "+05:30" / "-0800" -> luxon "UTC+05:30".
37
+ if (/^[+-]\d{2}:?\d{2}$/.test(token)) {
38
+ const sign = token[0];
39
+ const digits = token.slice(1).replace(":", "");
40
+ return `UTC${sign}${digits.slice(0, 2)}:${digits.slice(2)}`;
41
+ }
42
+ // Otherwise assume an IANA zone name (validated by luxon below).
43
+ return token;
44
+ }
45
+ /**
46
+ * Parse a human datetime string (or UNIX seconds) into UTC UNIX seconds.
47
+ * Numbers and all-digit strings are treated as UNIX seconds and passed through.
48
+ */
49
+ export function parseDateTimeToUnix(input) {
50
+ if (typeof input === "number") {
51
+ if (!Number.isFinite(input)) {
52
+ throw new Error(`Invalid timestamp: ${input}`);
53
+ }
54
+ return Math.floor(input);
55
+ }
56
+ const raw = String(input).trim();
57
+ if (raw === "") {
58
+ throw new Error("Timestamp is required");
59
+ }
60
+ if (/^\d+$/.test(raw)) {
61
+ return parseInt(raw, 10);
62
+ }
63
+ let zone = "utc";
64
+ let dateStr = raw;
65
+ const tzMatch = raw.match(TZ_SUFFIX);
66
+ if (tzMatch) {
67
+ zone = normalizeZone(tzMatch[1]);
68
+ dateStr = raw.slice(0, raw.length - tzMatch[0].length).trim();
69
+ }
70
+ for (const format of INPUT_FORMATS) {
71
+ const dt = DateTime.fromFormat(dateStr, format, { zone });
72
+ if (dt.isValid) {
73
+ return Math.floor(dt.toUTC().toSeconds());
74
+ }
75
+ }
76
+ // Fall back to ISO 8601 (which may carry its own offset).
77
+ const iso = DateTime.fromISO(raw, { zone: "utc", setZone: true });
78
+ if (iso.isValid) {
79
+ return Math.floor(iso.toUTC().toSeconds());
80
+ }
81
+ throw new Error(`Invalid date/time "${raw}". Expected a 12-hour datetime, ${EXAMPLE}.`);
82
+ }
83
+ /** Render a UNIX timestamp (seconds, or milliseconds if large) as a UTC string. */
84
+ export function formatUnixToDateTime(value) {
85
+ let seconds = value;
86
+ if (Math.abs(value) >= 1e12) {
87
+ seconds = Math.floor(value / 1000); // value was in milliseconds
88
+ }
89
+ const dt = DateTime.fromSeconds(seconds, { zone: "utc" });
90
+ return dt.isValid ? dt.toFormat(OUTPUT_FORMAT) : String(value);
91
+ }
92
+ //# sourceMappingURL=datetime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"datetime.js","sourceRoot":"","sources":["../../src/handlers/datetime.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,11 @@
1
1
  import { ToolResultSchema } from "../types.js";
2
2
  import { GetProtocolsInput, GetProtocolTvlInput, GetHistoricalChainTvlInput, GetChainTvlInput, GetCurrentProtocolTvlInput, GetChainsInput, GetTokenPricesInput, GetHistoricalPricesInput, GetBatchHistoricalPricesInput, GetPriceChartInput, GetPricePercentageChangeInput, GetFirstPricesInput, GetBlockInput, GetStablecoinsInput, GetStablecoinChartsAllInput, GetStablecoinChartsChainInput, GetStablecoinDataInput, GetStablecoinChainsInput, GetStablecoinPricesInput, GetPoolsInput, GetPoolChartInput, GetDexsOverviewInput, GetDexsOverviewByChainInput, GetDexSummaryInput, GetOptionsOverviewInput, GetOptionsOverviewByChainInput, GetOptionSummaryInput, GetOpenInterestOverviewInput, GetFeesOverviewInput, GetFeesOverviewByChainInput, GetFeeSummaryInput } from "./defillama.types.js";
3
- export declare const getProtocolsHandler: (_input: GetProtocolsInput) => Promise<ToolResultSchema>;
3
+ export declare const getProtocolsHandler: (input: GetProtocolsInput) => Promise<ToolResultSchema>;
4
4
  export declare const getProtocolTvlHandler: (input: GetProtocolTvlInput) => Promise<ToolResultSchema>;
5
- export declare const getHistoricalChainTvlHandler: (_input: GetHistoricalChainTvlInput) => Promise<ToolResultSchema>;
5
+ export declare const getHistoricalChainTvlHandler: (input: GetHistoricalChainTvlInput) => Promise<ToolResultSchema>;
6
6
  export declare const getChainTvlHandler: (input: GetChainTvlInput) => Promise<ToolResultSchema>;
7
7
  export declare const getCurrentProtocolTvlHandler: (input: GetCurrentProtocolTvlInput) => Promise<ToolResultSchema>;
8
- export declare const getChainsHandler: (_input: GetChainsInput) => Promise<ToolResultSchema>;
8
+ export declare const getChainsHandler: (input: GetChainsInput) => Promise<ToolResultSchema>;
9
9
  export declare const getTokenPricesHandler: (input: GetTokenPricesInput) => Promise<ToolResultSchema>;
10
10
  export declare const getHistoricalPricesHandler: (input: GetHistoricalPricesInput) => Promise<ToolResultSchema>;
11
11
  export declare const getBatchHistoricalPricesHandler: (input: GetBatchHistoricalPricesInput) => Promise<ToolResultSchema>;
@@ -17,9 +17,9 @@ export declare const getStablecoinsHandler: (input: GetStablecoinsInput) => Prom
17
17
  export declare const getStablecoinChartsAllHandler: (input: GetStablecoinChartsAllInput) => Promise<ToolResultSchema>;
18
18
  export declare const getStablecoinChartsChainHandler: (input: GetStablecoinChartsChainInput) => Promise<ToolResultSchema>;
19
19
  export declare const getStablecoinDataHandler: (input: GetStablecoinDataInput) => Promise<ToolResultSchema>;
20
- export declare const getStablecoinChainsHandler: (_input: GetStablecoinChainsInput) => Promise<ToolResultSchema>;
21
- export declare const getStablecoinPricesHandler: (_input: GetStablecoinPricesInput) => Promise<ToolResultSchema>;
22
- export declare const getPoolsHandler: (_input: GetPoolsInput) => Promise<ToolResultSchema>;
20
+ export declare const getStablecoinChainsHandler: (input: GetStablecoinChainsInput) => Promise<ToolResultSchema>;
21
+ export declare const getStablecoinPricesHandler: (input: GetStablecoinPricesInput) => Promise<ToolResultSchema>;
22
+ export declare const getPoolsHandler: (input: GetPoolsInput) => Promise<ToolResultSchema>;
23
23
  export declare const getPoolChartHandler: (input: GetPoolChartInput) => Promise<ToolResultSchema>;
24
24
  export declare const getDexsOverviewHandler: (input: GetDexsOverviewInput) => Promise<ToolResultSchema>;
25
25
  export declare const getDexsOverviewByChainHandler: (input: GetDexsOverviewByChainInput) => Promise<ToolResultSchema>;