@scriptmasterlabs/mcp-x402 2.1.0 → 2.1.1

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 (253) hide show
  1. package/.well-known/x402.json +37 -0
  2. package/LICENSE +57 -21
  3. package/README.md +185 -227
  4. package/dist/index.d.ts +12 -0
  5. package/dist/index.d.ts.map +1 -0
  6. package/dist/index.js +9 -0
  7. package/dist/index.js.map +1 -0
  8. package/dist/mcp-wrapper.d.ts +71 -0
  9. package/dist/mcp-wrapper.d.ts.map +1 -0
  10. package/dist/mcp-wrapper.js +104 -0
  11. package/dist/mcp-wrapper.js.map +1 -0
  12. package/dist/x402-middleware.d.ts +76 -0
  13. package/dist/x402-middleware.d.ts.map +1 -0
  14. package/dist/x402-middleware.js +113 -0
  15. package/dist/x402-middleware.js.map +1 -0
  16. package/dist/xrpl-facilitator.d.ts +77 -0
  17. package/dist/xrpl-facilitator.d.ts.map +1 -0
  18. package/dist/xrpl-facilitator.js +156 -0
  19. package/dist/xrpl-facilitator.js.map +1 -0
  20. package/llms.txt +108 -170
  21. package/package.json +43 -56
  22. package/schema.jsonld +97 -0
  23. package/.well-known/agentcard.json +0 -34
  24. package/.well-known/ai.txt +0 -32
  25. package/CONTRIBUTING.md +0 -76
  26. package/agents.json +0 -81
  27. package/ai/faq.json +0 -74
  28. package/ai/summary.json +0 -157
  29. package/dist/lib/chains/base.d.ts +0 -10
  30. package/dist/lib/chains/base.d.ts.map +0 -1
  31. package/dist/lib/chains/base.js +0 -75
  32. package/dist/lib/chains/base.js.map +0 -1
  33. package/dist/lib/chains/solana.d.ts +0 -10
  34. package/dist/lib/chains/solana.d.ts.map +0 -1
  35. package/dist/lib/chains/solana.js +0 -49
  36. package/dist/lib/chains/solana.js.map +0 -1
  37. package/dist/lib/chains/xrpl.d.ts +0 -10
  38. package/dist/lib/chains/xrpl.d.ts.map +0 -1
  39. package/dist/lib/chains/xrpl.js +0 -55
  40. package/dist/lib/chains/xrpl.js.map +0 -1
  41. package/dist/lib/credit/bureau.d.ts +0 -16
  42. package/dist/lib/credit/bureau.d.ts.map +0 -1
  43. package/dist/lib/credit/bureau.js +0 -88
  44. package/dist/lib/credit/bureau.js.map +0 -1
  45. package/dist/lib/sml-api/agentcard.d.ts +0 -17
  46. package/dist/lib/sml-api/agentcard.d.ts.map +0 -1
  47. package/dist/lib/sml-api/agentcard.js +0 -30
  48. package/dist/lib/sml-api/agentcard.js.map +0 -1
  49. package/dist/lib/sml-api/backtest.d.ts +0 -22
  50. package/dist/lib/sml-api/backtest.d.ts.map +0 -1
  51. package/dist/lib/sml-api/backtest.js +0 -28
  52. package/dist/lib/sml-api/backtest.js.map +0 -1
  53. package/dist/lib/sml-api/brokers.d.ts +0 -40
  54. package/dist/lib/sml-api/brokers.d.ts.map +0 -1
  55. package/dist/lib/sml-api/brokers.js +0 -128
  56. package/dist/lib/sml-api/brokers.js.map +0 -1
  57. package/dist/lib/sml-api/copytrader.d.ts +0 -11
  58. package/dist/lib/sml-api/copytrader.d.ts.map +0 -1
  59. package/dist/lib/sml-api/copytrader.js +0 -30
  60. package/dist/lib/sml-api/copytrader.js.map +0 -1
  61. package/dist/lib/sml-api/crawl.d.ts +0 -20
  62. package/dist/lib/sml-api/crawl.d.ts.map +0 -1
  63. package/dist/lib/sml-api/crawl.js +0 -32
  64. package/dist/lib/sml-api/crawl.js.map +0 -1
  65. package/dist/lib/sml-api/echo.d.ts +0 -10
  66. package/dist/lib/sml-api/echo.d.ts.map +0 -1
  67. package/dist/lib/sml-api/echo.js +0 -23
  68. package/dist/lib/sml-api/echo.js.map +0 -1
  69. package/dist/lib/sml-api/forge.d.ts +0 -11
  70. package/dist/lib/sml-api/forge.d.ts.map +0 -1
  71. package/dist/lib/sml-api/forge.js +0 -29
  72. package/dist/lib/sml-api/forge.js.map +0 -1
  73. package/dist/lib/sml-api/ftd.d.ts +0 -18
  74. package/dist/lib/sml-api/ftd.d.ts.map +0 -1
  75. package/dist/lib/sml-api/ftd.js +0 -43
  76. package/dist/lib/sml-api/ftd.js.map +0 -1
  77. package/dist/lib/sml-api/ghost.d.ts +0 -13
  78. package/dist/lib/sml-api/ghost.d.ts.map +0 -1
  79. package/dist/lib/sml-api/ghost.js +0 -29
  80. package/dist/lib/sml-api/ghost.js.map +0 -1
  81. package/dist/lib/sml-api/launchpad.d.ts +0 -20
  82. package/dist/lib/sml-api/launchpad.d.ts.map +0 -1
  83. package/dist/lib/sml-api/launchpad.js +0 -31
  84. package/dist/lib/sml-api/launchpad.js.map +0 -1
  85. package/dist/lib/sml-api/leviathan.d.ts +0 -22
  86. package/dist/lib/sml-api/leviathan.d.ts.map +0 -1
  87. package/dist/lib/sml-api/leviathan.js +0 -33
  88. package/dist/lib/sml-api/leviathan.js.map +0 -1
  89. package/dist/lib/sml-api/nexus.d.ts +0 -18
  90. package/dist/lib/sml-api/nexus.d.ts.map +0 -1
  91. package/dist/lib/sml-api/nexus.js +0 -40
  92. package/dist/lib/sml-api/nexus.js.map +0 -1
  93. package/dist/lib/sml-api/proof402.d.ts +0 -6
  94. package/dist/lib/sml-api/proof402.d.ts.map +0 -1
  95. package/dist/lib/sml-api/proof402.js +0 -30
  96. package/dist/lib/sml-api/proof402.js.map +0 -1
  97. package/dist/lib/sml-api/rails.d.ts +0 -12
  98. package/dist/lib/sml-api/rails.d.ts.map +0 -1
  99. package/dist/lib/sml-api/rails.js +0 -29
  100. package/dist/lib/sml-api/rails.js.map +0 -1
  101. package/dist/lib/sml-api/shadow.d.ts +0 -15
  102. package/dist/lib/sml-api/shadow.d.ts.map +0 -1
  103. package/dist/lib/sml-api/shadow.js +0 -27
  104. package/dist/lib/sml-api/shadow.js.map +0 -1
  105. package/dist/lib/sml-api/squeezeos.d.ts +0 -21
  106. package/dist/lib/sml-api/squeezeos.d.ts.map +0 -1
  107. package/dist/lib/sml-api/squeezeos.js +0 -97
  108. package/dist/lib/sml-api/squeezeos.js.map +0 -1
  109. package/dist/lib/sml-api/xdeo.d.ts +0 -13
  110. package/dist/lib/sml-api/xdeo.d.ts.map +0 -1
  111. package/dist/lib/sml-api/xdeo.js +0 -34
  112. package/dist/lib/sml-api/xdeo.js.map +0 -1
  113. package/dist/lib/sml-api/xmit.d.ts +0 -13
  114. package/dist/lib/sml-api/xmit.d.ts.map +0 -1
  115. package/dist/lib/sml-api/xmit.js +0 -34
  116. package/dist/lib/sml-api/xmit.js.map +0 -1
  117. package/dist/server/health.d.ts +0 -16
  118. package/dist/server/health.d.ts.map +0 -1
  119. package/dist/server/health.js +0 -39
  120. package/dist/server/health.js.map +0 -1
  121. package/dist/server/index.d.ts +0 -3
  122. package/dist/server/index.d.ts.map +0 -1
  123. package/dist/server/index.js +0 -322
  124. package/dist/server/index.js.map +0 -1
  125. package/dist/server/payments/ap2.d.ts +0 -17
  126. package/dist/server/payments/ap2.d.ts.map +0 -1
  127. package/dist/server/payments/ap2.js +0 -77
  128. package/dist/server/payments/ap2.js.map +0 -1
  129. package/dist/server/payments/receipt.d.ts +0 -28
  130. package/dist/server/payments/receipt.d.ts.map +0 -1
  131. package/dist/server/payments/receipt.js +0 -60
  132. package/dist/server/payments/receipt.js.map +0 -1
  133. package/dist/server/payments/router.d.ts +0 -23
  134. package/dist/server/payments/router.d.ts.map +0 -1
  135. package/dist/server/payments/router.js +0 -69
  136. package/dist/server/payments/router.js.map +0 -1
  137. package/dist/server/payments/wallet.d.ts +0 -18
  138. package/dist/server/payments/wallet.d.ts.map +0 -1
  139. package/dist/server/payments/wallet.js +0 -107
  140. package/dist/server/payments/wallet.js.map +0 -1
  141. package/dist/server/payments/x402.d.ts +0 -29
  142. package/dist/server/payments/x402.d.ts.map +0 -1
  143. package/dist/server/payments/x402.js +0 -138
  144. package/dist/server/payments/x402.js.map +0 -1
  145. package/dist/server/registry/catalog.d.ts +0 -12
  146. package/dist/server/registry/catalog.d.ts.map +0 -1
  147. package/dist/server/registry/catalog.js +0 -55
  148. package/dist/server/registry/catalog.js.map +0 -1
  149. package/dist/server/registry/discovery.d.ts +0 -16
  150. package/dist/server/registry/discovery.d.ts.map +0 -1
  151. package/dist/server/registry/discovery.js +0 -33
  152. package/dist/server/registry/discovery.js.map +0 -1
  153. package/dist/server/registry/pricing.d.ts +0 -10
  154. package/dist/server/registry/pricing.d.ts.map +0 -1
  155. package/dist/server/registry/pricing.js +0 -123
  156. package/dist/server/registry/pricing.js.map +0 -1
  157. package/dist/server/security/acl.d.ts +0 -28
  158. package/dist/server/security/acl.d.ts.map +0 -1
  159. package/dist/server/security/acl.js +0 -36
  160. package/dist/server/security/acl.js.map +0 -1
  161. package/dist/server/security/audit.d.ts +0 -15
  162. package/dist/server/security/audit.d.ts.map +0 -1
  163. package/dist/server/security/audit.js +0 -77
  164. package/dist/server/security/audit.js.map +0 -1
  165. package/dist/server/security/rate-limit.d.ts +0 -12
  166. package/dist/server/security/rate-limit.d.ts.map +0 -1
  167. package/dist/server/security/rate-limit.js +0 -72
  168. package/dist/server/security/rate-limit.js.map +0 -1
  169. package/dist/server/security/sandbox.d.ts +0 -7
  170. package/dist/server/security/sandbox.d.ts.map +0 -1
  171. package/dist/server/security/sandbox.js +0 -42
  172. package/dist/server/security/sandbox.js.map +0 -1
  173. package/dist/server/tools/agentcard.d.ts +0 -3
  174. package/dist/server/tools/agentcard.d.ts.map +0 -1
  175. package/dist/server/tools/agentcard.js +0 -118
  176. package/dist/server/tools/agentcard.js.map +0 -1
  177. package/dist/server/tools/backtest.d.ts +0 -3
  178. package/dist/server/tools/backtest.d.ts.map +0 -1
  179. package/dist/server/tools/backtest.js +0 -112
  180. package/dist/server/tools/backtest.js.map +0 -1
  181. package/dist/server/tools/brokers.d.ts +0 -3
  182. package/dist/server/tools/brokers.d.ts.map +0 -1
  183. package/dist/server/tools/brokers.js +0 -223
  184. package/dist/server/tools/brokers.js.map +0 -1
  185. package/dist/server/tools/copytrader.d.ts +0 -3
  186. package/dist/server/tools/copytrader.d.ts.map +0 -1
  187. package/dist/server/tools/copytrader.js +0 -90
  188. package/dist/server/tools/copytrader.js.map +0 -1
  189. package/dist/server/tools/crawl.d.ts +0 -3
  190. package/dist/server/tools/crawl.d.ts.map +0 -1
  191. package/dist/server/tools/crawl.js +0 -60
  192. package/dist/server/tools/crawl.js.map +0 -1
  193. package/dist/server/tools/discovery.d.ts +0 -3
  194. package/dist/server/tools/discovery.d.ts.map +0 -1
  195. package/dist/server/tools/discovery.js +0 -188
  196. package/dist/server/tools/discovery.js.map +0 -1
  197. package/dist/server/tools/echo.d.ts +0 -3
  198. package/dist/server/tools/echo.d.ts.map +0 -1
  199. package/dist/server/tools/echo.js +0 -48
  200. package/dist/server/tools/echo.js.map +0 -1
  201. package/dist/server/tools/forge.d.ts +0 -3
  202. package/dist/server/tools/forge.d.ts.map +0 -1
  203. package/dist/server/tools/forge.js +0 -77
  204. package/dist/server/tools/forge.js.map +0 -1
  205. package/dist/server/tools/ftd.d.ts +0 -3
  206. package/dist/server/tools/ftd.d.ts.map +0 -1
  207. package/dist/server/tools/ftd.js +0 -70
  208. package/dist/server/tools/ftd.js.map +0 -1
  209. package/dist/server/tools/ghost.d.ts +0 -3
  210. package/dist/server/tools/ghost.d.ts.map +0 -1
  211. package/dist/server/tools/ghost.js +0 -83
  212. package/dist/server/tools/ghost.js.map +0 -1
  213. package/dist/server/tools/index.d.ts +0 -3
  214. package/dist/server/tools/index.d.ts.map +0 -1
  215. package/dist/server/tools/index.js +0 -44
  216. package/dist/server/tools/index.js.map +0 -1
  217. package/dist/server/tools/launchpad.d.ts +0 -3
  218. package/dist/server/tools/launchpad.d.ts.map +0 -1
  219. package/dist/server/tools/launchpad.js +0 -151
  220. package/dist/server/tools/launchpad.js.map +0 -1
  221. package/dist/server/tools/leviathan.d.ts +0 -3
  222. package/dist/server/tools/leviathan.d.ts.map +0 -1
  223. package/dist/server/tools/leviathan.js +0 -73
  224. package/dist/server/tools/leviathan.js.map +0 -1
  225. package/dist/server/tools/nexus.d.ts +0 -3
  226. package/dist/server/tools/nexus.d.ts.map +0 -1
  227. package/dist/server/tools/nexus.js +0 -65
  228. package/dist/server/tools/nexus.js.map +0 -1
  229. package/dist/server/tools/proof402.d.ts +0 -3
  230. package/dist/server/tools/proof402.d.ts.map +0 -1
  231. package/dist/server/tools/proof402.js +0 -74
  232. package/dist/server/tools/proof402.js.map +0 -1
  233. package/dist/server/tools/rails.d.ts +0 -3
  234. package/dist/server/tools/rails.d.ts.map +0 -1
  235. package/dist/server/tools/rails.js +0 -82
  236. package/dist/server/tools/rails.js.map +0 -1
  237. package/dist/server/tools/shadow.d.ts +0 -3
  238. package/dist/server/tools/shadow.d.ts.map +0 -1
  239. package/dist/server/tools/shadow.js +0 -114
  240. package/dist/server/tools/shadow.js.map +0 -1
  241. package/dist/server/tools/squeezeos.d.ts +0 -3
  242. package/dist/server/tools/squeezeos.d.ts.map +0 -1
  243. package/dist/server/tools/squeezeos.js +0 -231
  244. package/dist/server/tools/squeezeos.js.map +0 -1
  245. package/dist/server/tools/xdeo.d.ts +0 -3
  246. package/dist/server/tools/xdeo.d.ts.map +0 -1
  247. package/dist/server/tools/xdeo.js +0 -58
  248. package/dist/server/tools/xdeo.js.map +0 -1
  249. package/dist/server/tools/xmit.d.ts +0 -3
  250. package/dist/server/tools/xmit.d.ts.map +0 -1
  251. package/dist/server/tools/xmit.js +0 -59
  252. package/dist/server/tools/xmit.js.map +0 -1
  253. package/server.json +0 -52
@@ -1 +0,0 @@
1
- {"version":3,"file":"agentcard.js","sourceRoot":"","sources":["../../../src/server/tools/agentcard.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
- export declare function registerBacktest(server: McpServer): void;
3
- //# sourceMappingURL=backtest.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"backtest.d.ts","sourceRoot":"","sources":["../../../src/server/tools/backtest.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA2BzE,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA0FxD"}
@@ -1,112 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.registerBacktest = registerBacktest;
4
- const zod_1 = require("zod");
5
- const x402_js_1 = require("../payments/x402.js");
6
- const rate_limit_js_1 = require("../security/rate-limit.js");
7
- const sandbox_js_1 = require("../security/sandbox.js");
8
- const audit_js_1 = require("../security/audit.js");
9
- const pricing_js_1 = require("../registry/pricing.js");
10
- const backtest_js_1 = require("../../lib/sml-api/backtest.js");
11
- const BacktestSchema = zod_1.z.object({
12
- ticker: zod_1.z.string().min(1).max(10).toUpperCase(),
13
- lookback_days: zod_1.z.number().int().min(30).max(1260).default(252),
14
- fees: zod_1.z.number().min(0).max(0.05).default(0.001),
15
- slippage: zod_1.z.number().min(0).max(0.05).default(0.0005),
16
- momentum_window: zod_1.z.number().int().min(2).max(50).default(10),
17
- momentum_threshold: zod_1.z.number().min(0).max(0.1).default(0.001),
18
- wallet_address: zod_1.z.string().optional(),
19
- });
20
- const ValidateSchema = zod_1.z.object({
21
- ticker: zod_1.z.string().min(1).max(10).toUpperCase(),
22
- lookback_days: zod_1.z.number().int().min(60).max(1260).default(504),
23
- train_ratio: zod_1.z.number().min(0.5).max(0.9).default(0.7),
24
- fees: zod_1.z.number().min(0).max(0.05).default(0.001),
25
- slippage: zod_1.z.number().min(0).max(0.05).default(0.0005),
26
- wallet_address: zod_1.z.string().optional(),
27
- });
28
- function registerBacktest(server) {
29
- const audit = audit_js_1.AuditLogger.getInstance();
30
- // ── backtest_run — full backtest on live price data (FREE) ─────────────────
31
- server.tool('backtest_run', {
32
- ticker: zod_1.z.string().describe('Ticker symbol (e.g. NVDA, SPY, GME)'),
33
- lookback_days: zod_1.z.number().describe('Days of history to backtest (30–1260, default 252)'),
34
- fees: zod_1.z.number().describe('Round-trip commission rate (default 0.001 = 0.1%)'),
35
- slippage: zod_1.z.number().describe('Slippage per side (default 0.0005)'),
36
- momentum_window: zod_1.z.number().describe('Momentum rolling window in days (default 10)'),
37
- momentum_threshold: zod_1.z.number().describe('Minimum momentum to enter long (default 0.001)'),
38
- wallet_address: zod_1.z.string().describe('Agent wallet address (optional)'),
39
- }, async (rawArgs) => {
40
- const args = sandbox_js_1.Sandbox.validate(BacktestSchema, rawArgs);
41
- if (!rate_limit_js_1.RateLimiter.getInstance().checkTool('backtest_run')) {
42
- return { content: [{ type: 'text', text: JSON.stringify({ error: 'rate_limit_exceeded' }) }], isError: true };
43
- }
44
- try {
45
- const result = await backtest_js_1.BacktestAPI.backtest({
46
- ticker: args.ticker,
47
- lookback_days: args.lookback_days,
48
- fees: args.fees,
49
- slippage: args.slippage,
50
- momentum_window: args.momentum_window,
51
- momentum_threshold: args.momentum_threshold,
52
- });
53
- audit.info('backtest_run_success', { ticker: args.ticker });
54
- return { content: [{ type: 'text', text: JSON.stringify(result) }] };
55
- }
56
- catch (err) {
57
- audit.warn('backtest_run_fail', { error: String(err) });
58
- return { content: [{ type: 'text', text: JSON.stringify({ error: String(err) }) }], isError: true };
59
- }
60
- });
61
- // ── backtest_validate — walk-forward OOS validation ($0.02) ───────────────
62
- server.tool('backtest_validate', {
63
- ticker: zod_1.z.string().describe('Ticker symbol to validate'),
64
- lookback_days: zod_1.z.number().describe('Total history window (60–1260, default 504 = 2 years)'),
65
- train_ratio: zod_1.z.number().describe('Train/test split ratio (default 0.7 = 70% in-sample)'),
66
- fees: zod_1.z.number().describe('Round-trip commission rate (default 0.001)'),
67
- slippage: zod_1.z.number().describe('Slippage per side (default 0.0005)'),
68
- wallet_address: zod_1.z.string().describe('Agent wallet for x402 payment (AP2 required)'),
69
- }, async (rawArgs) => {
70
- const args = sandbox_js_1.Sandbox.validate(ValidateSchema, rawArgs);
71
- if (!rate_limit_js_1.RateLimiter.getInstance().checkTool('backtest_validate')) {
72
- return { content: [{ type: 'text', text: JSON.stringify({ error: 'rate_limit_exceeded' }) }], isError: true };
73
- }
74
- await pricing_js_1.PriceRegistry.getInstance().seedDefaults();
75
- const price = await pricing_js_1.PriceRegistry.getInstance().getPrice('backtest_validate');
76
- if (!price) {
77
- return { content: [{ type: 'text', text: JSON.stringify({ error: 'price_unavailable' }) }], isError: true };
78
- }
79
- let payment;
80
- try {
81
- payment = await (0, x402_js_1.executeX402Payment)({ price, currency: 'USDC', toolName: 'backtest_validate', walletAddress: args.wallet_address });
82
- }
83
- catch (err) {
84
- audit.warn('backtest_validate_payment_fail', { error: String(err) });
85
- return { content: [{ type: 'text', text: JSON.stringify({ error: 'payment_failed', message: String(err) }) }], isError: true };
86
- }
87
- try {
88
- const result = await backtest_js_1.BacktestAPI.walkForward({
89
- ticker: args.ticker,
90
- lookback_days: args.lookback_days,
91
- train_ratio: args.train_ratio,
92
- fees: args.fees,
93
- slippage: args.slippage,
94
- });
95
- audit.info('backtest_validate_success', { ticker: args.ticker });
96
- return {
97
- content: [{
98
- type: 'text',
99
- text: JSON.stringify({
100
- ...result,
101
- _meta: { receipt_id: payment.receiptId, tx_hash: payment.txHash, chain: payment.chain, amount_paid: `${payment.amountPaid} ${payment.currency}` },
102
- }),
103
- }],
104
- };
105
- }
106
- catch (err) {
107
- audit.warn('backtest_validate_fail', { error: String(err) });
108
- return { content: [{ type: 'text', text: JSON.stringify({ error: String(err) }) }], isError: true };
109
- }
110
- });
111
- }
112
- //# sourceMappingURL=backtest.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"backtest.js","sourceRoot":"","sources":["../../../src/server/tools/backtest.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
- export declare function registerBrokers(server: McpServer): void;
3
- //# sourceMappingURL=brokers.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"brokers.d.ts","sourceRoot":"","sources":["../../../src/server/tools/brokers.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA8CzE,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA0MvD"}
@@ -1,223 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.registerBrokers = registerBrokers;
4
- const zod_1 = require("zod");
5
- const x402_js_1 = require("../payments/x402.js");
6
- const rate_limit_js_1 = require("../security/rate-limit.js");
7
- const sandbox_js_1 = require("../security/sandbox.js");
8
- const audit_js_1 = require("../security/audit.js");
9
- const pricing_js_1 = require("../registry/pricing.js");
10
- const brokers_js_1 = require("../../lib/sml-api/brokers.js");
11
- // ── Schemas ────────────────────────────────────────────────────────────────
12
- const TradierQuoteSchema = zod_1.z.object({
13
- symbols: zod_1.z.string().min(1).max(200),
14
- });
15
- const TradierOrderSchema = zod_1.z.object({
16
- account_id: zod_1.z.string().min(1),
17
- symbol: zod_1.z.string().min(1).max(10).toUpperCase(),
18
- side: zod_1.z.enum(['buy', 'sell']),
19
- quantity: zod_1.z.number().int().min(1).max(10000),
20
- type: zod_1.z.enum(['market', 'limit', 'stop', 'stop_limit']),
21
- duration: zod_1.z.enum(['day', 'gtc', 'pre', 'post']),
22
- price: zod_1.z.number().positive().optional(),
23
- stop: zod_1.z.number().positive().optional(),
24
- wallet_address: zod_1.z.string().optional(),
25
- });
26
- const RobinhoodQuoteSchema = zod_1.z.object({
27
- symbol: zod_1.z.string().min(1).max(10).toUpperCase(),
28
- });
29
- const RobinhoodOrderSchema = zod_1.z.object({
30
- symbol: zod_1.z.string().min(1).max(10).toUpperCase(),
31
- side: zod_1.z.enum(['buy', 'sell']),
32
- quantity: zod_1.z.number().int().min(1).max(10000),
33
- type: zod_1.z.enum(['market', 'limit']),
34
- time_in_force: zod_1.z.enum(['gfd', 'gtc', 'ioc', 'opg']),
35
- price: zod_1.z.number().positive().optional(),
36
- wallet_address: zod_1.z.string().optional(),
37
- });
38
- const AccountSchema = zod_1.z.object({
39
- account_id: zod_1.z.string().min(1),
40
- });
41
- // ── Registration ───────────────────────────────────────────────────────────
42
- function registerBrokers(server) {
43
- const audit = audit_js_1.AuditLogger.getInstance();
44
- // ── tradier_quote — FREE ─────────────────────────────────────────────────
45
- server.tool('tradier_quote', {
46
- symbols: zod_1.z.string().describe('Comma-separated ticker symbols (e.g. "NVDA,SPY,AAPL")'),
47
- }, async (rawArgs) => {
48
- const args = sandbox_js_1.Sandbox.validate(TradierQuoteSchema, rawArgs);
49
- if (!rate_limit_js_1.RateLimiter.getInstance().checkTool('tradier_quote')) {
50
- return { content: [{ type: 'text', text: JSON.stringify({ error: 'rate_limit_exceeded' }) }], isError: true };
51
- }
52
- try {
53
- const data = await brokers_js_1.TradierAPI.quote({ symbols: args.symbols });
54
- audit.info('tradier_quote_success', { symbols: args.symbols });
55
- return { content: [{ type: 'text', text: JSON.stringify(data) }] };
56
- }
57
- catch (err) {
58
- audit.warn('tradier_quote_fail', { error: String(err) });
59
- return { content: [{ type: 'text', text: JSON.stringify({ error: String(err) }) }], isError: true };
60
- }
61
- });
62
- // ── tradier_order — $0.01 x402 ──────────────────────────────────────────
63
- server.tool('tradier_order', {
64
- account_id: zod_1.z.string().describe('Tradier brokerage account ID'),
65
- symbol: zod_1.z.string().describe('Ticker symbol (e.g. NVDA)'),
66
- side: zod_1.z.string().describe('"buy" or "sell"'),
67
- quantity: zod_1.z.number().describe('Number of shares (integer)'),
68
- type: zod_1.z.string().describe('"market" | "limit" | "stop" | "stop_limit"'),
69
- duration: zod_1.z.string().describe('"day" | "gtc" | "pre" | "post"'),
70
- price: zod_1.z.number().describe('Limit price (required for limit/stop_limit orders)'),
71
- stop: zod_1.z.number().describe('Stop price (required for stop/stop_limit orders)'),
72
- wallet_address: zod_1.z.string().describe('Agent wallet for x402 payment (AP2 required)'),
73
- }, async (rawArgs) => {
74
- const args = sandbox_js_1.Sandbox.validate(TradierOrderSchema, rawArgs);
75
- if (!rate_limit_js_1.RateLimiter.getInstance().checkTool('tradier_order')) {
76
- return { content: [{ type: 'text', text: JSON.stringify({ error: 'rate_limit_exceeded' }) }], isError: true };
77
- }
78
- await pricing_js_1.PriceRegistry.getInstance().seedDefaults();
79
- const price = await pricing_js_1.PriceRegistry.getInstance().getPrice('tradier_order');
80
- if (!price) {
81
- return { content: [{ type: 'text', text: JSON.stringify({ error: 'price_unavailable' }) }], isError: true };
82
- }
83
- let payment;
84
- try {
85
- payment = await (0, x402_js_1.executeX402Payment)({ price, currency: 'USDC', toolName: 'tradier_order', walletAddress: args.wallet_address });
86
- }
87
- catch (err) {
88
- return { content: [{ type: 'text', text: JSON.stringify({ error: 'payment_failed', message: String(err) }) }], isError: true };
89
- }
90
- try {
91
- const result = await brokers_js_1.TradierAPI.order({
92
- account_id: args.account_id,
93
- symbol: args.symbol,
94
- side: args.side,
95
- quantity: args.quantity,
96
- type: args.type,
97
- duration: args.duration,
98
- price: args.price,
99
- stop: args.stop,
100
- });
101
- audit.info('tradier_order_success', { symbol: args.symbol, side: args.side, quantity: args.quantity });
102
- return {
103
- content: [{
104
- type: 'text',
105
- text: JSON.stringify({
106
- ...result,
107
- _meta: { receipt_id: payment.receiptId, tx_hash: payment.txHash, chain: payment.chain, amount_paid: `${payment.amountPaid} ${payment.currency}` },
108
- }),
109
- }],
110
- };
111
- }
112
- catch (err) {
113
- audit.warn('tradier_order_fail', { error: String(err) });
114
- return { content: [{ type: 'text', text: JSON.stringify({ error: String(err) }) }], isError: true };
115
- }
116
- });
117
- // ── tradier_positions — FREE ─────────────────────────────────────────────
118
- server.tool('tradier_positions', {
119
- account_id: zod_1.z.string().describe('Tradier brokerage account ID'),
120
- }, async (rawArgs) => {
121
- const args = sandbox_js_1.Sandbox.validate(AccountSchema, rawArgs);
122
- if (!rate_limit_js_1.RateLimiter.getInstance().checkTool('tradier_positions')) {
123
- return { content: [{ type: 'text', text: JSON.stringify({ error: 'rate_limit_exceeded' }) }], isError: true };
124
- }
125
- try {
126
- const [positions, balances] = await Promise.all([
127
- brokers_js_1.TradierAPI.positions(args.account_id),
128
- brokers_js_1.TradierAPI.balances(args.account_id),
129
- ]);
130
- return { content: [{ type: 'text', text: JSON.stringify({ positions, balances }) }] };
131
- }
132
- catch (err) {
133
- return { content: [{ type: 'text', text: JSON.stringify({ error: String(err) }) }], isError: true };
134
- }
135
- });
136
- // ── robinhood_quote — FREE ───────────────────────────────────────────────
137
- server.tool('robinhood_quote', {
138
- symbol: zod_1.z.string().describe('Ticker symbol (e.g. NVDA)'),
139
- }, async (rawArgs) => {
140
- const args = sandbox_js_1.Sandbox.validate(RobinhoodQuoteSchema, rawArgs);
141
- if (!rate_limit_js_1.RateLimiter.getInstance().checkTool('robinhood_quote')) {
142
- return { content: [{ type: 'text', text: JSON.stringify({ error: 'rate_limit_exceeded' }) }], isError: true };
143
- }
144
- try {
145
- const data = await brokers_js_1.RobinhoodAPI.quote(args.symbol);
146
- audit.info('robinhood_quote_success', { symbol: args.symbol });
147
- return { content: [{ type: 'text', text: JSON.stringify(data) }] };
148
- }
149
- catch (err) {
150
- audit.warn('robinhood_quote_fail', { error: String(err) });
151
- return { content: [{ type: 'text', text: JSON.stringify({ error: String(err) }) }], isError: true };
152
- }
153
- });
154
- // ── robinhood_order — $0.01 x402 ────────────────────────────────────────
155
- server.tool('robinhood_order', {
156
- symbol: zod_1.z.string().describe('Ticker symbol (e.g. NVDA)'),
157
- side: zod_1.z.string().describe('"buy" or "sell"'),
158
- quantity: zod_1.z.number().describe('Number of shares (integer)'),
159
- type: zod_1.z.string().describe('"market" or "limit"'),
160
- time_in_force: zod_1.z.string().describe('"gfd" (good for day) | "gtc" | "ioc" | "opg"'),
161
- price: zod_1.z.number().describe('Limit price (required for limit orders)'),
162
- wallet_address: zod_1.z.string().describe('Agent wallet for x402 payment (AP2 required)'),
163
- }, async (rawArgs) => {
164
- const args = sandbox_js_1.Sandbox.validate(RobinhoodOrderSchema, rawArgs);
165
- if (!rate_limit_js_1.RateLimiter.getInstance().checkTool('robinhood_order')) {
166
- return { content: [{ type: 'text', text: JSON.stringify({ error: 'rate_limit_exceeded' }) }], isError: true };
167
- }
168
- await pricing_js_1.PriceRegistry.getInstance().seedDefaults();
169
- const price = await pricing_js_1.PriceRegistry.getInstance().getPrice('robinhood_order');
170
- if (!price) {
171
- return { content: [{ type: 'text', text: JSON.stringify({ error: 'price_unavailable' }) }], isError: true };
172
- }
173
- let payment;
174
- try {
175
- payment = await (0, x402_js_1.executeX402Payment)({ price, currency: 'USDC', toolName: 'robinhood_order', walletAddress: args.wallet_address });
176
- }
177
- catch (err) {
178
- return { content: [{ type: 'text', text: JSON.stringify({ error: 'payment_failed', message: String(err) }) }], isError: true };
179
- }
180
- try {
181
- const result = await brokers_js_1.RobinhoodAPI.order({
182
- symbol: args.symbol,
183
- side: args.side,
184
- quantity: args.quantity,
185
- type: args.type,
186
- time_in_force: args.time_in_force,
187
- price: args.price,
188
- });
189
- audit.info('robinhood_order_success', { symbol: args.symbol, side: args.side, quantity: args.quantity });
190
- return {
191
- content: [{
192
- type: 'text',
193
- text: JSON.stringify({
194
- ...result,
195
- _meta: { receipt_id: payment.receiptId, tx_hash: payment.txHash, chain: payment.chain, amount_paid: `${payment.amountPaid} ${payment.currency}` },
196
- }),
197
- }],
198
- };
199
- }
200
- catch (err) {
201
- audit.warn('robinhood_order_fail', { error: String(err) });
202
- return { content: [{ type: 'text', text: JSON.stringify({ error: String(err) }) }], isError: true };
203
- }
204
- });
205
- // ── robinhood_portfolio — FREE ───────────────────────────────────────────
206
- server.tool('robinhood_portfolio', {}, async () => {
207
- if (!rate_limit_js_1.RateLimiter.getInstance().checkTool('robinhood_portfolio')) {
208
- return { content: [{ type: 'text', text: JSON.stringify({ error: 'rate_limit_exceeded' }) }], isError: true };
209
- }
210
- try {
211
- const [portfolio, positions, orders] = await Promise.all([
212
- brokers_js_1.RobinhoodAPI.portfolio(),
213
- brokers_js_1.RobinhoodAPI.positions(),
214
- brokers_js_1.RobinhoodAPI.orderHistory(),
215
- ]);
216
- return { content: [{ type: 'text', text: JSON.stringify({ portfolio, positions, recent_orders: orders }) }] };
217
- }
218
- catch (err) {
219
- return { content: [{ type: 'text', text: JSON.stringify({ error: String(err) }) }], isError: true };
220
- }
221
- });
222
- }
223
- //# sourceMappingURL=brokers.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"brokers.js","sourceRoot":"","sources":["../../../src/server/tools/brokers.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
- export declare function registerCopyTrader(server: McpServer): void;
3
- //# sourceMappingURL=copytrader.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"copytrader.d.ts","sourceRoot":"","sources":["../../../src/server/tools/copytrader.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAezE,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAuF1D"}
@@ -1,90 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.registerCopyTrader = registerCopyTrader;
4
- const zod_1 = require("zod");
5
- const x402_js_1 = require("../payments/x402.js");
6
- const rate_limit_js_1 = require("../security/rate-limit.js");
7
- const sandbox_js_1 = require("../security/sandbox.js");
8
- const audit_js_1 = require("../security/audit.js");
9
- const pricing_js_1 = require("../registry/pricing.js");
10
- const copytrader_js_1 = require("../../lib/sml-api/copytrader.js");
11
- const SubscribeSchema = zod_1.z.object({
12
- whale_address: zod_1.z.string().min(10),
13
- subscriber_address: zod_1.z.string().min(10),
14
- max_copy_amount_xrp: zod_1.z.number().positive(),
15
- wallet_address: zod_1.z.string().optional(),
16
- });
17
- function registerCopyTrader(server) {
18
- const audit = audit_js_1.AuditLogger.getInstance();
19
- // ── FREE: copytrader_status ────────────────────────────────────────────────
20
- server.tool('copytrader_status', {}, async () => {
21
- try {
22
- const data = await copytrader_js_1.CopyTraderAPI.status();
23
- return { content: [{ type: 'text', text: JSON.stringify(data) }] };
24
- }
25
- catch (err) {
26
- return { content: [{ type: 'text', text: JSON.stringify({ error: 'api_error', message: String(err) }) }], isError: true };
27
- }
28
- });
29
- // ── FREE: copytrader_whales ────────────────────────────────────────────────
30
- server.tool('copytrader_whales', {}, async () => {
31
- if (!rate_limit_js_1.RateLimiter.getInstance().checkTool('copytrader_whales')) {
32
- return { content: [{ type: 'text', text: JSON.stringify({ error: 'rate_limit_exceeded', retry_after: 60 }) }], isError: true };
33
- }
34
- try {
35
- const data = await copytrader_js_1.CopyTraderAPI.whales();
36
- audit.info('copytrader_whales', {});
37
- return { content: [{ type: 'text', text: JSON.stringify(data) }] };
38
- }
39
- catch (err) {
40
- return { content: [{ type: 'text', text: JSON.stringify({ error: 'api_error', message: String(err) }) }], isError: true };
41
- }
42
- });
43
- // ── PAID: copytrader_subscribe (0.05 USDC) ────────────────────────────────
44
- server.tool('copytrader_subscribe', {
45
- whale_address: zod_1.z.string().describe('XRPL address of the whale to copy.'),
46
- subscriber_address: zod_1.z.string().describe('Your XRPL address that will mirror trades.'),
47
- max_copy_amount_xrp: zod_1.z.number().describe('Maximum XRP to allocate per copied trade.'),
48
- wallet_address: zod_1.z.string().describe('Agent wallet for x402 payment.'),
49
- }, async (rawArgs) => {
50
- const args = sandbox_js_1.Sandbox.validate(SubscribeSchema, rawArgs);
51
- if (!rate_limit_js_1.RateLimiter.getInstance().checkTool('copytrader_subscribe')) {
52
- return { content: [{ type: 'text', text: JSON.stringify({ error: 'rate_limit_exceeded', retry_after: 60 }) }], isError: true };
53
- }
54
- await pricing_js_1.PriceRegistry.getInstance().seedDefaults();
55
- const price = await pricing_js_1.PriceRegistry.getInstance().getPrice('copytrader_subscribe');
56
- if (!price) {
57
- return { content: [{ type: 'text', text: JSON.stringify({ error: 'price_unavailable' }) }], isError: true };
58
- }
59
- let payment;
60
- try {
61
- payment = await (0, x402_js_1.executeX402Payment)({ price, currency: 'USDC', toolName: 'copytrader_subscribe', walletAddress: args.wallet_address });
62
- }
63
- catch (err) {
64
- audit.warn('copytrader_subscribe_payment_fail', { error: String(err) });
65
- return { content: [{ type: 'text', text: JSON.stringify({ error: 'payment_failed', message: String(err) }) }], isError: true };
66
- }
67
- try {
68
- const data = await copytrader_js_1.CopyTraderAPI.subscribe({
69
- whaleAddress: args.whale_address,
70
- subscriberAddress: args.subscriber_address,
71
- maxCopyAmountXrp: args.max_copy_amount_xrp,
72
- });
73
- audit.info('copytrader_subscribe_success', { receiptId: payment.receiptId });
74
- return {
75
- content: [{
76
- type: 'text',
77
- text: JSON.stringify({
78
- data,
79
- _meta: { receipt_id: payment.receiptId, tx_hash: payment.txHash, chain: payment.chain, amount_paid: `${payment.amountPaid} ${payment.currency}`, timestamp: payment.timestamp },
80
- }),
81
- }],
82
- };
83
- }
84
- catch (err) {
85
- audit.error('copytrader_subscribe_api_fail', { error: String(err) });
86
- return { content: [{ type: 'text', text: JSON.stringify({ error: 'api_error', message: String(err) }) }], isError: true };
87
- }
88
- });
89
- }
90
- //# sourceMappingURL=copytrader.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"copytrader.js","sourceRoot":"","sources":["../../../src/server/tools/copytrader.ts"],"names":[],"mappings":";;AAgBA,gDAuFC;AAvGD,6BAAwB;AAExB,iDAAyD;AACzD,6DAAwD;AACxD,uDAAiD;AACjD,mDAAmD;AACnD,uDAAuD;AACvD,mEAAgE;AAEhE,MAAM,eAAe,GAAG,OAAC,CAAC,MAAM,CAAC;IAC/B,aAAa,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;IACjC,kBAAkB,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;IACtC,mBAAmB,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC1C,cAAc,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACtC,CAAC,CAAC;AAEH,SAAgB,kBAAkB,CAAC,MAAiB;IAClD,MAAM,KAAK,GAAG,sBAAW,CAAC,WAAW,EAAE,CAAC;IAExC,8EAA8E;IAC9E,MAAM,CAAC,IAAI,CACT,mBAAmB,EACnB,EAAE,EACF,KAAK,IAAI,EAAE;QACT,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,6BAAa,CAAC,MAAM,EAAE,CAAC;YAC1C,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;QACrE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC5H,CAAC;IACH,CAAC,CACF,CAAC;IAEF,8EAA8E;IAC9E,MAAM,CAAC,IAAI,CACT,mBAAmB,EACnB,EAAE,EACF,KAAK,IAAI,EAAE;QACT,IAAI,CAAC,2BAAW,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,mBAAmB,CAAC,EAAE,CAAC;YAC9D,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,qBAAqB,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QACjI,CAAC;QACD,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,6BAAa,CAAC,MAAM,EAAE,CAAC;YAC1C,KAAK,CAAC,IAAI,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;YACpC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;QACrE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC5H,CAAC;IACH,CAAC,CACF,CAAC;IAEF,6EAA6E;IAC7E,MAAM,CAAC,IAAI,CACT,sBAAsB,EACtB;QACE,aAAa,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;QACxE,kBAAkB,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4CAA4C,CAAC;QACrF,mBAAmB,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;QACrF,cAAc,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;KACtE,EACD,KAAK,EAAE,OAAO,EAAE,EAAE;QAChB,MAAM,IAAI,GAAG,oBAAO,CAAC,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;QAExD,IAAI,CAAC,2BAAW,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,sBAAsB,CAAC,EAAE,CAAC;YACjE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,qBAAqB,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QACjI,CAAC;QAED,MAAM,0BAAa,CAAC,WAAW,EAAE,CAAC,YAAY,EAAE,CAAC;QACjD,MAAM,KAAK,GAAG,MAAM,0BAAa,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC;QACjF,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC9G,CAAC;QAED,IAAI,OAAO,CAAC;QACZ,IAAI,CAAC;YACH,OAAO,GAAG,MAAM,IAAA,4BAAkB,EAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,sBAAsB,EAAE,aAAa,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;QACxI,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,KAAK,CAAC,IAAI,CAAC,mCAAmC,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACxE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QACjI,CAAC;QAED,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,6BAAa,CAAC,SAAS,CAAC;gBACzC,YAAY,EAAE,IAAI,CAAC,aAAa;gBAChC,iBAAiB,EAAE,IAAI,CAAC,kBAAkB;gBAC1C,gBAAgB,EAAE,IAAI,CAAC,mBAAmB;aAC3C,CAAC,CAAC;YACH,KAAK,CAAC,IAAI,CAAC,8BAA8B,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;YAC7E,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;4BACnB,IAAI;4BACJ,KAAK,EAAE,EAAE,UAAU,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE;yBAChL,CAAC;qBACH,CAAC;aACH,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,KAAK,CAAC,KAAK,CAAC,+BAA+B,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACrE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC5H,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -1,3 +0,0 @@
1
- import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
- export declare function registerCrawl(server: McpServer): void;
3
- //# sourceMappingURL=crawl.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"crawl.d.ts","sourceRoot":"","sources":["../../../src/server/tools/crawl.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAezE,wBAAgB,aAAa,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAqDrD"}
@@ -1,60 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.registerCrawl = registerCrawl;
4
- const zod_1 = require("zod");
5
- const x402_js_1 = require("../payments/x402.js");
6
- const rate_limit_js_1 = require("../security/rate-limit.js");
7
- const sandbox_js_1 = require("../security/sandbox.js");
8
- const audit_js_1 = require("../security/audit.js");
9
- const crawl_js_1 = require("../../lib/sml-api/crawl.js");
10
- const pricing_js_1 = require("../registry/pricing.js");
11
- const InputSchema = zod_1.z.object({
12
- url: zod_1.z.string().url(),
13
- extract: zod_1.z.enum(['text', 'links', 'tables', 'structured', 'all']).default('text'),
14
- wallet_address: zod_1.z.string().optional(),
15
- user_agent: zod_1.z.string().optional(),
16
- });
17
- function registerCrawl(server) {
18
- server.tool('crawl_paid_fetch', {
19
- url: zod_1.z.string().describe('URL to fetch and parse. Must be http or https.'),
20
- extract: zod_1.z.enum(['text', 'links', 'tables', 'structured', 'all']).describe('What to extract. Default: text.'),
21
- wallet_address: zod_1.z.string().describe('Agent wallet for payment. Humans bypass automatically.'),
22
- user_agent: zod_1.z.string().describe('Custom user-agent string.'),
23
- }, async (rawArgs) => {
24
- const args = sandbox_js_1.Sandbox.validate(InputSchema, rawArgs);
25
- const audit = audit_js_1.AuditLogger.getInstance();
26
- // Validate URL safety
27
- sandbox_js_1.Sandbox.validateUrl(args.url);
28
- if (!rate_limit_js_1.RateLimiter.getInstance().checkTool('crawl_paid_fetch')) {
29
- return { content: [{ type: 'text', text: JSON.stringify({ error: 'rate_limit_exceeded' }) }], isError: true };
30
- }
31
- await pricing_js_1.PriceRegistry.getInstance().seedDefaults();
32
- const price = await pricing_js_1.PriceRegistry.getInstance().getPrice('crawl_paid_fetch');
33
- if (!price) {
34
- return { content: [{ type: 'text', text: JSON.stringify({ error: 'price_unavailable' }) }], isError: true };
35
- }
36
- let payment;
37
- try {
38
- payment = await (0, x402_js_1.executeX402Payment)({
39
- price,
40
- currency: 'USDC',
41
- toolName: 'crawl_paid_fetch',
42
- walletAddress: args.wallet_address,
43
- });
44
- }
45
- catch (err) {
46
- return { content: [{ type: 'text', text: JSON.stringify({ error: 'payment_failed', message: String(err) }) }], isError: true };
47
- }
48
- const client = crawl_js_1.CrawlClient.getInstance();
49
- const data = await client.fetch({ url: args.url, extract: args.extract ?? 'text', userAgent: args.user_agent });
50
- // Sanitize response to prevent prompt injection
51
- const safeContent = typeof data.content === 'string'
52
- ? sandbox_js_1.Sandbox.sanitizeApiResponse(data.content)
53
- : data.content;
54
- audit.info('crawl_success', { receiptId: payment.receiptId });
55
- return {
56
- content: [{ type: 'text', text: JSON.stringify({ data: { ...data, content: safeContent }, _meta: { receipt_id: payment.receiptId, tx_hash: payment.txHash, chain: payment.chain, amount_paid: `${payment.amountPaid} ${payment.currency}` } }) }],
57
- };
58
- });
59
- }
60
- //# sourceMappingURL=crawl.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"crawl.js","sourceRoot":"","sources":["../../../src/server/tools/crawl.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
- export declare function registerDiscovery(server: McpServer): void;
3
- //# sourceMappingURL=discovery.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../../../src/server/tools/discovery.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA2JzE,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA8CzD"}