@oobe-protocol-labs/sap-mcp-server 0.9.1 → 0.9.3

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 (703) hide show
  1. package/.env.example +8 -7
  2. package/CHANGELOG.md +732 -1
  3. package/README.md +9 -3
  4. package/USER_DOCS/00_START_HERE.md +51 -4
  5. package/USER_DOCS/01_HOSTED_REMOTE_MCP.md +1 -1
  6. package/USER_DOCS/03_PAYMENTS_X402_PAYSH.md +32 -3
  7. package/USER_DOCS/04_CLIENT_CONFIGS.md +14 -7
  8. package/USER_DOCS/05_SKILLS_AND_TOOLS.md +68 -8
  9. package/USER_DOCS/06_DESKTOP_GUI_WIZARD.md +20 -14
  10. package/USER_DOCS/07_SMITHERY_AND_MARKETPLACES.md +7 -0
  11. package/config.example.json +5 -4
  12. package/config.schema.json +9 -4
  13. package/config.secure-example.json +5 -4
  14. package/dist/adapters/index.d.ts +7 -1
  15. package/dist/adapters/index.d.ts.map +1 -1
  16. package/dist/adapters/index.js +7 -1
  17. package/dist/adapters/index.js.map +1 -1
  18. package/dist/adapters/mcp/errors.d.ts +13 -1
  19. package/dist/adapters/mcp/errors.d.ts.map +1 -1
  20. package/dist/adapters/mcp/errors.js +13 -1
  21. package/dist/adapters/mcp/errors.js.map +1 -1
  22. package/dist/adapters/mcp/index.d.ts +7 -1
  23. package/dist/adapters/mcp/index.d.ts.map +1 -1
  24. package/dist/adapters/mcp/index.js +7 -1
  25. package/dist/adapters/mcp/index.js.map +1 -1
  26. package/dist/adapters/mcp/prompt-response.d.ts +13 -1
  27. package/dist/adapters/mcp/prompt-response.d.ts.map +1 -1
  28. package/dist/adapters/mcp/prompt-response.js +13 -1
  29. package/dist/adapters/mcp/prompt-response.js.map +1 -1
  30. package/dist/adapters/mcp/resource-response.d.ts +14 -1
  31. package/dist/adapters/mcp/resource-response.d.ts.map +1 -1
  32. package/dist/adapters/mcp/resource-response.js +14 -1
  33. package/dist/adapters/mcp/resource-response.js.map +1 -1
  34. package/dist/adapters/mcp/sdk-compat.d.ts +11 -3
  35. package/dist/adapters/mcp/sdk-compat.d.ts.map +1 -1
  36. package/dist/adapters/mcp/sdk-compat.js +232 -25
  37. package/dist/adapters/mcp/sdk-compat.js.map +1 -1
  38. package/dist/adapters/mcp/tool-response.d.ts +51 -3
  39. package/dist/adapters/mcp/tool-response.d.ts.map +1 -1
  40. package/dist/adapters/mcp/tool-response.js +48 -3
  41. package/dist/adapters/mcp/tool-response.js.map +1 -1
  42. package/dist/adapters/solana/commitment.d.ts +14 -2
  43. package/dist/adapters/solana/commitment.d.ts.map +1 -1
  44. package/dist/adapters/solana/commitment.js +14 -2
  45. package/dist/adapters/solana/commitment.js.map +1 -1
  46. package/dist/adapters/solana/connection.d.ts +11 -2
  47. package/dist/adapters/solana/connection.d.ts.map +1 -1
  48. package/dist/adapters/solana/connection.js +11 -2
  49. package/dist/adapters/solana/connection.js.map +1 -1
  50. package/dist/adapters/solana/index.d.ts +7 -1
  51. package/dist/adapters/solana/index.d.ts.map +1 -1
  52. package/dist/adapters/solana/index.js +7 -1
  53. package/dist/adapters/solana/index.js.map +1 -1
  54. package/dist/adapters/solana/public-key.d.ts +11 -2
  55. package/dist/adapters/solana/public-key.d.ts.map +1 -1
  56. package/dist/adapters/solana/public-key.js +11 -2
  57. package/dist/adapters/solana/public-key.js.map +1 -1
  58. package/dist/config/defaults.d.ts +5 -0
  59. package/dist/config/defaults.d.ts.map +1 -1
  60. package/dist/config/defaults.js +5 -0
  61. package/dist/config/defaults.js.map +1 -1
  62. package/dist/config/env.d.ts +4 -0
  63. package/dist/config/env.d.ts.map +1 -1
  64. package/dist/config/env.js +15 -10
  65. package/dist/config/env.js.map +1 -1
  66. package/dist/config/index.d.ts +5 -0
  67. package/dist/config/index.d.ts.map +1 -1
  68. package/dist/config/index.js +5 -0
  69. package/dist/config/index.js.map +1 -1
  70. package/dist/config/mcp-client-injection.d.ts.map +1 -1
  71. package/dist/config/mcp-client-injection.js +136 -33
  72. package/dist/config/mcp-client-injection.js.map +1 -1
  73. package/dist/config/paths.d.ts +14 -1
  74. package/dist/config/paths.d.ts.map +1 -1
  75. package/dist/config/paths.js +20 -1
  76. package/dist/config/paths.js.map +1 -1
  77. package/dist/config/profiles.d.ts +3 -10
  78. package/dist/config/profiles.d.ts.map +1 -1
  79. package/dist/config/profiles.js +5 -0
  80. package/dist/config/profiles.js.map +1 -1
  81. package/dist/config/schema.d.ts +5 -0
  82. package/dist/config/schema.d.ts.map +1 -1
  83. package/dist/config/schema.js +5 -0
  84. package/dist/config/schema.js.map +1 -1
  85. package/dist/config/secure-config.d.ts +5 -0
  86. package/dist/config/secure-config.d.ts.map +1 -1
  87. package/dist/config/secure-config.js +5 -0
  88. package/dist/config/secure-config.js.map +1 -1
  89. package/dist/config/setup.d.ts +5 -0
  90. package/dist/config/setup.d.ts.map +1 -1
  91. package/dist/config/setup.js +5 -0
  92. package/dist/config/setup.js.map +1 -1
  93. package/dist/config/wizard.d.ts +6 -0
  94. package/dist/config/wizard.d.ts.map +1 -1
  95. package/dist/config/wizard.js +102 -18
  96. package/dist/config/wizard.js.map +1 -1
  97. package/dist/config-cli.d.ts +3 -13
  98. package/dist/config-cli.d.ts.map +1 -1
  99. package/dist/config-cli.js +14 -1
  100. package/dist/config-cli.js.map +1 -1
  101. package/dist/core/constants.d.ts +38 -6
  102. package/dist/core/constants.d.ts.map +1 -1
  103. package/dist/core/constants.js +49 -6
  104. package/dist/core/constants.js.map +1 -1
  105. package/dist/core/errors.d.ts +5 -0
  106. package/dist/core/errors.d.ts.map +1 -1
  107. package/dist/core/errors.js +5 -0
  108. package/dist/core/errors.js.map +1 -1
  109. package/dist/core/guards.d.ts +5 -0
  110. package/dist/core/guards.d.ts.map +1 -1
  111. package/dist/core/guards.js +3 -1
  112. package/dist/core/guards.js.map +1 -1
  113. package/dist/core/index.d.ts +7 -1
  114. package/dist/core/index.d.ts.map +1 -1
  115. package/dist/core/index.js +7 -1
  116. package/dist/core/index.js.map +1 -1
  117. package/dist/core/logger.js +1 -1
  118. package/dist/core/result.d.ts +77 -9
  119. package/dist/core/result.d.ts.map +1 -1
  120. package/dist/core/result.js +68 -9
  121. package/dist/core/result.js.map +1 -1
  122. package/dist/core/types.d.ts +5 -0
  123. package/dist/core/types.d.ts.map +1 -1
  124. package/dist/core/types.js +3 -4
  125. package/dist/core/types.js.map +1 -1
  126. package/dist/index.d.ts +5 -0
  127. package/dist/index.d.ts.map +1 -1
  128. package/dist/index.js +5 -0
  129. package/dist/index.js.map +1 -1
  130. package/dist/memory/async-processor.d.ts +107 -0
  131. package/dist/memory/async-processor.d.ts.map +1 -0
  132. package/dist/memory/async-processor.js +204 -0
  133. package/dist/memory/async-processor.js.map +1 -0
  134. package/dist/memory/auto-record.d.ts +47 -0
  135. package/dist/memory/auto-record.d.ts.map +1 -0
  136. package/dist/memory/auto-record.js +133 -0
  137. package/dist/memory/auto-record.js.map +1 -0
  138. package/dist/memory/database.d.ts +103 -0
  139. package/dist/memory/database.d.ts.map +1 -0
  140. package/dist/memory/database.js +337 -0
  141. package/dist/memory/database.js.map +1 -0
  142. package/dist/memory/hermes-bridge.d.ts +70 -0
  143. package/dist/memory/hermes-bridge.d.ts.map +1 -0
  144. package/dist/memory/hermes-bridge.js +155 -0
  145. package/dist/memory/hermes-bridge.js.map +1 -0
  146. package/dist/memory/index.d.ts +23 -0
  147. package/dist/memory/index.d.ts.map +1 -0
  148. package/dist/memory/index.js +22 -0
  149. package/dist/memory/index.js.map +1 -0
  150. package/dist/memory/memory-store.d.ts +76 -0
  151. package/dist/memory/memory-store.d.ts.map +1 -0
  152. package/dist/memory/memory-store.js +231 -0
  153. package/dist/memory/memory-store.js.map +1 -0
  154. package/dist/memory/stream-buffer-store.d.ts +69 -0
  155. package/dist/memory/stream-buffer-store.d.ts.map +1 -0
  156. package/dist/memory/stream-buffer-store.js +182 -0
  157. package/dist/memory/stream-buffer-store.js.map +1 -0
  158. package/dist/memory/tool-call-store.d.ts +68 -0
  159. package/dist/memory/tool-call-store.d.ts.map +1 -0
  160. package/dist/memory/tool-call-store.js +189 -0
  161. package/dist/memory/tool-call-store.js.map +1 -0
  162. package/dist/memory/types.d.ts +197 -0
  163. package/dist/memory/types.d.ts.map +1 -0
  164. package/dist/memory/types.js +15 -0
  165. package/dist/memory/types.js.map +1 -0
  166. package/dist/memory/utils.d.ts +30 -0
  167. package/dist/memory/utils.d.ts.map +1 -0
  168. package/dist/memory/utils.js +47 -0
  169. package/dist/memory/utils.js.map +1 -0
  170. package/dist/payments/facilitator-rpc-fallback.d.ts.map +1 -1
  171. package/dist/payments/facilitator-rpc-fallback.js +95 -0
  172. package/dist/payments/facilitator-rpc-fallback.js.map +1 -1
  173. package/dist/payments/hosted-tool-eligibility.d.ts +22 -0
  174. package/dist/payments/hosted-tool-eligibility.d.ts.map +1 -0
  175. package/dist/payments/hosted-tool-eligibility.js +173 -0
  176. package/dist/payments/hosted-tool-eligibility.js.map +1 -0
  177. package/dist/payments/index.d.ts +2 -2
  178. package/dist/payments/index.d.ts.map +1 -1
  179. package/dist/payments/index.js +1 -1
  180. package/dist/payments/index.js.map +1 -1
  181. package/dist/payments/mcp-session-cache.d.ts +35 -0
  182. package/dist/payments/mcp-session-cache.d.ts.map +1 -0
  183. package/dist/payments/mcp-session-cache.js +83 -0
  184. package/dist/payments/mcp-session-cache.js.map +1 -0
  185. package/dist/payments/monetization-gate.d.ts +33 -0
  186. package/dist/payments/monetization-gate.d.ts.map +1 -1
  187. package/dist/payments/monetization-gate.js +124 -12
  188. package/dist/payments/monetization-gate.js.map +1 -1
  189. package/dist/payments/pricing.d.ts +31 -0
  190. package/dist/payments/pricing.d.ts.map +1 -1
  191. package/dist/payments/pricing.js +317 -19
  192. package/dist/payments/pricing.js.map +1 -1
  193. package/dist/payments/usage-ledger.d.ts +36 -2
  194. package/dist/payments/usage-ledger.d.ts.map +1 -1
  195. package/dist/payments/usage-ledger.js +121 -4
  196. package/dist/payments/usage-ledger.js.map +1 -1
  197. package/dist/payments/x402-paid-call.d.ts +121 -0
  198. package/dist/payments/x402-paid-call.d.ts.map +1 -1
  199. package/dist/payments/x402-paid-call.js +428 -1
  200. package/dist/payments/x402-paid-call.js.map +1 -1
  201. package/dist/policy/default-policies.d.ts +18 -2
  202. package/dist/policy/default-policies.d.ts.map +1 -1
  203. package/dist/policy/default-policies.js +18 -2
  204. package/dist/policy/default-policies.js.map +1 -1
  205. package/dist/policy/index.d.ts +6 -3
  206. package/dist/policy/index.d.ts.map +1 -1
  207. package/dist/policy/index.js +6 -3
  208. package/dist/policy/index.js.map +1 -1
  209. package/dist/policy/local-policy-engine.d.ts +71 -13
  210. package/dist/policy/local-policy-engine.d.ts.map +1 -1
  211. package/dist/policy/local-policy-engine.js +33 -11
  212. package/dist/policy/local-policy-engine.js.map +1 -1
  213. package/dist/policy/permission-checks.d.ts +29 -3
  214. package/dist/policy/permission-checks.d.ts.map +1 -1
  215. package/dist/policy/permission-checks.js +29 -3
  216. package/dist/policy/permission-checks.js.map +1 -1
  217. package/dist/policy/policy-engine.d.ts +22 -2
  218. package/dist/policy/policy-engine.d.ts.map +1 -1
  219. package/dist/policy/policy-engine.js +22 -2
  220. package/dist/policy/policy-engine.js.map +1 -1
  221. package/dist/policy/policy-types.d.ts +55 -5
  222. package/dist/policy/policy-types.d.ts.map +1 -1
  223. package/dist/policy/policy-types.js +8 -1
  224. package/dist/policy/policy-types.js.map +1 -1
  225. package/dist/policy/risk-level.d.ts +32 -3
  226. package/dist/policy/risk-level.d.ts.map +1 -1
  227. package/dist/policy/risk-level.js +32 -3
  228. package/dist/policy/risk-level.js.map +1 -1
  229. package/dist/policy/spending-limits.d.ts +29 -3
  230. package/dist/policy/spending-limits.d.ts.map +1 -1
  231. package/dist/policy/spending-limits.js +29 -3
  232. package/dist/policy/spending-limits.js.map +1 -1
  233. package/dist/premium/activation-manager.d.ts +43 -0
  234. package/dist/premium/activation-manager.d.ts.map +1 -0
  235. package/dist/premium/activation-manager.js +131 -0
  236. package/dist/premium/activation-manager.js.map +1 -0
  237. package/dist/premium/builtin-plugins.d.ts +165 -0
  238. package/dist/premium/builtin-plugins.d.ts.map +1 -0
  239. package/dist/premium/builtin-plugins.js +422 -0
  240. package/dist/premium/builtin-plugins.js.map +1 -0
  241. package/dist/premium/event-store.d.ts +61 -0
  242. package/dist/premium/event-store.d.ts.map +1 -0
  243. package/dist/premium/event-store.js +130 -0
  244. package/dist/premium/event-store.js.map +1 -0
  245. package/dist/premium/index.d.ts +54 -0
  246. package/dist/premium/index.d.ts.map +1 -0
  247. package/dist/premium/index.js +54 -0
  248. package/dist/premium/index.js.map +1 -0
  249. package/dist/premium/manifest-builder.d.ts +65 -0
  250. package/dist/premium/manifest-builder.d.ts.map +1 -0
  251. package/dist/premium/manifest-builder.js +182 -0
  252. package/dist/premium/manifest-builder.js.map +1 -0
  253. package/dist/premium/meme-radar-capabilities.d.ts +38 -0
  254. package/dist/premium/meme-radar-capabilities.d.ts.map +1 -0
  255. package/dist/premium/meme-radar-capabilities.js +306 -0
  256. package/dist/premium/meme-radar-capabilities.js.map +1 -0
  257. package/dist/premium/metrics.d.ts +27 -0
  258. package/dist/premium/metrics.d.ts.map +1 -0
  259. package/dist/premium/metrics.js +65 -0
  260. package/dist/premium/metrics.js.map +1 -0
  261. package/dist/premium/plugin-validator.d.ts +39 -0
  262. package/dist/premium/plugin-validator.d.ts.map +1 -0
  263. package/dist/premium/plugin-validator.js +325 -0
  264. package/dist/premium/plugin-validator.js.map +1 -0
  265. package/dist/premium/private-manifest-loader.d.ts +111 -0
  266. package/dist/premium/private-manifest-loader.d.ts.map +1 -0
  267. package/dist/premium/private-manifest-loader.js +285 -0
  268. package/dist/premium/private-manifest-loader.js.map +1 -0
  269. package/dist/premium/provider-bridge.d.ts +133 -0
  270. package/dist/premium/provider-bridge.d.ts.map +1 -0
  271. package/dist/premium/provider-bridge.js +349 -0
  272. package/dist/premium/provider-bridge.js.map +1 -0
  273. package/dist/premium/session-manager.d.ts +125 -0
  274. package/dist/premium/session-manager.d.ts.map +1 -0
  275. package/dist/premium/session-manager.js +337 -0
  276. package/dist/premium/session-manager.js.map +1 -0
  277. package/dist/premium/stream-broker.d.ts +98 -0
  278. package/dist/premium/stream-broker.d.ts.map +1 -0
  279. package/dist/premium/stream-broker.js +199 -0
  280. package/dist/premium/stream-broker.js.map +1 -0
  281. package/dist/premium/tech-fundamentals-capabilities.d.ts +37 -0
  282. package/dist/premium/tech-fundamentals-capabilities.d.ts.map +1 -0
  283. package/dist/premium/tech-fundamentals-capabilities.js +283 -0
  284. package/dist/premium/tech-fundamentals-capabilities.js.map +1 -0
  285. package/dist/premium/trading-capabilities.d.ts +36 -0
  286. package/dist/premium/trading-capabilities.d.ts.map +1 -0
  287. package/dist/premium/trading-capabilities.js +205 -0
  288. package/dist/premium/trading-capabilities.js.map +1 -0
  289. package/dist/premium/types.d.ts +518 -0
  290. package/dist/premium/types.d.ts.map +1 -0
  291. package/dist/premium/types.js +23 -0
  292. package/dist/premium/types.js.map +1 -0
  293. package/dist/premium/webhook-engine.d.ts +138 -0
  294. package/dist/premium/webhook-engine.d.ts.map +1 -0
  295. package/dist/premium/webhook-engine.js +516 -0
  296. package/dist/premium/webhook-engine.js.map +1 -0
  297. package/dist/prompts/context/sap-agent-context.prompt.d.ts +5 -0
  298. package/dist/prompts/context/sap-agent-context.prompt.d.ts.map +1 -1
  299. package/dist/prompts/context/sap-agent-context.prompt.js +20 -16
  300. package/dist/prompts/context/sap-agent-context.prompt.js.map +1 -1
  301. package/dist/prompts/context/sap-agent-intent-router.prompt.d.ts +14 -0
  302. package/dist/prompts/context/sap-agent-intent-router.prompt.d.ts.map +1 -0
  303. package/dist/prompts/context/sap-agent-intent-router.prompt.js +155 -0
  304. package/dist/prompts/context/sap-agent-intent-router.prompt.js.map +1 -0
  305. package/dist/prompts/context/sap-agent-start.prompt.js +7 -0
  306. package/dist/prompts/context/sap-agent-start.prompt.js.map +1 -1
  307. package/dist/prompts/developer/debug-sap-error.prompt.d.ts +5 -0
  308. package/dist/prompts/developer/debug-sap-error.prompt.d.ts.map +1 -1
  309. package/dist/prompts/developer/debug-sap-error.prompt.js +3 -4
  310. package/dist/prompts/developer/debug-sap-error.prompt.js.map +1 -1
  311. package/dist/prompts/developer/generate-sap-integration.prompt.d.ts +5 -0
  312. package/dist/prompts/developer/generate-sap-integration.prompt.d.ts.map +1 -1
  313. package/dist/prompts/developer/generate-sap-integration.prompt.js +3 -4
  314. package/dist/prompts/developer/generate-sap-integration.prompt.js.map +1 -1
  315. package/dist/prompts/developer/index.d.ts +4 -1
  316. package/dist/prompts/developer/index.d.ts.map +1 -1
  317. package/dist/prompts/developer/index.js +4 -1
  318. package/dist/prompts/developer/index.js.map +1 -1
  319. package/dist/prompts/execution-proof/explain-proof-of-execution.prompt.d.ts +5 -0
  320. package/dist/prompts/execution-proof/explain-proof-of-execution.prompt.d.ts.map +1 -1
  321. package/dist/prompts/execution-proof/explain-proof-of-execution.prompt.js +3 -4
  322. package/dist/prompts/execution-proof/explain-proof-of-execution.prompt.js.map +1 -1
  323. package/dist/prompts/execution-proof/index.d.ts +4 -1
  324. package/dist/prompts/execution-proof/index.d.ts.map +1 -1
  325. package/dist/prompts/execution-proof/index.js +4 -1
  326. package/dist/prompts/execution-proof/index.js.map +1 -1
  327. package/dist/prompts/execution-proof/verify-execution-proof.prompt.d.ts +5 -0
  328. package/dist/prompts/execution-proof/verify-execution-proof.prompt.d.ts.map +1 -1
  329. package/dist/prompts/execution-proof/verify-execution-proof.prompt.js +3 -4
  330. package/dist/prompts/execution-proof/verify-execution-proof.prompt.js.map +1 -1
  331. package/dist/prompts/index.d.ts +4 -1
  332. package/dist/prompts/index.d.ts.map +1 -1
  333. package/dist/prompts/index.js +4 -1
  334. package/dist/prompts/index.js.map +1 -1
  335. package/dist/prompts/payments/create-paid-api.prompt.d.ts +5 -0
  336. package/dist/prompts/payments/create-paid-api.prompt.d.ts.map +1 -1
  337. package/dist/prompts/payments/create-paid-api.prompt.js +3 -4
  338. package/dist/prompts/payments/create-paid-api.prompt.js.map +1 -1
  339. package/dist/prompts/payments/explain-x402-settlement.prompt.d.ts +5 -0
  340. package/dist/prompts/payments/explain-x402-settlement.prompt.d.ts.map +1 -1
  341. package/dist/prompts/payments/explain-x402-settlement.prompt.js +16 -14
  342. package/dist/prompts/payments/explain-x402-settlement.prompt.js.map +1 -1
  343. package/dist/prompts/payments/index.d.ts +4 -1
  344. package/dist/prompts/payments/index.d.ts.map +1 -1
  345. package/dist/prompts/payments/index.js +4 -1
  346. package/dist/prompts/payments/index.js.map +1 -1
  347. package/dist/prompts/register-prompts.d.ts +18 -2
  348. package/dist/prompts/register-prompts.d.ts.map +1 -1
  349. package/dist/prompts/register-prompts.js +21 -3
  350. package/dist/prompts/register-prompts.js.map +1 -1
  351. package/dist/prompts/registry/analyze-sap-agent.prompt.d.ts +5 -0
  352. package/dist/prompts/registry/analyze-sap-agent.prompt.d.ts.map +1 -1
  353. package/dist/prompts/registry/analyze-sap-agent.prompt.js +3 -4
  354. package/dist/prompts/registry/analyze-sap-agent.prompt.js.map +1 -1
  355. package/dist/prompts/registry/index.d.ts +4 -1
  356. package/dist/prompts/registry/index.d.ts.map +1 -1
  357. package/dist/prompts/registry/index.js +4 -1
  358. package/dist/prompts/registry/index.js.map +1 -1
  359. package/dist/prompts/registry/register-sap-agent.prompt.d.ts +5 -0
  360. package/dist/prompts/registry/register-sap-agent.prompt.d.ts.map +1 -1
  361. package/dist/prompts/registry/register-sap-agent.prompt.js +22 -23
  362. package/dist/prompts/registry/register-sap-agent.prompt.js.map +1 -1
  363. package/dist/remote/premium-memory.d.ts +90 -0
  364. package/dist/remote/premium-memory.d.ts.map +1 -0
  365. package/dist/remote/premium-memory.js +161 -0
  366. package/dist/remote/premium-memory.js.map +1 -0
  367. package/dist/remote/premium-routes.d.ts +99 -0
  368. package/dist/remote/premium-routes.d.ts.map +1 -0
  369. package/dist/remote/premium-routes.js +347 -0
  370. package/dist/remote/premium-routes.js.map +1 -0
  371. package/dist/remote/public-home/sections.d.ts.map +1 -1
  372. package/dist/remote/public-home/sections.js +23 -4
  373. package/dist/remote/public-home/sections.js.map +1 -1
  374. package/dist/remote/public-home/types.d.ts +9 -0
  375. package/dist/remote/public-home/types.d.ts.map +1 -1
  376. package/dist/remote/server.d.ts +20 -0
  377. package/dist/remote/server.d.ts.map +1 -1
  378. package/dist/remote/server.js +370 -9
  379. package/dist/remote/server.js.map +1 -1
  380. package/dist/remote/tx-relay.d.ts +42 -0
  381. package/dist/remote/tx-relay.d.ts.map +1 -0
  382. package/dist/remote/tx-relay.js +118 -0
  383. package/dist/remote/tx-relay.js.map +1 -0
  384. package/dist/resources/current/sap-current-config.resource.d.ts +5 -0
  385. package/dist/resources/current/sap-current-config.resource.d.ts.map +1 -1
  386. package/dist/resources/current/sap-current-config.resource.js +2 -5
  387. package/dist/resources/current/sap-current-config.resource.js.map +1 -1
  388. package/dist/resources/execution-proof/index.d.ts +5 -0
  389. package/dist/resources/execution-proof/index.d.ts.map +1 -1
  390. package/dist/resources/execution-proof/index.js +5 -0
  391. package/dist/resources/execution-proof/index.js.map +1 -1
  392. package/dist/resources/execution-proof/sap-execution-record.resource.d.ts +5 -0
  393. package/dist/resources/execution-proof/sap-execution-record.resource.d.ts.map +1 -1
  394. package/dist/resources/execution-proof/sap-execution-record.resource.js +3 -4
  395. package/dist/resources/execution-proof/sap-execution-record.resource.js.map +1 -1
  396. package/dist/resources/index.d.ts +5 -0
  397. package/dist/resources/index.d.ts.map +1 -1
  398. package/dist/resources/index.js +5 -0
  399. package/dist/resources/index.js.map +1 -1
  400. package/dist/resources/memory/index.d.ts +5 -0
  401. package/dist/resources/memory/index.d.ts.map +1 -1
  402. package/dist/resources/memory/index.js +5 -0
  403. package/dist/resources/memory/index.js.map +1 -1
  404. package/dist/resources/memory/sap-memory.resource.d.ts +5 -0
  405. package/dist/resources/memory/sap-memory.resource.d.ts.map +1 -1
  406. package/dist/resources/memory/sap-memory.resource.js +3 -4
  407. package/dist/resources/memory/sap-memory.resource.js.map +1 -1
  408. package/dist/resources/profile/sap-active-profile.resource.d.ts +5 -0
  409. package/dist/resources/profile/sap-active-profile.resource.d.ts.map +1 -1
  410. package/dist/resources/profile/sap-active-profile.resource.js +2 -5
  411. package/dist/resources/profile/sap-active-profile.resource.js.map +1 -1
  412. package/dist/resources/register-resources.d.ts +5 -0
  413. package/dist/resources/register-resources.d.ts.map +1 -1
  414. package/dist/resources/register-resources.js +3 -1
  415. package/dist/resources/register-resources.js.map +1 -1
  416. package/dist/resources/registry/index.d.ts +5 -0
  417. package/dist/resources/registry/index.d.ts.map +1 -1
  418. package/dist/resources/registry/index.js +5 -0
  419. package/dist/resources/registry/index.js.map +1 -1
  420. package/dist/resources/registry/sap-agent.resource.d.ts +5 -0
  421. package/dist/resources/registry/sap-agent.resource.d.ts.map +1 -1
  422. package/dist/resources/registry/sap-agent.resource.js +3 -4
  423. package/dist/resources/registry/sap-agent.resource.js.map +1 -1
  424. package/dist/resources/registry/sap-global-registry.resource.d.ts +18 -4
  425. package/dist/resources/registry/sap-global-registry.resource.d.ts.map +1 -1
  426. package/dist/resources/registry/sap-global-registry.resource.js +18 -4
  427. package/dist/resources/registry/sap-global-registry.resource.js.map +1 -1
  428. package/dist/resources/reputation/index.d.ts +4 -1
  429. package/dist/resources/reputation/index.d.ts.map +1 -1
  430. package/dist/resources/reputation/index.js +4 -1
  431. package/dist/resources/reputation/index.js.map +1 -1
  432. package/dist/resources/reputation/sap-reputation.resource.d.ts +18 -4
  433. package/dist/resources/reputation/sap-reputation.resource.d.ts.map +1 -1
  434. package/dist/resources/reputation/sap-reputation.resource.js +18 -4
  435. package/dist/resources/reputation/sap-reputation.resource.js.map +1 -1
  436. package/dist/resources/tool-schema/index.d.ts +4 -1
  437. package/dist/resources/tool-schema/index.d.ts.map +1 -1
  438. package/dist/resources/tool-schema/index.js +4 -1
  439. package/dist/resources/tool-schema/index.js.map +1 -1
  440. package/dist/resources/tool-schema/sap-tool-schema.resource.d.ts +18 -4
  441. package/dist/resources/tool-schema/sap-tool-schema.resource.d.ts.map +1 -1
  442. package/dist/resources/tool-schema/sap-tool-schema.resource.js +18 -4
  443. package/dist/resources/tool-schema/sap-tool-schema.resource.js.map +1 -1
  444. package/dist/sap/index.d.ts +7 -1
  445. package/dist/sap/index.d.ts.map +1 -1
  446. package/dist/sap/index.js +7 -1
  447. package/dist/sap/index.js.map +1 -1
  448. package/dist/sap/sap-client-manager.d.ts +80 -13
  449. package/dist/sap/sap-client-manager.d.ts.map +1 -1
  450. package/dist/sap/sap-client-manager.js +80 -13
  451. package/dist/sap/sap-client-manager.js.map +1 -1
  452. package/dist/sap/sap-errors.d.ts +22 -3
  453. package/dist/sap/sap-errors.d.ts.map +1 -1
  454. package/dist/sap/sap-errors.js +22 -3
  455. package/dist/sap/sap-errors.js.map +1 -1
  456. package/dist/sap/sap-types.d.ts +75 -6
  457. package/dist/sap/sap-types.d.ts.map +1 -1
  458. package/dist/sap/sap-types.js +11 -1
  459. package/dist/sap/sap-types.js.map +1 -1
  460. package/dist/schemas/common.schema.d.ts +45 -8
  461. package/dist/schemas/common.schema.d.ts.map +1 -1
  462. package/dist/schemas/common.schema.js +45 -8
  463. package/dist/schemas/common.schema.js.map +1 -1
  464. package/dist/schemas/developer.schema.d.ts +22 -3
  465. package/dist/schemas/developer.schema.d.ts.map +1 -1
  466. package/dist/schemas/developer.schema.js +22 -3
  467. package/dist/schemas/developer.schema.js.map +1 -1
  468. package/dist/schemas/execution-proof.schema.d.ts +29 -4
  469. package/dist/schemas/execution-proof.schema.d.ts.map +1 -1
  470. package/dist/schemas/execution-proof.schema.js +29 -4
  471. package/dist/schemas/execution-proof.schema.js.map +1 -1
  472. package/dist/schemas/identity.schema.d.ts +23 -3
  473. package/dist/schemas/identity.schema.d.ts.map +1 -1
  474. package/dist/schemas/identity.schema.js +23 -3
  475. package/dist/schemas/identity.schema.js.map +1 -1
  476. package/dist/schemas/index.d.ts +11 -1
  477. package/dist/schemas/index.d.ts.map +1 -1
  478. package/dist/schemas/index.js +11 -1
  479. package/dist/schemas/index.js.map +1 -1
  480. package/dist/schemas/memory.schema.d.ts +23 -3
  481. package/dist/schemas/memory.schema.d.ts.map +1 -1
  482. package/dist/schemas/memory.schema.js +23 -3
  483. package/dist/schemas/memory.schema.js.map +1 -1
  484. package/dist/schemas/payments.schema.d.ts +24 -3
  485. package/dist/schemas/payments.schema.d.ts.map +1 -1
  486. package/dist/schemas/payments.schema.js +24 -3
  487. package/dist/schemas/payments.schema.js.map +1 -1
  488. package/dist/schemas/registry.schema.d.ts +38 -6
  489. package/dist/schemas/registry.schema.d.ts.map +1 -1
  490. package/dist/schemas/registry.schema.js +36 -4
  491. package/dist/schemas/registry.schema.js.map +1 -1
  492. package/dist/schemas/reputation.schema.d.ts +22 -3
  493. package/dist/schemas/reputation.schema.d.ts.map +1 -1
  494. package/dist/schemas/reputation.schema.js +22 -3
  495. package/dist/schemas/reputation.schema.js.map +1 -1
  496. package/dist/schemas/settlement.schema.d.ts +31 -4
  497. package/dist/schemas/settlement.schema.d.ts.map +1 -1
  498. package/dist/schemas/settlement.schema.js +31 -4
  499. package/dist/schemas/settlement.schema.js.map +1 -1
  500. package/dist/schemas/tool-schema.schema.d.ts +29 -3
  501. package/dist/schemas/tool-schema.schema.d.ts.map +1 -1
  502. package/dist/schemas/tool-schema.schema.js +29 -3
  503. package/dist/schemas/tool-schema.schema.js.map +1 -1
  504. package/dist/schemas/transaction.schema.d.ts +23 -3
  505. package/dist/schemas/transaction.schema.d.ts.map +1 -1
  506. package/dist/schemas/transaction.schema.js +23 -3
  507. package/dist/schemas/transaction.schema.js.map +1 -1
  508. package/dist/security/approval-required.d.ts +19 -2
  509. package/dist/security/approval-required.d.ts.map +1 -1
  510. package/dist/security/approval-required.js +19 -2
  511. package/dist/security/approval-required.js.map +1 -1
  512. package/dist/security/index.d.ts +7 -1
  513. package/dist/security/index.d.ts.map +1 -1
  514. package/dist/security/index.js +7 -1
  515. package/dist/security/index.js.map +1 -1
  516. package/dist/security/private-key-guard.d.ts +18 -2
  517. package/dist/security/private-key-guard.d.ts.map +1 -1
  518. package/dist/security/private-key-guard.js +19 -2
  519. package/dist/security/private-key-guard.js.map +1 -1
  520. package/dist/security/prompt-injection-notes.d.ts +10 -1
  521. package/dist/security/prompt-injection-notes.d.ts.map +1 -1
  522. package/dist/security/prompt-injection-notes.js +10 -1
  523. package/dist/security/prompt-injection-notes.js.map +1 -1
  524. package/dist/security/tool-permissions.d.ts.map +1 -1
  525. package/dist/security/tool-permissions.js +12 -0
  526. package/dist/security/tool-permissions.js.map +1 -1
  527. package/dist/security/unsafe-action-guard.d.ts +36 -10
  528. package/dist/security/unsafe-action-guard.d.ts.map +1 -1
  529. package/dist/security/unsafe-action-guard.js +67 -15
  530. package/dist/security/unsafe-action-guard.js.map +1 -1
  531. package/dist/server/create-server.d.ts +18 -3
  532. package/dist/server/create-server.d.ts.map +1 -1
  533. package/dist/server/create-server.js +20 -4
  534. package/dist/server/create-server.js.map +1 -1
  535. package/dist/server/index.d.ts +6 -1
  536. package/dist/server/index.d.ts.map +1 -1
  537. package/dist/server/index.js +6 -1
  538. package/dist/server/index.js.map +1 -1
  539. package/dist/server/register-capabilities.d.ts +17 -2
  540. package/dist/server/register-capabilities.d.ts.map +1 -1
  541. package/dist/server/register-capabilities.js +17 -2
  542. package/dist/server/register-capabilities.js.map +1 -1
  543. package/dist/server/server-metadata.d.ts +35 -1
  544. package/dist/server/server-metadata.d.ts.map +1 -1
  545. package/dist/server/server-metadata.js +36 -2
  546. package/dist/server/server-metadata.js.map +1 -1
  547. package/dist/session/agent-session.d.ts +35 -4
  548. package/dist/session/agent-session.d.ts.map +1 -1
  549. package/dist/session/agent-session.js +35 -4
  550. package/dist/session/agent-session.js.map +1 -1
  551. package/dist/session/delegated-session.d.ts +31 -3
  552. package/dist/session/delegated-session.d.ts.map +1 -1
  553. package/dist/session/delegated-session.js +31 -3
  554. package/dist/session/delegated-session.js.map +1 -1
  555. package/dist/session/index.d.ts +7 -1
  556. package/dist/session/index.d.ts.map +1 -1
  557. package/dist/session/index.js +7 -1
  558. package/dist/session/index.js.map +1 -1
  559. package/dist/session/redis-session-store.d.ts +94 -21
  560. package/dist/session/redis-session-store.d.ts.map +1 -1
  561. package/dist/session/redis-session-store.js +87 -20
  562. package/dist/session/redis-session-store.js.map +1 -1
  563. package/dist/session/session-limits.d.ts +34 -4
  564. package/dist/session/session-limits.d.ts.map +1 -1
  565. package/dist/session/session-limits.js +34 -4
  566. package/dist/session/session-limits.js.map +1 -1
  567. package/dist/session/session-permissions.d.ts +57 -7
  568. package/dist/session/session-permissions.d.ts.map +1 -1
  569. package/dist/session/session-permissions.js +57 -7
  570. package/dist/session/session-permissions.js.map +1 -1
  571. package/dist/session/session-store.d.ts +9 -1
  572. package/dist/session/session-store.d.ts.map +1 -1
  573. package/dist/session/session-store.js +18 -3
  574. package/dist/session/session-store.js.map +1 -1
  575. package/dist/session/session-types.d.ts +33 -4
  576. package/dist/session/session-types.d.ts.map +1 -1
  577. package/dist/session/session-types.js +9 -1
  578. package/dist/session/session-types.js.map +1 -1
  579. package/dist/signer/index.d.ts +7 -1
  580. package/dist/signer/index.d.ts.map +1 -1
  581. package/dist/signer/index.js +7 -1
  582. package/dist/signer/index.js.map +1 -1
  583. package/dist/signer/load-keypair.d.ts +25 -4
  584. package/dist/signer/load-keypair.d.ts.map +1 -1
  585. package/dist/signer/load-keypair.js +25 -4
  586. package/dist/signer/load-keypair.js.map +1 -1
  587. package/dist/signer/local-keypair-signer.d.ts +19 -3
  588. package/dist/signer/local-keypair-signer.d.ts.map +1 -1
  589. package/dist/signer/local-keypair-signer.js +24 -4
  590. package/dist/signer/local-keypair-signer.js.map +1 -1
  591. package/dist/signer/signer-resolver.d.ts +19 -2
  592. package/dist/signer/signer-resolver.d.ts.map +1 -1
  593. package/dist/signer/signer-resolver.js +26 -3
  594. package/dist/signer/signer-resolver.js.map +1 -1
  595. package/dist/signer/signer-types.d.ts +47 -5
  596. package/dist/signer/signer-types.d.ts.map +1 -1
  597. package/dist/signer/signer-types.js +13 -1
  598. package/dist/signer/signer-types.js.map +1 -1
  599. package/dist/strategies/strategy-store.d.ts +82 -0
  600. package/dist/strategies/strategy-store.d.ts.map +1 -0
  601. package/dist/strategies/strategy-store.js +165 -0
  602. package/dist/strategies/strategy-store.js.map +1 -0
  603. package/dist/tools/agent-start-tool.d.ts.map +1 -1
  604. package/dist/tools/agent-start-tool.js +481 -5
  605. package/dist/tools/agent-start-tool.js.map +1 -1
  606. package/dist/tools/client-sdk-tools.d.ts.map +1 -1
  607. package/dist/tools/client-sdk-tools.js +32 -7
  608. package/dist/tools/client-sdk-tools.js.map +1 -1
  609. package/dist/tools/estimate-tool-cost.d.ts +13 -0
  610. package/dist/tools/estimate-tool-cost.d.ts.map +1 -0
  611. package/dist/tools/estimate-tool-cost.js +139 -0
  612. package/dist/tools/estimate-tool-cost.js.map +1 -0
  613. package/dist/tools/index.d.ts +8 -0
  614. package/dist/tools/index.d.ts.map +1 -1
  615. package/dist/tools/index.js +11 -0
  616. package/dist/tools/index.js.map +1 -1
  617. package/dist/tools/magicblock-tools.d.ts +31 -6
  618. package/dist/tools/magicblock-tools.d.ts.map +1 -1
  619. package/dist/tools/magicblock-tools.js +178 -53
  620. package/dist/tools/magicblock-tools.js.map +1 -1
  621. package/dist/tools/memory-tools.d.ts +26 -0
  622. package/dist/tools/memory-tools.d.ts.map +1 -0
  623. package/dist/tools/memory-tools.js +533 -0
  624. package/dist/tools/memory-tools.js.map +1 -0
  625. package/dist/tools/perp-tools.d.ts +39 -0
  626. package/dist/tools/perp-tools.d.ts.map +1 -0
  627. package/dist/tools/perp-tools.js +1110 -0
  628. package/dist/tools/perp-tools.js.map +1 -0
  629. package/dist/tools/premium-tools.d.ts +8 -0
  630. package/dist/tools/premium-tools.d.ts.map +1 -0
  631. package/dist/tools/premium-tools.js +1102 -0
  632. package/dist/tools/premium-tools.js.map +1 -0
  633. package/dist/tools/profile-tools.d.ts.map +1 -1
  634. package/dist/tools/profile-tools.js +18 -1
  635. package/dist/tools/profile-tools.js.map +1 -1
  636. package/dist/tools/quick-context-tool.d.ts +16 -0
  637. package/dist/tools/quick-context-tool.d.ts.map +1 -0
  638. package/dist/tools/quick-context-tool.js +304 -0
  639. package/dist/tools/quick-context-tool.js.map +1 -0
  640. package/dist/tools/register-tools.d.ts.map +1 -1
  641. package/dist/tools/register-tools.js +17 -0
  642. package/dist/tools/register-tools.js.map +1 -1
  643. package/dist/tools/sap-sdk-tools.d.ts +420 -1
  644. package/dist/tools/sap-sdk-tools.d.ts.map +1 -1
  645. package/dist/tools/sap-sdk-tools.js +1548 -127
  646. package/dist/tools/sap-sdk-tools.js.map +1 -1
  647. package/dist/tools/sap-sns-tools.d.ts +2 -2
  648. package/dist/tools/sap-sns-tools.d.ts.map +1 -1
  649. package/dist/tools/sap-sns-tools.js +12 -8
  650. package/dist/tools/sap-sns-tools.js.map +1 -1
  651. package/dist/tools/skills-tools.d.ts +16 -0
  652. package/dist/tools/skills-tools.d.ts.map +1 -1
  653. package/dist/tools/skills-tools.js +282 -5
  654. package/dist/tools/skills-tools.js.map +1 -1
  655. package/dist/tools/tool-aliases.d.ts.map +1 -1
  656. package/dist/tools/tool-aliases.js +7 -0
  657. package/dist/tools/tool-aliases.js.map +1 -1
  658. package/dist/tools/transaction-tools.d.ts +135 -0
  659. package/dist/tools/transaction-tools.d.ts.map +1 -1
  660. package/dist/tools/transaction-tools.js +515 -16
  661. package/dist/tools/transaction-tools.js.map +1 -1
  662. package/dist/tools/x402-paid-call-tool.d.ts.map +1 -1
  663. package/dist/tools/x402-paid-call-tool.js +756 -23
  664. package/dist/tools/x402-paid-call-tool.js.map +1 -1
  665. package/dist/transports/index.d.ts +6 -1
  666. package/dist/transports/index.d.ts.map +1 -1
  667. package/dist/transports/index.js +6 -1
  668. package/dist/transports/index.js.map +1 -1
  669. package/dist/transports/stdio.d.ts +17 -5
  670. package/dist/transports/stdio.d.ts.map +1 -1
  671. package/dist/transports/stdio.js +17 -5
  672. package/dist/transports/stdio.js.map +1 -1
  673. package/dist/tui/wizard-save.d.ts +88 -8
  674. package/dist/tui/wizard-save.d.ts.map +1 -1
  675. package/dist/tui/wizard-save.js +77 -8
  676. package/dist/tui/wizard-save.js.map +1 -1
  677. package/dist/wizard-core/desktop-flow.d.ts.map +1 -1
  678. package/dist/wizard-core/desktop-flow.js +4 -2
  679. package/dist/wizard-core/desktop-flow.js.map +1 -1
  680. package/docs/03_CONFIGURATION_AND_WIZARD.md +5 -3
  681. package/docs/06_PAYMENTS_X402_AND_PAYSH.md +82 -4
  682. package/docs/07_ENDPOINTS_AND_CLIENTS.md +7 -3
  683. package/docs/09_TOOLS_SKILLS_AND_AGENT_GUIDE.md +21 -3
  684. package/docs/14_DESKTOP_WIZARD_RELEASE.md +8 -6
  685. package/docs/16_SAP_AGENT_IDENTITY_PIPELINE.md +304 -0
  686. package/docs/18_PREMIUM_PLUGIN_RUNTIME.md +108 -0
  687. package/docs/BRANCH_AND_CI.md +67 -0
  688. package/docs/README.md +19 -2
  689. package/docs/magicblock-tools.md +70 -29
  690. package/package.json +10 -6
  691. package/server.json +3 -3
  692. package/skills/README.md +12 -2
  693. package/skills/sap-agent-registry/SKILL.md +99 -4
  694. package/skills/sap-defi/SKILL.md +8 -4
  695. package/skills/sap-discovery-indexing/SKILL.md +26 -4
  696. package/skills/sap-escrow-settlement/SKILL.md +22 -4
  697. package/skills/sap-mcp/SKILL.md +140 -22
  698. package/skills/sap-mcp/TOOL_REFERENCE.md +47 -7
  699. package/skills/sap-nft-metaplex/SKILL.md +22 -0
  700. package/skills/sap-operations/SKILL.md +32 -3
  701. package/skills/sap-payments-x402/SKILL.md +85 -8
  702. package/skills/sap-sns/SKILL.md +32 -10
  703. package/smithery.config.schema.json +7 -0
@@ -7,13 +7,13 @@
7
7
  * - mb-vrf (2 Solana VRF tools — on-chain via @solana/web3.js)
8
8
  *
9
9
  * Pricing:
10
- * READ = $0.01/call (10_000 USDC base units) 14 read-only tools
11
- * WRITE = $0.05/call (50_000 USDC base units) 6 transaction-building tools
10
+ * READ = hosted read-premium tier lightweight discovery, quote, and state tools.
11
+ * BUILD = hosted builder/value-action tiers — transaction-building or value-moving tools.
12
12
  *
13
13
  * Write tools (deposit, transfer, withdraw, swap, initializeMint) return
14
- * unsigned transactions. The caller must sign with sap_sign_transaction
15
- * and submit with sap_submit_signed_transaction to the RPC indicated by
16
- * the `sendTo` field ("base" or "ephemeral").
14
+ * unsigned transactions. Agents must use sap_preview_transaction,
15
+ * sap_sign_transaction, and sap_submit_signed_transaction. Do not create
16
+ * temporary signing scripts or read local keypair files.
17
17
  */
18
18
  import { PublicKey, TransactionInstruction, Transaction, SystemProgram } from '@solana/web3.js';
19
19
  import { createTextResponse } from '../adapters/mcp/tool-response.js';
@@ -33,27 +33,7 @@ const VRF_PROGRAM_ID = new PublicKey('Vrf1RNUjXmQGjmQrQLvJHs9SNkvDJEsRVFPkfSQUwG
33
33
  const VRF_PROGRAM_IDENTITY = new PublicKey('9irBy75QS2BN81FUgXuHcjqceJJRuc9oDkAe8TKVvvAw');
34
34
  const DEFAULT_QUEUE = new PublicKey('Cuj97ggrhhidhbu39TijNVqE74xvKJ69gDervRUXAxGh');
35
35
  const DEFAULT_EPHEMERAL_QUEUE = new PublicKey('5hBR571xnXppuCPveTrctfTU7tJLSN94nq7kv7FRK5Tc');
36
- // ─── Pricing Constants ────────────────────────────────────────────
37
- const READ_PRICE_USDC = 10000n;
38
- const WRITE_PRICE_USDC = 50000n;
39
- const READ_TOOLS = new Set([
40
- 'magicblock_getRoutes', 'magicblock_getIdentity', 'magicblock_getDelegationStatus',
41
- 'magicblock_getAccountInfo', 'magicblock_getBlockhashForAccounts', 'magicblock_getSignatureStatuses',
42
- 'magicblock_health', 'magicblock_challenge', 'magicblock_login',
43
- 'magicblock_balance', 'magicblock_privateBalance', 'magicblock_swapQuote',
44
- 'magicblock_isMintInitialized', 'magicblock_getRandomnessResult',
45
- ]);
46
- const WRITE_TOOLS = new Set([
47
- 'magicblock_deposit', 'magicblock_transfer', 'magicblock_withdraw',
48
- 'magicblock_swap', 'magicblock_initializeMint', 'magicblock_requestRandomness',
49
- ]);
50
- function getPriceForTool(toolName) {
51
- if (READ_TOOLS.has(toolName))
52
- return READ_PRICE_USDC;
53
- if (WRITE_TOOLS.has(toolName))
54
- return WRITE_PRICE_USDC;
55
- throw new Error(`No pricing defined for tool: ${toolName}`);
56
- }
36
+ const WRAPPED_SOL_MINT = 'So11111111111111111111111111111111111111112';
57
37
  async function rpcCall(endpoint, method, params) {
58
38
  const url = ROUTER_ENDPOINTS[endpoint];
59
39
  const res = await fetch(url, {
@@ -108,6 +88,64 @@ function stripNullish(obj) {
108
88
  }
109
89
  return result;
110
90
  }
91
+ // ─── Hosted pricing helpers ───────────────────────────────────────
92
+ const MAGICBLOCK_READ_TOOLS = new Set([
93
+ 'magicblock_getRoutes',
94
+ 'magicblock_getIdentity',
95
+ 'magicblock_getDelegationStatus',
96
+ 'magicblock_getAccountInfo',
97
+ 'magicblock_getBlockhashForAccounts',
98
+ 'magicblock_getSignatureStatuses',
99
+ 'magicblock_health',
100
+ 'magicblock_balance',
101
+ 'magicblock_privateBalance',
102
+ 'magicblock_isMintInitialized',
103
+ 'magicblock_getRandomnessResult',
104
+ ]);
105
+ const MAGICBLOCK_BUILDER_TOOLS = new Set([
106
+ 'magicblock_deposit',
107
+ 'magicblock_transfer',
108
+ 'magicblock_withdraw',
109
+ 'magicblock_initializeMint',
110
+ 'magicblock_requestRandomness',
111
+ ]);
112
+ const MAGICBLOCK_VALUE_ACTION_TOOLS = new Set([
113
+ 'magicblock_swap',
114
+ ]);
115
+ const MAGICBLOCK_FREE_TOOLS = new Set([
116
+ 'magicblock_health',
117
+ 'magicblock_getRoutes',
118
+ 'magicblock_getIdentity',
119
+ ]);
120
+ /**
121
+ * Classify a MagicBlock tool into the hosted pricing tier.
122
+ * These mappings must stay aligned with src/payments/pricing.ts.
123
+ */
124
+ function classifyMagicBlockToolTier(toolName) {
125
+ if (MAGICBLOCK_FREE_TOOLS.has(toolName))
126
+ return 'free';
127
+ if (MAGICBLOCK_VALUE_ACTION_TOOLS.has(toolName))
128
+ return 'value-action';
129
+ if (MAGICBLOCK_BUILDER_TOOLS.has(toolName))
130
+ return 'builder';
131
+ if (MAGICBLOCK_READ_TOOLS.has(toolName))
132
+ return 'read-premium';
133
+ return 'read-premium';
134
+ }
135
+ /**
136
+ * Estimate the hosted price for a MagicBlock tool call.
137
+ * These are approximate defaults — the actual x402 challenge is authoritative.
138
+ */
139
+ function estimateMagicBlockToolPrice(toolName) {
140
+ const tier = classifyMagicBlockToolTier(toolName);
141
+ switch (tier) {
142
+ case 'free': return '0.00';
143
+ case 'read-premium': return '~0.001';
144
+ case 'builder': return '~0.008';
145
+ case 'value-action': return '~0.05';
146
+ default: return '~0.001';
147
+ }
148
+ }
111
149
  // ═══════════════════════════════════════════════════════════════════
112
150
  // JSON Schema Helpers
113
151
  // ═══════════════════════════════════════════════════════════════════
@@ -130,13 +168,96 @@ const f = {
130
168
  const endpointField = f.enum("MagicBlock Router endpoint: 'mainnet' or 'devnet'", ['mainnet', 'devnet']);
131
169
  const clusterField = f.string("Cluster: 'mainnet', 'devnet', or custom RPC URL");
132
170
  const validatorField = f.string('Optional ER validator pubkey. Defaults to the selected ephemeral RPC identity.');
171
+ function requireValidPubkey(value, fieldName) {
172
+ if (!value) {
173
+ throw new Error(`missing_required_field: ${fieldName}`);
174
+ }
175
+ try {
176
+ void new PublicKey(value);
177
+ }
178
+ catch {
179
+ throw new Error(`invalid_solana_pubkey: ${fieldName}`);
180
+ }
181
+ }
182
+ function requirePositiveSafeInteger(value, fieldName) {
183
+ if (!Number.isSafeInteger(value) || value <= 0) {
184
+ throw new Error(`${fieldName} must be a positive safe integer in token base units`);
185
+ }
186
+ }
187
+ function isWrappedSolMint(mint) {
188
+ return mint === WRAPPED_SOL_MINT;
189
+ }
190
+ function validateMagicBlockTransferInput(input) {
191
+ requireValidPubkey(input.from, 'from');
192
+ requireValidPubkey(input.to, 'to');
193
+ requireValidPubkey(input.mint, 'mint');
194
+ requirePositiveSafeInteger(input.amount, 'amount');
195
+ if (input.visibility === 'private' && !input.authToken) {
196
+ throw new Error('magicblock_private_transfer_auth_required: call magicblock_challenge and magicblock_login first, then pass authToken.');
197
+ }
198
+ if (input.legacy === true && input.initVaultIfMissing === true) {
199
+ throw new Error('magicblock_legacy_tx_vault_init_too_large: legacy=true with initVaultIfMissing=true exceeds the 1232-byte legacy transaction limit. Set legacy=false (v0) or initVaultIfMissing=false.');
200
+ }
201
+ }
202
+ function validateMagicBlockSwapInput(input) {
203
+ requireValidPubkey(input.userPublicKey, 'userPublicKey');
204
+ if (input.visibility === 'private') {
205
+ if (!input.destination) {
206
+ throw new Error('magicblock_private_swap_destination_required: visibility="private" requires a destination wallet. Without it, the swap output routes to the default Hydra escrow instead of the intended recipient. Pass destination as the recipient wallet public key.');
207
+ }
208
+ requireValidPubkey(input.destination, 'destination');
209
+ if (isWrappedSolMint(input.quoteResponse?.outputMint)) {
210
+ throw new Error('magicblock_private_swap_wsol_output_blocked: private swaps that output wSOL are disabled because live mainnet testing found Hydra delivery can leave wSOL stuck in the mixer pool. Use visibility="public", swap into a non-SOL SPL token, or wait for MagicBlock shuttle delivery recovery support.');
211
+ }
212
+ }
213
+ }
214
+ /**
215
+ * Sanitize a swap quote response before forwarding it to the MagicBlock swap API.
216
+ *
217
+ * The Metis quote API can return `routePlan[].bps: null` for some routes, while
218
+ * the swap endpoint requires numeric route share basis points. Never invent a
219
+ * route share: derive it from `percent`, use 10000 only for an unambiguous
220
+ * single-hop route, and fail closed for ambiguous multi-hop quotes.
221
+ */
222
+ export function sanitizeSwapQuoteResponse(quoteResponse) {
223
+ if (!quoteResponse || typeof quoteResponse !== 'object') {
224
+ return quoteResponse;
225
+ }
226
+ const routePlan = quoteResponse.routePlan;
227
+ if (!Array.isArray(routePlan)) {
228
+ return quoteResponse;
229
+ }
230
+ const patchedRoutePlan = routePlan.map((hop) => normalizeRoutePlanBps(hop, routePlan.length));
231
+ return { ...quoteResponse, routePlan: patchedRoutePlan };
232
+ }
233
+ function normalizeRoutePlanBps(hop, routePlanLength) {
234
+ if (!hop || typeof hop !== 'object' || Array.isArray(hop)) {
235
+ return hop;
236
+ }
237
+ const record = hop;
238
+ if (!Object.prototype.hasOwnProperty.call(record, 'bps') || record.bps != null) {
239
+ return hop;
240
+ }
241
+ const percent = typeof record.percent === 'number'
242
+ ? record.percent
243
+ : typeof record.percent === 'string'
244
+ ? Number(record.percent)
245
+ : undefined;
246
+ if (percent !== undefined && Number.isFinite(percent) && percent >= 0 && percent <= 100) {
247
+ return { ...record, bps: Math.round(percent * 100) };
248
+ }
249
+ if (routePlanLength === 1) {
250
+ return { ...record, bps: 10_000 };
251
+ }
252
+ throw new Error('magicblock_swap_quote_bps_required: routePlan[].bps was null and could not be derived from percent; request a fresh quote and pass it unchanged.');
253
+ }
133
254
  // ═══════════════════════════════════════════════════════════════════
134
255
  // Registration
135
256
  // ═══════════════════════════════════════════════════════════════════
136
257
  /**
137
258
  * @name registerMagicBlockTools
138
259
  * @description Registers 20 MagicBlock tools (ER Router, Private Payments, VRF)
139
- * with the MCP server. Each tool is priced at $0.01 (read) or $0.05 (write).
260
+ * with the MCP server. Hosted pricing is resolved centrally by src/payments/pricing.ts.
140
261
  * @param server - MCP server receiving tool definitions and handlers.
141
262
  * @param context - Shared runtime context (VRF getRandomnessResult uses the Solana connection).
142
263
  */
@@ -156,13 +277,14 @@ export function registerMagicBlockTools(server, context) {
156
277
  return createTextResponse(JSON.stringify(errorResponse, null, 2), { isError: true });
157
278
  }
158
279
  function success(data, toolName) {
159
- const price = getPriceForTool(toolName);
160
- const priceUsd = Number(price) / 1e6;
280
+ const pricingTier = classifyMagicBlockToolTier(toolName);
281
+ const estimatedPriceUsd = estimateMagicBlockToolPrice(toolName);
161
282
  const response = {
162
283
  success: true,
163
284
  tool: toolName,
164
- priceUsd: `$${priceUsd.toFixed(2)}`,
165
- priceBaseUnits: price.toString(),
285
+ hostedPricing: pricingTier === 'free'
286
+ ? 'free — no x402 payment required'
287
+ : `${pricingTier} tier — estimated ${estimatedPriceUsd} USD per call. Use sap_x402_estimate_cost for exact pricing and sap_payments_call_paid_tool with maxPriceUsd >= ${estimatedPriceUsd} to execute.`,
166
288
  data,
167
289
  };
168
290
  return createTextResponse(JSON.stringify(response, null, 2));
@@ -173,7 +295,7 @@ export function registerMagicBlockTools(server, context) {
173
295
  // ═══════════════════════════════════════════════════════════════
174
296
  // ER Router (6 read-only tools)
175
297
  // ═══════════════════════════════════════════════════════════════
176
- register('magicblock_getRoutes', 'List available Ephemeral Rollup nodes from the Magic Router (identity, FQDN, fee, block time, country). Price: $0.01.', schema({ endpoint: endpointField }), async (raw) => {
298
+ register('magicblock_getRoutes', 'List available Ephemeral Rollup nodes from the Magic Router (identity, FQDN, fee, block time, country)..', schema({ endpoint: endpointField }), async (raw) => {
177
299
  try {
178
300
  const { endpoint = 'devnet' } = parseInput(raw);
179
301
  const routes = await rpcCall(endpoint, 'getRoutes', []);
@@ -183,7 +305,7 @@ export function registerMagicBlockTools(server, context) {
183
305
  return handleError('magicblock_getRoutes', e);
184
306
  }
185
307
  });
186
- register('magicblock_getIdentity', 'Get the identity and FQDN of the current ER Validator node. Price: $0.01.', schema({ endpoint: endpointField }), async (raw) => {
308
+ register('magicblock_getIdentity', 'Get the identity and FQDN of the current ER Validator node..', schema({ endpoint: endpointField }), async (raw) => {
187
309
  try {
188
310
  const { endpoint = 'devnet' } = parseInput(raw);
189
311
  const identity = await rpcCall(endpoint, 'getIdentity', []);
@@ -193,7 +315,7 @@ export function registerMagicBlockTools(server, context) {
193
315
  return handleError('magicblock_getIdentity', e);
194
316
  }
195
317
  });
196
- register('magicblock_getDelegationStatus', 'Check whether a Solana account is delegated to an Ephemeral Rollup. Returns authority, owner, delegation slot, and lamports. Price: $0.01.', schema({ account: f.pubkey('Account pubkey to check delegation status for'), endpoint: endpointField }, ['account']), async (raw) => {
318
+ register('magicblock_getDelegationStatus', 'Check whether a Solana account is delegated to an Ephemeral Rollup. Returns authority, owner, delegation slot, and lamports..', schema({ account: f.pubkey('Account pubkey to check delegation status for'), endpoint: endpointField }, ['account']), async (raw) => {
197
319
  try {
198
320
  const { account, endpoint = 'devnet' } = parseInput(raw);
199
321
  const status = await rpcCall(endpoint, 'getDelegationStatus', [account]);
@@ -203,7 +325,7 @@ export function registerMagicBlockTools(server, context) {
203
325
  return handleError('magicblock_getDelegationStatus', e);
204
326
  }
205
327
  });
206
- register('magicblock_getAccountInfo', 'Fetch account information (data, lamports, owner, executable, space) via the Magic Router. Price: $0.01.', schema({ account: f.pubkey('Account pubkey to fetch info for'), encoding: f.enum('Encoding for account data', ['base64', 'base64+zstd']), endpoint: endpointField }, ['account']), async (raw) => {
328
+ register('magicblock_getAccountInfo', 'Fetch account information (data, lamports, owner, executable, space) via the Magic Router..', schema({ account: f.pubkey('Account pubkey to fetch info for'), encoding: f.enum('Encoding for account data', ['base64', 'base64+zstd']), endpoint: endpointField }, ['account']), async (raw) => {
207
329
  try {
208
330
  const { account, encoding = 'base64', endpoint = 'devnet' } = parseInput(raw);
209
331
  const info = await rpcCall(endpoint, 'getAccountInfo', [account, { encoding }]);
@@ -213,7 +335,7 @@ export function registerMagicBlockTools(server, context) {
213
335
  return handleError('magicblock_getAccountInfo', e);
214
336
  }
215
337
  });
216
- register('magicblock_getBlockhashForAccounts', 'Get a blockhash and last valid block height for a batch of account addresses (max 100). Price: $0.01.', schema({ accounts: f.array('Array of account addresses (max 100)', f.pubkey('Account pubkey')), endpoint: endpointField }, ['accounts']), async (raw) => {
338
+ register('magicblock_getBlockhashForAccounts', 'Get a blockhash and last valid block height for a batch of account addresses (max 100)..', schema({ accounts: f.array('Array of account addresses (max 100)', f.pubkey('Account pubkey')), endpoint: endpointField }, ['accounts']), async (raw) => {
217
339
  try {
218
340
  const { accounts, endpoint = 'devnet' } = parseInput(raw);
219
341
  const blockhash = await rpcCall(endpoint, 'getBlockhashForAccounts', [accounts]);
@@ -223,7 +345,7 @@ export function registerMagicBlockTools(server, context) {
223
345
  return handleError('magicblock_getBlockhashForAccounts', e);
224
346
  }
225
347
  });
226
- register('magicblock_getSignatureStatuses', 'Check the confirmation status (processed/confirmed/finalized) of one or more transaction signatures. Price: $0.01.', schema({ signatures: f.array('Array of transaction signatures', f.string('Transaction signature (base58)')), endpoint: endpointField }, ['signatures']), async (raw) => {
348
+ register('magicblock_getSignatureStatuses', 'Check the confirmation status (processed/confirmed/finalized) of one or more transaction signatures..', schema({ signatures: f.array('Array of transaction signatures', f.string('Transaction signature (base58)')), endpoint: endpointField }, ['signatures']), async (raw) => {
227
349
  try {
228
350
  const { signatures, endpoint = 'devnet' } = parseInput(raw);
229
351
  const statuses = await rpcCall(endpoint, 'getSignatureStatuses', [signatures]);
@@ -236,7 +358,7 @@ export function registerMagicBlockTools(server, context) {
236
358
  // ═══════════════════════════════════════════════════════════════
237
359
  // Private Payment API — Meta & Auth (3 tools)
238
360
  // ═══════════════════════════════════════════════════════════════
239
- register('magicblock_health', 'Check the health status of the MagicBlock Private Payments API. Price: $0.01.', schema({}), async () => {
361
+ register('magicblock_health', 'Check the health status of the MagicBlock Private Payments API..', schema({}), async () => {
240
362
  try {
241
363
  const health = await apiGet('/health');
242
364
  return success(health, 'magicblock_health');
@@ -245,7 +367,7 @@ export function registerMagicBlockTools(server, context) {
245
367
  return handleError('magicblock_health', e);
246
368
  }
247
369
  });
248
- register('magicblock_challenge', 'Generate a challenge string for the wallet to sign (step 1 of the PER auth flow). Price: $0.01.', schema({ pubkey: f.pubkey('Wallet pubkey that will sign the challenge'), cluster: clusterField }, ['pubkey']), async (raw) => {
370
+ register('magicblock_challenge', 'Generate a challenge string for the wallet to sign (step 1 of the PER auth flow)..', schema({ pubkey: f.pubkey('Wallet pubkey that will sign the challenge'), cluster: clusterField }, ['pubkey']), async (raw) => {
249
371
  try {
250
372
  const { pubkey, cluster } = parseInput(raw);
251
373
  const result = await apiGet('/v1/spl/challenge', {
@@ -257,7 +379,7 @@ export function registerMagicBlockTools(server, context) {
257
379
  return handleError('magicblock_challenge', e);
258
380
  }
259
381
  });
260
- register('magicblock_login', 'Exchange a signed challenge for a bearer token (step 2 of PER auth flow). The token is used for private-balance and private transfers. Price: $0.01.', schema({ pubkey: f.pubkey('Wallet pubkey that signed the challenge'), challenge: f.string('Challenge string from magicblock_challenge'), signature: f.string('Wallet signature over the challenge string'), cluster: clusterField }, ['pubkey', 'challenge', 'signature']), async (raw) => {
382
+ register('magicblock_login', 'Exchange a signed challenge for a bearer token (step 2 of PER auth flow). The token is used for private-balance and private transfers..', schema({ pubkey: f.pubkey('Wallet pubkey that signed the challenge'), challenge: f.string('Challenge string from magicblock_challenge'), signature: f.string('Wallet signature over the challenge string'), cluster: clusterField }, ['pubkey', 'challenge', 'signature']), async (raw) => {
261
383
  try {
262
384
  const { pubkey, challenge, signature, cluster } = parseInput(raw);
263
385
  const result = await apiPost('/v1/spl/login', {
@@ -272,7 +394,7 @@ export function registerMagicBlockTools(server, context) {
272
394
  // ═══════════════════════════════════════════════════════════════
273
395
  // Private Payment API — Balance (2 tools)
274
396
  // ═══════════════════════════════════════════════════════════════
275
- register('magicblock_balance', 'Read the base-chain SPL token balance for an address (public, no auth required). Price: $0.01.', schema({ address: f.pubkey('Owner wallet pubkey'), mint: f.string('SPL mint pubkey'), cluster: clusterField }, ['address', 'mint']), async (raw) => {
397
+ register('magicblock_balance', 'Read the base-chain SPL token balance for an address (public, no auth required)..', schema({ address: f.pubkey('Owner wallet pubkey'), mint: f.string('SPL mint pubkey'), cluster: clusterField }, ['address', 'mint']), async (raw) => {
276
398
  try {
277
399
  const { address, mint, cluster } = parseInput(raw);
278
400
  const result = await apiGet('/v1/spl/balance', { address, mint, cluster: cluster ?? undefined });
@@ -282,7 +404,7 @@ export function registerMagicBlockTools(server, context) {
282
404
  return handleError('magicblock_balance', e);
283
405
  }
284
406
  });
285
- register('magicblock_privateBalance', 'Read the ephemeral-rollup SPL token balance for an address (requires bearer token from login). Price: $0.01.', schema({ address: f.pubkey('Owner wallet pubkey'), mint: f.string('SPL mint pubkey'), cluster: clusterField, authToken: f.string('Bearer token from magicblock_login (required for private reads)') }, ['address', 'mint', 'authToken']), async (raw) => {
407
+ register('magicblock_privateBalance', 'Read the ephemeral-rollup SPL token balance for an address (requires bearer token from login)..', schema({ address: f.pubkey('Owner wallet pubkey'), mint: f.string('SPL mint pubkey'), cluster: clusterField, authToken: f.string('Bearer token from magicblock_login (required for private reads)') }, ['address', 'mint', 'authToken']), async (raw) => {
286
408
  try {
287
409
  const { address, mint, cluster, authToken } = parseInput(raw);
288
410
  const result = await apiGet('/v1/spl/private-balance', { address, mint, cluster: cluster ?? undefined }, authToken);
@@ -295,7 +417,7 @@ export function registerMagicBlockTools(server, context) {
295
417
  // ═══════════════════════════════════════════════════════════════
296
418
  // Private Payment API — SPL Token Flows (3 write tools)
297
419
  // ═══════════════════════════════════════════════════════════════
298
- register('magicblock_deposit', 'Build an unsigned transaction to deposit SPL tokens from Solana into an Ephemeral Rollup. Sign with sap_sign_transaction and submit to the RPC indicated by sendTo. Price: $0.05.', schema({ owner: f.pubkey('Wallet pubkey that owns the tokens and will sign'), amount: f.number('Base-unit amount to deposit (integer, minimum 1)'), mint: f.string('SPL mint. Defaults to USDC (mainnet) or devnet USDC'), cluster: clusterField, validator: validatorField, initIfMissing: f.boolean('Initialize the transfer queue if missing (default true)'), initVaultIfMissing: f.boolean('Initialize the vault if missing (default true)'), initAtasIfMissing: f.boolean('Initialize associated token accounts if missing (default true)'), idempotent: f.boolean('Use idempotent variants for preparatory init instructions (default true)') }, ['owner', 'amount']), async (raw) => {
420
+ register('magicblock_deposit', 'Build an unsigned transaction to deposit SPL tokens from Solana into an Ephemeral Rollup. Then use sap_preview_transaction, sap_sign_transaction, and sap_submit_signed_transaction — or use sap_payments_finalize_transaction for 1-call preview+sign+submit (hosted mode). Do not create local signing scripts. Builder fee applies.', schema({ owner: f.pubkey('Wallet pubkey that owns the tokens and will sign'), amount: f.number('Base-unit amount to deposit (integer, minimum 1)'), mint: f.string('SPL mint. Defaults to USDC (mainnet) or devnet USDC'), cluster: clusterField, validator: validatorField, initIfMissing: f.boolean('Initialize the transfer queue if missing (default true)'), initVaultIfMissing: f.boolean('Initialize the vault if missing (default true)'), initAtasIfMissing: f.boolean('Initialize associated token accounts if missing (default true)'), idempotent: f.boolean('Use idempotent variants for preparatory init instructions (default true)') }, ['owner', 'amount']), async (raw) => {
299
421
  try {
300
422
  const input = parseInput(raw);
301
423
  const result = await apiPost('/v1/spl/deposit', {
@@ -311,7 +433,7 @@ export function registerMagicBlockTools(server, context) {
311
433
  return handleError('magicblock_deposit', e);
312
434
  }
313
435
  });
314
- register('magicblock_transfer', 'Build an unsigned SPL token transfer (public or private) through an Ephemeral Rollup. Supports base/ephemeral source and destination, delayed settlement, split transfers, and gasless mode. Price: $0.05.', schema({
436
+ register('magicblock_transfer', 'Build an unsigned SPL token transfer (public or private) through an Ephemeral Rollup. Supports base/ephemeral source and destination, delayed settlement, split transfers, and gasless mode. Then use sap_preview_transaction, sap_sign_transaction, and sap_submit_signed_transaction — or use sap_payments_finalize_transaction for 1-call preview+sign+submit (hosted mode). Builder fee applies.', schema({
315
437
  from: f.pubkey('Sender wallet pubkey'), to: f.pubkey('Recipient wallet pubkey'), mint: f.string('SPL mint pubkey'),
316
438
  amount: f.number('Base-unit amount to transfer (integer, minimum 1)'),
317
439
  visibility: f.enum("'public' = transparent SPL transfer, 'private' = routed through Private ER with delayed+split settlement", ['public', 'private']),
@@ -321,7 +443,7 @@ export function registerMagicBlockTools(server, context) {
321
443
  authToken: f.string('Bearer token from login (required for private transfers)'),
322
444
  initIfMissing: f.boolean('Initialize transfer queue if missing (default true)'),
323
445
  initAtasIfMissing: f.boolean('Initialize recipient ATA if missing (default true)'),
324
- initVaultIfMissing: f.boolean('Initialize vault if missing (default false)'),
446
+ initVaultIfMissing: f.boolean('Initialize vault if missing (default false). WARNING: when legacy=true, setting this to true can exceed the 1232-byte legacy transaction limit and produce TRANSACTION_TOO_LARGE errors. Prefer v0 (legacy=false) when vault init is needed.'),
325
447
  memo: f.string('Optional memo appended to the transaction'),
326
448
  minDelayMs: f.string("Private only. Earliest (ms) the queued transfer may settle. Default '0'"),
327
449
  maxDelayMs: f.string('Private only. Latest (ms) the queued transfer may settle (<= 600000)'),
@@ -332,6 +454,7 @@ export function registerMagicBlockTools(server, context) {
332
454
  }, ['from', 'to', 'mint', 'amount', 'visibility', 'fromBalance', 'toBalance']), async (raw) => {
333
455
  try {
334
456
  const input = parseInput(raw);
457
+ validateMagicBlockTransferInput(input);
335
458
  const result = await apiPost('/v1/spl/transfer', {
336
459
  from: input.from, to: input.to, mint: input.mint, amount: input.amount,
337
460
  visibility: input.visibility, fromBalance: input.fromBalance, toBalance: input.toBalance,
@@ -350,7 +473,7 @@ export function registerMagicBlockTools(server, context) {
350
473
  return handleError('magicblock_transfer', e);
351
474
  }
352
475
  });
353
- register('magicblock_withdraw', 'Build an unsigned transaction to withdraw SPL tokens from an Ephemeral Rollup back to Solana. Price: $0.05.', schema({ owner: f.pubkey('Wallet pubkey that owns the tokens and will sign'), mint: f.string('SPL mint on Solana'), amount: f.number('Base-unit amount to withdraw (integer, minimum 1)'), cluster: clusterField, validator: f.string('Optional ER validator pubkey'), initIfMissing: f.boolean('Initialize transfer queue if missing (default true)'), initAtasIfMissing: f.boolean('Initialize ATAs if missing (default true)'), escrowIndex: f.number('Optional escrow index for the withdrawal'), idempotent: f.boolean('Use idempotent variants for preparatory init instructions (default true)') }, ['owner', 'mint', 'amount']), async (raw) => {
476
+ register('magicblock_withdraw', 'Build an unsigned transaction to withdraw SPL tokens from an Ephemeral Rollup back to Solana. Then use sap_preview_transaction, sap_sign_transaction, and sap_submit_signed_transaction — or use sap_payments_finalize_transaction for 1-call preview+sign+submit (hosted mode). Builder fee applies.', schema({ owner: f.pubkey('Wallet pubkey that owns the tokens and will sign'), mint: f.string('SPL mint on Solana'), amount: f.number('Base-unit amount to withdraw (integer, minimum 1)'), cluster: clusterField, validator: f.string('Optional ER validator pubkey'), initIfMissing: f.boolean('Initialize transfer queue if missing (default true)'), initAtasIfMissing: f.boolean('Initialize ATAs if missing (default true)'), escrowIndex: f.number('Optional escrow index for the withdrawal'), idempotent: f.boolean('Use idempotent variants for preparatory init instructions (default true)') }, ['owner', 'mint', 'amount']), async (raw) => {
354
477
  try {
355
478
  const input = parseInput(raw);
356
479
  const result = await apiPost('/v1/spl/withdraw', {
@@ -370,7 +493,7 @@ export function registerMagicBlockTools(server, context) {
370
493
  // ═══════════════════════════════════════════════════════════════
371
494
  // Private Payment API — Swap (2 tools)
372
495
  // ═══════════════════════════════════════════════════════════════
373
- register('magicblock_swapQuote', 'Get a swap quote between two SPL mints (proxies Triton Metis swap API). Pass the result into magicblock_swap. Price: $0.01.', schema({ inputMint: f.string('Input token mint address'), outputMint: f.string('Output token mint address'), amount: f.string("Raw amount to swap (unsigned integer string, e.g. '1000000')"), slippageBps: f.number('Slippage threshold in basis points (e.g. 50 = 0.5%)'), swapMode: f.enum('Swap mode: fixed input or fixed output amount', ['ExactIn', 'ExactOut']), onlyDirectRoutes: f.boolean('Limit routing to a single hop (default false)'), restrictIntermediateTokens: f.boolean('Restrict intermediate tokens to a more stable set (default false)'), platformFeeBps: f.number('Optional platform fee in basis points'), maxAccounts: f.number('Approximate maximum account budget for the route (default 64)') }, ['inputMint', 'outputMint', 'amount']), async (raw) => {
496
+ register('magicblock_swapQuote', 'Get a swap quote between two SPL mints (proxies Triton Metis swap API). Pass the result into magicblock_swap. Lightweight read tier; use this before any value-moving swap.', schema({ inputMint: f.string('Input token mint address'), outputMint: f.string('Output token mint address'), amount: f.string("Raw amount to swap (unsigned integer string, e.g. '1000000')"), slippageBps: f.number('Slippage threshold in basis points (e.g. 50 = 0.5%)'), swapMode: f.enum('Swap mode: fixed input or fixed output amount', ['ExactIn', 'ExactOut']), onlyDirectRoutes: f.boolean('Limit routing to a single hop (default false)'), restrictIntermediateTokens: f.boolean('Restrict intermediate tokens to a more stable set (default false)'), platformFeeBps: f.number('Optional platform fee in basis points'), maxAccounts: f.number('Approximate maximum account budget for the route (default 64)') }, ['inputMint', 'outputMint', 'amount']), async (raw) => {
374
497
  try {
375
498
  const input = parseInput(raw);
376
499
  const result = await apiGet('/v1/swap/quote', {
@@ -388,11 +511,13 @@ export function registerMagicBlockTools(server, context) {
388
511
  return handleError('magicblock_swapQuote', e);
389
512
  }
390
513
  });
391
- register('magicblock_swap', "Build an unsigned swap transaction from a quote. 'public' mode passes through Jupiter, 'private' mode routes output through a scheduled private transfer with delay and split. Price: $0.05.", schema({ userPublicKey: f.pubkey('Wallet that will sign the swap transaction'), quoteResponse: f.object('Quote response object from magicblock_swapQuote (pass as-is)', {}), visibility: f.enum("'public' = transparent Jupiter pass-through, 'private' = output routed through scheduled private transfer", ['public', 'private']), destination: f.pubkey("Final private-transfer recipient (required when visibility='private')"), minDelayMs: f.string("Private only. Earliest (ms) the queued transfer may settle"), maxDelayMs: f.string("Private only. Latest (ms) the queued transfer may settle (<= 600000)"), split: f.number('Private only. Number of queue entries to split across (1-14)'), clientRefId: f.string('Private only. Optional u64 client correlation ID'), validator: f.string('Optional validator pubkey for the transfer-queue PDA'), wrapAndUnwrapSol: f.boolean('Auto wrap/unwrap native SOL when needed (default true)'), asLegacyTransaction: f.boolean('Build a legacy transaction (not allowed when visibility=private, default false)') }, ['userPublicKey', 'quoteResponse']), async (raw) => {
514
+ register('magicblock_swap', "Build an unsigned swap transaction from a quote. 'public' mode passes through Jupiter. 'private' mode routes output through scheduled private transfer with delay and split, requires destination, and currently rejects wSOL output because live mainnet testing found stuck-fund risk in MagicBlock shuttle delivery. Agents must continue with sap_preview_transaction, sap_sign_transaction, and sap_submit_signed_transaction; never write temporary signing scripts or read keypair JSON. Value-action fee applies.", schema({ userPublicKey: f.pubkey('Wallet that will sign the swap transaction'), quoteResponse: f.object('Quote response object from magicblock_swapQuote (pass as-is)', {}), visibility: f.enum("'public' = transparent Jupiter pass-through, 'private' = output routed through scheduled private transfer", ['public', 'private']), destination: f.pubkey("Final private-transfer recipient (required when visibility='private')"), minDelayMs: f.string("Private only. Earliest (ms) the queued transfer may settle"), maxDelayMs: f.string("Private only. Latest (ms) the queued transfer may settle (<= 600000)"), split: f.number('Private only. Number of queue entries to split across (1-14)'), clientRefId: f.string('Private only. Optional u64 client correlation ID'), validator: f.string('Optional validator pubkey for the transfer-queue PDA'), wrapAndUnwrapSol: f.boolean('Auto wrap/unwrap native SOL when needed (default true)'), asLegacyTransaction: f.boolean('Build a legacy transaction (not allowed when visibility=private, default false)') }, ['userPublicKey', 'quoteResponse']), async (raw) => {
392
515
  try {
393
516
  const input = parseInput(raw);
517
+ validateMagicBlockSwapInput(input);
518
+ const sanitizedQuote = sanitizeSwapQuoteResponse(input.quoteResponse);
394
519
  const result = await apiPost('/v1/swap/swap', {
395
- userPublicKey: input.userPublicKey, quoteResponse: input.quoteResponse,
520
+ userPublicKey: input.userPublicKey, quoteResponse: sanitizedQuote,
396
521
  ...stripNullish({
397
522
  visibility: input.visibility, destination: input.destination,
398
523
  minDelayMs: input.minDelayMs, maxDelayMs: input.maxDelayMs,
@@ -410,7 +535,7 @@ export function registerMagicBlockTools(server, context) {
410
535
  // ═══════════════════════════════════════════════════════════════
411
536
  // Private Payment API — Mint Init (2 tools)
412
537
  // ═══════════════════════════════════════════════════════════════
413
- register('magicblock_initializeMint', 'Build an unsigned transaction that initializes a validator-scoped transfer queue for a mint. Price: $0.05.', schema({ owner: f.pubkey('Wallet pubkey that will sign the transaction'), mint: f.string('SPL mint to initialize a transfer queue for'), cluster: clusterField, validator: f.string('Optional ER validator pubkey') }, ['owner', 'mint']), async (raw) => {
538
+ register('magicblock_initializeMint', 'Build an unsigned transaction that initializes a validator-scoped transfer queue for a mint. Then use sap_preview_transaction, sap_sign_transaction, and sap_submit_signed_transaction — or use sap_payments_finalize_transaction for 1-call preview+sign+submit (hosted mode). Builder fee applies.', schema({ owner: f.pubkey('Wallet pubkey that will sign the transaction'), mint: f.string('SPL mint to initialize a transfer queue for'), cluster: clusterField, validator: f.string('Optional ER validator pubkey') }, ['owner', 'mint']), async (raw) => {
414
539
  try {
415
540
  const input = parseInput(raw);
416
541
  const result = await apiPost('/v1/spl/initialize-mint', {
@@ -422,7 +547,7 @@ export function registerMagicBlockTools(server, context) {
422
547
  return handleError('magicblock_initializeMint', e);
423
548
  }
424
549
  });
425
- register('magicblock_isMintInitialized', 'Check whether a mint has a validator-scoped transfer queue on the ephemeral RPC. Price: $0.01.', schema({ mint: f.string('SPL mint to check'), cluster: clusterField, validator: f.string('Optional ER validator pubkey') }, ['mint']), async (raw) => {
550
+ register('magicblock_isMintInitialized', 'Check whether a mint has a validator-scoped transfer queue on the ephemeral RPC..', schema({ mint: f.string('SPL mint to check'), cluster: clusterField, validator: f.string('Optional ER validator pubkey') }, ['mint']), async (raw) => {
426
551
  try {
427
552
  const input = parseInput(raw);
428
553
  const result = await apiGet('/v1/spl/is-mint-initialized', {
@@ -437,7 +562,7 @@ export function registerMagicBlockTools(server, context) {
437
562
  // ═══════════════════════════════════════════════════════════════
438
563
  // VRF (2 tools — on-chain via @solana/web3.js)
439
564
  // ═══════════════════════════════════════════════════════════════
440
- register('magicblock_requestRandomness', 'Request provably fair on-chain randomness from the MagicBlock VRF oracle (Vrf1RNUjXmQGjmQrQLvJHs9SNkvDJEsRVFPkfSQUwGz). Builds an unsigned transaction that invokes request_randomness on the VRF program. The caller must sign with sap_sign_transaction and submit to Solana. The oracle queue defaults to the base-layer queue (Cuj97ggrhhidhbu39TijNVqE74xvKJ69gDervRUXAxGh); set ephemeral=true to use the ER queue for delegated programs. Price: $0.05.', schema({
565
+ register('magicblock_requestRandomness', 'Request provably fair on-chain randomness from the MagicBlock VRF oracle (Vrf1RNUjXmQGjmQrQLvJHs9SNkvDJEsRVFPkfSQUwGz). Builds an unsigned transaction that invokes request_randomness on the VRF program. Use sap_preview_transaction, sap_sign_transaction, and sap_submit_signed_transaction; do not create local signing scripts. The oracle queue defaults to the base-layer queue (Cuj97ggrhhidhbu39TijNVqE74xvKJ69gDervRUXAxGh); set ephemeral=true to use the ER queue for delegated programs. Builder fee applies.', schema({
441
566
  payer: f.pubkey('Wallet pubkey that will pay for the request and sign the transaction'),
442
567
  callbackProgramId: f.pubkey('Program ID of the callback program (the program that will consume the randomness)'),
443
568
  callbackDiscriminator: f.string('Base58 or hex discriminator for the callback instruction in your program'),
@@ -525,7 +650,7 @@ export function registerMagicBlockTools(server, context) {
525
650
  return handleError('magicblock_requestRandomness', e);
526
651
  }
527
652
  });
528
- register('magicblock_getRandomnessResult', 'Check whether a VRF request has been fulfilled by reading the RandomnessRequest account on-chain. Returns fulfilled status, random bytes (if available), and the request metadata. Price: $0.01.', schema({ requestKey: f.pubkey('VRF request PDA key from magicblock_requestRandomness'), endpoint: endpointField }, ['requestKey']), async (raw) => {
653
+ register('magicblock_getRandomnessResult', 'Check whether a VRF request has been fulfilled by reading the RandomnessRequest account on-chain. Returns fulfilled status, random bytes (if available), and the request metadata..', schema({ requestKey: f.pubkey('VRF request PDA key from magicblock_requestRandomness'), endpoint: endpointField }, ['requestKey']), async (raw) => {
529
654
  try {
530
655
  const { requestKey: requestKeyStr } = parseInput(raw);
531
656
  const requestKey = new PublicKey(requestKeyStr);
@@ -1 +1 @@
1
- {"version":3,"file":"magicblock-tools.js","sourceRoot":"","sources":["../../src/tools/magicblock-tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"magicblock-tools.js","sourceRoot":"","sources":["../../src/tools/magicblock-tools.ts"],"names":[],"mappings":"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"}