@oobe-protocol-labs/sap-mcp-server 0.9.37 → 0.9.50

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.
Files changed (191) hide show
  1. package/.env.example +14 -0
  2. package/CHANGELOG.md +85 -0
  3. package/README.md +3 -3
  4. package/USER_DOCS/01_HOSTED_REMOTE_MCP.md +1 -1
  5. package/USER_DOCS/04_CLIENT_CONFIGS.md +3 -3
  6. package/USER_DOCS/06_DESKTOP_GUI_WIZARD.md +5 -5
  7. package/dist/config/env.d.ts +51 -0
  8. package/dist/config/env.d.ts.map +1 -1
  9. package/dist/config/env.js +32 -2
  10. package/dist/config/env.js.map +1 -1
  11. package/dist/core/constants.d.ts +1 -1
  12. package/dist/core/constants.js +1 -1
  13. package/dist/core/logger.js +1 -1
  14. package/dist/payments/monetization-gate.d.ts +5 -0
  15. package/dist/payments/monetization-gate.d.ts.map +1 -1
  16. package/dist/payments/monetization-gate.js +39 -2
  17. package/dist/payments/monetization-gate.js.map +1 -1
  18. package/dist/payments/prepaid-credit-store.d.ts +111 -0
  19. package/dist/payments/prepaid-credit-store.d.ts.map +1 -0
  20. package/dist/payments/prepaid-credit-store.js +230 -0
  21. package/dist/payments/prepaid-credit-store.js.map +1 -0
  22. package/dist/payments/pricing.d.ts.map +1 -1
  23. package/dist/payments/pricing.js +40 -1
  24. package/dist/payments/pricing.js.map +1 -1
  25. package/dist/payments/schema-validation.d.ts +52 -0
  26. package/dist/payments/schema-validation.d.ts.map +1 -0
  27. package/dist/payments/schema-validation.js +112 -0
  28. package/dist/payments/schema-validation.js.map +1 -0
  29. package/dist/payments/x402-paid-call.d.ts +21 -0
  30. package/dist/payments/x402-paid-call.d.ts.map +1 -1
  31. package/dist/payments/x402-paid-call.js +108 -3
  32. package/dist/payments/x402-paid-call.js.map +1 -1
  33. package/dist/perps/adrena/adrena-builder-commodity.d.ts +63 -0
  34. package/dist/perps/adrena/adrena-builder-commodity.d.ts.map +1 -0
  35. package/dist/perps/adrena/adrena-builder-commodity.js +200 -0
  36. package/dist/perps/adrena/adrena-builder-commodity.js.map +1 -0
  37. package/dist/perps/adrena/adrena-builder-core.d.ts +319 -0
  38. package/dist/perps/adrena/adrena-builder-core.d.ts.map +1 -0
  39. package/dist/perps/adrena/adrena-builder-core.js +517 -0
  40. package/dist/perps/adrena/adrena-builder-core.js.map +1 -0
  41. package/dist/perps/adrena/adrena-builder-liquidity.d.ts +50 -0
  42. package/dist/perps/adrena/adrena-builder-liquidity.d.ts.map +1 -0
  43. package/dist/perps/adrena/adrena-builder-liquidity.js +196 -0
  44. package/dist/perps/adrena/adrena-builder-liquidity.js.map +1 -0
  45. package/dist/perps/adrena/adrena-builder-staking.d.ts +57 -0
  46. package/dist/perps/adrena/adrena-builder-staking.d.ts.map +1 -0
  47. package/dist/perps/adrena/adrena-builder-staking.js +368 -0
  48. package/dist/perps/adrena/adrena-builder-staking.js.map +1 -0
  49. package/dist/perps/adrena/adrena-builder-trading.d.ts +160 -0
  50. package/dist/perps/adrena/adrena-builder-trading.d.ts.map +1 -0
  51. package/dist/perps/adrena/adrena-builder-trading.js +835 -0
  52. package/dist/perps/adrena/adrena-builder-trading.js.map +1 -0
  53. package/dist/perps/adrena/adrena-builder.d.ts +22 -0
  54. package/dist/perps/adrena/adrena-builder.d.ts.map +1 -0
  55. package/dist/perps/adrena/adrena-builder.js +22 -0
  56. package/dist/perps/adrena/adrena-builder.js.map +1 -0
  57. package/dist/perps/adrena/adrena-constants.d.ts +163 -0
  58. package/dist/perps/adrena/adrena-constants.d.ts.map +1 -0
  59. package/dist/perps/adrena/adrena-constants.js +122 -0
  60. package/dist/perps/adrena/adrena-constants.js.map +1 -0
  61. package/dist/perps/adrena/adrena-data-api.d.ts +180 -0
  62. package/dist/perps/adrena/adrena-data-api.d.ts.map +1 -0
  63. package/dist/perps/adrena/adrena-data-api.js +169 -0
  64. package/dist/perps/adrena/adrena-data-api.js.map +1 -0
  65. package/dist/perps/adrena/adrena-idl.d.ts +15084 -0
  66. package/dist/perps/adrena/adrena-idl.d.ts.map +1 -0
  67. package/dist/perps/adrena/adrena-idl.js +29903 -0
  68. package/dist/perps/adrena/adrena-idl.js.map +1 -0
  69. package/dist/perps/adrena/adrena-pda.d.ts +147 -0
  70. package/dist/perps/adrena/adrena-pda.d.ts.map +1 -0
  71. package/dist/perps/adrena/adrena-pda.js +211 -0
  72. package/dist/perps/adrena/adrena-pda.js.map +1 -0
  73. package/dist/perps/adrena/index.d.ts +12 -0
  74. package/dist/perps/adrena/index.d.ts.map +1 -0
  75. package/dist/perps/adrena/index.js +12 -0
  76. package/dist/perps/adrena/index.js.map +1 -0
  77. package/dist/perps/chart-indicators.d.ts +27 -0
  78. package/dist/perps/chart-indicators.d.ts.map +1 -0
  79. package/dist/perps/chart-indicators.js +345 -0
  80. package/dist/perps/chart-indicators.js.map +1 -0
  81. package/dist/perps/chart-tools.d.ts +45 -0
  82. package/dist/perps/chart-tools.d.ts.map +1 -0
  83. package/dist/perps/chart-tools.js +341 -0
  84. package/dist/perps/chart-tools.js.map +1 -0
  85. package/dist/perps/perp-analytics-tools.d.ts +20 -0
  86. package/dist/perps/perp-analytics-tools.d.ts.map +1 -0
  87. package/dist/perps/perp-analytics-tools.js +868 -0
  88. package/dist/perps/perp-analytics-tools.js.map +1 -0
  89. package/dist/perps/perp-constants.d.ts +362 -0
  90. package/dist/perps/perp-constants.d.ts.map +1 -0
  91. package/dist/perps/perp-constants.js +210 -0
  92. package/dist/perps/perp-constants.js.map +1 -0
  93. package/dist/perps/perp-decoders.d.ts +47 -0
  94. package/dist/perps/perp-decoders.d.ts.map +1 -0
  95. package/dist/perps/perp-decoders.js +332 -0
  96. package/dist/perps/perp-decoders.js.map +1 -0
  97. package/dist/policy/policy-engine.d.ts +42 -0
  98. package/dist/policy/policy-engine.d.ts.map +1 -1
  99. package/dist/policy/policy-engine.js +43 -0
  100. package/dist/policy/policy-engine.js.map +1 -1
  101. package/dist/premium/activation-manager.d.ts.map +1 -1
  102. package/dist/premium/activation-manager.js +20 -2
  103. package/dist/premium/activation-manager.js.map +1 -1
  104. package/dist/prompts/context/sap-agent-context.prompt.js +15 -1
  105. package/dist/prompts/context/sap-agent-context.prompt.js.map +1 -1
  106. package/dist/server/server-metadata.d.ts +15 -0
  107. package/dist/server/server-metadata.d.ts.map +1 -1
  108. package/dist/server/server-metadata.js +16 -1
  109. package/dist/server/server-metadata.js.map +1 -1
  110. package/dist/solana/ata-utils.d.ts +39 -0
  111. package/dist/solana/ata-utils.d.ts.map +1 -0
  112. package/dist/solana/ata-utils.js +49 -0
  113. package/dist/solana/ata-utils.js.map +1 -0
  114. package/dist/strategies/trade-journal.d.ts +78 -0
  115. package/dist/strategies/trade-journal.d.ts.map +1 -0
  116. package/dist/strategies/trade-journal.js +92 -0
  117. package/dist/strategies/trade-journal.js.map +1 -0
  118. package/dist/tools/adrena/adrena-commodity-tools.d.ts +15 -0
  119. package/dist/tools/adrena/adrena-commodity-tools.d.ts.map +1 -0
  120. package/dist/tools/adrena/adrena-commodity-tools.js +137 -0
  121. package/dist/tools/adrena/adrena-commodity-tools.js.map +1 -0
  122. package/dist/tools/adrena/adrena-data-tools.d.ts +23 -0
  123. package/dist/tools/adrena/adrena-data-tools.d.ts.map +1 -0
  124. package/dist/tools/adrena/adrena-data-tools.js +437 -0
  125. package/dist/tools/adrena/adrena-data-tools.js.map +1 -0
  126. package/dist/tools/adrena/adrena-helpers.d.ts +46 -0
  127. package/dist/tools/adrena/adrena-helpers.d.ts.map +1 -0
  128. package/dist/tools/adrena/adrena-helpers.js +41 -0
  129. package/dist/tools/adrena/adrena-helpers.js.map +1 -0
  130. package/dist/tools/adrena/adrena-index.d.ts +20 -0
  131. package/dist/tools/adrena/adrena-index.d.ts.map +1 -0
  132. package/dist/tools/adrena/adrena-index.js +75 -0
  133. package/dist/tools/adrena/adrena-index.js.map +1 -0
  134. package/dist/tools/adrena/adrena-limit-order-tools.d.ts +22 -0
  135. package/dist/tools/adrena/adrena-limit-order-tools.d.ts.map +1 -0
  136. package/dist/tools/adrena/adrena-limit-order-tools.js +91 -0
  137. package/dist/tools/adrena/adrena-limit-order-tools.js.map +1 -0
  138. package/dist/tools/adrena/adrena-liquidity-tools.d.ts +15 -0
  139. package/dist/tools/adrena/adrena-liquidity-tools.d.ts.map +1 -0
  140. package/dist/tools/adrena/adrena-liquidity-tools.js +108 -0
  141. package/dist/tools/adrena/adrena-liquidity-tools.js.map +1 -0
  142. package/dist/tools/adrena/adrena-snapshot-tools.d.ts +42 -0
  143. package/dist/tools/adrena/adrena-snapshot-tools.d.ts.map +1 -0
  144. package/dist/tools/adrena/adrena-snapshot-tools.js +124 -0
  145. package/dist/tools/adrena/adrena-snapshot-tools.js.map +1 -0
  146. package/dist/tools/adrena/adrena-staking-tools.d.ts +15 -0
  147. package/dist/tools/adrena/adrena-staking-tools.d.ts.map +1 -0
  148. package/dist/tools/adrena/adrena-staking-tools.js +139 -0
  149. package/dist/tools/adrena/adrena-staking-tools.js.map +1 -0
  150. package/dist/tools/adrena/adrena-trading-tools.d.ts +78 -0
  151. package/dist/tools/adrena/adrena-trading-tools.d.ts.map +1 -0
  152. package/dist/tools/adrena/adrena-trading-tools.js +556 -0
  153. package/dist/tools/adrena/adrena-trading-tools.js.map +1 -0
  154. package/dist/tools/adrena-tools.d.ts +2 -0
  155. package/dist/tools/adrena-tools.d.ts.map +1 -0
  156. package/dist/tools/adrena-tools.js +2 -0
  157. package/dist/tools/adrena-tools.js.map +1 -0
  158. package/dist/tools/client-sdk-tools.d.ts +8 -0
  159. package/dist/tools/client-sdk-tools.d.ts.map +1 -1
  160. package/dist/tools/client-sdk-tools.js +32 -7
  161. package/dist/tools/client-sdk-tools.js.map +1 -1
  162. package/dist/tools/memory-tools.d.ts.map +1 -1
  163. package/dist/tools/memory-tools.js +170 -0
  164. package/dist/tools/memory-tools.js.map +1 -1
  165. package/dist/tools/perp-tools.d.ts +6 -31
  166. package/dist/tools/perp-tools.d.ts.map +1 -1
  167. package/dist/tools/perp-tools.js +6 -1141
  168. package/dist/tools/perp-tools.js.map +1 -1
  169. package/dist/tools/premium-tools.d.ts.map +1 -1
  170. package/dist/tools/premium-tools.js +123 -5
  171. package/dist/tools/premium-tools.js.map +1 -1
  172. package/dist/tools/quick-context-tool.js +1 -0
  173. package/dist/tools/quick-context-tool.js.map +1 -1
  174. package/dist/tools/register-tools.d.ts.map +1 -1
  175. package/dist/tools/register-tools.js +4 -0
  176. package/dist/tools/register-tools.js.map +1 -1
  177. package/dist/tools/transaction-tools.d.ts +21 -1
  178. package/dist/tools/transaction-tools.d.ts.map +1 -1
  179. package/dist/tools/transaction-tools.js +114 -30
  180. package/dist/tools/transaction-tools.js.map +1 -1
  181. package/dist/tools/x402-paid-call-tool.d.ts.map +1 -1
  182. package/dist/tools/x402-paid-call-tool.js +288 -0
  183. package/dist/tools/x402-paid-call-tool.js.map +1 -1
  184. package/docs/07_ENDPOINTS_AND_CLIENTS.md +1 -1
  185. package/docs/10_OPERATIONS_RELEASE_AND_PM2.md +54 -6
  186. package/docs/14_DESKTOP_WIZARD_RELEASE.md +3 -3
  187. package/docs/BRANCH_AND_CI.md +2 -2
  188. package/package.json +3 -2
  189. package/server.json +3 -3
  190. package/skills/sap-defi/SKILL.md +93 -22
  191. package/skills/sap-mcp/TOOL_REFERENCE.md +39 -4
@@ -240,7 +240,9 @@ Use the exact names returned by \`tools/list\`. Do not replace hyphens with unde
240
240
  | SOL/SPL balances and transfers | \`sol_get_balance\`, \`spl-token_getBalance\`, \`spl-token_getTokenAccounts\`, \`spl-token_transfer\`, \`spl-token_transferSol\` |
241
241
  | Jupiter swaps and quotes | \`jupiter_getQuote\`, \`jupiter_swap\`, \`jupiter_swapInstructions\`, \`jupiter_smartSwap\`, \`jupiter_getOrder\`, \`jupiter_executeOrder\` |
242
242
  | Jupiter token intelligence | \`jupiter_searchTokens\`, \`jupiter_getTokenInfo\`, \`jupiter_getTokenList\`, \`jupiter_shield\`, \`jupiter_getHoldings\` |
243
- | DEX, perps, liquidity | \`sap_perp_trade_plan\`, \`sap_perp_markets\`, \`sap_perp_position_info\`, \`sap_perp_liquidation_zones\`, \`sap_chart_*\`, \`orca_*\`, \`raydium-pools_*\`, \`meteora_*\`, \`openbook_*\`, \`manifest_*\` |
243
+ | DEX, perps, liquidity | \`sap_perp_trade_plan\`, \`sap_adrena_get_markets\`, \`sap_adrena_get_pool_info\`, \`sap_adrena_get_trading_prices\`, \`sap_perp_position_info\`, \`sap_perp_liquidation_zones\`, \`sap_chart_*\`, \`orca_*\`, \`raydium-pools_*\`, \`meteora_*\`, \`openbook_*\`, \`manifest_*\` |
244
+ | Adrena perps trading | \`sap_adrena_build_open_long\`, \`sap_adrena_build_open_short\`, \`sap_adrena_build_close_long\`, \`sap_adrena_build_close_short\`, \`sap_adrena_build_set_stop_loss\`, \`sap_adrena_build_set_take_profit\`, \`sap_adrena_build_add_liquidity\`, \`sap_adrena_build_swap\`, \`sap_adrena_build_add_limit_order\` |
245
+ | Adrena commodities | \`sap_adrena_build_open_commodity_long\`, \`sap_adrena_build_open_commodity_short\`, \`sap_adrena_build_close_commodity_long\`, \`sap_adrena_build_close_commodity_short\` |
244
246
  | Price and market data | \`jupiter_getPrice\`, \`pyth_getPrice\`, \`coingecko_getTokenPrice\`, \`pyth_getPriceHistory\`, \`pyth_listPriceFeeds\`, \`coingecko_getTokenInfo\` |
245
247
  | NFTs and domains | \`metaplex-nft_*\`, \`3land_*\`, \`sap_sns_*\`, \`sns_*\`, \`alldomains_*\` |
246
248
  | Bridges, staking, actions | \`bridging_*\`, \`staking_*\`, \`jito_*\`, \`blinks_*\`, \`lulo_*\` |
@@ -256,6 +258,18 @@ Use the exact names returned by \`tools/list\`. Do not replace hyphens with unde
256
258
 
257
259
  For transactions, preview first with \`sap_preview_transaction\`; sign only with \`sap_sign_transaction\` after policy checks and user approval when required.
258
260
 
261
+ ### 📊 Adrena Perps Trading Flow
262
+ - **Prepaid session (recommended):** Call \`sap_payments_start_prepaid\` with \`amountUsd: 1\` to fund a prepaid session. Returns a \`sessionId\`. Pass this as \`prepaidSessionId\` to \`sap_payments_call_paid_tool\` for all subsequent calls — the server grants access via x402 Lifecycle Hooks \`grantAccess\` without per-call 402 challenges. 6x faster, 6x cheaper. Check balance with \`sap_payments_prepaid_balance\` (free).
263
+ - **Pre-trade (free + paid reads):** Call \`sap_adrena_get_markets\` to verify \`allowTrade: true\` and check max leverage. Call \`sap_adrena_get_pool_info\` to check pool health (AUM, LP price). Call \`sol_get_balance\` (free) for SOL gas and \`spl_token_getBalance\` (free) for collateral balance.
264
+ - **Dry-run (free):** Call \`sap_adrena_simulate_position\` to test leverage/collateral combinations without paying. Returns Adrena program logs and would-succeed status.
265
+ - **Build (paid):** Call \`sap_adrena_trade_intent\` for the fastest flow — pass \`market\`, \`side\`, \`collateralUsd\`, \`leverage\` (or \`"max"\`), optional \`stopLossPct\`/\`takeProfitPct\`. Resolves mint, decimals, max leverage, collateral token automatically. Returns ready-to-sign tx with balanceCheck and poolMetadata. Alternatively use \`sap_adrena_build_open_short\` / \`sap_adrena_build_open_long\` for explicit control. **Do not submit if \`balanceCheck.sufficient\` is false.**
266
+ - **Batch (1 payment):** Call \`sap_adrena_build_position_package\` to atomically open + set SL + set TP in 1 transaction. 1 payment, 1 signing, 1 submit instead of 3.
267
+ - **Sign + submit:** Call \`sap_payments_finalize_transaction\` with \`transactionBase64\`, \`submit: true\`, \`confirm: true\`. The finalize tool **automatically refreshes the blockhash** before signing and **auto-re-submits** if the first attempt expires.
268
+ - **Leverage:** Pass human-readable leverage (e.g. \`3\` for 3x). The builder encodes it as BPS (30000) internally. Max leverage per market is in \`poolMetadata.maxInitialLeverage\`.
269
+ - **Shorts require USDC collateral.** Longs require collateral matching the principal token. Commodities (XAU/XAG/WTI) always use USDC collateral.
270
+ - **Closing:** Call \`sap_adrena_build_close_short\` (or long) with \`percentage: 1000000\` for 100% close, then finalize.
271
+ - **Adrena error codes in simulation logs:** 6029=MinLeverage, 6071=InsufficientCollateral, 6088=MissingOraclePrice, 6090=CustodyBelowMinimum. If logs are empty, use \`skipPreflight: true\` and the submit tool will auto-retry on expire.
272
+
259
273
  ### ⚡ x402 Hosted Payment Fast Path
260
274
  - Local stdio MCP tools are free; do not create x402 payment payloads for local stdio calls.
261
275
  - SAP MCP skill bootstrap tools are free: use \`sap_skills_list\`, \`sap_skills_bundle\`, and \`sap_skills_install\` directly. Do not route skill installation through \`sap_x402_paid_call\`.
@@ -1 +1 @@
1
- {"version":3,"file":"sap-agent-context.prompt.js","sourceRoot":"","sources":["../../../src/prompts/context/sap-agent-context.prompt.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sap-agent-context.prompt.js","sourceRoot":"","sources":["../../../src/prompts/context/sap-agent-context.prompt.ts"],"names":[],"mappings":"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"}
@@ -45,8 +45,21 @@ export declare const SERVER_METADATA: {
45
45
  *
46
46
  * @usedBy `server/index.ts`, monitoring and health endpoints.
47
47
  */
48
+ /**
49
+ * @name CAPABILITIES
50
+ * @description Summary of registered MCP capabilities and their category counts.
51
+ *
52
+ * `tools.count` is a static fallback used when the server is not yet
53
+ * initialized. For the real count, use `getDynamicToolCount(server)`.
54
+ *
55
+ * @property tools.count — Total number of registered tools (static fallback).
56
+ * @property tools.categories — Tool counts by category (sap, sns, agentKit, etc.).
57
+ *
58
+ * @usedBy `server/index.ts`, monitoring and health endpoints.
59
+ */
48
60
  export declare const CAPABILITIES: {
49
61
  tools: {
62
+ /** Static fallback count. Use getDynamicToolCount() for the real count. */
50
63
  count: number;
51
64
  categories: {
52
65
  sap: number;
@@ -60,6 +73,8 @@ export declare const CAPABILITIES: {
60
73
  chat: number;
61
74
  premium: number;
62
75
  quickContext: number;
76
+ perps: number;
77
+ adrena: number;
63
78
  };
64
79
  };
65
80
  };
@@ -1 +1 @@
1
- {"version":3,"file":"server-metadata.d.ts","sourceRoot":"","sources":["../../src/server/server-metadata.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAWH;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;CAW3B,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;CAiBxB,CAAC"}
1
+ {"version":3,"file":"server-metadata.d.ts","sourceRoot":"","sources":["../../src/server/server-metadata.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAWH;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;CAW3B,CAAC;AAEF;;;;;;;;GAQG;AACH;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,YAAY;;QAErB,2EAA2E;;;;;;;;;;;;;;;;;;CAkB9E,CAAC"}
@@ -46,9 +46,22 @@ export const SERVER_METADATA = {
46
46
  *
47
47
  * @usedBy `server/index.ts`, monitoring and health endpoints.
48
48
  */
49
+ /**
50
+ * @name CAPABILITIES
51
+ * @description Summary of registered MCP capabilities and their category counts.
52
+ *
53
+ * `tools.count` is a static fallback used when the server is not yet
54
+ * initialized. For the real count, use `getDynamicToolCount(server)`.
55
+ *
56
+ * @property tools.count — Total number of registered tools (static fallback).
57
+ * @property tools.categories — Tool counts by category (sap, sns, agentKit, etc.).
58
+ *
59
+ * @usedBy `server/index.ts`, monitoring and health endpoints.
60
+ */
49
61
  export const CAPABILITIES = {
50
62
  tools: {
51
- count: 327,
63
+ /** Static fallback count. Use getDynamicToolCount() for the real count. */
64
+ count: 365,
52
65
  categories: {
53
66
  sap: 75,
54
67
  sns: 13,
@@ -61,6 +74,8 @@ export const CAPABILITIES = {
61
74
  chat: 8,
62
75
  premium: 17,
63
76
  quickContext: 1,
77
+ perps: 9,
78
+ adrena: 36,
64
79
  },
65
80
  },
66
81
  };
@@ -1 +1 @@
1
- {"version":3,"file":"server-metadata.js","sourceRoot":"","sources":["../../src/server/server-metadata.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EACL,sBAAsB,EACtB,mBAAmB,EACnB,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,sBAAsB,CAAC;AAE9B;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,IAAI,EAAE,eAAe;IACrB,KAAK,EAAE,gBAAgB;IACvB,OAAO,EAAE,kBAAkB;IAC3B,WAAW,EAAE,sBAAsB;IACnC,MAAM,EAAE,oBAAoB;IAC5B,OAAO,EAAE,KAAK;IACd,QAAQ,EAAE,sBAAsB;IAChC,UAAU,EAAE,0CAA0C;IACtD,IAAI,EAAE,iDAAiD;IACvD,IAAI,EAAE,mBAAmB;CAC1B,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,KAAK,EAAE;QACL,KAAK,EAAE,GAAG;QACV,UAAU,EAAE;YACV,GAAG,EAAE,EAAE;YACP,GAAG,EAAE,EAAE;YACP,QAAQ,EAAE,GAAG;YACb,gBAAgB,EAAE,CAAC;YACnB,YAAY,EAAE,CAAC;YACf,YAAY,EAAE,CAAC;YACf,QAAQ,EAAE,CAAC;YACX,MAAM,EAAE,CAAC;YACT,IAAI,EAAE,CAAC;YACP,OAAO,EAAE,EAAE;YACX,YAAY,EAAE,CAAC;SAChB;KACF;CACF,CAAC"}
1
+ {"version":3,"file":"server-metadata.js","sourceRoot":"","sources":["../../src/server/server-metadata.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EACL,sBAAsB,EACtB,mBAAmB,EACnB,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,sBAAsB,CAAC;AAE9B;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,IAAI,EAAE,eAAe;IACrB,KAAK,EAAE,gBAAgB;IACvB,OAAO,EAAE,kBAAkB;IAC3B,WAAW,EAAE,sBAAsB;IACnC,MAAM,EAAE,oBAAoB;IAC5B,OAAO,EAAE,KAAK;IACd,QAAQ,EAAE,sBAAsB;IAChC,UAAU,EAAE,0CAA0C;IACtD,IAAI,EAAE,iDAAiD;IACvD,IAAI,EAAE,mBAAmB;CAC1B,CAAC;AAEF;;;;;;;;GAQG;AACH;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,KAAK,EAAE;QACL,2EAA2E;QAC3E,KAAK,EAAE,GAAG;QACV,UAAU,EAAE;YACV,GAAG,EAAE,EAAE;YACP,GAAG,EAAE,EAAE;YACP,QAAQ,EAAE,GAAG;YACb,gBAAgB,EAAE,CAAC;YACnB,YAAY,EAAE,CAAC;YACf,YAAY,EAAE,CAAC;YACf,QAAQ,EAAE,CAAC;YACX,MAAM,EAAE,CAAC;YACT,IAAI,EAAE,CAAC;YACP,OAAO,EAAE,EAAE;YACX,YAAY,EAAE,CAAC;YACf,KAAK,EAAE,CAAC;YACR,MAAM,EAAE,EAAE;SACX;KACF;CACF,CAAC"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * @name solana/ata-utils
3
+ * @description Shared ATA derivation helpers for consistent address calculation.
4
+ *
5
+ * Uses the official @solana/spl-token `getAssociatedTokenAddressSync` which
6
+ * implements the standard SPL Associated Token Account seed layout:
7
+ * [owner, TOKEN_PROGRAM_ID, mint]
8
+ *
9
+ * All builders and tools should use these helpers instead of reimplementing
10
+ * ATA derivation. This prevents the class of bugs where one code path uses
11
+ * the correct seeds and another uses a wrong prefix or order.
12
+ *
13
+ * @module solana/ata-utils
14
+ */
15
+ import { PublicKey, type TransactionInstruction } from '@solana/web3.js';
16
+ /**
17
+ * Derive the Associated Token Account address for a wallet and mint.
18
+ *
19
+ * Uses the standard SPL seed layout: [owner, TOKEN_PROGRAM_ID, mint].
20
+ * This is the ONLY correct way to derive an ATA — never use a string
21
+ * prefix like "AssociatedTokenAddress" in the seeds.
22
+ *
23
+ * @param owner — Wallet public key that owns the ATA.
24
+ * @param mint — Token mint public key.
25
+ * @returns ATA public key.
26
+ */
27
+ export declare function deriveAtaAddress(owner: PublicKey, mint: PublicKey): PublicKey;
28
+ /**
29
+ * Create a CreateAssociatedTokenAccountIdempotent instruction.
30
+ * This instruction is a no-op if the ATA already exists, so it's safe to
31
+ * always include in transactions.
32
+ *
33
+ * @param payer — Fee payer public key (usually the owner).
34
+ * @param owner — Wallet public key that will own the ATA.
35
+ * @param mint — Token mint public key.
36
+ * @returns TransactionInstruction for CreateAssociatedTokenAccountIdempotent.
37
+ */
38
+ export declare function createAtaIdempotentIx(payer: PublicKey, owner: PublicKey, mint: PublicKey): TransactionInstruction;
39
+ //# sourceMappingURL=ata-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ata-utils.d.ts","sourceRoot":"","sources":["../../src/solana/ata-utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,SAAS,EAAE,KAAK,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AASzE;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,GAAG,SAAS,CAE7E;AAED;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,SAAS,EAChB,KAAK,EAAE,SAAS,EAChB,IAAI,EAAE,SAAS,GACd,sBAAsB,CAUxB"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * @name solana/ata-utils
3
+ * @description Shared ATA derivation helpers for consistent address calculation.
4
+ *
5
+ * Uses the official @solana/spl-token `getAssociatedTokenAddressSync` which
6
+ * implements the standard SPL Associated Token Account seed layout:
7
+ * [owner, TOKEN_PROGRAM_ID, mint]
8
+ *
9
+ * All builders and tools should use these helpers instead of reimplementing
10
+ * ATA derivation. This prevents the class of bugs where one code path uses
11
+ * the correct seeds and another uses a wrong prefix or order.
12
+ *
13
+ * @module solana/ata-utils
14
+ */
15
+ import { PublicKey } from '@solana/web3.js';
16
+ import { createAssociatedTokenAccountIdempotentInstruction, getAssociatedTokenAddressSync } from '@solana/spl-token';
17
+ /** Solana Token Program ID. */
18
+ const TOKEN_PROGRAM_ID = new PublicKey('TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA');
19
+ /** Solana Associated Token Account Program ID. */
20
+ const ASSOCIATED_TOKEN_PROGRAM_ID = new PublicKey('ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL');
21
+ /**
22
+ * Derive the Associated Token Account address for a wallet and mint.
23
+ *
24
+ * Uses the standard SPL seed layout: [owner, TOKEN_PROGRAM_ID, mint].
25
+ * This is the ONLY correct way to derive an ATA — never use a string
26
+ * prefix like "AssociatedTokenAddress" in the seeds.
27
+ *
28
+ * @param owner — Wallet public key that owns the ATA.
29
+ * @param mint — Token mint public key.
30
+ * @returns ATA public key.
31
+ */
32
+ export function deriveAtaAddress(owner, mint) {
33
+ return getAssociatedTokenAddressSync(mint, owner, true, TOKEN_PROGRAM_ID, ASSOCIATED_TOKEN_PROGRAM_ID);
34
+ }
35
+ /**
36
+ * Create a CreateAssociatedTokenAccountIdempotent instruction.
37
+ * This instruction is a no-op if the ATA already exists, so it's safe to
38
+ * always include in transactions.
39
+ *
40
+ * @param payer — Fee payer public key (usually the owner).
41
+ * @param owner — Wallet public key that will own the ATA.
42
+ * @param mint — Token mint public key.
43
+ * @returns TransactionInstruction for CreateAssociatedTokenAccountIdempotent.
44
+ */
45
+ export function createAtaIdempotentIx(payer, owner, mint) {
46
+ const ata = deriveAtaAddress(owner, mint);
47
+ return createAssociatedTokenAccountIdempotentInstruction(payer, ata, owner, mint, TOKEN_PROGRAM_ID, ASSOCIATED_TOKEN_PROGRAM_ID);
48
+ }
49
+ //# sourceMappingURL=ata-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ata-utils.js","sourceRoot":"","sources":["../../src/solana/ata-utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,SAAS,EAA+B,MAAM,iBAAiB,CAAC;AACzE,OAAO,EAAE,iDAAiD,EAAE,6BAA6B,EAAE,MAAM,mBAAmB,CAAC;AAErH,+BAA+B;AAC/B,MAAM,gBAAgB,GAAG,IAAI,SAAS,CAAC,6CAA6C,CAAC,CAAC;AAEtF,kDAAkD;AAClD,MAAM,2BAA2B,GAAG,IAAI,SAAS,CAAC,8CAA8C,CAAC,CAAC;AAElG;;;;;;;;;;GAUG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAgB,EAAE,IAAe;IAChE,OAAO,6BAA6B,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,gBAAgB,EAAE,2BAA2B,CAAC,CAAC;AACzG,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,qBAAqB,CACnC,KAAgB,EAChB,KAAgB,EAChB,IAAe;IAEf,MAAM,GAAG,GAAG,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC1C,OAAO,iDAAiD,CACtD,KAAK,EACL,GAAG,EACH,KAAK,EACL,IAAI,EACJ,gBAAgB,EAChB,2BAA2B,CAC5B,CAAC;AACJ,CAAC"}
@@ -0,0 +1,78 @@
1
+ /**
2
+ * @name strategies/trade-journal
3
+ * @description File-based trade journal for automatic trade tracking.
4
+ *
5
+ * Stores trade entries as JSON in ~/.config/mcp-sap/journal/YYYY-MM-DD.json.
6
+ * Each entry captures: timestamp, type (open/close), market, side, collateral,
7
+ * leverage, entry/exit price, SL/TP, tx signature, position address, fees, status.
8
+ *
9
+ * @module strategies/trade-journal
10
+ */
11
+ /** Trade journal entry. */
12
+ export interface TradeJournalEntry {
13
+ /** ISO 8601 timestamp. */
14
+ timestamp: string;
15
+ /** Trade type: open, close, liquidation, sl_triggered, tp_triggered. */
16
+ type: 'open' | 'close' | 'liquidation' | 'sl_triggered' | 'tp_triggered';
17
+ /** Market symbol (e.g. BONK-PERP). */
18
+ market: string;
19
+ /** Position side: long or short. */
20
+ side: 'long' | 'short';
21
+ /** Collateral in USD. */
22
+ collateralUsd: number;
23
+ /** Leverage multiplier. */
24
+ leverage: number;
25
+ /** Entry or exit price in USD. */
26
+ priceUsd: number;
27
+ /** Stop loss price in USD (if set). */
28
+ stopLossUsd?: number;
29
+ /** Take profit price in USD (if set). */
30
+ takeProfitUsd?: number;
31
+ /** Transaction signature. */
32
+ txSignature?: string;
33
+ /** Position PDA address. */
34
+ positionAddress?: string;
35
+ /** Fees paid in USD (x402 + gas). */
36
+ feesPaidUsd: number;
37
+ /** Current status: open, closed, liquidated. */
38
+ status: 'open' | 'closed' | 'liquidated';
39
+ /** Optional P&L in USD (for close entries). */
40
+ pnlUsd?: number;
41
+ /** Optional notes. */
42
+ notes?: string;
43
+ }
44
+ /** Query filters for the trade journal. */
45
+ export interface JournalQuery {
46
+ /** Filter by market symbol. */
47
+ market?: string;
48
+ /** Filter by type. */
49
+ type?: TradeJournalEntry['type'];
50
+ /** Filter by status. */
51
+ status?: TradeJournalEntry['status'];
52
+ /** Start date (ISO 8601). */
53
+ from?: string;
54
+ /** End date (ISO 8601). */
55
+ to?: string;
56
+ /** Max number of results. */
57
+ limit?: number;
58
+ }
59
+ /** Journal query result. */
60
+ export interface JournalQueryResult {
61
+ entries: TradeJournalEntry[];
62
+ count: number;
63
+ totalPnlUsd?: number;
64
+ }
65
+ /**
66
+ * Append a trade entry to the journal.
67
+ * Entries are stored as JSONL (one JSON object per line) for append-only efficiency.
68
+ */
69
+ export declare function appendTradeEntry(entry: TradeJournalEntry): {
70
+ success: boolean;
71
+ path: string;
72
+ };
73
+ /**
74
+ * Query the trade journal with filters.
75
+ * Reads all journal files in the date range and filters entries.
76
+ */
77
+ export declare function queryTradeJournal(query: JournalQuery): JournalQueryResult;
78
+ //# sourceMappingURL=trade-journal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trade-journal.d.ts","sourceRoot":"","sources":["../../src/strategies/trade-journal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAOH,2BAA2B;AAC3B,MAAM,WAAW,iBAAiB;IAChC,0BAA0B;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,wEAAwE;IACxE,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,aAAa,GAAG,cAAc,GAAG,cAAc,CAAC;IACzE,sCAAsC;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,oCAAoC;IACpC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IACvB,yBAAyB;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,2BAA2B;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,kCAAkC;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,uCAAuC;IACvC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yCAAyC;IACzC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,6BAA6B;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4BAA4B;IAC5B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,qCAAqC;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,gDAAgD;IAChD,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,YAAY,CAAC;IACzC,+CAA+C;IAC/C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,sBAAsB;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,2CAA2C;AAC3C,MAAM,WAAW,YAAY;IAC3B,+BAA+B;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,sBAAsB;IACtB,IAAI,CAAC,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC;IACjC,wBAAwB;IACxB,MAAM,CAAC,EAAE,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IACrC,6BAA6B;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,2BAA2B;IAC3B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,6BAA6B;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,4BAA4B;AAC5B,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,iBAAiB,EAAE,CAAC;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAcD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,iBAAiB,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAQ7F;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,YAAY,GAAG,kBAAkB,CAkDzE"}
@@ -0,0 +1,92 @@
1
+ /**
2
+ * @name strategies/trade-journal
3
+ * @description File-based trade journal for automatic trade tracking.
4
+ *
5
+ * Stores trade entries as JSON in ~/.config/mcp-sap/journal/YYYY-MM-DD.json.
6
+ * Each entry captures: timestamp, type (open/close), market, side, collateral,
7
+ * leverage, entry/exit price, SL/TP, tx signature, position address, fees, status.
8
+ *
9
+ * @module strategies/trade-journal
10
+ */
11
+ import { existsSync, mkdirSync, readFileSync, readdirSync, appendFileSync } from 'fs';
12
+ import { join } from 'path';
13
+ import { getPreferredConfigDir } from '../config/paths.js';
14
+ import { logger } from '../core/logger.js';
15
+ const JOURNAL_DIR = join(getPreferredConfigDir(), 'journal');
16
+ function ensureJournalDir() {
17
+ if (!existsSync(JOURNAL_DIR)) {
18
+ mkdirSync(JOURNAL_DIR, { recursive: true, mode: 0o700 });
19
+ }
20
+ }
21
+ function getJournalFilePath(date) {
22
+ return join(JOURNAL_DIR, `${date}.jsonl`);
23
+ }
24
+ /**
25
+ * Append a trade entry to the journal.
26
+ * Entries are stored as JSONL (one JSON object per line) for append-only efficiency.
27
+ */
28
+ export function appendTradeEntry(entry) {
29
+ ensureJournalDir();
30
+ const date = entry.timestamp.slice(0, 10);
31
+ const filePath = getJournalFilePath(date);
32
+ const line = JSON.stringify(entry) + '\n';
33
+ appendFileSync(filePath, line, 'utf-8');
34
+ logger.info('Trade journal entry added', { type: entry.type, market: entry.market, path: filePath });
35
+ return { success: true, path: filePath };
36
+ }
37
+ /**
38
+ * Query the trade journal with filters.
39
+ * Reads all journal files in the date range and filters entries.
40
+ */
41
+ export function queryTradeJournal(query) {
42
+ ensureJournalDir();
43
+ const files = readdirSync(JOURNAL_DIR)
44
+ .filter(f => f.endsWith('.jsonl'))
45
+ .sort()
46
+ .reverse();
47
+ const entries = [];
48
+ const limit = query.limit ?? 100;
49
+ for (const file of files) {
50
+ if (entries.length >= limit)
51
+ break;
52
+ // Date filter: skip files outside range.
53
+ const fileDate = file.replace('.jsonl', '');
54
+ if (query.from && fileDate < query.from.slice(0, 10))
55
+ continue;
56
+ if (query.to && fileDate > query.to.slice(0, 10))
57
+ continue;
58
+ const filePath = join(JOURNAL_DIR, file);
59
+ const content = readFileSync(filePath, 'utf-8');
60
+ const lines = content.trim().split('\n').filter(Boolean);
61
+ for (const line of lines) {
62
+ if (entries.length >= limit)
63
+ break;
64
+ try {
65
+ const entry = JSON.parse(line);
66
+ if (query.market && entry.market !== query.market)
67
+ continue;
68
+ if (query.type && entry.type !== query.type)
69
+ continue;
70
+ if (query.status && entry.status !== query.status)
71
+ continue;
72
+ if (query.from && entry.timestamp < query.from)
73
+ continue;
74
+ if (query.to && entry.timestamp > query.to)
75
+ continue;
76
+ entries.push(entry);
77
+ }
78
+ catch {
79
+ // Skip malformed lines.
80
+ }
81
+ }
82
+ }
83
+ const totalPnlUsd = entries
84
+ .filter(e => e.pnlUsd !== undefined)
85
+ .reduce((sum, e) => sum + (e.pnlUsd ?? 0), 0);
86
+ return {
87
+ entries,
88
+ count: entries.length,
89
+ totalPnlUsd: totalPnlUsd !== 0 ? Math.round(totalPnlUsd * 1e6) / 1e6 : undefined,
90
+ };
91
+ }
92
+ //# sourceMappingURL=trade-journal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trade-journal.js","sourceRoot":"","sources":["../../src/strategies/trade-journal.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * @name tools/adrena/adrena-commodity-tools
3
+ * @description Commodity (synthetic perp) builder tool registrations for Adrena.
4
+ *
5
+ * @module tools/adrena/adrena-commodity-tools
6
+ */
7
+ import { Server } from '@modelcontextprotocol/sdk/server/index.js';
8
+ import type { SapMcpContext } from '../../core/types.js';
9
+ /**
10
+ * @name registerAdrenaCommodityTools
11
+ * @description Register commodity (synthetic perp) builder tools.
12
+ * @internal
13
+ */
14
+ export declare function registerAdrenaCommodityTools(server: Server, context: SapMcpContext): void;
15
+ //# sourceMappingURL=adrena-commodity-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adrena-commodity-tools.d.ts","sourceRoot":"","sources":["../../../src/tools/adrena/adrena-commodity-tools.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAoBzD;;;;GAIG;AACH,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,IAAI,CAwHzF"}
@@ -0,0 +1,137 @@
1
+ /**
2
+ * @name tools/adrena/adrena-commodity-tools
3
+ * @description Commodity (synthetic perp) builder tool registrations for Adrena.
4
+ *
5
+ * @module tools/adrena/adrena-commodity-tools
6
+ */
7
+ import { createTextResponse } from '../../adapters/mcp/tool-response.js';
8
+ import { registerTool } from '../../adapters/mcp/sdk-compat.js';
9
+ import { buildOpenCommodityLong, buildOpenCommodityShort, buildCloseCommodityLong, buildCloseCommodityShort, } from '../../perps/adrena/index.js';
10
+ import { COMMODITY_TOKENS, priceToRaw, getConnection, parsePublicKey, } from './adrena-helpers.js';
11
+ /* ═══════════════════════════════════════════════════════════════════
12
+ * Commodity Builders
13
+ * ═══════════════════════════════════════════════════════════════════ */
14
+ /**
15
+ * @name registerAdrenaCommodityTools
16
+ * @description Register commodity (synthetic perp) builder tools.
17
+ * @internal
18
+ */
19
+ export function registerAdrenaCommodityTools(server, context) {
20
+ // Open commodity long
21
+ registerTool(server, 'sap_adrena_build_open_commodity_long', {
22
+ description: 'Build an unsigned transaction to open a long position on a synthetic commodity (XAU, XAG, WTI) on Adrena. Uses the commodities pool with USDC collateral. Returns transactionBase64 for local signing.',
23
+ inputSchema: {
24
+ type: 'object',
25
+ properties: {
26
+ owner: { type: 'string', description: 'Position owner wallet public key (base58).' },
27
+ principalToken: { type: 'string', description: 'Commodity to trade.', enum: COMMODITY_TOKENS },
28
+ collateralAmount: { type: 'number', description: 'USDC collateral amount in human-readable units.', minimum: 0 },
29
+ leverage: { type: 'number', description: 'Leverage multiplier.', minimum: 1, maximum: 100 },
30
+ priceUsd: { type: 'number', description: 'Optional limit price in USD.', minimum: 0 },
31
+ },
32
+ required: ['owner', 'principalToken', 'collateralAmount', 'leverage'],
33
+ additionalProperties: false,
34
+ },
35
+ }, async (args) => {
36
+ try {
37
+ const owner = parsePublicKey(String(args['owner']));
38
+ const principalToken = String(args['principalToken']).toUpperCase();
39
+ const collateralAmount = Number(args['collateralAmount']);
40
+ const leverage = Number(args['leverage']);
41
+ const priceUsd = args['priceUsd'] !== undefined ? Number(args['priceUsd']) : null;
42
+ const price = priceUsd !== null ? priceToRaw(priceUsd) : null;
43
+ const result = await buildOpenCommodityLong(getConnection(context), owner, principalToken, collateralAmount, leverage, price);
44
+ return createTextResponse(JSON.stringify(result, null, 2));
45
+ }
46
+ catch (err) {
47
+ return createTextResponse(JSON.stringify({ error: 'Failed to build commodity long transaction', message: err instanceof Error ? err.message : 'Unknown error' }), { isError: true });
48
+ }
49
+ });
50
+ // Open commodity short
51
+ registerTool(server, 'sap_adrena_build_open_commodity_short', {
52
+ description: 'Build an unsigned transaction to open a short position on a synthetic commodity (XAU, XAG, WTI) on Adrena. Uses the commodities pool with USDC collateral. Returns transactionBase64 for local signing.',
53
+ inputSchema: {
54
+ type: 'object',
55
+ properties: {
56
+ owner: { type: 'string', description: 'Position owner wallet public key (base58).' },
57
+ principalToken: { type: 'string', description: 'Commodity to short.', enum: COMMODITY_TOKENS },
58
+ collateralAmount: { type: 'number', description: 'USDC collateral amount.', minimum: 0 },
59
+ leverage: { type: 'number', description: 'Leverage multiplier.', minimum: 1, maximum: 100 },
60
+ priceUsd: { type: 'number', description: 'Optional limit price in USD.', minimum: 0 },
61
+ },
62
+ required: ['owner', 'principalToken', 'collateralAmount', 'leverage'],
63
+ additionalProperties: false,
64
+ },
65
+ }, async (args) => {
66
+ try {
67
+ const owner = parsePublicKey(String(args['owner']));
68
+ const principalToken = String(args['principalToken']).toUpperCase();
69
+ const collateralAmount = Number(args['collateralAmount']);
70
+ const leverage = Number(args['leverage']);
71
+ const priceUsd = args['priceUsd'] !== undefined ? Number(args['priceUsd']) : null;
72
+ const price = priceUsd !== null ? priceToRaw(priceUsd) : null;
73
+ const result = await buildOpenCommodityShort(getConnection(context), owner, principalToken, collateralAmount, leverage, price);
74
+ return createTextResponse(JSON.stringify(result, null, 2));
75
+ }
76
+ catch (err) {
77
+ return createTextResponse(JSON.stringify({ error: 'Failed to build commodity short transaction', message: err instanceof Error ? err.message : 'Unknown error' }), { isError: true });
78
+ }
79
+ });
80
+ // Close commodity long
81
+ registerTool(server, 'sap_adrena_build_close_commodity_long', {
82
+ description: 'Build an unsigned transaction to close a long commodity position on Adrena. Returns transactionBase64 for local signing.',
83
+ inputSchema: {
84
+ type: 'object',
85
+ properties: {
86
+ owner: { type: 'string', description: 'Position owner wallet public key (base58).' },
87
+ principalToken: { type: 'string', description: 'Commodity of the position.', enum: COMMODITY_TOKENS },
88
+ priceUsd: { type: 'number', description: 'Optional close price in USD.', minimum: 0 },
89
+ percentage: { type: 'number', description: 'Percentage to close (0-1000000). Default 1000000.', minimum: 0, maximum: 1000000 },
90
+ },
91
+ required: ['owner', 'principalToken'],
92
+ additionalProperties: false,
93
+ },
94
+ }, async (args) => {
95
+ try {
96
+ const owner = parsePublicKey(String(args['owner']));
97
+ const principalToken = String(args['principalToken']).toUpperCase();
98
+ const priceUsd = args['priceUsd'] !== undefined ? Number(args['priceUsd']) : null;
99
+ const price = priceUsd !== null ? priceToRaw(priceUsd) : null;
100
+ const percentage = args['percentage'] !== undefined ? BigInt(Math.floor(Number(args['percentage']))) : 1000000n;
101
+ const result = await buildCloseCommodityLong(getConnection(context), owner, principalToken, price, percentage);
102
+ return createTextResponse(JSON.stringify(result, null, 2));
103
+ }
104
+ catch (err) {
105
+ return createTextResponse(JSON.stringify({ error: 'Failed to build close commodity long transaction', message: err instanceof Error ? err.message : 'Unknown error' }), { isError: true });
106
+ }
107
+ });
108
+ // Close commodity short
109
+ registerTool(server, 'sap_adrena_build_close_commodity_short', {
110
+ description: 'Build an unsigned transaction to close a short commodity position on Adrena. Returns transactionBase64 for local signing.',
111
+ inputSchema: {
112
+ type: 'object',
113
+ properties: {
114
+ owner: { type: 'string', description: 'Position owner wallet public key (base58).' },
115
+ principalToken: { type: 'string', description: 'Commodity of the position.', enum: COMMODITY_TOKENS },
116
+ priceUsd: { type: 'number', description: 'Optional close price in USD.', minimum: 0 },
117
+ percentage: { type: 'number', description: 'Percentage to close (0-1000000). Default 1000000.', minimum: 0, maximum: 1000000 },
118
+ },
119
+ required: ['owner', 'principalToken'],
120
+ additionalProperties: false,
121
+ },
122
+ }, async (args) => {
123
+ try {
124
+ const owner = parsePublicKey(String(args['owner']));
125
+ const principalToken = String(args['principalToken']).toUpperCase();
126
+ const priceUsd = args['priceUsd'] !== undefined ? Number(args['priceUsd']) : null;
127
+ const price = priceUsd !== null ? priceToRaw(priceUsd) : null;
128
+ const percentage = args['percentage'] !== undefined ? BigInt(Math.floor(Number(args['percentage']))) : 1000000n;
129
+ const result = await buildCloseCommodityShort(getConnection(context), owner, principalToken, price, percentage);
130
+ return createTextResponse(JSON.stringify(result, null, 2));
131
+ }
132
+ catch (err) {
133
+ return createTextResponse(JSON.stringify({ error: 'Failed to build close commodity short transaction', message: err instanceof Error ? err.message : 'Unknown error' }), { isError: true });
134
+ }
135
+ });
136
+ }
137
+ //# sourceMappingURL=adrena-commodity-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adrena-commodity-tools.js","sourceRoot":"","sources":["../../../src/tools/adrena/adrena-commodity-tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * @name tools/adrena/adrena-data-tools
3
+ * @description Data API and on-chain market reader tool registrations for Adrena.
4
+ *
5
+ * @module tools/adrena/adrena-data-tools
6
+ */
7
+ import { Server } from '@modelcontextprotocol/sdk/server/index.js';
8
+ import type { SapMcpContext } from '../../core/types.js';
9
+ /**
10
+ * @name registerAdrenaDataApiTools
11
+ * @description Register Adrena Data API (REST) tools for market data and analytics.
12
+ * @internal
13
+ */
14
+ export declare function registerAdrenaDataApiTools(server: Server, context: SapMcpContext): void;
15
+ /**
16
+ * @name registerAdrenaGetMarketsTool
17
+ * @description Register sap_adrena_get_markets — reads all custody accounts on-chain
18
+ * and returns real market data: mint, decimals, max leverage, trade/swap flags,
19
+ * oracle feed IDs, open interest, and collateral stats.
20
+ * @internal
21
+ */
22
+ export declare function registerAdrenaGetMarketsTool(server: Server, context: SapMcpContext): void;
23
+ //# sourceMappingURL=adrena-data-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adrena-data-tools.d.ts","sourceRoot":"","sources":["../../../src/tools/adrena/adrena-data-tools.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAEnE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAezD;;;;GAIG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,IAAI,CAiQvF;AAMD;;;;;;GAMG;AACH,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,IAAI,CA0KzF"}