@pgnio/helios-mcp 0.2.3 → 0.2.5
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/dist/chunk-52XY4KRG.mjs +3038 -0
- package/dist/chunk-7EDI4KLD.mjs +3042 -0
- package/dist/cli.js +51 -7
- package/dist/cli.mjs +1 -1
- package/dist/index.d.mts +12 -1
- package/dist/index.d.ts +12 -1
- package/dist/index.js +61 -9
- package/dist/index.mjs +11 -3
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -221,7 +221,7 @@ var marketSnapshotValueSchema = import_zod.z.union([import_zod.z.string(), impor
|
|
|
221
221
|
var marketSnapshotInputSchema = import_zod.z.object({
|
|
222
222
|
scope: marketSnapshotScopeSchema.optional(),
|
|
223
223
|
symbols: import_zod.z.array(import_zod.z.string().min(1)).min(1).optional(),
|
|
224
|
-
fields: import_zod.z.array(import_zod.z.string().min(1)).min(1).optional().describe(
|
|
224
|
+
fields: import_zod.z.array(import_zod.z.string().min(1)).min(1).optional().describe("Table columns to return; sym and base always come back. Ids: rank, lp, bv, qv, ts, r1m, r3m, r5m, r15m, r30m, r1h, r2h, r4h, r6h, r8h, r12h, r24h, r3d, r7d, hmi, hmiv, reg, ob, de, hfi, ar, ms, vcc, vcp, obosd, obosp, vwap, vwz, poc, pocd, vap, macdh, macds, macdd, srs, srr, fh24, fl24, fh7, fl7, sr, az, hfiw, trv, tri, trh, hs."),
|
|
225
225
|
sort: import_zod.z.enum(["rank"]).optional().describe('"rank" orders rows by market cap rank, unranked last.')
|
|
226
226
|
});
|
|
227
227
|
var marketSnapshotChunkInputSchema = marketSnapshotInputSchema.extend({
|
|
@@ -1425,6 +1425,50 @@ function asPending(login) {
|
|
|
1425
1425
|
}
|
|
1426
1426
|
|
|
1427
1427
|
// src/market-service.ts
|
|
1428
|
+
var DEFAULT_SNAPSHOT_TOP = 50;
|
|
1429
|
+
var DEFAULT_SNAPSHOT_FIELDS = [
|
|
1430
|
+
// Price, size and returns.
|
|
1431
|
+
"rank",
|
|
1432
|
+
"lp",
|
|
1433
|
+
"qv",
|
|
1434
|
+
"r15m",
|
|
1435
|
+
"r1h",
|
|
1436
|
+
"r4h",
|
|
1437
|
+
"r24h",
|
|
1438
|
+
"r7d",
|
|
1439
|
+
// Regime and momentum turn: the one edge that held out of sample is buying a sharp turn up in a BREAKDOWN/CRASH coin.
|
|
1440
|
+
"reg",
|
|
1441
|
+
"hmi",
|
|
1442
|
+
"hmiv",
|
|
1443
|
+
"hs",
|
|
1444
|
+
// Stretch and location: fades beat chases in the wallet research.
|
|
1445
|
+
"ob",
|
|
1446
|
+
"obosp",
|
|
1447
|
+
"de",
|
|
1448
|
+
"ms",
|
|
1449
|
+
"srs",
|
|
1450
|
+
"srr",
|
|
1451
|
+
"fh24",
|
|
1452
|
+
"fl24",
|
|
1453
|
+
"fh7",
|
|
1454
|
+
"fl7",
|
|
1455
|
+
"vwz",
|
|
1456
|
+
"tri"
|
|
1457
|
+
];
|
|
1458
|
+
function withSnapshotDefaults(input) {
|
|
1459
|
+
return {
|
|
1460
|
+
...input,
|
|
1461
|
+
fields: input.fields ?? [...DEFAULT_SNAPSHOT_FIELDS],
|
|
1462
|
+
sort: input.sort ?? "rank"
|
|
1463
|
+
};
|
|
1464
|
+
}
|
|
1465
|
+
function topOfSnapshot(snapshot, input, top = DEFAULT_SNAPSHOT_TOP) {
|
|
1466
|
+
if (input.symbols?.length || snapshot.table.rows.length <= top) return snapshot;
|
|
1467
|
+
const baseIndex = snapshot.table.fieldIds.indexOf("base");
|
|
1468
|
+
const rows = snapshot.table.rows.slice(0, top);
|
|
1469
|
+
const returnedSymbols = baseIndex === -1 ? snapshot.returnedSymbols.slice(0, top) : rows.map((row) => String(row[baseIndex]));
|
|
1470
|
+
return { ...snapshot, symbolCount: rows.length, returnedSymbols, table: { ...snapshot.table, rows } };
|
|
1471
|
+
}
|
|
1428
1472
|
var HeliosAgentMcpMarketService = class {
|
|
1429
1473
|
constructor(options) {
|
|
1430
1474
|
__publicField(this, "authService");
|
|
@@ -1447,7 +1491,7 @@ var HeliosAgentMcpMarketService = class {
|
|
|
1447
1491
|
}
|
|
1448
1492
|
const session = await this.authService.requireSession();
|
|
1449
1493
|
try {
|
|
1450
|
-
const snapshot = await this.dataBridgeClient.getMarketSnapshot(session.accessToken, input);
|
|
1494
|
+
const snapshot = topOfSnapshot(await this.dataBridgeClient.getMarketSnapshot(session.accessToken, withSnapshotDefaults(input)), input);
|
|
1451
1495
|
return {
|
|
1452
1496
|
status: "connected",
|
|
1453
1497
|
connected: true,
|
|
@@ -1459,7 +1503,7 @@ var HeliosAgentMcpMarketService = class {
|
|
|
1459
1503
|
error,
|
|
1460
1504
|
loginOptions,
|
|
1461
1505
|
retry: async (accessToken) => {
|
|
1462
|
-
const snapshot = await this.dataBridgeClient.getMarketSnapshot(accessToken, input);
|
|
1506
|
+
const snapshot = topOfSnapshot(await this.dataBridgeClient.getMarketSnapshot(accessToken, withSnapshotDefaults(input)), input);
|
|
1463
1507
|
return {
|
|
1464
1508
|
status: "connected",
|
|
1465
1509
|
connected: true,
|
|
@@ -1488,7 +1532,7 @@ var HeliosAgentMcpMarketService = class {
|
|
|
1488
1532
|
}
|
|
1489
1533
|
const session = await this.authService.requireSession();
|
|
1490
1534
|
try {
|
|
1491
|
-
const snapshotChunk = await this.dataBridgeClient.getMarketSnapshotChunk(session.accessToken, input);
|
|
1535
|
+
const snapshotChunk = await this.dataBridgeClient.getMarketSnapshotChunk(session.accessToken, withSnapshotDefaults(input));
|
|
1492
1536
|
return {
|
|
1493
1537
|
status: "connected",
|
|
1494
1538
|
connected: true,
|
|
@@ -1500,7 +1544,7 @@ var HeliosAgentMcpMarketService = class {
|
|
|
1500
1544
|
error,
|
|
1501
1545
|
loginOptions,
|
|
1502
1546
|
retry: async (accessToken) => {
|
|
1503
|
-
const snapshotChunk = await this.dataBridgeClient.getMarketSnapshotChunk(accessToken, input);
|
|
1547
|
+
const snapshotChunk = await this.dataBridgeClient.getMarketSnapshotChunk(accessToken, withSnapshotDefaults(input));
|
|
1504
1548
|
return {
|
|
1505
1549
|
status: "connected",
|
|
1506
1550
|
connected: true,
|
|
@@ -2569,7 +2613,7 @@ function createHeliosMarketToolDefinitions(service) {
|
|
|
2569
2613
|
{
|
|
2570
2614
|
name: "helios_market_get_snapshot",
|
|
2571
2615
|
title: "Get Helios Market Snapshot",
|
|
2572
|
-
description: "Returns a compact market snapshot for the selected, all, or explicitly requested symbols.
|
|
2616
|
+
description: "Returns a compact market snapshot for the selected, all, or explicitly requested symbols. By default: the top 50 coins by market cap with the main columns; name symbols to get other coins, pass fields for other columns.",
|
|
2573
2617
|
inputSchema: marketSnapshotInputSchema,
|
|
2574
2618
|
async execute(input) {
|
|
2575
2619
|
const result = marketSnapshotToolOutputSchema.parse(await service.getSnapshot(input));
|
|
@@ -2837,7 +2881,7 @@ async function createHeliosAgentMcpServer(options) {
|
|
|
2837
2881
|
const { McpServer } = await import("@modelcontextprotocol/sdk/server/mcp.js");
|
|
2838
2882
|
const server = new McpServer({
|
|
2839
2883
|
name: "helios",
|
|
2840
|
-
version: "0.2.
|
|
2884
|
+
version: "0.2.5"
|
|
2841
2885
|
});
|
|
2842
2886
|
const sessionStore = options.sessionStore ?? new FileAgentSessionStore(options.sessionPath ?? getDefaultHeliosAgentMcpSessionPath());
|
|
2843
2887
|
const client = new HeliosAgentAuthClient({
|
package/dist/cli.mjs
CHANGED
package/dist/index.d.mts
CHANGED
|
@@ -953,6 +953,17 @@ type MarketSymbolDetailResult = {
|
|
|
953
953
|
connected: false;
|
|
954
954
|
message: string;
|
|
955
955
|
} & StartLoginResult);
|
|
956
|
+
/** Coins in a default snapshot: the top ones by market cap. Asking for symbols by name returns exactly those. */
|
|
957
|
+
declare const DEFAULT_SNAPSHOT_TOP = 50;
|
|
958
|
+
/**
|
|
959
|
+
* Columns an agent gets when it doesn't pass `fields`: price, volume, the main returns and the core Helios indicators.
|
|
960
|
+
* The full table (~50 columns) is too much context for most models; `fields` still reaches every column.
|
|
961
|
+
*/
|
|
962
|
+
declare const DEFAULT_SNAPSHOT_FIELDS: readonly string[];
|
|
963
|
+
/** Fills in the default columns and market cap order unless the agent chose its own. */
|
|
964
|
+
declare function withSnapshotDefaults<T extends MarketSnapshotInput>(input: T): T;
|
|
965
|
+
/** A ranked snapshot cut to its top coins, unless the agent named its symbols. */
|
|
966
|
+
declare function topOfSnapshot(snapshot: MarketSnapshot, input: MarketSnapshotInput, top?: number): MarketSnapshot;
|
|
956
967
|
declare class HeliosAgentMcpMarketService {
|
|
957
968
|
private readonly authService;
|
|
958
969
|
private readonly dataBridgeClient;
|
|
@@ -2167,4 +2178,4 @@ declare function createHeliosTradingToolDefinitions(service: HeliosAgentMcpTradi
|
|
|
2167
2178
|
}>;
|
|
2168
2179
|
}];
|
|
2169
2180
|
|
|
2170
|
-
export { type ActiveProviderView, type AgentMcpSessionStore, type CancelOrderToolResult, type ClosePositionToolResult, type CreateHeliosAgentMcpServerOptions, type DeleteTpSlToolResult, type EnsureLoginOptions, type EnsureLoginResult, FileAgentSessionStore, type GetHeliosAgentMcpDocumentInput, HOSTED_RECONNECT_MESSAGE, HeliosAgentMcpAccountService, type HeliosAgentMcpAccountServiceOptions, HeliosAgentMcpAuthService, type HeliosAgentMcpAuthServiceOptions, type HeliosAgentMcpDocsIndex, type HeliosAgentMcpDocsIndexEntry, HeliosAgentMcpDocsService, type HeliosAgentMcpDocsServiceOptions, type HeliosAgentMcpDocument, HeliosAgentMcpLedgerService, type HeliosAgentMcpLedgerServiceOptions, HeliosAgentMcpMarketService, type HeliosAgentMcpMarketServiceOptions, HeliosAgentMcpProviderService, type HeliosAgentMcpProviderServiceOptions, HeliosAgentMcpTradingService, type HeliosAgentMcpTradingServiceOptions, type HeliosMcpToolDefinition, type HeliosMcpToolResult, type LedgerFillsResult, type LedgerSummaryResult, type MarketSnapshotChunkResult, type MarketSnapshotResult, type MarketSymbolDetailResult, MemoryAgentMcpSessionStore, type OpenOrdersToolResult, type OpenPositionsResult, type PendingAgentLogin, type PendingLoginResult, type PollLoginResult, type PortfolioResult, type SetTpSlToolResult, type StartLoginResult, type TradeIntentAction, type TradeIntentActionInput, type TradeIntentActionResult, type WalletStateResult, createHeliosAccountToolDefinitions, createHeliosAgentMcpServer, createHeliosAuthToolDefinitions, createHeliosDocsToolDefinitions, createHeliosLedgerToolDefinitions, createHeliosMarketToolDefinitions, createHeliosProviderToolDefinitions, createHeliosTradingToolDefinitions, formatHeliosLoginPrompt, getDefaultHeliosAgentMcpDocsRoot, getDefaultHeliosAgentMcpSessionPath, pendingAgentLoginSchema, retryAfterUnauthorizedRefresh, toolAnnotations, withDataText };
|
|
2181
|
+
export { type ActiveProviderView, type AgentMcpSessionStore, type CancelOrderToolResult, type ClosePositionToolResult, type CreateHeliosAgentMcpServerOptions, DEFAULT_SNAPSHOT_FIELDS, DEFAULT_SNAPSHOT_TOP, type DeleteTpSlToolResult, type EnsureLoginOptions, type EnsureLoginResult, FileAgentSessionStore, type GetHeliosAgentMcpDocumentInput, HOSTED_RECONNECT_MESSAGE, HeliosAgentMcpAccountService, type HeliosAgentMcpAccountServiceOptions, HeliosAgentMcpAuthService, type HeliosAgentMcpAuthServiceOptions, type HeliosAgentMcpDocsIndex, type HeliosAgentMcpDocsIndexEntry, HeliosAgentMcpDocsService, type HeliosAgentMcpDocsServiceOptions, type HeliosAgentMcpDocument, HeliosAgentMcpLedgerService, type HeliosAgentMcpLedgerServiceOptions, HeliosAgentMcpMarketService, type HeliosAgentMcpMarketServiceOptions, HeliosAgentMcpProviderService, type HeliosAgentMcpProviderServiceOptions, HeliosAgentMcpTradingService, type HeliosAgentMcpTradingServiceOptions, type HeliosMcpToolDefinition, type HeliosMcpToolResult, type LedgerFillsResult, type LedgerSummaryResult, type MarketSnapshotChunkResult, type MarketSnapshotResult, type MarketSymbolDetailResult, MemoryAgentMcpSessionStore, type OpenOrdersToolResult, type OpenPositionsResult, type PendingAgentLogin, type PendingLoginResult, type PollLoginResult, type PortfolioResult, type SetTpSlToolResult, type StartLoginResult, type TradeIntentAction, type TradeIntentActionInput, type TradeIntentActionResult, type WalletStateResult, createHeliosAccountToolDefinitions, createHeliosAgentMcpServer, createHeliosAuthToolDefinitions, createHeliosDocsToolDefinitions, createHeliosLedgerToolDefinitions, createHeliosMarketToolDefinitions, createHeliosProviderToolDefinitions, createHeliosTradingToolDefinitions, formatHeliosLoginPrompt, getDefaultHeliosAgentMcpDocsRoot, getDefaultHeliosAgentMcpSessionPath, pendingAgentLoginSchema, retryAfterUnauthorizedRefresh, toolAnnotations, topOfSnapshot, withDataText, withSnapshotDefaults };
|
package/dist/index.d.ts
CHANGED
|
@@ -953,6 +953,17 @@ type MarketSymbolDetailResult = {
|
|
|
953
953
|
connected: false;
|
|
954
954
|
message: string;
|
|
955
955
|
} & StartLoginResult);
|
|
956
|
+
/** Coins in a default snapshot: the top ones by market cap. Asking for symbols by name returns exactly those. */
|
|
957
|
+
declare const DEFAULT_SNAPSHOT_TOP = 50;
|
|
958
|
+
/**
|
|
959
|
+
* Columns an agent gets when it doesn't pass `fields`: price, volume, the main returns and the core Helios indicators.
|
|
960
|
+
* The full table (~50 columns) is too much context for most models; `fields` still reaches every column.
|
|
961
|
+
*/
|
|
962
|
+
declare const DEFAULT_SNAPSHOT_FIELDS: readonly string[];
|
|
963
|
+
/** Fills in the default columns and market cap order unless the agent chose its own. */
|
|
964
|
+
declare function withSnapshotDefaults<T extends MarketSnapshotInput>(input: T): T;
|
|
965
|
+
/** A ranked snapshot cut to its top coins, unless the agent named its symbols. */
|
|
966
|
+
declare function topOfSnapshot(snapshot: MarketSnapshot, input: MarketSnapshotInput, top?: number): MarketSnapshot;
|
|
956
967
|
declare class HeliosAgentMcpMarketService {
|
|
957
968
|
private readonly authService;
|
|
958
969
|
private readonly dataBridgeClient;
|
|
@@ -2167,4 +2178,4 @@ declare function createHeliosTradingToolDefinitions(service: HeliosAgentMcpTradi
|
|
|
2167
2178
|
}>;
|
|
2168
2179
|
}];
|
|
2169
2180
|
|
|
2170
|
-
export { type ActiveProviderView, type AgentMcpSessionStore, type CancelOrderToolResult, type ClosePositionToolResult, type CreateHeliosAgentMcpServerOptions, type DeleteTpSlToolResult, type EnsureLoginOptions, type EnsureLoginResult, FileAgentSessionStore, type GetHeliosAgentMcpDocumentInput, HOSTED_RECONNECT_MESSAGE, HeliosAgentMcpAccountService, type HeliosAgentMcpAccountServiceOptions, HeliosAgentMcpAuthService, type HeliosAgentMcpAuthServiceOptions, type HeliosAgentMcpDocsIndex, type HeliosAgentMcpDocsIndexEntry, HeliosAgentMcpDocsService, type HeliosAgentMcpDocsServiceOptions, type HeliosAgentMcpDocument, HeliosAgentMcpLedgerService, type HeliosAgentMcpLedgerServiceOptions, HeliosAgentMcpMarketService, type HeliosAgentMcpMarketServiceOptions, HeliosAgentMcpProviderService, type HeliosAgentMcpProviderServiceOptions, HeliosAgentMcpTradingService, type HeliosAgentMcpTradingServiceOptions, type HeliosMcpToolDefinition, type HeliosMcpToolResult, type LedgerFillsResult, type LedgerSummaryResult, type MarketSnapshotChunkResult, type MarketSnapshotResult, type MarketSymbolDetailResult, MemoryAgentMcpSessionStore, type OpenOrdersToolResult, type OpenPositionsResult, type PendingAgentLogin, type PendingLoginResult, type PollLoginResult, type PortfolioResult, type SetTpSlToolResult, type StartLoginResult, type TradeIntentAction, type TradeIntentActionInput, type TradeIntentActionResult, type WalletStateResult, createHeliosAccountToolDefinitions, createHeliosAgentMcpServer, createHeliosAuthToolDefinitions, createHeliosDocsToolDefinitions, createHeliosLedgerToolDefinitions, createHeliosMarketToolDefinitions, createHeliosProviderToolDefinitions, createHeliosTradingToolDefinitions, formatHeliosLoginPrompt, getDefaultHeliosAgentMcpDocsRoot, getDefaultHeliosAgentMcpSessionPath, pendingAgentLoginSchema, retryAfterUnauthorizedRefresh, toolAnnotations, withDataText };
|
|
2181
|
+
export { type ActiveProviderView, type AgentMcpSessionStore, type CancelOrderToolResult, type ClosePositionToolResult, type CreateHeliosAgentMcpServerOptions, DEFAULT_SNAPSHOT_FIELDS, DEFAULT_SNAPSHOT_TOP, type DeleteTpSlToolResult, type EnsureLoginOptions, type EnsureLoginResult, FileAgentSessionStore, type GetHeliosAgentMcpDocumentInput, HOSTED_RECONNECT_MESSAGE, HeliosAgentMcpAccountService, type HeliosAgentMcpAccountServiceOptions, HeliosAgentMcpAuthService, type HeliosAgentMcpAuthServiceOptions, type HeliosAgentMcpDocsIndex, type HeliosAgentMcpDocsIndexEntry, HeliosAgentMcpDocsService, type HeliosAgentMcpDocsServiceOptions, type HeliosAgentMcpDocument, HeliosAgentMcpLedgerService, type HeliosAgentMcpLedgerServiceOptions, HeliosAgentMcpMarketService, type HeliosAgentMcpMarketServiceOptions, HeliosAgentMcpProviderService, type HeliosAgentMcpProviderServiceOptions, HeliosAgentMcpTradingService, type HeliosAgentMcpTradingServiceOptions, type HeliosMcpToolDefinition, type HeliosMcpToolResult, type LedgerFillsResult, type LedgerSummaryResult, type MarketSnapshotChunkResult, type MarketSnapshotResult, type MarketSymbolDetailResult, MemoryAgentMcpSessionStore, type OpenOrdersToolResult, type OpenPositionsResult, type PendingAgentLogin, type PendingLoginResult, type PollLoginResult, type PortfolioResult, type SetTpSlToolResult, type StartLoginResult, type TradeIntentAction, type TradeIntentActionInput, type TradeIntentActionResult, type WalletStateResult, createHeliosAccountToolDefinitions, createHeliosAgentMcpServer, createHeliosAuthToolDefinitions, createHeliosDocsToolDefinitions, createHeliosLedgerToolDefinitions, createHeliosMarketToolDefinitions, createHeliosProviderToolDefinitions, createHeliosTradingToolDefinitions, formatHeliosLoginPrompt, getDefaultHeliosAgentMcpDocsRoot, getDefaultHeliosAgentMcpSessionPath, pendingAgentLoginSchema, retryAfterUnauthorizedRefresh, toolAnnotations, topOfSnapshot, withDataText, withSnapshotDefaults };
|
package/dist/index.js
CHANGED
|
@@ -32,6 +32,8 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
|
|
|
32
32
|
// src/index.ts
|
|
33
33
|
var index_exports = {};
|
|
34
34
|
__export(index_exports, {
|
|
35
|
+
DEFAULT_SNAPSHOT_FIELDS: () => DEFAULT_SNAPSHOT_FIELDS,
|
|
36
|
+
DEFAULT_SNAPSHOT_TOP: () => DEFAULT_SNAPSHOT_TOP,
|
|
35
37
|
FileAgentSessionStore: () => FileAgentSessionStore,
|
|
36
38
|
HOSTED_RECONNECT_MESSAGE: () => HOSTED_RECONNECT_MESSAGE,
|
|
37
39
|
HeliosAgentMcpAccountService: () => HeliosAgentMcpAccountService,
|
|
@@ -56,7 +58,9 @@ __export(index_exports, {
|
|
|
56
58
|
pendingAgentLoginSchema: () => pendingAgentLoginSchema,
|
|
57
59
|
retryAfterUnauthorizedRefresh: () => retryAfterUnauthorizedRefresh,
|
|
58
60
|
toolAnnotations: () => toolAnnotations,
|
|
59
|
-
|
|
61
|
+
topOfSnapshot: () => topOfSnapshot,
|
|
62
|
+
withDataText: () => withDataText,
|
|
63
|
+
withSnapshotDefaults: () => withSnapshotDefaults
|
|
60
64
|
});
|
|
61
65
|
module.exports = __toCommonJS(index_exports);
|
|
62
66
|
|
|
@@ -256,7 +260,7 @@ var marketSnapshotValueSchema = import_zod.z.union([import_zod.z.string(), impor
|
|
|
256
260
|
var marketSnapshotInputSchema = import_zod.z.object({
|
|
257
261
|
scope: marketSnapshotScopeSchema.optional(),
|
|
258
262
|
symbols: import_zod.z.array(import_zod.z.string().min(1)).min(1).optional(),
|
|
259
|
-
fields: import_zod.z.array(import_zod.z.string().min(1)).min(1).optional().describe(
|
|
263
|
+
fields: import_zod.z.array(import_zod.z.string().min(1)).min(1).optional().describe("Table columns to return; sym and base always come back. Ids: rank, lp, bv, qv, ts, r1m, r3m, r5m, r15m, r30m, r1h, r2h, r4h, r6h, r8h, r12h, r24h, r3d, r7d, hmi, hmiv, reg, ob, de, hfi, ar, ms, vcc, vcp, obosd, obosp, vwap, vwz, poc, pocd, vap, macdh, macds, macdd, srs, srr, fh24, fl24, fh7, fl7, sr, az, hfiw, trv, tri, trh, hs."),
|
|
260
264
|
sort: import_zod.z.enum(["rank"]).optional().describe('"rank" orders rows by market cap rank, unranked last.')
|
|
261
265
|
});
|
|
262
266
|
var marketSnapshotChunkInputSchema = marketSnapshotInputSchema.extend({
|
|
@@ -1460,6 +1464,50 @@ function asPending(login) {
|
|
|
1460
1464
|
}
|
|
1461
1465
|
|
|
1462
1466
|
// src/market-service.ts
|
|
1467
|
+
var DEFAULT_SNAPSHOT_TOP = 50;
|
|
1468
|
+
var DEFAULT_SNAPSHOT_FIELDS = [
|
|
1469
|
+
// Price, size and returns.
|
|
1470
|
+
"rank",
|
|
1471
|
+
"lp",
|
|
1472
|
+
"qv",
|
|
1473
|
+
"r15m",
|
|
1474
|
+
"r1h",
|
|
1475
|
+
"r4h",
|
|
1476
|
+
"r24h",
|
|
1477
|
+
"r7d",
|
|
1478
|
+
// Regime and momentum turn: the one edge that held out of sample is buying a sharp turn up in a BREAKDOWN/CRASH coin.
|
|
1479
|
+
"reg",
|
|
1480
|
+
"hmi",
|
|
1481
|
+
"hmiv",
|
|
1482
|
+
"hs",
|
|
1483
|
+
// Stretch and location: fades beat chases in the wallet research.
|
|
1484
|
+
"ob",
|
|
1485
|
+
"obosp",
|
|
1486
|
+
"de",
|
|
1487
|
+
"ms",
|
|
1488
|
+
"srs",
|
|
1489
|
+
"srr",
|
|
1490
|
+
"fh24",
|
|
1491
|
+
"fl24",
|
|
1492
|
+
"fh7",
|
|
1493
|
+
"fl7",
|
|
1494
|
+
"vwz",
|
|
1495
|
+
"tri"
|
|
1496
|
+
];
|
|
1497
|
+
function withSnapshotDefaults(input) {
|
|
1498
|
+
return {
|
|
1499
|
+
...input,
|
|
1500
|
+
fields: input.fields ?? [...DEFAULT_SNAPSHOT_FIELDS],
|
|
1501
|
+
sort: input.sort ?? "rank"
|
|
1502
|
+
};
|
|
1503
|
+
}
|
|
1504
|
+
function topOfSnapshot(snapshot, input, top = DEFAULT_SNAPSHOT_TOP) {
|
|
1505
|
+
if (input.symbols?.length || snapshot.table.rows.length <= top) return snapshot;
|
|
1506
|
+
const baseIndex = snapshot.table.fieldIds.indexOf("base");
|
|
1507
|
+
const rows = snapshot.table.rows.slice(0, top);
|
|
1508
|
+
const returnedSymbols = baseIndex === -1 ? snapshot.returnedSymbols.slice(0, top) : rows.map((row) => String(row[baseIndex]));
|
|
1509
|
+
return { ...snapshot, symbolCount: rows.length, returnedSymbols, table: { ...snapshot.table, rows } };
|
|
1510
|
+
}
|
|
1463
1511
|
var HeliosAgentMcpMarketService = class {
|
|
1464
1512
|
constructor(options) {
|
|
1465
1513
|
__publicField(this, "authService");
|
|
@@ -1482,7 +1530,7 @@ var HeliosAgentMcpMarketService = class {
|
|
|
1482
1530
|
}
|
|
1483
1531
|
const session = await this.authService.requireSession();
|
|
1484
1532
|
try {
|
|
1485
|
-
const snapshot = await this.dataBridgeClient.getMarketSnapshot(session.accessToken, input);
|
|
1533
|
+
const snapshot = topOfSnapshot(await this.dataBridgeClient.getMarketSnapshot(session.accessToken, withSnapshotDefaults(input)), input);
|
|
1486
1534
|
return {
|
|
1487
1535
|
status: "connected",
|
|
1488
1536
|
connected: true,
|
|
@@ -1494,7 +1542,7 @@ var HeliosAgentMcpMarketService = class {
|
|
|
1494
1542
|
error,
|
|
1495
1543
|
loginOptions,
|
|
1496
1544
|
retry: async (accessToken) => {
|
|
1497
|
-
const snapshot = await this.dataBridgeClient.getMarketSnapshot(accessToken, input);
|
|
1545
|
+
const snapshot = topOfSnapshot(await this.dataBridgeClient.getMarketSnapshot(accessToken, withSnapshotDefaults(input)), input);
|
|
1498
1546
|
return {
|
|
1499
1547
|
status: "connected",
|
|
1500
1548
|
connected: true,
|
|
@@ -1523,7 +1571,7 @@ var HeliosAgentMcpMarketService = class {
|
|
|
1523
1571
|
}
|
|
1524
1572
|
const session = await this.authService.requireSession();
|
|
1525
1573
|
try {
|
|
1526
|
-
const snapshotChunk = await this.dataBridgeClient.getMarketSnapshotChunk(session.accessToken, input);
|
|
1574
|
+
const snapshotChunk = await this.dataBridgeClient.getMarketSnapshotChunk(session.accessToken, withSnapshotDefaults(input));
|
|
1527
1575
|
return {
|
|
1528
1576
|
status: "connected",
|
|
1529
1577
|
connected: true,
|
|
@@ -1535,7 +1583,7 @@ var HeliosAgentMcpMarketService = class {
|
|
|
1535
1583
|
error,
|
|
1536
1584
|
loginOptions,
|
|
1537
1585
|
retry: async (accessToken) => {
|
|
1538
|
-
const snapshotChunk = await this.dataBridgeClient.getMarketSnapshotChunk(accessToken, input);
|
|
1586
|
+
const snapshotChunk = await this.dataBridgeClient.getMarketSnapshotChunk(accessToken, withSnapshotDefaults(input));
|
|
1539
1587
|
return {
|
|
1540
1588
|
status: "connected",
|
|
1541
1589
|
connected: true,
|
|
@@ -2638,7 +2686,7 @@ function createHeliosMarketToolDefinitions(service) {
|
|
|
2638
2686
|
{
|
|
2639
2687
|
name: "helios_market_get_snapshot",
|
|
2640
2688
|
title: "Get Helios Market Snapshot",
|
|
2641
|
-
description: "Returns a compact market snapshot for the selected, all, or explicitly requested symbols.
|
|
2689
|
+
description: "Returns a compact market snapshot for the selected, all, or explicitly requested symbols. By default: the top 50 coins by market cap with the main columns; name symbols to get other coins, pass fields for other columns.",
|
|
2642
2690
|
inputSchema: marketSnapshotInputSchema,
|
|
2643
2691
|
async execute(input) {
|
|
2644
2692
|
const result = marketSnapshotToolOutputSchema.parse(await service.getSnapshot(input));
|
|
@@ -2906,7 +2954,7 @@ async function createHeliosAgentMcpServer(options) {
|
|
|
2906
2954
|
const { McpServer } = await import("@modelcontextprotocol/sdk/server/mcp.js");
|
|
2907
2955
|
const server = new McpServer({
|
|
2908
2956
|
name: "helios",
|
|
2909
|
-
version: "0.2.
|
|
2957
|
+
version: "0.2.5"
|
|
2910
2958
|
});
|
|
2911
2959
|
const sessionStore = options.sessionStore ?? new FileAgentSessionStore(options.sessionPath ?? getDefaultHeliosAgentMcpSessionPath());
|
|
2912
2960
|
const client = new HeliosAgentAuthClient({
|
|
@@ -3024,6 +3072,8 @@ function registerTool(server, tool) {
|
|
|
3024
3072
|
}
|
|
3025
3073
|
// Annotate the CommonJS export names for ESM import in node:
|
|
3026
3074
|
0 && (module.exports = {
|
|
3075
|
+
DEFAULT_SNAPSHOT_FIELDS,
|
|
3076
|
+
DEFAULT_SNAPSHOT_TOP,
|
|
3027
3077
|
FileAgentSessionStore,
|
|
3028
3078
|
HOSTED_RECONNECT_MESSAGE,
|
|
3029
3079
|
HeliosAgentMcpAccountService,
|
|
@@ -3048,5 +3098,7 @@ function registerTool(server, tool) {
|
|
|
3048
3098
|
pendingAgentLoginSchema,
|
|
3049
3099
|
retryAfterUnauthorizedRefresh,
|
|
3050
3100
|
toolAnnotations,
|
|
3051
|
-
|
|
3101
|
+
topOfSnapshot,
|
|
3102
|
+
withDataText,
|
|
3103
|
+
withSnapshotDefaults
|
|
3052
3104
|
});
|
package/dist/index.mjs
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
|
+
DEFAULT_SNAPSHOT_FIELDS,
|
|
3
|
+
DEFAULT_SNAPSHOT_TOP,
|
|
2
4
|
FileAgentSessionStore,
|
|
3
5
|
HOSTED_RECONNECT_MESSAGE,
|
|
4
6
|
HeliosAgentMcpAccountService,
|
|
@@ -23,9 +25,13 @@ import {
|
|
|
23
25
|
pendingAgentLoginSchema,
|
|
24
26
|
retryAfterUnauthorizedRefresh,
|
|
25
27
|
toolAnnotations,
|
|
26
|
-
|
|
27
|
-
|
|
28
|
+
topOfSnapshot,
|
|
29
|
+
withDataText,
|
|
30
|
+
withSnapshotDefaults
|
|
31
|
+
} from "./chunk-7EDI4KLD.mjs";
|
|
28
32
|
export {
|
|
33
|
+
DEFAULT_SNAPSHOT_FIELDS,
|
|
34
|
+
DEFAULT_SNAPSHOT_TOP,
|
|
29
35
|
FileAgentSessionStore,
|
|
30
36
|
HOSTED_RECONNECT_MESSAGE,
|
|
31
37
|
HeliosAgentMcpAccountService,
|
|
@@ -50,5 +56,7 @@ export {
|
|
|
50
56
|
pendingAgentLoginSchema,
|
|
51
57
|
retryAfterUnauthorizedRefresh,
|
|
52
58
|
toolAnnotations,
|
|
53
|
-
|
|
59
|
+
topOfSnapshot,
|
|
60
|
+
withDataText,
|
|
61
|
+
withSnapshotDefaults
|
|
54
62
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pgnio/helios-mcp",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.5",
|
|
4
4
|
"description": "Helios MCP server: connect an AI agent to your Helios account to read markets and your portfolio and to trade on Hyperliquid. Most apps can use the hosted URL https://helios.pgn.io/mcp instead.",
|
|
5
5
|
"license": "UNLICENSED",
|
|
6
6
|
"homepage": "https://helios.pgn.io/?connect=ai",
|