@continuumdao/continuum-node-sdk 1.3.30 → 1.3.32
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/agent-host-catalog.json +7 -0
- package/dist/core/chart/analysis/analysis-agent-view.d.ts.map +1 -1
- package/dist/core/chart/analysis/analysis-agent-view.js +48 -7
- package/dist/core/chart/analysis/analysis-agent-view.js.map +1 -1
- package/dist/core/chart/analysis/analysis-catalog.d.ts +19 -13
- package/dist/core/chart/analysis/analysis-catalog.d.ts.map +1 -1
- package/dist/core/chart/analysis/analysis-catalog.js +132 -106
- package/dist/core/chart/analysis/analysis-catalog.js.map +1 -1
- package/dist/core/chart/analysis/elliott-wave-drawings-tools.d.ts +31 -0
- package/dist/core/chart/analysis/elliott-wave-drawings-tools.d.ts.map +1 -0
- package/dist/core/chart/analysis/elliott-wave-drawings-tools.js +301 -0
- package/dist/core/chart/analysis/elliott-wave-drawings-tools.js.map +1 -0
- package/dist/core/chart/analysis/elliott-waves-analyze-tools.d.ts +161 -0
- package/dist/core/chart/analysis/elliott-waves-analyze-tools.d.ts.map +1 -0
- package/dist/core/chart/analysis/elliott-waves-analyze-tools.js +139 -0
- package/dist/core/chart/analysis/elliott-waves-analyze-tools.js.map +1 -0
- package/dist/core/chart/analysis/trade-setups/build-trade-uniswap-limit.d.ts +10 -0
- package/dist/core/chart/analysis/trade-setups/build-trade-uniswap-limit.d.ts.map +1 -0
- package/dist/core/chart/analysis/trade-setups/build-trade-uniswap-limit.js +123 -0
- package/dist/core/chart/analysis/trade-setups/build-trade-uniswap-limit.js.map +1 -0
- package/dist/core/chart/analysis/trade-setups/build-trade.d.ts +29 -1
- package/dist/core/chart/analysis/trade-setups/build-trade.d.ts.map +1 -1
- package/dist/core/chart/analysis/trade-setups/build-trade.js +267 -8
- package/dist/core/chart/analysis/trade-setups/build-trade.js.map +1 -1
- package/dist/core/chart/analysis/trade-setups/elliott-waves-trade-setup.d.ts +50 -0
- package/dist/core/chart/analysis/trade-setups/elliott-waves-trade-setup.d.ts.map +1 -0
- package/dist/core/chart/analysis/trade-setups/elliott-waves-trade-setup.js +116 -0
- package/dist/core/chart/analysis/trade-setups/elliott-waves-trade-setup.js.map +1 -0
- package/dist/core/chart/analysis/trade-setups/shared.d.ts +1 -1
- package/dist/core/chart/analysis/trade-setups/shared.d.ts.map +1 -1
- package/dist/core/chart/analysis/trade-setups/shared.js +2 -0
- package/dist/core/chart/analysis/trade-setups/shared.js.map +1 -1
- package/dist/core/chart/analysis/trade-setups/trade-desk-defaults.d.ts +13 -1
- package/dist/core/chart/analysis/trade-setups/trade-desk-defaults.d.ts.map +1 -1
- package/dist/core/chart/analysis/trade-setups/trade-desk-defaults.js +11 -0
- package/dist/core/chart/analysis/trade-setups/trade-desk-defaults.js.map +1 -1
- package/dist/core/chart/analysis/trade-setups/trade-idea-list.d.ts +2 -0
- package/dist/core/chart/analysis/trade-setups/trade-idea-list.d.ts.map +1 -1
- package/dist/core/chart/analysis/trade-setups/trade-idea-list.js +38 -3
- package/dist/core/chart/analysis/trade-setups/trade-idea-list.js.map +1 -1
- package/dist/core/chart/analysis/trade-setups/trade-idea.d.ts +4 -0
- package/dist/core/chart/analysis/trade-setups/trade-idea.d.ts.map +1 -1
- package/dist/core/chart/analysis/trade-setups/trade-idea.js +4 -0
- package/dist/core/chart/analysis/trade-setups/trade-idea.js.map +1 -1
- package/dist/core/chart/analysis/trade-setups/trade-purpose-format.d.ts +2 -0
- package/dist/core/chart/analysis/trade-setups/trade-purpose-format.d.ts.map +1 -1
- package/dist/core/chart/analysis/trade-setups/trade-purpose-format.js +6 -0
- package/dist/core/chart/analysis/trade-setups/trade-purpose-format.js.map +1 -1
- package/dist/core/chart/analysis/trade-setups/trade-setup-selection.d.ts +8 -1
- package/dist/core/chart/analysis/trade-setups/trade-setup-selection.d.ts.map +1 -1
- package/dist/core/chart/analysis/trade-setups/trade-setup-selection.js +13 -0
- package/dist/core/chart/analysis/trade-setups/trade-setup-selection.js.map +1 -1
- package/dist/core/chart/analysis/trade-setups/trend-structure-trade-setup.d.ts +20 -0
- package/dist/core/chart/analysis/trade-setups/trend-structure-trade-setup.d.ts.map +1 -1
- package/dist/core/chart/analysis/trade-setups/trend-structure-trade-setup.js +54 -0
- package/dist/core/chart/analysis/trade-setups/trend-structure-trade-setup.js.map +1 -1
- package/dist/core/chart/analysis/trade-setups/uniswap-tpsl-monitor.d.ts +41 -0
- package/dist/core/chart/analysis/trade-setups/uniswap-tpsl-monitor.d.ts.map +1 -0
- package/dist/core/chart/analysis/trade-setups/uniswap-tpsl-monitor.js +80 -0
- package/dist/core/chart/analysis/trade-setups/uniswap-tpsl-monitor.js.map +1 -0
- package/dist/core/chart/fetch-agent-view.d.ts +17 -0
- package/dist/core/chart/fetch-agent-view.d.ts.map +1 -0
- package/dist/core/chart/fetch-agent-view.js +39 -0
- package/dist/core/chart/fetch-agent-view.js.map +1 -0
- package/dist/core/chart/live/binding-extract.d.ts.map +1 -1
- package/dist/core/chart/live/binding-extract.js +34 -2
- package/dist/core/chart/live/binding-extract.js.map +1 -1
- package/dist/core/chart/live/fetch-tick.d.ts.map +1 -1
- package/dist/core/chart/live/fetch-tick.js +25 -1
- package/dist/core/chart/live/fetch-tick.js.map +1 -1
- package/dist/core/chart/live/index.d.ts +1 -1
- package/dist/core/chart/live/index.d.ts.map +1 -1
- package/dist/core/chart/live/index.js +1 -1
- package/dist/core/chart/live/index.js.map +1 -1
- package/dist/core/chart/live/schemas.d.ts +1 -0
- package/dist/core/chart/live/schemas.d.ts.map +1 -1
- package/dist/core/chart/live/schemas.js +1 -0
- package/dist/core/chart/live/schemas.js.map +1 -1
- package/dist/core/chart/overlay-schemas.d.ts +241 -0
- package/dist/core/chart/overlay-schemas.d.ts.map +1 -1
- package/dist/core/chart/overlay-schemas.js +63 -0
- package/dist/core/chart/overlay-schemas.js.map +1 -1
- package/dist/core/chart/overlays.d.ts.map +1 -1
- package/dist/core/chart/overlays.js +72 -1
- package/dist/core/chart/overlays.js.map +1 -1
- package/dist/core/chart/prepare-from-rows.d.ts +60 -0
- package/dist/core/chart/prepare-from-rows.d.ts.map +1 -1
- package/dist/core/chart/schemas.d.ts +240 -0
- package/dist/core/chart/schemas.d.ts.map +1 -1
- package/dist/core/coinmarketcap/schemas.d.ts +2 -2
- package/dist/core/elliott-waves/analyze.d.ts +38 -0
- package/dist/core/elliott-waves/analyze.d.ts.map +1 -0
- package/dist/core/elliott-waves/analyze.js +276 -0
- package/dist/core/elliott-waves/analyze.js.map +1 -0
- package/dist/core/elliott-waves/constants.d.ts +24 -0
- package/dist/core/elliott-waves/constants.d.ts.map +1 -0
- package/dist/core/elliott-waves/constants.js +24 -0
- package/dist/core/elliott-waves/constants.js.map +1 -0
- package/dist/core/elliott-waves/data-requirements.d.ts +22 -0
- package/dist/core/elliott-waves/data-requirements.d.ts.map +1 -0
- package/dist/core/elliott-waves/data-requirements.js +105 -0
- package/dist/core/elliott-waves/data-requirements.js.map +1 -0
- package/dist/core/elliott-waves/fibonacci-projector.d.ts +7 -0
- package/dist/core/elliott-waves/fibonacci-projector.d.ts.map +1 -0
- package/dist/core/elliott-waves/fibonacci-projector.js +20 -0
- package/dist/core/elliott-waves/fibonacci-projector.js.map +1 -0
- package/dist/core/elliott-waves/impulse-detector.d.ts +11 -0
- package/dist/core/elliott-waves/impulse-detector.d.ts.map +1 -0
- package/dist/core/elliott-waves/impulse-detector.js +294 -0
- package/dist/core/elliott-waves/impulse-detector.js.map +1 -0
- package/dist/core/elliott-waves/index.d.ts +10 -0
- package/dist/core/elliott-waves/index.d.ts.map +1 -0
- package/dist/core/elliott-waves/index.js +10 -0
- package/dist/core/elliott-waves/index.js.map +1 -0
- package/dist/core/elliott-waves/pivot-scanner.d.ts +40 -0
- package/dist/core/elliott-waves/pivot-scanner.d.ts.map +1 -0
- package/dist/core/elliott-waves/pivot-scanner.js +121 -0
- package/dist/core/elliott-waves/pivot-scanner.js.map +1 -0
- package/dist/core/elliott-waves/projection-builder.d.ts +32 -0
- package/dist/core/elliott-waves/projection-builder.d.ts.map +1 -0
- package/dist/core/elliott-waves/projection-builder.js +153 -0
- package/dist/core/elliott-waves/projection-builder.js.map +1 -0
- package/dist/core/elliott-waves/types.d.ts +117 -0
- package/dist/core/elliott-waves/types.d.ts.map +1 -0
- package/dist/core/elliott-waves/types.js +6 -0
- package/dist/core/elliott-waves/types.js.map +1 -0
- package/dist/core/elliott-waves/wave-labeler.d.ts +34 -0
- package/dist/core/elliott-waves/wave-labeler.d.ts.map +1 -0
- package/dist/core/elliott-waves/wave-labeler.js +95 -0
- package/dist/core/elliott-waves/wave-labeler.js.map +1 -0
- package/dist/core/elliott-waves/wave-math.d.ts +10 -0
- package/dist/core/elliott-waves/wave-math.d.ts.map +1 -0
- package/dist/core/elliott-waves/wave-math.js +61 -0
- package/dist/core/elliott-waves/wave-math.js.map +1 -0
- package/dist/core/mpc/broadcast-sign-result.d.ts +1 -0
- package/dist/core/mpc/broadcast-sign-result.d.ts.map +1 -1
- package/dist/core/mpc/broadcast-sign-result.js +129 -0
- package/dist/core/mpc/broadcast-sign-result.js.map +1 -1
- package/dist/core/mpc/deliver-arcus-exchange.d.ts +17 -0
- package/dist/core/mpc/deliver-arcus-exchange.d.ts.map +1 -0
- package/dist/core/mpc/deliver-arcus-exchange.js +380 -0
- package/dist/core/mpc/deliver-arcus-exchange.js.map +1 -0
- package/dist/core/mpc/deliver-hyperliquid-exchange.d.ts +13 -0
- package/dist/core/mpc/deliver-hyperliquid-exchange.d.ts.map +1 -0
- package/dist/core/mpc/deliver-hyperliquid-exchange.js +93 -0
- package/dist/core/mpc/deliver-hyperliquid-exchange.js.map +1 -0
- package/dist/core/mpc/deliver-personal-sign.d.ts +13 -0
- package/dist/core/mpc/deliver-personal-sign.d.ts.map +1 -0
- package/dist/core/mpc/deliver-personal-sign.js +17 -0
- package/dist/core/mpc/deliver-personal-sign.js.map +1 -0
- package/dist/core/mpc/deliver-uniswapx-limit-order.d.ts +6 -0
- package/dist/core/mpc/deliver-uniswapx-limit-order.d.ts.map +1 -0
- package/dist/core/mpc/deliver-uniswapx-limit-order.js +59 -0
- package/dist/core/mpc/deliver-uniswapx-limit-order.js.map +1 -0
- package/dist/core/mpc/eip712-sign-request.d.ts +8 -0
- package/dist/core/mpc/eip712-sign-request.d.ts.map +1 -0
- package/dist/core/mpc/eip712-sign-request.js +65 -0
- package/dist/core/mpc/eip712-sign-request.js.map +1 -0
- package/dist/core/mpc/trigger-sign-result.d.ts.map +1 -1
- package/dist/core/mpc/trigger-sign-result.js +15 -1
- package/dist/core/mpc/trigger-sign-result.js.map +1 -1
- package/dist/mcp/agent-host-catalog.d.ts +1 -1
- package/dist/mcp/agent-host-catalog.d.ts.map +1 -1
- package/dist/mcp/agent-host-catalog.js +2 -1
- package/dist/mcp/agent-host-catalog.js.map +1 -1
- package/dist/mcp/chart.d.ts.map +1 -1
- package/dist/mcp/chart.js +33 -4
- package/dist/mcp/chart.js.map +1 -1
- package/dist/mcp/deferred/tool-group-map.d.ts.map +1 -1
- package/dist/mcp/deferred/tool-group-map.js +7 -0
- package/dist/mcp/deferred/tool-group-map.js.map +1 -1
- package/dist/mcp/defi/bitquery-api-key.d.ts +16 -0
- package/dist/mcp/defi/bitquery-api-key.d.ts.map +1 -0
- package/dist/mcp/defi/bitquery-api-key.js +86 -0
- package/dist/mcp/defi/bitquery-api-key.js.map +1 -0
- package/dist/mcp/defi/catalog-adapter.d.ts +3 -2
- package/dist/mcp/defi/catalog-adapter.d.ts.map +1 -1
- package/dist/mcp/defi/catalog-adapter.js +7 -2
- package/dist/mcp/defi/catalog-adapter.js.map +1 -1
- package/dist/mcp/defi/defi-protocol-fetch-meta.d.ts.map +1 -1
- package/dist/mcp/defi/defi-protocol-fetch-meta.js +8 -4
- package/dist/mcp/defi/defi-protocol-fetch-meta.js.map +1 -1
- package/dist/mcp/defi/eip712-multisign.d.ts +26 -0
- package/dist/mcp/defi/eip712-multisign.d.ts.map +1 -0
- package/dist/mcp/defi/eip712-multisign.js +74 -0
- package/dist/mcp/defi/eip712-multisign.js.map +1 -0
- package/dist/mcp/defi/handler.d.ts.map +1 -1
- package/dist/mcp/defi/handler.js +46 -29
- package/dist/mcp/defi/handler.js.map +1 -1
- package/dist/mcp/defi/ohlcv-chart-workflow.d.ts +4 -2
- package/dist/mcp/defi/ohlcv-chart-workflow.d.ts.map +1 -1
- package/dist/mcp/defi/ohlcv-chart-workflow.js +20 -8
- package/dist/mcp/defi/ohlcv-chart-workflow.js.map +1 -1
- package/dist/mcp/defi/register-protocol-tools.d.ts.map +1 -1
- package/dist/mcp/defi/register-protocol-tools.js +36 -5
- package/dist/mcp/defi/register-protocol-tools.js.map +1 -1
- package/dist/mcp/defi/tool-schemas.d.ts +1 -3
- package/dist/mcp/defi/tool-schemas.d.ts.map +1 -1
- package/dist/mcp/defi/uniswap-api-key.d.ts.map +1 -1
- package/dist/mcp/defi/uniswap-api-key.js +3 -0
- package/dist/mcp/defi/uniswap-api-key.js.map +1 -1
- package/dist/mcp/defi/uniswap-limit-order-input.d.ts +10 -0
- package/dist/mcp/defi/uniswap-limit-order-input.d.ts.map +1 -0
- package/dist/mcp/defi/uniswap-limit-order-input.js +39 -0
- package/dist/mcp/defi/uniswap-limit-order-input.js.map +1 -0
- package/dist/mcp/defi/uniswap-quote-input.d.ts.map +1 -1
- package/dist/mcp/defi/uniswap-quote-input.js +45 -26
- package/dist/mcp/defi/uniswap-quote-input.js.map +1 -1
- package/dist/mcp/defi/uniswap-v4-ohlcv-chains.d.ts +2 -2
- package/dist/mcp/defi/uniswap-v4-ohlcv-chains.js +3 -3
- package/dist/mcp/defi/uniswap-v4-ohlcv-chains.js.map +1 -1
- package/dist/mcp/ohlcv-session-wrapper.d.ts.map +1 -1
- package/dist/mcp/ohlcv-session-wrapper.js +56 -2
- package/dist/mcp/ohlcv-session-wrapper.js.map +1 -1
- package/dist/mcp/resources/agent-cron-jobs.md +22 -1
- package/dist/mcp/resources/chart-analysis.md +37 -3
- package/dist/mcp/resources/chart.md +5 -2
- package/dist/mcp/resources/uniswap-tpsl-monitor-cron.example.md +27 -0
- package/dist/mcp/trade-tools.d.ts.map +1 -1
- package/dist/mcp/trade-tools.js +192 -4
- package/dist/mcp/trade-tools.js.map +1 -1
- package/package.json +2 -2
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { zeroAddress } from 'viem';
|
|
2
2
|
import { buildManagementUrl } from '../../api/management-api.js';
|
|
3
3
|
import { enrichMultisignContext } from './input-adapter.js';
|
|
4
|
+
import { isUniswapLimitOrderKeyTool, UNISWAP_V4_FETCH_LIMIT_ORDERS_TOOL_NAME, UNISWAP_V4_LIMIT_ORDER_QUOTE_TOOL_NAME, } from './uniswap-limit-order-input.js';
|
|
4
5
|
export const UNISWAP_V4_QUOTE_TOOL_NAME = 'ctm_uniswap_v4_quote';
|
|
5
6
|
const MULTISIGN_ENRICHMENT_KEYS = [
|
|
6
7
|
'keyGenId',
|
|
@@ -34,40 +35,31 @@ function normalizeNativeTokenIn(tokenIn) {
|
|
|
34
35
|
}
|
|
35
36
|
return tokenIn;
|
|
36
37
|
}
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
*/
|
|
41
|
-
export async function adaptUniswapQuoteMcpInput(config, toolName, input) {
|
|
42
|
-
if (toolName !== UNISWAP_V4_QUOTE_TOOL_NAME) {
|
|
43
|
-
return { ok: true, data: input };
|
|
38
|
+
function resolveKeyGenId(adapted) {
|
|
39
|
+
if (typeof adapted.keyGenId === 'string' && adapted.keyGenId.trim()) {
|
|
40
|
+
return adapted.keyGenId.trim();
|
|
44
41
|
}
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
if (adapted.permit2Disabled !== true && adapted.permit2Disabled !== false) {
|
|
48
|
-
adapted.permit2Disabled = true;
|
|
42
|
+
if (typeof adapted.keyGen === 'string' && adapted.keyGen.trim()) {
|
|
43
|
+
return adapted.keyGen.trim();
|
|
49
44
|
}
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
adapted.slippage = 0.5;
|
|
55
|
-
}
|
|
56
|
-
const keyGenId = typeof adapted.keyGenId === 'string' && adapted.keyGenId.trim()
|
|
57
|
-
? adapted.keyGenId.trim()
|
|
58
|
-
: undefined;
|
|
45
|
+
return undefined;
|
|
46
|
+
}
|
|
47
|
+
async function resolveUniswapSwapperFromKeyGen(config, adapted, defaultChainId) {
|
|
48
|
+
const keyGenId = resolveKeyGenId(adapted);
|
|
59
49
|
const swapperProvided = typeof adapted.swapper === 'string' && adapted.swapper.trim();
|
|
60
50
|
if (keyGenId && !swapperProvided) {
|
|
61
51
|
const enriched = await enrichMultisignContext(config, {
|
|
62
52
|
keyGenId,
|
|
63
|
-
chainId: adapted.chainId,
|
|
53
|
+
chainId: adapted.chainId ?? defaultChainId,
|
|
64
54
|
});
|
|
65
55
|
if (!enriched.ok) {
|
|
66
56
|
return enriched;
|
|
67
57
|
}
|
|
68
58
|
adapted.swapper = enriched.data.executorAddress;
|
|
69
59
|
adapted.keyGen = keyGenId;
|
|
70
|
-
adapted.chainId
|
|
60
|
+
if (adapted.chainId == null) {
|
|
61
|
+
adapted.chainId = enriched.data.chainId;
|
|
62
|
+
}
|
|
71
63
|
}
|
|
72
64
|
if (typeof adapted.keyGen === 'object' && adapted.keyGen !== null) {
|
|
73
65
|
delete adapted.keyGen;
|
|
@@ -75,9 +67,7 @@ export async function adaptUniswapQuoteMcpInput(config, toolName, input) {
|
|
|
75
67
|
if (isBlank(adapted.swapper) && typeof adapted.executorAddress === 'string') {
|
|
76
68
|
adapted.swapper = adapted.executorAddress.trim();
|
|
77
69
|
}
|
|
78
|
-
const keyGenStr =
|
|
79
|
-
? adapted.keyGen.trim()
|
|
80
|
-
: undefined;
|
|
70
|
+
const keyGenStr = resolveKeyGenId(adapted);
|
|
81
71
|
if (keyGenStr && isBlank(adapted.swapper)) {
|
|
82
72
|
adapted.managementNodeUrl = managementNodeBaseUrl(config);
|
|
83
73
|
adapted.keyGen = keyGenStr;
|
|
@@ -90,7 +80,36 @@ export async function adaptUniswapQuoteMcpInput(config, toolName, input) {
|
|
|
90
80
|
}
|
|
91
81
|
return { ok: true, data: adapted };
|
|
92
82
|
}
|
|
83
|
+
/**
|
|
84
|
+
* Align MCP quote input with continuumdao-node-app POST /api/uniswap/quote:
|
|
85
|
+
* permit2Disabled true, slippage 0.5, keyGenId → swapper, managementNodeUrl from config.
|
|
86
|
+
*/
|
|
87
|
+
export async function adaptUniswapQuoteMcpInput(config, toolName, input) {
|
|
88
|
+
if (toolName === UNISWAP_V4_LIMIT_ORDER_QUOTE_TOOL_NAME) {
|
|
89
|
+
const adapted = { ...input };
|
|
90
|
+
adapted.tokenIn = normalizeNativeTokenIn(adapted.tokenIn);
|
|
91
|
+
return resolveUniswapSwapperFromKeyGen(config, adapted, 1);
|
|
92
|
+
}
|
|
93
|
+
if (toolName === UNISWAP_V4_FETCH_LIMIT_ORDERS_TOOL_NAME) {
|
|
94
|
+
return resolveUniswapSwapperFromKeyGen(config, { ...input }, 1);
|
|
95
|
+
}
|
|
96
|
+
if (toolName !== UNISWAP_V4_QUOTE_TOOL_NAME) {
|
|
97
|
+
return { ok: true, data: input };
|
|
98
|
+
}
|
|
99
|
+
const adapted = { ...input };
|
|
100
|
+
adapted.tokenIn = normalizeNativeTokenIn(adapted.tokenIn);
|
|
101
|
+
if (adapted.permit2Disabled !== true && adapted.permit2Disabled !== false) {
|
|
102
|
+
adapted.permit2Disabled = true;
|
|
103
|
+
}
|
|
104
|
+
if ((adapted.slippage === undefined ||
|
|
105
|
+
adapted.slippage === null ||
|
|
106
|
+
String(adapted.slippage).trim() === '') &&
|
|
107
|
+
adapted.permit2Disabled === true) {
|
|
108
|
+
adapted.slippage = 0.5;
|
|
109
|
+
}
|
|
110
|
+
return resolveUniswapSwapperFromKeyGen(config, adapted);
|
|
111
|
+
}
|
|
93
112
|
export function isUniswapQuoteTool(toolName) {
|
|
94
|
-
return toolName === UNISWAP_V4_QUOTE_TOOL_NAME;
|
|
113
|
+
return (toolName === UNISWAP_V4_QUOTE_TOOL_NAME || isUniswapLimitOrderKeyTool(toolName));
|
|
95
114
|
}
|
|
96
115
|
//# sourceMappingURL=uniswap-quote-input.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uniswap-quote-input.js","sourceRoot":"","sources":["../../../src/mcp/defi/uniswap-quote-input.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAC,MAAM,MAAM,CAAC;AACjC,OAAO,EAAC,kBAAkB,EAAC,MAAM,6BAA6B,CAAC;AAG/D,OAAO,EAAC,sBAAsB,EAAC,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"uniswap-quote-input.js","sourceRoot":"","sources":["../../../src/mcp/defi/uniswap-quote-input.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Chain IDs with
|
|
3
|
-
* Keep aligned with `
|
|
2
|
+
* Chain IDs with Uniswap V4 OHLCV (The Graph subgraph and/or Bitquery).
|
|
3
|
+
* Keep aligned with `uniswapV4OhlcvSupportedChainIds()` in ctm-mpc-defi.
|
|
4
4
|
*/
|
|
5
5
|
export declare const UNISWAP_V4_OHLCV_SUPPORTED_CHAIN_IDS: readonly number[];
|
|
6
6
|
export declare function uniswapV4OhlcvSupportedChainIds(): readonly number[];
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Chain IDs with
|
|
3
|
-
* Keep aligned with `
|
|
2
|
+
* Chain IDs with Uniswap V4 OHLCV (The Graph subgraph and/or Bitquery).
|
|
3
|
+
* Keep aligned with `uniswapV4OhlcvSupportedChainIds()` in ctm-mpc-defi.
|
|
4
4
|
*/
|
|
5
5
|
export const UNISWAP_V4_OHLCV_SUPPORTED_CHAIN_IDS = [
|
|
6
|
-
1, 10, 56, 130, 137, 8453, 42161, 43114, 81457,
|
|
6
|
+
1, 10, 56, 130, 137, 4663, 8453, 42161, 43114, 81457,
|
|
7
7
|
];
|
|
8
8
|
export function uniswapV4OhlcvSupportedChainIds() {
|
|
9
9
|
return UNISWAP_V4_OHLCV_SUPPORTED_CHAIN_IDS;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uniswap-v4-ohlcv-chains.js","sourceRoot":"","sources":["../../../src/mcp/defi/uniswap-v4-ohlcv-chains.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAsB;IACtE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;
|
|
1
|
+
{"version":3,"file":"uniswap-v4-ohlcv-chains.js","sourceRoot":"","sources":["../../../src/mcp/defi/uniswap-v4-ohlcv-chains.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAsB;IACtE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;CACpD,CAAC;AAEF,MAAM,UAAU,+BAA+B;IAC9C,OAAO,oCAAoC,CAAC;AAC7C,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ohlcv-session-wrapper.d.ts","sourceRoot":"","sources":["../../src/mcp/ohlcv-session-wrapper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,oCAAoC,CAAC;AACvE,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,yCAAyC,CAAC;AACvE,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"ohlcv-session-wrapper.d.ts","sourceRoot":"","sources":["../../src/mcp/ohlcv-session-wrapper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,oCAAoC,CAAC;AACvE,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,yCAAyC,CAAC;AACvE,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,mBAAmB,CAAC;AAmBjD,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,0BAA0B,CAAC;AAwKjE,iBAAS,uBAAuB,CAC/B,MAAM,EAAE,SAAS,CAAC,kBAAkB,CAAC,EACrC,UAAU,EAAE,MAAM,GAChB,cAAc,CAmBhB;AAED,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAwDtE;AAED,OAAO,EAAC,uBAAuB,EAAC,CAAC"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { bindOhlcvSessionFetch, buildOhlcvSessionBindHint, getBoundOhlcvFetch, resolveOhlcvSessionInput, } from '../core/chart/ohlcv-session-store.js';
|
|
2
2
|
import { bindChartPatternAnalysis, resolveChartPatternApplyInput, } from '../core/chart/chart-pattern-session-store.js';
|
|
3
|
+
import { attachFetchMetaToPayload, buildFetchLoadMeta, slimFetchOutputForAgent, } from '../core/chart/fetch-agent-view.js';
|
|
4
|
+
import { extractChartMetadataFromFetchPayload } from '../core/chart/fetch-metadata.js';
|
|
3
5
|
import { extractOhlcvBarsFromUnknown } from '../core/chart/fetch-result.js';
|
|
4
6
|
import { slimChartOutputForAgent } from '../core/chart/chart-agent-view.js';
|
|
5
7
|
import { getOhlcvSessionKey } from './ohlcv-session-context.js';
|
|
@@ -7,6 +9,7 @@ import { mcpStructuredContent, sdkResultToCallToolResult } from './tool-utils.js
|
|
|
7
9
|
const OHLCV_CONSUMER_TOOL_NAMES = new Set([
|
|
8
10
|
'prepare_chart_from_rows',
|
|
9
11
|
'analyze_trend_structure',
|
|
12
|
+
'analyze_elliott_waves',
|
|
10
13
|
'analyze_key_levels',
|
|
11
14
|
'analyze_key_level_fibonacci',
|
|
12
15
|
'analyze_momentum',
|
|
@@ -19,8 +22,10 @@ const OHLCV_CONSUMER_TOOL_NAMES = new Set([
|
|
|
19
22
|
'calculate_fibonacci_range',
|
|
20
23
|
'calculate_trend_lines',
|
|
21
24
|
'calculate_chart_pattern_drawings',
|
|
25
|
+
'calculate_elliott_wave_drawings',
|
|
22
26
|
'apply_chart_drawings',
|
|
23
27
|
'apply_chart_pattern_drawings',
|
|
28
|
+
'apply_elliott_wave_drawings',
|
|
24
29
|
'apply_trend_line_drawings',
|
|
25
30
|
]);
|
|
26
31
|
const PATTERN_APPLY_TOOL_NAMES = new Set(['apply_chart_pattern_drawings']);
|
|
@@ -49,6 +54,13 @@ function attachSessionBindToStructured(data, hint) {
|
|
|
49
54
|
meta.sessionBind = hint;
|
|
50
55
|
return { ...data, meta };
|
|
51
56
|
}
|
|
57
|
+
function resolveFetchBindTitle(payload, inputTitle) {
|
|
58
|
+
const explicit = inputTitle?.trim();
|
|
59
|
+
if (explicit) {
|
|
60
|
+
return explicit;
|
|
61
|
+
}
|
|
62
|
+
return extractChartMetadataFromFetchPayload(payload).title;
|
|
63
|
+
}
|
|
52
64
|
function maybeBindFromPayload(sessionKey, payload, title) {
|
|
53
65
|
if (payload == null) {
|
|
54
66
|
return;
|
|
@@ -57,7 +69,7 @@ function maybeBindFromPayload(sessionKey, payload, title) {
|
|
|
57
69
|
if (!bars?.length) {
|
|
58
70
|
return;
|
|
59
71
|
}
|
|
60
|
-
bindOhlcvSessionFetch(sessionKey, payload, { title });
|
|
72
|
+
bindOhlcvSessionFetch(sessionKey, payload, { title: resolveFetchBindTitle(payload, title) });
|
|
61
73
|
}
|
|
62
74
|
function maybeBindChartPatternAnalysis(sessionKey, toolName, result, inputTitle) {
|
|
63
75
|
if (result.isError || toolName !== 'analyze_chart_patterns') {
|
|
@@ -82,7 +94,46 @@ function maybeBindFromCallToolResult(sessionKey, toolName, result, inputTitle) {
|
|
|
82
94
|
if (result.isError || !result.structuredContent || !isFetchOhlcvTool(toolName)) {
|
|
83
95
|
return;
|
|
84
96
|
}
|
|
85
|
-
|
|
97
|
+
const payload = result.structuredContent;
|
|
98
|
+
const record = payload && typeof payload === 'object' && !Array.isArray(payload)
|
|
99
|
+
? payload
|
|
100
|
+
: undefined;
|
|
101
|
+
const bindPayload = record && record.meta && typeof record.meta === 'object' && !Array.isArray(record.meta)
|
|
102
|
+
? Object.fromEntries(Object.entries(record).filter(([key]) => key !== 'meta'))
|
|
103
|
+
: payload;
|
|
104
|
+
maybeBindFromPayload(sessionKey, bindPayload, inputTitle);
|
|
105
|
+
}
|
|
106
|
+
function slimFetchCallToolResult(result, sessionKey, inputTitle) {
|
|
107
|
+
if (result.isError || !result.structuredContent) {
|
|
108
|
+
return result;
|
|
109
|
+
}
|
|
110
|
+
const rawPayload = result.structuredContent;
|
|
111
|
+
const record = rawPayload && typeof rawPayload === 'object' && !Array.isArray(rawPayload)
|
|
112
|
+
? rawPayload
|
|
113
|
+
: undefined;
|
|
114
|
+
const payload = record && record.meta && typeof record.meta === 'object' && !Array.isArray(record.meta)
|
|
115
|
+
? Object.fromEntries(Object.entries(record).filter(([key]) => key !== 'meta'))
|
|
116
|
+
: rawPayload;
|
|
117
|
+
const bound = getBoundOhlcvFetch(sessionKey);
|
|
118
|
+
const bindHint = bound ? buildOhlcvSessionBindHint(bound) : undefined;
|
|
119
|
+
const meta = buildFetchLoadMeta(payload, {
|
|
120
|
+
title: resolveFetchBindTitle(payload, inputTitle),
|
|
121
|
+
fingerprint: bound?.fingerprint,
|
|
122
|
+
sessionBind: bindHint,
|
|
123
|
+
});
|
|
124
|
+
if (!meta) {
|
|
125
|
+
return result;
|
|
126
|
+
}
|
|
127
|
+
const structuredContent = attachFetchMetaToPayload(payload, meta);
|
|
128
|
+
const slimStructured = slimFetchOutputForAgent(payload, meta);
|
|
129
|
+
const prefixLines = [meta.dataPolicy];
|
|
130
|
+
if (meta.warnings?.length) {
|
|
131
|
+
prefixLines.push(...meta.warnings);
|
|
132
|
+
}
|
|
133
|
+
return {
|
|
134
|
+
content: [{ type: 'text', text: `${prefixLines.join('\n')}\n${JSON.stringify(slimStructured)}` }],
|
|
135
|
+
structuredContent,
|
|
136
|
+
};
|
|
86
137
|
}
|
|
87
138
|
function slimChartCallToolResult(result, prefixText) {
|
|
88
139
|
if (!result.ok) {
|
|
@@ -130,6 +181,9 @@ export function installOhlcvSessionToolWrapper(server) {
|
|
|
130
181
|
: undefined;
|
|
131
182
|
maybeBindFromCallToolResult(sessionKey, name, result, inputTitle);
|
|
132
183
|
maybeBindChartPatternAnalysis(sessionKey, name, result, inputTitle);
|
|
184
|
+
if (isFetchOhlcvTool(name)) {
|
|
185
|
+
return slimFetchCallToolResult(result, sessionKey, inputTitle);
|
|
186
|
+
}
|
|
133
187
|
return result;
|
|
134
188
|
};
|
|
135
189
|
return originalRegister(name, config, wrappedHandler);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ohlcv-session-wrapper.js","sourceRoot":"","sources":["../../src/mcp/ohlcv-session-wrapper.ts"],"names":[],"mappings":"AAGA,OAAO,EACN,qBAAqB,EACrB,yBAAyB,EACzB,kBAAkB,EAClB,wBAAwB,GAExB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EACN,wBAAwB,EACxB,6BAA6B,GAC7B,MAAM,8CAA8C,CAAC;AACtD,OAAO,EAAC,2BAA2B,EAAC,MAAM,+BAA+B,CAAC;AAE1E,OAAO,EAAC,uBAAuB,EAAC,MAAM,mCAAmC,CAAC;AAC1E,OAAO,EAAC,kBAAkB,EAAC,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAC,oBAAoB,EAAE,yBAAyB,EAAC,MAAM,iBAAiB,CAAC;AAEhF,MAAM,yBAAyB,GAAG,IAAI,GAAG,CAAC;IACzC,yBAAyB;IACzB,yBAAyB;IACzB,oBAAoB;IACpB,6BAA6B;IAC7B,kBAAkB;IAClB,0BAA0B;IAC1B,yBAAyB;IACzB,8BAA8B;IAC9B,wBAAwB;IACxB,sBAAsB;IACtB,wBAAwB;IACxB,2BAA2B;IAC3B,uBAAuB;IACvB,kCAAkC;IAClC,sBAAsB;IACtB,8BAA8B;IAC9B,2BAA2B;CAC3B,CAAC,CAAC;AAEH,MAAM,wBAAwB,GAAG,IAAI,GAAG,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC;AAE3E,SAAS,iBAAiB,CAAC,IAAY;IACtC,OAAO,yBAAyB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC5C,CAAC;AAED,SAAS,wBAAwB,CAAC,IAAY;IAC7C,OAAO,wBAAwB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC3C,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAY;IACrC,OAAO,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;AACrC,CAAC;AAED,SAAS,aAAa,CAAC,GAAY;IAClC,IAAI,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3D,OAAO,GAA8B,CAAC;IACvC,CAAC;IACD,OAAO,EAAE,CAAC;AACX,CAAC;AAED,SAAS,6BAA6B,CACrC,IAA6B,EAC7B,IAAkD;IAElD,IAAI,CAAC,IAAI,EAAE,CAAC;QACX,OAAO,IAAI,CAAC;IACb,CAAC;IACD,MAAM,IAAI,GACT,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;QACtE,CAAC,CAAC,EAAC,GAAI,IAAI,CAAC,IAAgC,EAAC;QAC7C,CAAC,CAAC,EAAE,CAAC;IACP,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IACxB,OAAO,EAAC,GAAG,IAAI,EAAE,IAAI,EAAC,CAAC;AACxB,CAAC;AAED,SAAS,oBAAoB,CAAC,UAAkB,EAAE,OAAgB,EAAE,KAAc;IACjF,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;QACrB,OAAO;IACR,CAAC;IACD,MAAM,IAAI,GAAG,2BAA2B,CAAC,OAAO,EAAE,EAAC,SAAS,EAAE,MAAM,EAAC,CAAC,CAAC;IACvE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;QACnB,OAAO;IACR,CAAC;IACD,qBAAqB,CAAC,UAAU,EAAE,OAAO,EAAE,EAAC,KAAK,EAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"ohlcv-session-wrapper.js","sourceRoot":"","sources":["../../src/mcp/ohlcv-session-wrapper.ts"],"names":[],"mappings":"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"}
|
|
@@ -70,6 +70,27 @@ purposeText: Generated by cron.
|
|
|
70
70
|
```
|
|
71
71
|
````
|
|
72
72
|
|
|
73
|
-
Fields: `protocolId`, `chainId`, `tradeIdeaNumber`, `szHuman`, `sizeUsdHuman`, `collateralToken`, `collateralAmountHuman`, `marketKind` (`perp`|`spot`), `tif`, `useCustomGas`, `purposeText` (additional suffix appended to auto-generated trade summary; defaults to **`Generated by cron.`** when omitted). Total **`purposeText`** on the multisign request must stay within **256 characters** (auto summary + suffix).
|
|
73
|
+
Fields: `protocolId`, `chainId`, `tradeIdeaNumber`, `szHuman`, `sizeUsdHuman`, `collateralToken`, `collateralAmountHuman`, `marketKind` (`perp`|`spot`), `tif`, `orderKind` (`market`|`limit`, Uniswap mainnet), `useCustomGas`, `purposeText` (additional suffix appended to auto-generated trade summary; defaults to **`Generated by cron.`** when omitted). Total **`purposeText`** on the multisign request must stay within **256 characters** (auto summary + suffix).
|
|
74
|
+
|
|
75
|
+
## Uniswap TP/SL monitor cron
|
|
76
|
+
|
|
77
|
+
For spot Uniswap exits when price crosses analysis TP/SL levels (best-effort agent polling, not on-chain orders):
|
|
78
|
+
|
|
79
|
+
- MCP: **`register_uniswap_tpsl_monitor_cron`** — wraps `add_cron_job` with a standard monitor prompt
|
|
80
|
+
- Helper: **`evaluate_uniswap_tpsl_monitor`** — used inside the cron message
|
|
81
|
+
- Template: **`uniswap-tpsl-monitor-cron.example.md`**
|
|
82
|
+
|
|
83
|
+
Robinhood Chain (4663) monitors should fetch OHLCV via Bitquery (`BITQUERY_API_KEY`). Disable with **`deactivate_cron_job`** when filled or cancelled.
|
|
74
84
|
|
|
75
85
|
Interactive chat and orchestrator Continue use **`build_trade_from_*`** instead — never `submit_trade_from_consensus` outside `[Cron]` jobs.
|
|
86
|
+
|
|
87
|
+
## OHLCV prefetch cron (load-only)
|
|
88
|
+
|
|
89
|
+
For scheduled data loads without charting (trade-analysis cron prefetch, monitoring, etc.):
|
|
90
|
+
|
|
91
|
+
1. **`message`** instructs: fetch OHLCV → summarize **`meta.ohlcvSummary`** + **`meta.sessionBind`** → **STOP** (no `prepare_chart_from_rows`, no `analyze_*` unless the same job message also requests analysis).
|
|
92
|
+
2. Use DeFi **`fetch_ohlcv`** or CMC/CoinGecko — see **`chart_analysis_docs`** § “Load data only”.
|
|
93
|
+
3. **`load_defi_protocol`** returns **`ohlcvWorkflow`** (fetch + analysis lanes) and separate **`chartWorkflow`** — follow **`ohlcvWorkflow`** for cron; use **`chartWorkflow`** only when the cron message explicitly asks to plot.
|
|
94
|
+
4. Follow-up turns in the **same conversation** can chart with **`prepare_chart_from_rows({ title, ohlcvDigest })`** without re-fetching.
|
|
95
|
+
|
|
96
|
+
Trade-analysis crons that need analysis on the same run should chain **`analyze_*`** after fetch and still skip **`prepare_chart_from_rows`** unless the deliverable is visual.
|
|
@@ -31,7 +31,9 @@ For plotting and on-chart drawings, see **`chart_docs`** (`chart.md`).
|
|
|
31
31
|
| After plotting, offering follow-ups | “Want RSI / key levels / patterns?” with no tool names | **`list_chart_analysis_options`**, or each option cites its **`analyze_*`** tool |
|
|
32
32
|
| Operator picks an analysis type | Summarize before calling tool | Call **`analyze_*` first**, then reply from **`analysis`** + **`meta`** |
|
|
33
33
|
|
|
34
|
-
**Routing is allowed without `analyze_*`:** present **`list_chart_analysis_options`** menu, ask operator to pick, quote **`meta.ohlcvSummary`** high/low/lastClose/barCount from the last chart
|
|
34
|
+
**Routing is allowed without `analyze_*`:** present **`list_chart_analysis_options`** menu, ask operator to pick, quote **`meta.ohlcvSummary`** high/low/lastClose/barCount from the last fetch/analyze/chart tool.
|
|
35
|
+
|
|
36
|
+
**`list_chart_analysis_options` is a static catalog** — it does not read the bound session. After **`fetch_ohlcv`**, quote **`meta.ohlcvSummary`** and **`meta.sessionBind`** from the fetch tool response (slim agent view) to confirm data is loaded.
|
|
35
37
|
|
|
36
38
|
**One fetch per session:** Pass the full fetch object **once** on the first chart/analyze call. Follow-ups use **`{ title, ohlcvDigest }`** from **`meta.sessionBind`** — the node keeps the fetch server-side. Do **not** re-fetch for analysis-only follow-ups unless the operator changed symbol, interval, or lookback.
|
|
37
39
|
|
|
@@ -96,12 +98,28 @@ Set **`mergeLive: false`** for historical backtests or fixed `startTimeMs`/`endT
|
|
|
96
98
|
|
|
97
99
|
**Do not call `analyze_*` when the operator only asked to plot or draw on a chart** — use the plotting lane instead.
|
|
98
100
|
|
|
101
|
+
## “Load data only” (no chart, no analyze yet)
|
|
102
|
+
|
|
103
|
+
When the operator asks to **load**, **fetch**, or **get** OHLCV **without** analyze / interpret / chart / plot / draw (typical **cron prefetch**):
|
|
104
|
+
|
|
105
|
+
1. **Operator chooses** an OHLCV source; load MCP server if needed; fetch OHLCV (DeFi `fetch_ohlcv`, CoinGecko, CMC, etc.). Do not auto-load catalog servers.
|
|
106
|
+
2. Summarize **`meta.ohlcvSummary`** (high, low, lastClose, barCount, time span) and note **`meta.sessionBind`** for follow-ups.
|
|
107
|
+
3. **Stop there.** Do **not** call **`analyze_*`** unless analysis was requested. Do **not** call **`prepare_chart_from_rows`**.
|
|
108
|
+
|
|
109
|
+
The fetch tool returns a **slim agent view** (`agentView: slim`) — candle rows are omitted from agent text but kept server-side in the session bind. Follow-ups in the same MCP session use **`{ title, ohlcvDigest }`** from **`meta.sessionBind`** — no re-fetch, no re-pasting candle JSON.
|
|
110
|
+
|
|
111
|
+
**Later chart (same session):** when the operator asks to chart/plot, call **`prepare_chart_from_rows({ title, ohlcvDigest })`** — reuses the bound fetch without refetching.
|
|
112
|
+
|
|
113
|
+
**Later analysis (same session):** call **`analyze_*({ title, ohlcvDigest })`** when the operator asks to interpret.
|
|
114
|
+
|
|
115
|
+
**Draw / add-to-chart buttons** require a prior chart (`prepareReplay` from **`prepare_chart_from_rows`**). After load-only, overlay tools are inactive until a chart is prepared.
|
|
116
|
+
|
|
99
117
|
## “Load data and analyze” (no chart)
|
|
100
118
|
|
|
101
119
|
When the operator asks to **load**, **fetch**, or **get** OHLCV and **analyze** / **interpret** (without **chart**, **plot**, or **draw**):
|
|
102
120
|
|
|
103
121
|
1. **Operator chooses** an OHLCV source; load MCP server if needed; fetch OHLCV (DeFi `fetch_ohlcv`, CoinGecko, CMC, etc.). Do not auto-load catalog servers.
|
|
104
|
-
2. Call **`analyze_*`** with the fetch JSON as **`toolResult
|
|
122
|
+
2. Call **`analyze_*`** with the fetch JSON as **`toolResult`** on the first call, or **`{ title, ohlcvDigest }`** when the fetch is already bound.
|
|
105
123
|
3. Summarize **`{ analysis, meta }`** in prose.
|
|
106
124
|
|
|
107
125
|
**Stop there.** Do **not** call **`prepare_chart_from_rows`** — it fills chat context with a rendered chart and is reserved for plot tasks or explicit chart requests.
|
|
@@ -133,7 +151,8 @@ Requires candle rows (open/high/low/close). Use after OHLCV fetch tools.
|
|
|
133
151
|
|
|
134
152
|
| Tool | Returns |
|
|
135
153
|
|------|---------|
|
|
136
|
-
| **`analyze_trend_structure`** | Bias, swing high/low, HH/HL/range structure, time phases, trend-line scores |
|
|
154
|
+
| **`analyze_trend_structure`** | Bias, swing high/low, HH/HL/range structure, time phases, trend-line scores, **`trendStructureTradeSetup`** (retest entry, swing target, **`measuredMove`** impulse-leg — default TP at build) |
|
|
155
|
+
| **`analyze_elliott_waves`** | Fibonacci-driven Elliott count: **`waveMenu`**, **`interpretation`**, **`confidence`**, **`dataGuidance`** when bars are insufficient, **`elliottWaveTradeSetup`** (`clear`/`unclear`, target/invalidation), **`drawableWaves`** for chart labels |
|
|
137
156
|
| **`analyze_key_levels`** | Ranked supports/resistances, nearest levels vs last close |
|
|
138
157
|
| **`analyze_momentum`** | RSI zone, MACD values, crossover state |
|
|
139
158
|
| **`analyze_range_volatility`** | Range %, ATR-style stats, compression vs expansion, Fib swing range |
|
|
@@ -145,6 +164,21 @@ Requires candle rows (open/high/low/close). Use after OHLCV fetch tools.
|
|
|
145
164
|
|
|
146
165
|
**`analyze_chart_patterns`** requires **25–40** bars depending on pattern (cup & handle ~40; trendline patterns ~20). Optional: `patterns[]`, `focusWindow` (default recent window), `minConfidence` (default 0.45), `swingLookback`, `smoothHeadShoulders` (default **true**), `smoothWindow` (`3`|`5`, default `5`), `retestTolerancePct` (default **0.10**), `retestAtrPeriod` (default **14**), `retestAtrMultiplier` (default **1.0**). Volume is **not** required — OHLC only.
|
|
147
166
|
|
|
167
|
+
**`analyze_elliott_waves`** requires at least **50** OHLCV bars (hard reject below). For reliable intermediate-degree counts, load **≥200** bars (e.g. 1H × 14d); primary degree prefers **≥400** bars (e.g. 4H × 60d or 1D × 90d). When `dataStatus` is **`insufficient_data`**, quote **`dataGuidance`** (suggested interval × lookback) — trade setup stays **`unclear`**. Optional: `waveMenuNumber` (default 1) for trade re-bind. Draw labels with **`apply_elliott_wave_drawings`** + `waveMenuNumber` from **`waveMenu`**.
|
|
168
|
+
|
|
169
|
+
| Elliott field | Purpose |
|
|
170
|
+
|---------------|---------|
|
|
171
|
+
| `dataStatus` | `ok` \| `insufficient_data` |
|
|
172
|
+
| `dataGuidance` | Actionable bar-count / interval guidance when insufficient |
|
|
173
|
+
| `effectiveDegree` | `minor` \| `intermediate` \| `primary` (inferred from interval × bar count) |
|
|
174
|
+
| `interpretation` | 2–4 sentence guidance with targets/invalidation when available |
|
|
175
|
+
| `confidence` | 0–1 composite; trade setup requires ≥0.45 for `clear` |
|
|
176
|
+
| `waveMenu[]` | `{ waveMenuNumber, labels (I–V), barSpan, keyLevels[], invalidation?, confidence }` |
|
|
177
|
+
| `elliottWaveTradeSetup` | `status`, `side`, entry/target/invalidation, `projectionTargets[]`, `unclearReason` / `dataGuidance` |
|
|
178
|
+
| `drawableWaves` | Full geometry for **`apply_elliott_wave_drawings`** (server-side in full JSON; slim agent view omits heavy geometry) |
|
|
179
|
+
|
|
180
|
+
**Elliott drawing workflow:** after **`analyze_elliott_waves`**, call **`apply_elliott_wave_drawings`** with `{ title, ohlcvDigest, waveMenuNumber: 1 }` plus **`prepareReplay`** + **`live`** from the existing chart — same session bind pattern as trend lines and chart patterns.
|
|
181
|
+
|
|
148
182
|
When no credible pattern is found:
|
|
149
183
|
|
|
150
184
|
```json
|
|
@@ -294,7 +294,9 @@ When the user asks to graph, plot, or chart data, call **`prepare_chart_from_row
|
|
|
294
294
|
|
|
295
295
|
**Where charts appear:** the node app renders charts under the **MCP result** row for `prepare_chart` / `prepare_chart_from_rows`, not inside the assistant text bubble. A prose reply like “chart prepared” without a successful chart tool result means nothing was rendered.
|
|
296
296
|
|
|
297
|
-
**Hyperliquid / DeFi `fetch_ohlcv`:** returns `{ ohlcv: { coin, interval, candles: [...] } }
|
|
297
|
+
**Hyperliquid / DeFi `fetch_ohlcv`:** returns `{ ohlcv: { coin, interval, candles: [...] } }` (full candles in **`structuredContent`**; agent text is a **slim** view with **`meta.ohlcvSummary`** and **`meta.sessionBind`**). After `fetch_ohlcv`, call `prepare_chart_from_rows` with the **full fetch object** as `toolResult` once, plus a descriptive `title` (interval + lookback, e.g. `ETH-PERP 1H — last 7d`), or `{ title, ohlcvDigest }` when the fetch is already bound. Follow-up chart/analyze/apply calls use **`{ title, ohlcvDigest }`** only — do not re-paste candle JSON.
|
|
298
|
+
|
|
299
|
+
**Load-only / cron prefetch:** summarize **`meta.ohlcvSummary`** from the fetch tool and **stop** — do not call `prepare_chart_from_rows` unless the operator asked to chart. See **`chart_analysis_docs`** § “Load data only”.
|
|
298
300
|
|
|
299
301
|
**OHLCV integrity:** `prepare_chart_from_rows` hard-fails hand-copied `rows` without fetch `toolResult`, invalid OHLC structure, stale-body composite bars, and **title interval ≠ fetch interval** (e.g. title `1H` with fetch `12h`). On failure, re-fetch at the **requested** interval — do not switch to a coarser timeframe or retry prepare in a loop (that burns tool rounds).
|
|
300
302
|
|
|
@@ -302,7 +304,7 @@ When the user asks to graph, plot, or chart data, call **`prepare_chart_from_row
|
|
|
302
304
|
|
|
303
305
|
## Live updates (agent chat + DeFi dialogs)
|
|
304
306
|
|
|
305
|
-
When `prepare_chart_from_rows` receives a fetch payload the SDK recognizes (Hyperliquid `ohlcv`, GMX flat `{ symbol, timeframe, candles }`, CoinGecko market chart), the output may include optional **`live`**:
|
|
307
|
+
When `prepare_chart_from_rows` receives a fetch payload the SDK recognizes (Hyperliquid `ohlcv`, Arcus `ohlcv` with `dataSource: "arcus"`, GMX flat `{ symbol, timeframe, candles }`, CoinGecko market chart), the output may include optional **`live`**:
|
|
306
308
|
|
|
307
309
|
```json
|
|
308
310
|
{
|
|
@@ -323,6 +325,7 @@ The node app polls a **tick adapter** registered for `providerId` every `pollMs`
|
|
|
323
325
|
| `providerId` | Tick source |
|
|
324
326
|
|--------------|-------------|
|
|
325
327
|
| `hyperliquid.allMids` | Hyperliquid `allMids` for `params.coin` |
|
|
328
|
+
| `arcus.allMids` | Arcus all-mids for `params.market` (chain 4663) |
|
|
326
329
|
| `gmx.markPrice` | GMX index mark USD for `params.symbol` |
|
|
327
330
|
| `coingecko.simple` | CoinGecko simple price for `params.coinId` |
|
|
328
331
|
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# Uniswap TP/SL monitor cron template
|
|
2
|
+
|
|
3
|
+
Copy into an agent cron job `message` body (or use MCP tool `register_uniswap_tpsl_monitor_cron`).
|
|
4
|
+
|
|
5
|
+
```yaml
|
|
6
|
+
tradeTpslMonitor:
|
|
7
|
+
protocolId: uniswap
|
|
8
|
+
chainId: 1
|
|
9
|
+
tradeIdeaId: "<trade-idea-uuid>"
|
|
10
|
+
tradeIdeaNumber: 1
|
|
11
|
+
sizeUsdHuman: "500"
|
|
12
|
+
side: long
|
|
13
|
+
pollEveryMinutes: 5
|
|
14
|
+
takeProfitPriceHuman: "3500"
|
|
15
|
+
stopLossPriceHuman: "3200"
|
|
16
|
+
keyGenId: "<keygen-id>"
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Behavior
|
|
20
|
+
|
|
21
|
+
- Polls pool price (The Graph on most chains; **Bitquery on Robinhood 4663** with `BITQUERY_API_KEY`).
|
|
22
|
+
- On TP or SL cross: triggers **market swap** exit via `build_trade_from_trade_idea` (`orderKind: market`).
|
|
23
|
+
- Not on-chain resting orders — requires cron/agent to stay active.
|
|
24
|
+
|
|
25
|
+
## Disable
|
|
26
|
+
|
|
27
|
+
Call `deactivate_cron_job` when the position is closed or the monitor is no longer needed.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trade-tools.d.ts","sourceRoot":"","sources":["../../src/mcp/trade-tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,yCAAyC,CAAC;AAEvE,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"trade-tools.d.ts","sourceRoot":"","sources":["../../src/mcp/trade-tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,yCAAyC,CAAC;AAEvE,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,qBAAqB,CAAC;AAqBvD,OAAO,KAAK,EAAC,mBAAmB,EAAC,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAA0B,YAAY,EAAqC,MAAM,iBAAiB,CAAC;AAgQ1G,wBAAgB,kBAAkB,CACjC,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,aAAa,EACrB,WAAW,EAAE,mBAAmB,GAC9B,IAAI,CAuON;AAED,OAAO,EAAC,YAAY,EAAC,CAAC"}
|