@sharpe-terminal/mcp-server 1.2.0 → 1.5.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 +65 -163
- package/dist/api-client.d.ts +40 -0
- package/dist/api-client.d.ts.map +1 -1
- package/dist/api-client.js +244 -9
- package/dist/api-client.js.map +1 -1
- package/dist/composite-tools.d.ts +49 -3
- package/dist/composite-tools.d.ts.map +1 -1
- package/dist/composite-tools.js +452 -380
- package/dist/composite-tools.js.map +1 -1
- package/dist/index.js +9 -226
- package/dist/index.js.map +1 -1
- package/dist/resources.d.ts +44 -5
- package/dist/resources.d.ts.map +1 -1
- package/dist/resources.js +61 -5
- package/dist/resources.js.map +1 -1
- package/dist/server.d.ts +15 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +266 -0
- package/dist/server.js.map +1 -0
- package/dist/tool-runtime.d.ts +53 -0
- package/dist/tool-runtime.d.ts.map +1 -1
- package/dist/tool-runtime.js +277 -52
- package/dist/tool-runtime.js.map +1 -1
- package/dist/tools.d.ts +143 -76
- package/dist/tools.d.ts.map +1 -1
- package/dist/tools.js +403 -116
- package/dist/tools.js.map +1 -1
- package/package.json +1 -1
package/dist/tool-runtime.js
CHANGED
|
@@ -14,80 +14,303 @@ export const API_TOOL_OUTPUT_SCHEMA = {
|
|
|
14
14
|
.describe("Sharpe API payload after filtering and response-size truncation."),
|
|
15
15
|
error: z.string().optional().describe("Error message when the call fails."),
|
|
16
16
|
};
|
|
17
|
+
/**
|
|
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.
|
|
25
|
+
*/
|
|
26
|
+
export function splitPaginated(result) {
|
|
27
|
+
if (result &&
|
|
28
|
+
typeof result === "object" &&
|
|
29
|
+
!Array.isArray(result) &&
|
|
30
|
+
"pagination" in result &&
|
|
31
|
+
"data" in result) {
|
|
32
|
+
const { data, pagination, ...extras } = result;
|
|
33
|
+
return { rows: data, pagination: pagination ?? null, extras };
|
|
34
|
+
}
|
|
35
|
+
return { rows: result, pagination: null, extras: {} };
|
|
36
|
+
}
|
|
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
|
+
/**
|
|
67
|
+
* A row's time in epoch ms, read from the keys the futures routes sort on
|
|
68
|
+
* (`snapshot_at ?? settled_at ?? timestamp`). Null when absent or unparseable.
|
|
69
|
+
*/
|
|
70
|
+
export function rowTimeMs(row) {
|
|
71
|
+
if (!row || typeof row !== "object" || Array.isArray(row))
|
|
72
|
+
return null;
|
|
73
|
+
const rec = row;
|
|
74
|
+
const raw = rec.snapshot_at ?? rec.settled_at ?? rec.timestamp;
|
|
75
|
+
if (raw == null)
|
|
76
|
+
return null;
|
|
77
|
+
const ms = typeof raw === "number" ? raw : Date.parse(String(raw));
|
|
78
|
+
return Number.isFinite(ms) ? ms : null;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Caps an array at `size` items. Sharpe time series are ordered oldest-first,
|
|
82
|
+
* 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
|
|
84
|
+
* newest rows; every other array keeps its head, where the API puts its
|
|
85
|
+
* ranking.
|
|
86
|
+
*/
|
|
87
|
+
function capArray(values, size) {
|
|
88
|
+
const first = rowTimeMs(values[0]);
|
|
89
|
+
const last = rowTimeMs(values[values.length - 1]);
|
|
90
|
+
if (first != null && last != null && last > first) {
|
|
91
|
+
return {
|
|
92
|
+
kept: values.slice(Math.max(0, values.length - size)),
|
|
93
|
+
latest: true,
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
return { kept: values.slice(0, size), latest: false };
|
|
97
|
+
}
|
|
17
98
|
export const TEXT_TOOL_OUTPUT_SCHEMA = {
|
|
18
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."),
|
|
19
104
|
error: z.string().optional().describe("Error message when the call fails."),
|
|
20
105
|
};
|
|
106
|
+
function encodeSnapshotCursor(payload) {
|
|
107
|
+
return Buffer.from(JSON.stringify(payload)).toString("base64url");
|
|
108
|
+
}
|
|
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");
|
|
118
|
+
}
|
|
119
|
+
return payload;
|
|
120
|
+
}
|
|
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.");
|
|
140
|
+
}
|
|
141
|
+
offset = decoded.offset;
|
|
142
|
+
}
|
|
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
|
+
};
|
|
160
|
+
}
|
|
21
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.";
|
|
22
162
|
export function truncateResponse(data) {
|
|
23
|
-
if (Array.isArray(data)
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
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));
|
|
30
173
|
}
|
|
31
174
|
if (data && typeof data === "object" && !Array.isArray(data)) {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
175
|
+
return capByCharacters(truncateNestedObject(data));
|
|
176
|
+
}
|
|
177
|
+
return data;
|
|
178
|
+
}
|
|
179
|
+
function truncateNestedValue(value) {
|
|
180
|
+
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);
|
|
185
|
+
}
|
|
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);
|
|
47
197
|
}
|
|
198
|
+
continue;
|
|
48
199
|
}
|
|
49
|
-
|
|
50
|
-
return capByCharacters(result, truncatedKeys);
|
|
51
|
-
}
|
|
52
|
-
return capByCharacters({ ...obj }, getArrayKeys(obj));
|
|
200
|
+
result[key] = truncateNestedValue(value);
|
|
53
201
|
}
|
|
54
|
-
return
|
|
202
|
+
return result;
|
|
55
203
|
}
|
|
56
|
-
function
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
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
|
+
}
|
|
60
233
|
}
|
|
61
234
|
// After serialization, if the payload still exceeds CHARACTER_LIMIT, further
|
|
62
|
-
// shrink the largest array
|
|
63
|
-
//
|
|
64
|
-
|
|
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) {
|
|
65
239
|
if (JSON.stringify(obj).length <= CHARACTER_LIMIT) {
|
|
66
240
|
return obj;
|
|
67
241
|
}
|
|
68
|
-
const result =
|
|
69
|
-
let changed = false;
|
|
70
|
-
// Repeatedly halve the longest array until under the limit or nothing left.
|
|
242
|
+
const result = obj;
|
|
71
243
|
while (JSON.stringify(result).length > CHARACTER_LIMIT) {
|
|
72
|
-
const
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
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) {
|
|
247
|
+
const total = largest.value.length;
|
|
248
|
+
const showing = total <= 1 ? 0 : Math.floor(total / 2);
|
|
249
|
+
const { kept, latest } = capArray(largest.value, showing);
|
|
250
|
+
largest.owner[largest.key] = kept;
|
|
251
|
+
markTruncated(largest.owner, largest.key, total, showing, latest);
|
|
252
|
+
continue;
|
|
77
253
|
}
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
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)
|
|
81
260
|
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));
|
|
82
280
|
}
|
|
83
|
-
result[longestKey] = current.slice(0, Math.floor(current.length / 2));
|
|
84
|
-
result.truncated = true;
|
|
85
|
-
changed = true;
|
|
86
281
|
}
|
|
87
|
-
|
|
88
|
-
|
|
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));
|
|
299
|
+
}
|
|
89
300
|
}
|
|
90
|
-
return
|
|
301
|
+
return references;
|
|
302
|
+
}
|
|
303
|
+
/**
|
|
304
|
+
* The result with the API's freshness envelope beside it (engine L5 WP-S12): an object gains `data_freshness`
|
|
305
|
+
* (dataset, `as_of`, `stale_after`, `freshness_status`, `runtime_status`, `warnings`); anything else is wrapped as
|
|
306
|
+
* `{ data, data_freshness }`, the shape a paged answer already has. Nothing changes when the API said nothing.
|
|
307
|
+
*/
|
|
308
|
+
export function withFreshness(result, freshness) {
|
|
309
|
+
if (freshness === null)
|
|
310
|
+
return result;
|
|
311
|
+
return result !== null && typeof result === "object" && !Array.isArray(result)
|
|
312
|
+
? { ...result, data_freshness: freshness }
|
|
313
|
+
: { data: result, data_freshness: freshness };
|
|
91
314
|
}
|
|
92
315
|
export function toToolResult(result) {
|
|
93
316
|
return {
|
|
@@ -95,7 +318,9 @@ export function toToolResult(result) {
|
|
|
95
318
|
content: [
|
|
96
319
|
{
|
|
97
320
|
type: "text",
|
|
98
|
-
|
|
321
|
+
// Compact: indentation added ~35% to every payload's token count
|
|
322
|
+
// (2026-09-26 audit) and carries nothing an agent reads.
|
|
323
|
+
text: JSON.stringify(result),
|
|
99
324
|
},
|
|
100
325
|
],
|
|
101
326
|
};
|
package/dist/tool-runtime.js.map
CHANGED
|
@@ -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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"}
|