@sharpe-terminal/mcp-server 1.4.0 → 1.6.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.
@@ -7,21 +7,11 @@ export const READ_ONLY_MARKET_DATA_TOOL_ANNOTATIONS = {
7
7
  idempotentHint: true,
8
8
  openWorldHint: true,
9
9
  };
10
- export const API_TOOL_OUTPUT_SCHEMA = {
11
- result: z
12
- .unknown()
13
- .optional()
14
- .describe("Sharpe API payload after filtering and response-size truncation."),
15
- error: z.string().optional().describe("Error message when the call fails."),
16
- };
17
10
  /**
18
- * Splits a client result into rows + pagination. The api-client preserves
19
- * the pagination envelope for paginated endpoints (funding/rates,
20
- * gem-finder/data); filtering and truncation operate on the rows, and the
21
- * pagination block is reattached to the final payload so callers can pass
22
- * the cursor onward. Metadata riding beside a page (a futures chart's
23
- * `chart`/`coverage`/`source`) comes back as `extras` so it is reattached
24
- * too rather than dropped with the envelope.
11
+ * Splits a composite's API answer into rows + pagination. The api-client keeps
12
+ * the pagination envelope of paginated endpoints (funding/rates,
13
+ * gem-finder/data); metadata riding beside a page (a futures chart's
14
+ * `chart`/`coverage`/`source`) comes back as `extras`.
25
15
  */
26
16
  export function splitPaginated(result) {
27
17
  if (result &&
@@ -34,35 +24,6 @@ export function splitPaginated(result) {
34
24
  }
35
25
  return { rows: result, pagination: null, extras: {} };
36
26
  }
37
- /**
38
- * Client-side paging for a free route that ignores limit/cursor and returns
39
- * every row. Mirrors the v1 `paginateData` contract (src/lib/api/response.ts):
40
- * the cursor is the base64url-encoded next offset, so a keyless caller walks
41
- * the same pages an authenticated one would.
42
- */
43
- export function paginateRows(rows, limit, cursor) {
44
- const offset = cursor ? decodeOffsetCursor(cursor) : 0;
45
- const nextOffset = offset + limit;
46
- const hasMore = nextOffset < rows.length;
47
- return {
48
- data: rows.slice(offset, nextOffset),
49
- pagination: {
50
- cursor: hasMore
51
- ? Buffer.from(String(nextOffset)).toString("base64url")
52
- : null,
53
- has_more: hasMore,
54
- total: rows.length,
55
- },
56
- };
57
- }
58
- function decodeOffsetCursor(cursor) {
59
- const decoded = /^[A-Za-z0-9_-]+$/.test(cursor)
60
- ? Buffer.from(cursor, "base64url").toString("utf8")
61
- : "";
62
- if (!/^\d+$/.test(decoded))
63
- throw new Error("Invalid pagination cursor.");
64
- return Number(decoded);
65
- }
66
27
  /**
67
28
  * A row's time in epoch ms, read from the keys the futures routes sort on
68
29
  * (`snapshot_at ?? settled_at ?? timestamp`). Null when absent or unparseable.
@@ -78,9 +39,9 @@ export function rowTimeMs(row) {
78
39
  return Number.isFinite(ms) ? ms : null;
79
40
  }
80
41
  /**
81
- * Caps an array at `size` items. Sharpe time series are ordered oldest-first,
42
+ * Keeps `size` items of an array. Sharpe time series are ordered oldest-first,
82
43
  * so a head slice handed agents only the oldest rows (a 3M oi-snapshot capped
83
- * to readings 9-10 days old, 2026-09-24 audit). An ascending series keeps its
44
+ * to readings 9-10 days old, 2026-09-24 audit): an ascending series keeps its
84
45
  * newest rows; every other array keeps its head, where the API puts its
85
46
  * ranking.
86
47
  */
@@ -95,222 +56,127 @@ function capArray(values, size) {
95
56
  }
96
57
  return { kept: values.slice(0, size), latest: false };
97
58
  }
98
- export const TEXT_TOOL_OUTPUT_SCHEMA = {
99
- report: z.string().optional().describe("Formatted markdown report."),
100
- // analyze_coin returns the coin beside its report. The schema is strict, so
101
- // leaving it out made SDK clients that validate output reject every
102
- // analyze_coin result (-32602, 2026-09-26).
103
- coin: z.string().optional().describe("Coin the report covers."),
104
- error: z.string().optional().describe("Error message when the call fails."),
105
- };
106
- function encodeSnapshotCursor(payload) {
107
- return Buffer.from(JSON.stringify(payload)).toString("base64url");
59
+ export const TRUNCATION_MESSAGE = "Response truncated to protect the agent context window. Narrow the result set with a cursor, offset, or filter parameters to retrieve the remaining items.";
60
+ /** The JSON text an agent receives, and the length the context guard measures (UTF-16 units, as Python counts them). */
61
+ export function jsonText(value) {
62
+ return JSON.stringify(value);
63
+ }
64
+ function childPath(path, key) {
65
+ if (typeof key === "number")
66
+ return `${path}[${key}]`;
67
+ return /^[A-Za-z_$][A-Za-z0-9_$]*$/.test(key)
68
+ ? `${path}.${key}`
69
+ : `${path}[${JSON.stringify(key)}]`;
70
+ }
71
+ function recordCut(fields, path, total, showing, latest) {
72
+ // A field cut more than once (MAX_ITEMS, then each character-limit halving)
73
+ // keeps the length it had before its first cut (2026-09-24 audit).
74
+ const prior = fields[path];
75
+ fields[path] = {
76
+ total: prior ? prior.total : total,
77
+ showing,
78
+ ...(latest || prior?.kept === "latest" ? { kept: "latest" } : {}),
79
+ };
108
80
  }
109
- function decodeSnapshotCursor(cursor) {
110
- try {
111
- const payload = JSON.parse(Buffer.from(cursor, "base64url").toString("utf8"));
112
- if (payload.version !== 1 ||
113
- typeof payload.snapshot !== "string" ||
114
- payload.snapshot.length === 0 ||
115
- !Number.isInteger(payload.offset) ||
116
- (payload.offset ?? -1) < 0) {
117
- throw new Error("invalid cursor");
81
+ /** Caps every array at MAX_ITEMS, depth first, recording each cut. */
82
+ function capItems(value, path, fields) {
83
+ if (Array.isArray(value)) {
84
+ let items = value;
85
+ if (value.length > MAX_ITEMS) {
86
+ const { kept, latest } = capArray(value, MAX_ITEMS);
87
+ recordCut(fields, path, value.length, kept.length, latest);
88
+ items = kept;
118
89
  }
119
- return payload;
90
+ return items.map((item, index) => capItems(item, childPath(path, index), fields));
120
91
  }
121
- catch {
122
- throw new Error("Invalid Gem Finder pagination cursor.");
123
- }
124
- }
125
- /**
126
- * Client-side pagination for the free Gem Finder fallback, whose raw payload
127
- * contains the complete `coins` array. Cursor shape matches the v1 endpoint so
128
- * agents do not silently restart from offset zero when no API key is set.
129
- */
130
- export function paginateSnapshotPayload(payload, limit, cursor) {
131
- const rows = Array.isArray(payload.coins) ? payload.coins : [];
132
- const snapshot = typeof payload.updatedAt === "string" && payload.updatedAt
133
- ? payload.updatedAt
134
- : "empty-snapshot";
135
- let offset = 0;
136
- if (cursor) {
137
- const decoded = decodeSnapshotCursor(cursor);
138
- if (decoded.snapshot !== snapshot) {
139
- throw new Error("Gem Finder pagination cursor belongs to an expired cache snapshot. Restart without a cursor.");
92
+ if (value && typeof value === "object") {
93
+ const out = {};
94
+ for (const [key, item] of Object.entries(value)) {
95
+ out[key] = capItems(item, childPath(path, key), fields);
140
96
  }
141
- offset = decoded.offset;
97
+ return out;
142
98
  }
143
- const data = rows.slice(offset, offset + limit);
144
- const nextOffset = offset + limit;
145
- const hasMore = nextOffset < rows.length;
146
- return {
147
- data,
148
- pagination: {
149
- cursor: hasMore
150
- ? encodeSnapshotCursor({
151
- version: 1,
152
- snapshot,
153
- offset: nextOffset,
154
- })
155
- : null,
156
- has_more: hasMore,
157
- total: rows.length,
158
- },
159
- };
99
+ return value;
160
100
  }
161
- const TRUNCATION_MESSAGE = "Response truncated to protect the agent context window. Narrow the result set with a cursor, offset, or filter parameters to retrieve the remaining items.";
162
- export function truncateResponse(data) {
163
- if (Array.isArray(data)) {
164
- const serializedLength = JSON.stringify(data).length;
165
- if (data.length > MAX_ITEMS || serializedLength > CHARACTER_LIMIT) {
166
- const { kept, latest } = capArray(data, MAX_ITEMS);
167
- const items = kept.map((value) => truncateNestedValue(value));
168
- const result = { items };
169
- markTruncated(result, "items", data.length, items.length, latest);
170
- return capByCharacters(result);
171
- }
172
- return data.map((value) => truncateNestedValue(value));
173
- }
174
- if (data && typeof data === "object" && !Array.isArray(data)) {
175
- return capByCharacters(truncateNestedObject(data));
101
+ function collect(value, path, test, out, owner, key) {
102
+ if (owner !== undefined && key !== undefined && test(value)) {
103
+ out.push({ owner, key, value, path });
176
104
  }
177
- return data;
178
- }
179
- function truncateNestedValue(value) {
180
105
  if (Array.isArray(value)) {
181
- return capArray(value, MAX_ITEMS).kept.map((item) => truncateNestedValue(item));
182
- }
183
- if (value && typeof value === "object") {
184
- return truncateNestedObject(value);
106
+ value.forEach((item, index) => collect(item, childPath(path, index), test, out, value, index));
185
107
  }
186
- return value;
187
- }
188
- function truncateNestedObject(obj) {
189
- const result = {};
190
- for (const [key, value] of Object.entries(obj)) {
191
- if (Array.isArray(value)) {
192
- const { kept, latest } = capArray(value, MAX_ITEMS);
193
- const truncated = kept.map((item) => truncateNestedValue(item));
194
- result[key] = truncated;
195
- if (truncated.length < value.length) {
196
- markTruncated(result, key, value.length, truncated.length, latest);
197
- }
198
- continue;
108
+ else if (value && typeof value === "object") {
109
+ for (const [childKey, item] of Object.entries(value)) {
110
+ collect(item, childPath(path, childKey), test, out, value, childKey);
199
111
  }
200
- result[key] = truncateNestedValue(value);
201
112
  }
202
- return result;
113
+ return out;
203
114
  }
204
- function markTruncated(owner, key, total, showing, keptLatest = false) {
205
- owner.truncated = true;
206
- owner.truncation_message = TRUNCATION_MESSAGE;
207
- const existing = owner.truncated_fields &&
208
- typeof owner.truncated_fields === "object" &&
209
- !Array.isArray(owner.truncated_fields)
210
- ? owner.truncated_fields
211
- : {};
212
- // A field capped more than once (MAX_ITEMS, then each character-limit
213
- // halving) keeps the length it had before its first cap. Overwriting it
214
- // reported an intermediate length as the total (2026-09-24 audit).
215
- const prior = existing[key];
216
- const originalTotal = typeof prior?.total === "number" ? prior.total : total;
217
- const fields = {
218
- ...existing,
219
- [key]: keptLatest
220
- ? { total: originalTotal, showing, kept: "latest" }
221
- : { total: originalTotal, showing },
222
- };
223
- owner.truncated_fields = fields;
224
- // Preserve the established single-array convenience fields used by agents.
225
- // They describe the first capped field and follow it through every later
226
- // halving; `truncated_fields` remains authoritative when multiple arrays
227
- // are capped.
228
- if (Object.keys(fields)[0] === key) {
229
- if (owner.total === undefined)
230
- owner.total = originalTotal;
231
- owner.showing = showing;
232
- }
115
+ const isNonEmptyArray = (value) => Array.isArray(value) && value.length > 0;
116
+ const isLongString = (value) => typeof value === "string" && value.length > 64;
117
+ function setSlot(slot, value) {
118
+ slot.owner[slot.key] = value;
233
119
  }
234
- // After serialization, if the payload still exceeds CHARACTER_LIMIT, further
235
- // shrink the largest array anywhere in the payload. Several public routes wrap
236
- // arrays under nested `{ ok, data }` objects, so only looking at top-level keys
237
- // allows multi-megabyte payloads to bypass the guard.
238
- function capByCharacters(obj) {
239
- if (JSON.stringify(obj).length <= CHARACTER_LIMIT) {
240
- return obj;
241
- }
242
- const result = obj;
243
- while (JSON.stringify(result).length > CHARACTER_LIMIT) {
244
- const arrays = collectArrayReferences(result).filter(({ value }) => value.length > 0);
245
- const largest = arrays.sort((a, b) => JSON.stringify(b.value).length - JSON.stringify(a.value).length)[0];
246
- if (largest) {
120
+ /**
121
+ * The payload cut to fit the agent's context window, and the cuts: every array to MAX_ITEMS, then, while the JSON
122
+ * is over CHARACTER_LIMIT, the largest array halved (an ascending series from its old end), then the longest string.
123
+ * The payload keeps its shape (the tool's output schema still holds); what was cut is reported beside it, by path
124
+ * from `data`, never inside it.
125
+ */
126
+ export function capToContext(data) {
127
+ const fields = {};
128
+ const holder = {
129
+ data: capItems(data, "data", fields),
130
+ };
131
+ while (jsonText(holder.data).length > CHARACTER_LIMIT) {
132
+ const arrays = collect(holder, "", isNonEmptyArray, []);
133
+ if (arrays.length > 0) {
134
+ let largest = arrays[0];
135
+ let largestLength = jsonText(largest.value).length;
136
+ for (const slot of arrays.slice(1)) {
137
+ const length = jsonText(slot.value).length;
138
+ if (length > largestLength) {
139
+ largest = slot;
140
+ largestLength = length;
141
+ }
142
+ }
247
143
  const total = largest.value.length;
248
144
  const showing = total <= 1 ? 0 : Math.floor(total / 2);
249
145
  const { kept, latest } = capArray(largest.value, showing);
250
- largest.owner[largest.key] = kept;
251
- markTruncated(largest.owner, largest.key, total, showing, latest);
146
+ setSlot(largest, kept);
147
+ recordCut(fields, largest.path.slice(1), total, showing, latest);
252
148
  continue;
253
149
  }
254
- // A pathological response can exceed the limit with one enormous scalar
255
- // string even after its arrays are exhausted. Clip the largest remaining
256
- // string rather than returning invalid or unbounded tool output.
257
- const strings = collectStringReferences(result).filter(({ key, value }) => key !== "truncation_message" && value.length > 64);
258
- const largestString = strings.sort((a, b) => b.value.length - a.value.length)[0];
259
- if (!largestString)
150
+ // One enormous string can exceed the limit after every array is empty.
151
+ const strings = collect(holder, "", isLongString, []);
152
+ if (strings.length === 0)
260
153
  break;
261
- largestString.owner[largestString.key] =
262
- `${largestString.value.slice(0, Math.floor(largestString.value.length / 2))}…`;
263
- markTruncated(largestString.owner, largestString.key, largestString.value.length, String(largestString.owner[largestString.key]).length);
264
- }
265
- return result;
266
- }
267
- function collectArrayReferences(obj) {
268
- const references = [];
269
- for (const [key, value] of Object.entries(obj)) {
270
- if (Array.isArray(value)) {
271
- references.push({ owner: obj, key, value });
272
- for (const item of value) {
273
- if (item && typeof item === "object" && !Array.isArray(item)) {
274
- references.push(...collectArrayReferences(item));
275
- }
276
- }
277
- }
278
- else if (value && typeof value === "object") {
279
- references.push(...collectArrayReferences(value));
280
- }
281
- }
282
- return references;
283
- }
284
- function collectStringReferences(obj) {
285
- const references = [];
286
- for (const [key, value] of Object.entries(obj)) {
287
- if (typeof value === "string") {
288
- references.push({ owner: obj, key, value });
289
- }
290
- else if (Array.isArray(value)) {
291
- for (const item of value) {
292
- if (item && typeof item === "object" && !Array.isArray(item)) {
293
- references.push(...collectStringReferences(item));
294
- }
295
- }
296
- }
297
- else if (value && typeof value === "object") {
298
- references.push(...collectStringReferences(value));
154
+ let longest = strings[0];
155
+ for (const slot of strings.slice(1)) {
156
+ if (slot.value.length > longest.value.length)
157
+ longest = slot;
299
158
  }
159
+ const clipped = `${longest.value.slice(0, Math.floor(longest.value.length / 2))}…`;
160
+ setSlot(longest, clipped);
161
+ recordCut(fields, longest.path.slice(1), longest.value.length, clipped.length, false);
300
162
  }
301
- return references;
163
+ return { data: holder.data, fields };
302
164
  }
303
- export function toToolResult(result) {
165
+ export const TEXT_TOOL_OUTPUT_SCHEMA = {
166
+ report: z.string().optional().describe("Formatted markdown report."),
167
+ // analyze_coin returns the coin beside its report. The schema is strict, so
168
+ // leaving it out made SDK clients that validate output reject every
169
+ // analyze_coin result (-32602, 2026-09-26).
170
+ coin: z.string().optional().describe("Coin the report covers."),
171
+ error: z.string().optional().describe("Error message when the call fails."),
172
+ };
173
+ /** An endpoint tool's answer: the result as `structuredContent`, and the same JSON as text for clients without it. */
174
+ export function toStructuredToolResult(result) {
304
175
  return {
305
- structuredContent: { result },
306
- content: [
307
- {
308
- type: "text",
309
- // Compact: indentation added ~35% to every payload's token count
310
- // (2026-09-26 audit) and carries nothing an agent reads.
311
- text: JSON.stringify(result),
312
- },
313
- ],
176
+ structuredContent: result,
177
+ // Compact: indentation added ~35% to every payload's token count
178
+ // (2026-09-26 audit) and carries nothing an agent reads.
179
+ content: [{ type: "text", text: jsonText(result) }],
314
180
  };
315
181
  }
316
182
  export function toTextToolResult(report, extra) {
@@ -324,6 +190,7 @@ export function toTextToolResult(report, extra) {
324
190
  ],
325
191
  };
326
192
  }
193
+ /** A composite's failure: `{ error }` as structured content, and as text. */
327
194
  export function toToolErrorResult(error) {
328
195
  const message = error instanceof Error ? error.message : String(error);
329
196
  return {
@@ -337,4 +204,12 @@ export function toToolErrorResult(error) {
337
204
  isError: true,
338
205
  };
339
206
  }
207
+ /** An endpoint tool's failure: the message, as text (the Python server reports a tool error the same way). */
208
+ export function toTextErrorResult(error) {
209
+ const message = error instanceof Error ? error.message : String(error);
210
+ return {
211
+ content: [{ type: "text", text: message }],
212
+ isError: true,
213
+ };
214
+ }
340
215
  //# sourceMappingURL=tool-runtime.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tool-runtime.js","sourceRoot":"","sources":["../src/tool-runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tool-runtime.js","sourceRoot":"","sources":["../src/tool-runtime.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sharpe-terminal/mcp-server",
3
- "version": "1.4.0",
3
+ "version": "1.6.0",
4
4
  "description": "MCP server for Sharpe crypto derivatives and market data API",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",