@scriptmasterlabs/mcp-x402 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (304) hide show
  1. package/.env.example +35 -0
  2. package/.github/workflows/ci.yml +59 -0
  3. package/.github/workflows/keepalive.yml +31 -0
  4. package/.well-known/agentcard.json +34 -0
  5. package/CONTRIBUTING.md +76 -0
  6. package/Dockerfile +19 -0
  7. package/LICENSE +21 -0
  8. package/README.md +304 -0
  9. package/agents.json +67 -0
  10. package/dist/lib/chains/base.d.ts +10 -0
  11. package/dist/lib/chains/base.d.ts.map +1 -0
  12. package/dist/lib/chains/base.js +73 -0
  13. package/dist/lib/chains/base.js.map +1 -0
  14. package/dist/lib/chains/solana.d.ts +10 -0
  15. package/dist/lib/chains/solana.d.ts.map +1 -0
  16. package/dist/lib/chains/solana.js +49 -0
  17. package/dist/lib/chains/solana.js.map +1 -0
  18. package/dist/lib/chains/xrpl.d.ts +10 -0
  19. package/dist/lib/chains/xrpl.d.ts.map +1 -0
  20. package/dist/lib/chains/xrpl.js +55 -0
  21. package/dist/lib/chains/xrpl.js.map +1 -0
  22. package/dist/lib/credit/bureau.d.ts +10 -0
  23. package/dist/lib/credit/bureau.d.ts.map +1 -0
  24. package/dist/lib/credit/bureau.js +58 -0
  25. package/dist/lib/credit/bureau.js.map +1 -0
  26. package/dist/lib/sml-api/agentcard.d.ts +17 -0
  27. package/dist/lib/sml-api/agentcard.d.ts.map +1 -0
  28. package/dist/lib/sml-api/agentcard.js +30 -0
  29. package/dist/lib/sml-api/agentcard.js.map +1 -0
  30. package/dist/lib/sml-api/backtest.d.ts +22 -0
  31. package/dist/lib/sml-api/backtest.d.ts.map +1 -0
  32. package/dist/lib/sml-api/backtest.js +28 -0
  33. package/dist/lib/sml-api/backtest.js.map +1 -0
  34. package/dist/lib/sml-api/brokers.d.ts +40 -0
  35. package/dist/lib/sml-api/brokers.d.ts.map +1 -0
  36. package/dist/lib/sml-api/brokers.js +128 -0
  37. package/dist/lib/sml-api/brokers.js.map +1 -0
  38. package/dist/lib/sml-api/copytrader.d.ts +11 -0
  39. package/dist/lib/sml-api/copytrader.d.ts.map +1 -0
  40. package/dist/lib/sml-api/copytrader.js +30 -0
  41. package/dist/lib/sml-api/copytrader.js.map +1 -0
  42. package/dist/lib/sml-api/crawl.d.ts +20 -0
  43. package/dist/lib/sml-api/crawl.d.ts.map +1 -0
  44. package/dist/lib/sml-api/crawl.js +32 -0
  45. package/dist/lib/sml-api/crawl.js.map +1 -0
  46. package/dist/lib/sml-api/echo.d.ts +10 -0
  47. package/dist/lib/sml-api/echo.d.ts.map +1 -0
  48. package/dist/lib/sml-api/echo.js +23 -0
  49. package/dist/lib/sml-api/echo.js.map +1 -0
  50. package/dist/lib/sml-api/forge.d.ts +11 -0
  51. package/dist/lib/sml-api/forge.d.ts.map +1 -0
  52. package/dist/lib/sml-api/forge.js +29 -0
  53. package/dist/lib/sml-api/forge.js.map +1 -0
  54. package/dist/lib/sml-api/ftd.d.ts +18 -0
  55. package/dist/lib/sml-api/ftd.d.ts.map +1 -0
  56. package/dist/lib/sml-api/ftd.js +43 -0
  57. package/dist/lib/sml-api/ftd.js.map +1 -0
  58. package/dist/lib/sml-api/ghost.d.ts +13 -0
  59. package/dist/lib/sml-api/ghost.d.ts.map +1 -0
  60. package/dist/lib/sml-api/ghost.js +29 -0
  61. package/dist/lib/sml-api/ghost.js.map +1 -0
  62. package/dist/lib/sml-api/launchpad.d.ts +20 -0
  63. package/dist/lib/sml-api/launchpad.d.ts.map +1 -0
  64. package/dist/lib/sml-api/launchpad.js +31 -0
  65. package/dist/lib/sml-api/launchpad.js.map +1 -0
  66. package/dist/lib/sml-api/leviathan.d.ts +22 -0
  67. package/dist/lib/sml-api/leviathan.d.ts.map +1 -0
  68. package/dist/lib/sml-api/leviathan.js +33 -0
  69. package/dist/lib/sml-api/leviathan.js.map +1 -0
  70. package/dist/lib/sml-api/nexus.d.ts +18 -0
  71. package/dist/lib/sml-api/nexus.d.ts.map +1 -0
  72. package/dist/lib/sml-api/nexus.js +40 -0
  73. package/dist/lib/sml-api/nexus.js.map +1 -0
  74. package/dist/lib/sml-api/proof402.d.ts +6 -0
  75. package/dist/lib/sml-api/proof402.d.ts.map +1 -0
  76. package/dist/lib/sml-api/proof402.js +30 -0
  77. package/dist/lib/sml-api/proof402.js.map +1 -0
  78. package/dist/lib/sml-api/rails.d.ts +12 -0
  79. package/dist/lib/sml-api/rails.d.ts.map +1 -0
  80. package/dist/lib/sml-api/rails.js +29 -0
  81. package/dist/lib/sml-api/rails.js.map +1 -0
  82. package/dist/lib/sml-api/shadow.d.ts +15 -0
  83. package/dist/lib/sml-api/shadow.d.ts.map +1 -0
  84. package/dist/lib/sml-api/shadow.js +27 -0
  85. package/dist/lib/sml-api/shadow.js.map +1 -0
  86. package/dist/lib/sml-api/squeezeos.d.ts +21 -0
  87. package/dist/lib/sml-api/squeezeos.d.ts.map +1 -0
  88. package/dist/lib/sml-api/squeezeos.js +97 -0
  89. package/dist/lib/sml-api/squeezeos.js.map +1 -0
  90. package/dist/lib/sml-api/xdeo.d.ts +13 -0
  91. package/dist/lib/sml-api/xdeo.d.ts.map +1 -0
  92. package/dist/lib/sml-api/xdeo.js +34 -0
  93. package/dist/lib/sml-api/xdeo.js.map +1 -0
  94. package/dist/lib/sml-api/xmit.d.ts +13 -0
  95. package/dist/lib/sml-api/xmit.d.ts.map +1 -0
  96. package/dist/lib/sml-api/xmit.js +34 -0
  97. package/dist/lib/sml-api/xmit.js.map +1 -0
  98. package/dist/server/health.d.ts +16 -0
  99. package/dist/server/health.d.ts.map +1 -0
  100. package/dist/server/health.js +39 -0
  101. package/dist/server/health.js.map +1 -0
  102. package/dist/server/index.d.ts +3 -0
  103. package/dist/server/index.d.ts.map +1 -0
  104. package/dist/server/index.js +193 -0
  105. package/dist/server/index.js.map +1 -0
  106. package/dist/server/payments/ap2.d.ts +17 -0
  107. package/dist/server/payments/ap2.d.ts.map +1 -0
  108. package/dist/server/payments/ap2.js +75 -0
  109. package/dist/server/payments/ap2.js.map +1 -0
  110. package/dist/server/payments/receipt.d.ts +28 -0
  111. package/dist/server/payments/receipt.d.ts.map +1 -0
  112. package/dist/server/payments/receipt.js +60 -0
  113. package/dist/server/payments/receipt.js.map +1 -0
  114. package/dist/server/payments/router.d.ts +23 -0
  115. package/dist/server/payments/router.d.ts.map +1 -0
  116. package/dist/server/payments/router.js +69 -0
  117. package/dist/server/payments/router.js.map +1 -0
  118. package/dist/server/payments/wallet.d.ts +18 -0
  119. package/dist/server/payments/wallet.d.ts.map +1 -0
  120. package/dist/server/payments/wallet.js +107 -0
  121. package/dist/server/payments/wallet.js.map +1 -0
  122. package/dist/server/payments/x402.d.ts +29 -0
  123. package/dist/server/payments/x402.d.ts.map +1 -0
  124. package/dist/server/payments/x402.js +122 -0
  125. package/dist/server/payments/x402.js.map +1 -0
  126. package/dist/server/registry/catalog.d.ts +12 -0
  127. package/dist/server/registry/catalog.d.ts.map +1 -0
  128. package/dist/server/registry/catalog.js +55 -0
  129. package/dist/server/registry/catalog.js.map +1 -0
  130. package/dist/server/registry/discovery.d.ts +16 -0
  131. package/dist/server/registry/discovery.d.ts.map +1 -0
  132. package/dist/server/registry/discovery.js +33 -0
  133. package/dist/server/registry/discovery.js.map +1 -0
  134. package/dist/server/registry/pricing.d.ts +10 -0
  135. package/dist/server/registry/pricing.d.ts.map +1 -0
  136. package/dist/server/registry/pricing.js +66 -0
  137. package/dist/server/registry/pricing.js.map +1 -0
  138. package/dist/server/security/acl.d.ts +28 -0
  139. package/dist/server/security/acl.d.ts.map +1 -0
  140. package/dist/server/security/acl.js +36 -0
  141. package/dist/server/security/acl.js.map +1 -0
  142. package/dist/server/security/audit.d.ts +15 -0
  143. package/dist/server/security/audit.d.ts.map +1 -0
  144. package/dist/server/security/audit.js +77 -0
  145. package/dist/server/security/audit.js.map +1 -0
  146. package/dist/server/security/rate-limit.d.ts +12 -0
  147. package/dist/server/security/rate-limit.d.ts.map +1 -0
  148. package/dist/server/security/rate-limit.js +72 -0
  149. package/dist/server/security/rate-limit.js.map +1 -0
  150. package/dist/server/security/sandbox.d.ts +7 -0
  151. package/dist/server/security/sandbox.d.ts.map +1 -0
  152. package/dist/server/security/sandbox.js +42 -0
  153. package/dist/server/security/sandbox.js.map +1 -0
  154. package/dist/server/tools/agentcard.d.ts +3 -0
  155. package/dist/server/tools/agentcard.d.ts.map +1 -0
  156. package/dist/server/tools/agentcard.js +118 -0
  157. package/dist/server/tools/agentcard.js.map +1 -0
  158. package/dist/server/tools/backtest.d.ts +3 -0
  159. package/dist/server/tools/backtest.d.ts.map +1 -0
  160. package/dist/server/tools/backtest.js +112 -0
  161. package/dist/server/tools/backtest.js.map +1 -0
  162. package/dist/server/tools/brokers.d.ts +3 -0
  163. package/dist/server/tools/brokers.d.ts.map +1 -0
  164. package/dist/server/tools/brokers.js +223 -0
  165. package/dist/server/tools/brokers.js.map +1 -0
  166. package/dist/server/tools/copytrader.d.ts +3 -0
  167. package/dist/server/tools/copytrader.d.ts.map +1 -0
  168. package/dist/server/tools/copytrader.js +90 -0
  169. package/dist/server/tools/copytrader.js.map +1 -0
  170. package/dist/server/tools/crawl.d.ts +3 -0
  171. package/dist/server/tools/crawl.d.ts.map +1 -0
  172. package/dist/server/tools/crawl.js +60 -0
  173. package/dist/server/tools/crawl.js.map +1 -0
  174. package/dist/server/tools/discovery.d.ts +3 -0
  175. package/dist/server/tools/discovery.d.ts.map +1 -0
  176. package/dist/server/tools/discovery.js +188 -0
  177. package/dist/server/tools/discovery.js.map +1 -0
  178. package/dist/server/tools/echo.d.ts +3 -0
  179. package/dist/server/tools/echo.d.ts.map +1 -0
  180. package/dist/server/tools/echo.js +48 -0
  181. package/dist/server/tools/echo.js.map +1 -0
  182. package/dist/server/tools/forge.d.ts +3 -0
  183. package/dist/server/tools/forge.d.ts.map +1 -0
  184. package/dist/server/tools/forge.js +77 -0
  185. package/dist/server/tools/forge.js.map +1 -0
  186. package/dist/server/tools/ftd.d.ts +3 -0
  187. package/dist/server/tools/ftd.d.ts.map +1 -0
  188. package/dist/server/tools/ftd.js +70 -0
  189. package/dist/server/tools/ftd.js.map +1 -0
  190. package/dist/server/tools/ghost.d.ts +3 -0
  191. package/dist/server/tools/ghost.d.ts.map +1 -0
  192. package/dist/server/tools/ghost.js +83 -0
  193. package/dist/server/tools/ghost.js.map +1 -0
  194. package/dist/server/tools/index.d.ts +3 -0
  195. package/dist/server/tools/index.d.ts.map +1 -0
  196. package/dist/server/tools/index.js +44 -0
  197. package/dist/server/tools/index.js.map +1 -0
  198. package/dist/server/tools/launchpad.d.ts +3 -0
  199. package/dist/server/tools/launchpad.d.ts.map +1 -0
  200. package/dist/server/tools/launchpad.js +151 -0
  201. package/dist/server/tools/launchpad.js.map +1 -0
  202. package/dist/server/tools/leviathan.d.ts +3 -0
  203. package/dist/server/tools/leviathan.d.ts.map +1 -0
  204. package/dist/server/tools/leviathan.js +73 -0
  205. package/dist/server/tools/leviathan.js.map +1 -0
  206. package/dist/server/tools/nexus.d.ts +3 -0
  207. package/dist/server/tools/nexus.d.ts.map +1 -0
  208. package/dist/server/tools/nexus.js +65 -0
  209. package/dist/server/tools/nexus.js.map +1 -0
  210. package/dist/server/tools/proof402.d.ts +3 -0
  211. package/dist/server/tools/proof402.d.ts.map +1 -0
  212. package/dist/server/tools/proof402.js +74 -0
  213. package/dist/server/tools/proof402.js.map +1 -0
  214. package/dist/server/tools/rails.d.ts +3 -0
  215. package/dist/server/tools/rails.d.ts.map +1 -0
  216. package/dist/server/tools/rails.js +82 -0
  217. package/dist/server/tools/rails.js.map +1 -0
  218. package/dist/server/tools/shadow.d.ts +3 -0
  219. package/dist/server/tools/shadow.d.ts.map +1 -0
  220. package/dist/server/tools/shadow.js +114 -0
  221. package/dist/server/tools/shadow.js.map +1 -0
  222. package/dist/server/tools/squeezeos.d.ts +3 -0
  223. package/dist/server/tools/squeezeos.d.ts.map +1 -0
  224. package/dist/server/tools/squeezeos.js +231 -0
  225. package/dist/server/tools/squeezeos.js.map +1 -0
  226. package/dist/server/tools/xdeo.d.ts +3 -0
  227. package/dist/server/tools/xdeo.d.ts.map +1 -0
  228. package/dist/server/tools/xdeo.js +58 -0
  229. package/dist/server/tools/xdeo.js.map +1 -0
  230. package/dist/server/tools/xmit.d.ts +3 -0
  231. package/dist/server/tools/xmit.d.ts.map +1 -0
  232. package/dist/server/tools/xmit.js +59 -0
  233. package/dist/server/tools/xmit.js.map +1 -0
  234. package/docker-compose.yml +50 -0
  235. package/llms.txt +70 -0
  236. package/package.json +77 -0
  237. package/render.yaml +39 -0
  238. package/sdk/mcp-x402-sdk/package.json +18 -0
  239. package/sdk/mcp-x402-sdk/src/index.ts +118 -0
  240. package/sdk/mcp-x402-sdk/tsconfig.json +14 -0
  241. package/server.json +60 -0
  242. package/services/backtest_service.py +176 -0
  243. package/src/lib/chains/base.ts +77 -0
  244. package/src/lib/chains/solana.ts +59 -0
  245. package/src/lib/chains/xrpl.ts +63 -0
  246. package/src/lib/credit/bureau.ts +65 -0
  247. package/src/lib/sml-api/agentcard.ts +40 -0
  248. package/src/lib/sml-api/backtest.ts +47 -0
  249. package/src/lib/sml-api/brokers.ts +160 -0
  250. package/src/lib/sml-api/copytrader.ts +33 -0
  251. package/src/lib/sml-api/crawl.ts +44 -0
  252. package/src/lib/sml-api/echo.ts +28 -0
  253. package/src/lib/sml-api/forge.ts +33 -0
  254. package/src/lib/sml-api/ftd.ts +53 -0
  255. package/src/lib/sml-api/ghost.ts +35 -0
  256. package/src/lib/sml-api/launchpad.ts +43 -0
  257. package/src/lib/sml-api/leviathan.ts +49 -0
  258. package/src/lib/sml-api/nexus.ts +50 -0
  259. package/src/lib/sml-api/proof402.ts +27 -0
  260. package/src/lib/sml-api/rails.ts +34 -0
  261. package/src/lib/sml-api/shadow.ts +35 -0
  262. package/src/lib/sml-api/squeezeos.ts +95 -0
  263. package/src/lib/sml-api/xdeo.ts +40 -0
  264. package/src/lib/sml-api/xmit.ts +40 -0
  265. package/src/server/health.ts +52 -0
  266. package/src/server/index.ts +206 -0
  267. package/src/server/payments/ap2.ts +99 -0
  268. package/src/server/payments/receipt.ts +85 -0
  269. package/src/server/payments/router.ts +110 -0
  270. package/src/server/payments/wallet.ts +123 -0
  271. package/src/server/payments/x402.ts +162 -0
  272. package/src/server/registry/catalog.ts +61 -0
  273. package/src/server/registry/discovery.ts +39 -0
  274. package/src/server/registry/pricing.ts +76 -0
  275. package/src/server/security/acl.ts +42 -0
  276. package/src/server/security/audit.ts +94 -0
  277. package/src/server/security/rate-limit.ts +84 -0
  278. package/src/server/security/sandbox.ts +40 -0
  279. package/src/server/tools/agentcard.ts +134 -0
  280. package/src/server/tools/backtest.ts +119 -0
  281. package/src/server/tools/brokers.ts +250 -0
  282. package/src/server/tools/copytrader.ts +104 -0
  283. package/src/server/tools/crawl.ts +70 -0
  284. package/src/server/tools/discovery.ts +202 -0
  285. package/src/server/tools/echo.ts +58 -0
  286. package/src/server/tools/forge.ts +87 -0
  287. package/src/server/tools/ftd.ts +88 -0
  288. package/src/server/tools/ghost.ts +93 -0
  289. package/src/server/tools/index.ts +42 -0
  290. package/src/server/tools/launchpad.ts +173 -0
  291. package/src/server/tools/leviathan.ts +81 -0
  292. package/src/server/tools/nexus.ts +76 -0
  293. package/src/server/tools/proof402.ts +87 -0
  294. package/src/server/tools/rails.ts +92 -0
  295. package/src/server/tools/shadow.ts +128 -0
  296. package/src/server/tools/squeezeos.ts +312 -0
  297. package/src/server/tools/xdeo.ts +67 -0
  298. package/src/server/tools/xmit.ts +68 -0
  299. package/tests/integration/e2e.test.ts +51 -0
  300. package/tests/unit/payments.test.ts +49 -0
  301. package/tests/unit/security.test.ts +92 -0
  302. package/tests/unit/tools.test.ts +42 -0
  303. package/tsconfig.json +21 -0
  304. package/vitest.config.ts +20 -0
@@ -0,0 +1,15 @@
1
+ export interface ShadowQueryParams {
2
+ query: string;
3
+ context?: string;
4
+ walletAddress: string;
5
+ }
6
+ export interface ShadowIngestParams {
7
+ source: string;
8
+ payload: unknown;
9
+ walletAddress: string;
10
+ }
11
+ export declare const ShadowDeskAPI: {
12
+ query: (params: ShadowQueryParams) => Promise<unknown>;
13
+ ingest: (params: ShadowIngestParams) => Promise<unknown>;
14
+ };
15
+ //# sourceMappingURL=shadow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shadow.d.ts","sourceRoot":"","sources":["../../../src/lib/sml-api/shadow.ts"],"names":[],"mappings":"AAmBA,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,eAAO,MAAM,aAAa;oBACR,iBAAiB;qBAChB,kBAAkB;CACpC,CAAC"}
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ShadowDeskAPI = void 0;
4
+ const SHADOW_BASE = process.env['SHADOW_DESK_URL'] ?? 'https://shadow-desk.onrender.com';
5
+ const SHADOW_ADMIN_KEY = process.env['SHADOW_ADMIN_API_KEY'] ?? '';
6
+ async function shadowPost(path, body) {
7
+ const headers = {
8
+ 'Accept': 'application/json',
9
+ 'Content-Type': 'application/json',
10
+ };
11
+ if (SHADOW_ADMIN_KEY)
12
+ headers['X-Admin-Key'] = SHADOW_ADMIN_KEY;
13
+ const res = await fetch(`${SHADOW_BASE}${path}`, {
14
+ method: 'POST',
15
+ headers,
16
+ body: JSON.stringify(body),
17
+ signal: AbortSignal.timeout(15_000),
18
+ });
19
+ if (!res.ok)
20
+ throw new Error(`Shadow Desk POST ${path}: HTTP ${res.status}`);
21
+ return res.json();
22
+ }
23
+ exports.ShadowDeskAPI = {
24
+ query: (params) => shadowPost('/query', params),
25
+ ingest: (params) => shadowPost('/ingest', params),
26
+ };
27
+ //# sourceMappingURL=shadow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shadow.js","sourceRoot":"","sources":["../../../src/lib/sml-api/shadow.ts"],"names":[],"mappings":";;;AAAA,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,kCAAkC,CAAC;AACzF,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,IAAI,EAAE,CAAC;AAEnE,KAAK,UAAU,UAAU,CAAC,IAAY,EAAE,IAAa;IACnD,MAAM,OAAO,GAA2B;QACtC,QAAQ,EAAE,kBAAkB;QAC5B,cAAc,EAAE,kBAAkB;KACnC,CAAC;IACF,IAAI,gBAAgB;QAAE,OAAO,CAAC,aAAa,CAAC,GAAG,gBAAgB,CAAC;IAChE,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,WAAW,GAAG,IAAI,EAAE,EAAE;QAC/C,MAAM,EAAE,MAAM;QACd,OAAO;QACP,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;QAC1B,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC;KACpC,CAAC,CAAC;IACH,IAAI,CAAC,GAAG,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,IAAI,UAAU,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;IAC7E,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC;AACpB,CAAC;AAcY,QAAA,aAAa,GAAG;IAC3B,KAAK,EAAE,CAAC,MAAyB,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC;IAClE,MAAM,EAAE,CAAC,MAA0B,EAAE,EAAE,CAAC,UAAU,CAAC,SAAS,EAAE,MAAM,CAAC;CACtE,CAAC"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Generate a SqueezeOS JWT for a premium endpoint.
3
+ * Format: base64(json).HMAC-SHA256(secret, encoded)
4
+ */
5
+ export declare function generateSqueezeOSToken(endpointKey: string, walletAddress: string): string;
6
+ export declare const SqueezeOSAPI: {
7
+ preview: (symbol: string) => Promise<unknown>;
8
+ history: (symbol?: string) => Promise<unknown>;
9
+ oracle: (symbol?: string) => Promise<unknown>;
10
+ ftd: () => Promise<unknown>;
11
+ status: () => Promise<unknown>;
12
+ demo: () => Promise<unknown>;
13
+ marketplaceBrowse: () => Promise<unknown>;
14
+ futuresLeaderboard: () => Promise<unknown>;
15
+ council: (symbol: string, walletAddress: string) => Promise<unknown>;
16
+ scan: (walletAddress: string) => Promise<unknown>;
17
+ options: (walletAddress: string) => Promise<unknown>;
18
+ iwm: (walletAddress: string) => Promise<unknown>;
19
+ marketplaceRead: (listingId: string, walletAddress: string) => Promise<unknown>;
20
+ };
21
+ //# sourceMappingURL=squeezeos.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"squeezeos.d.ts","sourceRoot":"","sources":["../../../src/lib/sml-api/squeezeos.ts"],"names":[],"mappings":"AAcA;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,CAezF;AA6BD,eAAO,MAAM,YAAY;sBAEL,MAAM;uBACL,MAAM;sBACP,MAAM;;;;;;sBAQN,MAAM,iBAAiB,MAAM;0BAIzB,MAAM;6BAIH,MAAM;yBAIV,MAAM;iCAIE,MAAM,iBAAiB,MAAM;CAI3D,CAAC"}
@@ -0,0 +1,97 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SqueezeOSAPI = void 0;
4
+ exports.generateSqueezeOSToken = generateSqueezeOSToken;
5
+ const crypto_1 = require("crypto");
6
+ const SQUEEZEOS_BASE = process.env['SQUEEZEOS_BASE_URL'] ?? 'https://squeezeos-api.onrender.com';
7
+ const PROOF402_SECRET = process.env['PROOF402_TOKEN_SECRET'] ?? '';
8
+ // Endpoint UUIDs — override via env vars if they change
9
+ const ENDPOINT_UUIDS = {
10
+ council: process.env['SQUEEZEOS_UUID_COUNCIL'] ?? '12a0e7a1-0000-0000-0000-000000000001',
11
+ scan: process.env['SQUEEZEOS_UUID_SCAN'] ?? '160cf28d-0000-0000-0000-000000000002',
12
+ options: process.env['SQUEEZEOS_UUID_OPTIONS'] ?? 'c951a374-0000-0000-0000-000000000003',
13
+ iwm: process.env['SQUEEZEOS_UUID_IWM'] ?? '60f48ce0-0000-0000-0000-000000000004',
14
+ marketplace_read: process.env['SQUEEZEOS_UUID_MARKETPLACE_READ'] ?? 'd1a2b3c4-0000-0000-0000-000000000005',
15
+ };
16
+ /**
17
+ * Generate a SqueezeOS JWT for a premium endpoint.
18
+ * Format: base64(json).HMAC-SHA256(secret, encoded)
19
+ */
20
+ function generateSqueezeOSToken(endpointKey, walletAddress) {
21
+ const eid = ENDPOINT_UUIDS[endpointKey];
22
+ if (!eid)
23
+ throw new Error(`Unknown SqueezeOS endpoint key: ${endpointKey}`);
24
+ if (!PROOF402_SECRET)
25
+ throw new Error('PROOF402_TOKEN_SECRET is not set — cannot mint SqueezeOS JWT');
26
+ const payload = {
27
+ eid,
28
+ wlt: walletAddress,
29
+ iid: `mcp-x402-${Date.now()}`,
30
+ exp: Math.floor(Date.now() / 1000) + 3600, // 1 hour
31
+ };
32
+ const encoded = Buffer.from(JSON.stringify(payload)).toString('base64url');
33
+ const sig = (0, crypto_1.createHmac)('sha256', PROOF402_SECRET).update(encoded).digest('hex');
34
+ return `${encoded}.${sig}`;
35
+ }
36
+ async function squeezeGet(path, token) {
37
+ const headers = { 'Accept': 'application/json' };
38
+ if (token)
39
+ headers['X-Payment-Token'] = token;
40
+ const res = await fetch(`${SQUEEZEOS_BASE}${path}`, {
41
+ headers,
42
+ signal: AbortSignal.timeout(15_000),
43
+ });
44
+ if (!res.ok)
45
+ throw new Error(`SqueezeOS GET ${path}: HTTP ${res.status}`);
46
+ return res.json();
47
+ }
48
+ async function squeezePost(path, body, token) {
49
+ const headers = {
50
+ 'Accept': 'application/json',
51
+ 'Content-Type': 'application/json',
52
+ };
53
+ if (token)
54
+ headers['X-Payment-Token'] = token;
55
+ const res = await fetch(`${SQUEEZEOS_BASE}${path}`, {
56
+ method: 'POST',
57
+ headers,
58
+ body: JSON.stringify(body),
59
+ signal: AbortSignal.timeout(15_000),
60
+ });
61
+ if (!res.ok)
62
+ throw new Error(`SqueezeOS POST ${path}: HTTP ${res.status}`);
63
+ return res.json();
64
+ }
65
+ exports.SqueezeOSAPI = {
66
+ // FREE
67
+ preview: (symbol) => squeezeGet(`/api/preview/${encodeURIComponent(symbol)}`),
68
+ history: (symbol) => squeezeGet(symbol ? `/api/history/${encodeURIComponent(symbol)}` : '/api/history'),
69
+ oracle: (symbol) => squeezeGet(symbol ? `/api/oracle/${encodeURIComponent(symbol)}` : '/api/oracle'),
70
+ ftd: () => squeezeGet('/api/ftd'),
71
+ status: () => squeezeGet('/api/status'),
72
+ demo: () => squeezeGet('/api/demo'),
73
+ marketplaceBrowse: () => squeezeGet('/api/marketplace'),
74
+ futuresLeaderboard: () => squeezeGet('/api/futures/leaderboard'),
75
+ // PAID — caller must supply walletAddress so we can mint the token
76
+ council: (symbol, walletAddress) => {
77
+ const token = generateSqueezeOSToken('council', walletAddress);
78
+ return squeezePost('/api/council', { symbol }, token);
79
+ },
80
+ scan: (walletAddress) => {
81
+ const token = generateSqueezeOSToken('scan', walletAddress);
82
+ return squeezeGet('/api/scan', token);
83
+ },
84
+ options: (walletAddress) => {
85
+ const token = generateSqueezeOSToken('options', walletAddress);
86
+ return squeezeGet('/api/options', token);
87
+ },
88
+ iwm: (walletAddress) => {
89
+ const token = generateSqueezeOSToken('iwm', walletAddress);
90
+ return squeezeGet('/api/iwm', token);
91
+ },
92
+ marketplaceRead: (listingId, walletAddress) => {
93
+ const token = generateSqueezeOSToken('marketplace_read', walletAddress);
94
+ return squeezePost('/api/marketplace/read', { listing_id: listingId }, token);
95
+ },
96
+ };
97
+ //# sourceMappingURL=squeezeos.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"squeezeos.js","sourceRoot":"","sources":["../../../src/lib/sml-api/squeezeos.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ export interface XdeoEstimateParams {
2
+ ticker: string;
3
+ fiscalQuarter: string;
4
+ estimateType: 'eps' | 'revenue' | 'guidance' | 'all';
5
+ }
6
+ export declare class XdeoClient {
7
+ private static instance;
8
+ private readonly baseUrl;
9
+ private constructor();
10
+ static getInstance(): XdeoClient;
11
+ getEstimate(params: XdeoEstimateParams): Promise<unknown>;
12
+ }
13
+ //# sourceMappingURL=xdeo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xdeo.d.ts","sourceRoot":"","sources":["../../../src/lib/sml-api/xdeo.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,KAAK,GAAG,SAAS,GAAG,UAAU,GAAG,KAAK,CAAC;CACtD;AAED,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAa;IACpC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IAEjC,OAAO;IAIP,MAAM,CAAC,WAAW,IAAI,UAAU;IAO1B,WAAW,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC;CAkBhE"}
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.XdeoClient = void 0;
4
+ class XdeoClient {
5
+ static instance;
6
+ baseUrl;
7
+ constructor() {
8
+ this.baseUrl = process.env['SML_API_BASE'] ?? 'https://api.scriptmasterlabs.com';
9
+ }
10
+ static getInstance() {
11
+ if (!XdeoClient.instance) {
12
+ XdeoClient.instance = new XdeoClient();
13
+ }
14
+ return XdeoClient.instance;
15
+ }
16
+ async getEstimate(params) {
17
+ const res = await fetch(`${this.baseUrl}/xdeo/v1/estimate`, {
18
+ method: 'POST',
19
+ headers: { 'Content-Type': 'application/json' },
20
+ body: JSON.stringify({
21
+ ticker: params.ticker,
22
+ fiscal_quarter: params.fiscalQuarter,
23
+ estimate_type: params.estimateType,
24
+ }),
25
+ signal: AbortSignal.timeout(10_000),
26
+ });
27
+ if (!res.ok) {
28
+ throw new Error(`xDEO API error: HTTP ${res.status}`);
29
+ }
30
+ return res.json();
31
+ }
32
+ }
33
+ exports.XdeoClient = XdeoClient;
34
+ //# sourceMappingURL=xdeo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xdeo.js","sourceRoot":"","sources":["../../../src/lib/sml-api/xdeo.ts"],"names":[],"mappings":";;;AAMA,MAAa,UAAU;IACb,MAAM,CAAC,QAAQ,CAAa;IACnB,OAAO,CAAS;IAEjC;QACE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,kCAAkC,CAAC;IACnF,CAAC;IAED,MAAM,CAAC,WAAW;QAChB,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;YACzB,UAAU,CAAC,QAAQ,GAAG,IAAI,UAAU,EAAE,CAAC;QACzC,CAAC;QACD,OAAO,UAAU,CAAC,QAAQ,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,MAA0B;QAC1C,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,mBAAmB,EAAE;YAC1D,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,cAAc,EAAE,MAAM,CAAC,aAAa;gBACpC,aAAa,EAAE,MAAM,CAAC,YAAY;aACnC,CAAC;YACF,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC;SACpC,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,wBAAwB,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;QACxD,CAAC;QAED,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC;IACpB,CAAC;CACF;AAjCD,gCAiCC"}
@@ -0,0 +1,13 @@
1
+ export interface XmitDecodeParams {
2
+ filingUrl: string;
3
+ parseTarget: 'executive_pay' | 'holdings' | 'ownership_changes' | 'all';
4
+ format: 'json' | 'markdown';
5
+ }
6
+ export declare class XmitClient {
7
+ private static instance;
8
+ private readonly baseUrl;
9
+ private constructor();
10
+ static getInstance(): XmitClient;
11
+ decode(params: XmitDecodeParams): Promise<unknown>;
12
+ }
13
+ //# sourceMappingURL=xmit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xmit.d.ts","sourceRoot":"","sources":["../../../src/lib/sml-api/xmit.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,eAAe,GAAG,UAAU,GAAG,mBAAmB,GAAG,KAAK,CAAC;IACxE,MAAM,EAAE,MAAM,GAAG,UAAU,CAAC;CAC7B;AAED,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAa;IACpC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IAEjC,OAAO;IAIP,MAAM,CAAC,WAAW,IAAI,UAAU;IAO1B,MAAM,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC;CAkBzD"}
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.XmitClient = void 0;
4
+ class XmitClient {
5
+ static instance;
6
+ baseUrl;
7
+ constructor() {
8
+ this.baseUrl = process.env['SML_API_BASE'] ?? 'https://api.scriptmasterlabs.com';
9
+ }
10
+ static getInstance() {
11
+ if (!XmitClient.instance) {
12
+ XmitClient.instance = new XmitClient();
13
+ }
14
+ return XmitClient.instance;
15
+ }
16
+ async decode(params) {
17
+ const res = await fetch(`${this.baseUrl}/xmit/v1/decode`, {
18
+ method: 'POST',
19
+ headers: { 'Content-Type': 'application/json' },
20
+ body: JSON.stringify({
21
+ filing_url: params.filingUrl,
22
+ parse_target: params.parseTarget,
23
+ format: params.format,
24
+ }),
25
+ signal: AbortSignal.timeout(30_000),
26
+ });
27
+ if (!res.ok) {
28
+ throw new Error(`xMIT API error: HTTP ${res.status}`);
29
+ }
30
+ return res.json();
31
+ }
32
+ }
33
+ exports.XmitClient = XmitClient;
34
+ //# sourceMappingURL=xmit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xmit.js","sourceRoot":"","sources":["../../../src/lib/sml-api/xmit.ts"],"names":[],"mappings":";;;AAMA,MAAa,UAAU;IACb,MAAM,CAAC,QAAQ,CAAa;IACnB,OAAO,CAAS;IAEjC;QACE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,kCAAkC,CAAC;IACnF,CAAC;IAED,MAAM,CAAC,WAAW;QAChB,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;YACzB,UAAU,CAAC,QAAQ,GAAG,IAAI,UAAU,EAAE,CAAC;QACzC,CAAC;QACD,OAAO,UAAU,CAAC,QAAQ,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,MAAwB;QACnC,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,iBAAiB,EAAE;YACxD,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,UAAU,EAAE,MAAM,CAAC,SAAS;gBAC5B,YAAY,EAAE,MAAM,CAAC,WAAW;gBAChC,MAAM,EAAE,MAAM,CAAC,MAAM;aACtB,CAAC;YACF,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC;SACpC,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,wBAAwB,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;QACxD,CAAC;QAED,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC;IACpB,CAAC;CACF;AAjCD,gCAiCC"}
@@ -0,0 +1,16 @@
1
+ import type { Request, Response } from 'express';
2
+ export interface HealthStatus {
3
+ status: 'ok' | 'degraded';
4
+ version: string;
5
+ transport: string;
6
+ uptime_seconds: number;
7
+ uptime_human: string;
8
+ timestamp: string;
9
+ checks: {
10
+ process: 'ok';
11
+ memory_mb: number;
12
+ memory_ok: boolean;
13
+ };
14
+ }
15
+ export declare function healthHandler(_req: Request, res: Response): void;
16
+ //# sourceMappingURL=health.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"health.d.ts","sourceRoot":"","sources":["../../src/server/health.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAIjD,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,IAAI,GAAG,UAAU,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE;QACN,OAAO,EAAE,IAAI,CAAC;QACd,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,OAAO,CAAC;KACpB,CAAC;CACH;AAaD,wBAAgB,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,IAAI,CAsBhE"}
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.healthHandler = healthHandler;
4
+ const startTime = Date.now();
5
+ function formatUptime(ms) {
6
+ const s = Math.floor(ms / 1000);
7
+ const m = Math.floor(s / 60);
8
+ const h = Math.floor(m / 60);
9
+ const d = Math.floor(h / 24);
10
+ if (d > 0)
11
+ return `${d}d ${h % 24}h ${m % 60}m`;
12
+ if (h > 0)
13
+ return `${h}h ${m % 60}m ${s % 60}s`;
14
+ if (m > 0)
15
+ return `${m}m ${s % 60}s`;
16
+ return `${s}s`;
17
+ }
18
+ function healthHandler(_req, res) {
19
+ const uptimeMs = Date.now() - startTime;
20
+ const memMb = Math.round(process.memoryUsage().rss / 1024 / 1024);
21
+ const memOk = memMb < 450; // warn if approaching 512MB container limit
22
+ const body = {
23
+ status: memOk ? 'ok' : 'degraded',
24
+ version: process.env['npm_package_version'] ?? '1.0.0',
25
+ transport: process.env['MCP_TRANSPORT'] ?? 'stdio',
26
+ uptime_seconds: Math.floor(uptimeMs / 1000),
27
+ uptime_human: formatUptime(uptimeMs),
28
+ timestamp: new Date().toISOString(),
29
+ checks: {
30
+ process: 'ok',
31
+ memory_mb: memMb,
32
+ memory_ok: memOk,
33
+ },
34
+ };
35
+ // Return 200 even if degraded — let the orchestrator decide.
36
+ // Only return 5xx if the process itself is fundamentally broken.
37
+ res.status(200).json(body);
38
+ }
39
+ //# sourceMappingURL=health.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"health.js","sourceRoot":"","sources":["../../src/server/health.ts"],"names":[],"mappings":";;AA6BA,sCAsBC;AAjDD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAgB7B,SAAS,YAAY,CAAC,EAAU;IAC9B,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;IAChC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;IAC7B,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;IAC7B,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;IAC7B,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC;IAChD,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC;IAChD,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC;IACrC,OAAO,GAAG,CAAC,GAAG,CAAC;AACjB,CAAC;AAED,SAAgB,aAAa,CAAC,IAAa,EAAE,GAAa;IACxD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;IACxC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC;IAClE,MAAM,KAAK,GAAG,KAAK,GAAG,GAAG,CAAC,CAAC,4CAA4C;IAEvE,MAAM,IAAI,GAAiB;QACzB,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU;QACjC,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,IAAI,OAAO;QACtD,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,OAAO;QAClD,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;QAC3C,YAAY,EAAE,YAAY,CAAC,QAAQ,CAAC;QACpC,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,MAAM,EAAE;YACN,OAAO,EAAE,IAAI;YACb,SAAS,EAAE,KAAK;YAChB,SAAS,EAAE,KAAK;SACjB;KACF,CAAC;IAEF,6DAA6D;IAC7D,iEAAiE;IACjE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":""}
@@ -0,0 +1,193 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ var __importDefault = (this && this.__importDefault) || function (mod) {
4
+ return (mod && mod.__esModule) ? mod : { "default": mod };
5
+ };
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ const mcp_js_1 = require("@modelcontextprotocol/sdk/server/mcp.js");
8
+ const stdio_js_1 = require("@modelcontextprotocol/sdk/server/stdio.js");
9
+ const sse_js_1 = require("@modelcontextprotocol/sdk/server/sse.js");
10
+ const streamableHttp_js_1 = require("@modelcontextprotocol/sdk/server/streamableHttp.js");
11
+ const express_1 = __importDefault(require("express"));
12
+ const crypto_1 = require("crypto");
13
+ const cors_1 = __importDefault(require("cors"));
14
+ const index_js_1 = require("./tools/index.js");
15
+ const audit_js_1 = require("./security/audit.js");
16
+ const rate_limit_js_1 = require("./security/rate-limit.js");
17
+ const health_js_1 = require("./health.js");
18
+ const VERSION = '1.0.0';
19
+ async function createServer() {
20
+ const server = new mcp_js_1.McpServer({ name: 'mcp-x402', version: VERSION }, { capabilities: { tools: {} } });
21
+ await (0, index_js_1.registerTools)(server);
22
+ return server;
23
+ }
24
+ async function runStdio() {
25
+ const server = await createServer();
26
+ const transport = new stdio_js_1.StdioServerTransport();
27
+ await server.connect(transport);
28
+ audit_js_1.AuditLogger.getInstance().info('server_start', { transport: 'stdio', version: VERSION });
29
+ const shutdown = async () => {
30
+ audit_js_1.AuditLogger.getInstance().info('server_stop', { transport: 'stdio' });
31
+ await server.close();
32
+ process.exit(0);
33
+ };
34
+ process.on('SIGINT', shutdown);
35
+ process.on('SIGTERM', shutdown);
36
+ // Keep stdio process alive
37
+ process.stdin.on('end', () => {
38
+ audit_js_1.AuditLogger.getInstance().warn('stdio_stdin_end', {});
39
+ process.exit(0);
40
+ });
41
+ }
42
+ async function runSSE() {
43
+ const app = (0, express_1.default)();
44
+ const port = parseInt(process.env['MCP_SSE_PORT'] ?? '3402', 10);
45
+ app.use((0, cors_1.default)({ origin: process.env['CORS_ORIGIN'] ?? '*' }));
46
+ app.use(express_1.default.json({ limit: '1mb' }));
47
+ // Health endpoint
48
+ app.get('/health', health_js_1.healthHandler);
49
+ app.get('/agents.json', (_req, res) => {
50
+ res.sendFile('agents.json', { root: process.cwd() });
51
+ });
52
+ app.get('/llms.txt', (_req, res) => {
53
+ res.sendFile('llms.txt', { root: process.cwd() });
54
+ });
55
+ app.get('/.well-known/agentcard.json', (_req, res) => {
56
+ res.sendFile('.well-known/agentcard.json', { root: process.cwd() });
57
+ });
58
+ // FIX: Root handler — was 404, now returns service discovery
59
+ app.get('/', (_req, res) => {
60
+ res.json({
61
+ name: 'mcp-x402',
62
+ version: VERSION,
63
+ description: 'The x402 Amazon — 43+ tools, pay-per-call via XRPL. scriptmasterlabs.com',
64
+ status: 'online',
65
+ transport: 'streamable-http + sse',
66
+ endpoints: {
67
+ mcp_streamable: 'POST /mcp',
68
+ sse_connect: 'GET /sse',
69
+ sse_messages: 'POST /messages',
70
+ health: 'GET /health',
71
+ agentCard: 'GET /.well-known/agentcard.json',
72
+ llms: 'GET /llms.txt',
73
+ },
74
+ links: {
75
+ github: 'https://github.com/Timwal78/SML_Portfolio/tree/main/mcp-x402',
76
+ homepage: 'https://scriptmasterlabs.com',
77
+ },
78
+ });
79
+ });
80
+ // Streamable HTTP transport — claude.ai web connectors
81
+ const streamableTransports = new Map();
82
+ app.post('/mcp', async (req, res) => {
83
+ const sessionId = req.headers['mcp-session-id'];
84
+ let transport = sessionId ? streamableTransports.get(sessionId) : undefined;
85
+ if (!transport) {
86
+ const newSessionId = (0, crypto_1.randomUUID)();
87
+ transport = new streamableHttp_js_1.StreamableHTTPServerTransport({ sessionIdGenerator: () => newSessionId });
88
+ streamableTransports.set(newSessionId, transport);
89
+ transport.onclose = () => streamableTransports.delete(newSessionId);
90
+ const server = await createServer();
91
+ await server.connect(transport);
92
+ audit_js_1.AuditLogger.getInstance().info('mcp_connect', { sessionId: newSessionId });
93
+ }
94
+ await transport.handleRequest(req, res, req.body);
95
+ });
96
+ // FIX: GET /mcp with no session was 404, now returns service info
97
+ app.get('/mcp', async (req, res) => {
98
+ const sessionId = req.headers['mcp-session-id'];
99
+ const transport = sessionId ? streamableTransports.get(sessionId) : undefined;
100
+ if (!transport) {
101
+ res.json({
102
+ name: 'mcp-x402',
103
+ version: VERSION,
104
+ protocol: 'MCP/streamable-http',
105
+ status: 'ready',
106
+ tools: '43+ tools available',
107
+ how_to_connect: 'POST /mcp with a JSON-RPC initialize request',
108
+ sse_alternative: 'GET /sse for legacy SSE transport',
109
+ health: '/health',
110
+ homepage: 'https://scriptmasterlabs.com',
111
+ });
112
+ return;
113
+ }
114
+ await transport.handleRequest(req, res);
115
+ });
116
+ app.delete('/mcp', async (req, res) => {
117
+ const sessionId = req.headers['mcp-session-id'];
118
+ const transport = sessionId ? streamableTransports.get(sessionId) : undefined;
119
+ if (!transport) {
120
+ res.status(404).json({ error: 'session_not_found' });
121
+ return;
122
+ }
123
+ await transport.handleRequest(req, res);
124
+ });
125
+ const transports = new Map();
126
+ const rateLimiter = rate_limit_js_1.RateLimiter.getInstance();
127
+ app.get('/sse', async (req, res) => {
128
+ const clientIp = req.ip ?? 'unknown';
129
+ if (!rateLimiter.checkIp(clientIp)) {
130
+ res.status(429).json({ error: 'rate_limit_exceeded', retry_after: 60 });
131
+ return;
132
+ }
133
+ const transport = new sse_js_1.SSEServerTransport('/messages', res);
134
+ const sessionId = transport.sessionId;
135
+ transports.set(sessionId, transport);
136
+ const server = await createServer();
137
+ await server.connect(transport);
138
+ audit_js_1.AuditLogger.getInstance().info('sse_connect', { sessionId, clientIp });
139
+ res.on('close', async () => {
140
+ transports.delete(sessionId);
141
+ audit_js_1.AuditLogger.getInstance().info('sse_disconnect', { sessionId });
142
+ await server.close();
143
+ });
144
+ });
145
+ app.post('/messages', async (req, res) => {
146
+ const sessionId = req.query['sessionId'];
147
+ if (!sessionId) {
148
+ res.status(400).json({ error: 'missing_session_id' });
149
+ return;
150
+ }
151
+ const transport = transports.get(sessionId);
152
+ if (!transport) {
153
+ res.status(404).json({ error: 'session_not_found' });
154
+ return;
155
+ }
156
+ await transport.handlePostMessage(req, res);
157
+ });
158
+ const httpServer = await new Promise((resolve) => {
159
+ const s = app.listen(port, () => resolve(s));
160
+ });
161
+ audit_js_1.AuditLogger.getInstance().info('server_start', { transport: 'sse', port, version: VERSION });
162
+ console.error(`[mcp-x402] listening on :${port} — health: http://localhost:${port}/health`);
163
+ const shutdown = async () => {
164
+ audit_js_1.AuditLogger.getInstance().info('server_stop', { transport: 'sse' });
165
+ for (const [id] of transports) {
166
+ audit_js_1.AuditLogger.getInstance().info('sse_force_close', { sessionId: id });
167
+ }
168
+ httpServer.close(() => process.exit(0));
169
+ setTimeout(() => process.exit(1), 10_000).unref();
170
+ };
171
+ process.on('SIGINT', shutdown);
172
+ process.on('SIGTERM', shutdown);
173
+ process.on('uncaughtException', (err) => {
174
+ audit_js_1.AuditLogger.getInstance().error('uncaught_exception', { error: String(err), stack: err.stack ?? '' });
175
+ });
176
+ process.on('unhandledRejection', (reason) => {
177
+ audit_js_1.AuditLogger.getInstance().error('unhandledRejection', { reason: String(reason) });
178
+ });
179
+ }
180
+ const transport = process.env['MCP_TRANSPORT'] ?? 'stdio';
181
+ if (transport === 'sse') {
182
+ runSSE().catch((err) => {
183
+ console.error('[mcp-x402] fatal:', err);
184
+ process.exit(1);
185
+ });
186
+ }
187
+ else {
188
+ runStdio().catch((err) => {
189
+ console.error('[mcp-x402] fatal:', err);
190
+ process.exit(1);
191
+ });
192
+ }
193
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ export interface MandateParams {
2
+ maxAmount: string;
3
+ currency: string;
4
+ toolName: string;
5
+ }
6
+ export declare class AP2Client {
7
+ private static instance;
8
+ private readonly baseUrl;
9
+ private constructor();
10
+ static getInstance(): AP2Client;
11
+ verifyMandate(wallet: string, params: MandateParams): Promise<boolean>;
12
+ createMandate(wallet: string, params: {
13
+ dailyCap: string;
14
+ currency: string;
15
+ }): Promise<string>;
16
+ }
17
+ //# sourceMappingURL=ap2.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ap2.d.ts","sourceRoot":"","sources":["../../../src/server/payments/ap2.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAUD,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAY;IACnC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IAEjC,OAAO;IAIP,MAAM,CAAC,WAAW,IAAI,SAAS;IAOzB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC;IA8CtE,aAAa,CACjB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,GAC7C,OAAO,CAAC,MAAM,CAAC;CAkBnB"}