@oobe-protocol-labs/sap-mcp-server 0.9.16 → 0.9.21

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 (611) hide show
  1. package/.env.example +8 -7
  2. package/CHANGELOG.md +238 -0
  3. package/README.md +3 -3
  4. package/USER_DOCS/01_HOSTED_REMOTE_MCP.md +1 -1
  5. package/USER_DOCS/04_CLIENT_CONFIGS.md +3 -3
  6. package/USER_DOCS/05_SKILLS_AND_TOOLS.md +16 -8
  7. package/USER_DOCS/06_DESKTOP_GUI_WIZARD.md +5 -5
  8. package/config.example.json +5 -4
  9. package/config.schema.json +7 -2
  10. package/config.secure-example.json +5 -4
  11. package/dist/adapters/index.d.ts +7 -1
  12. package/dist/adapters/index.d.ts.map +1 -1
  13. package/dist/adapters/index.js +7 -1
  14. package/dist/adapters/index.js.map +1 -1
  15. package/dist/adapters/mcp/errors.d.ts +13 -1
  16. package/dist/adapters/mcp/errors.d.ts.map +1 -1
  17. package/dist/adapters/mcp/errors.js +13 -1
  18. package/dist/adapters/mcp/errors.js.map +1 -1
  19. package/dist/adapters/mcp/index.d.ts +7 -1
  20. package/dist/adapters/mcp/index.d.ts.map +1 -1
  21. package/dist/adapters/mcp/index.js +7 -1
  22. package/dist/adapters/mcp/index.js.map +1 -1
  23. package/dist/adapters/mcp/prompt-response.d.ts +13 -1
  24. package/dist/adapters/mcp/prompt-response.d.ts.map +1 -1
  25. package/dist/adapters/mcp/prompt-response.js +13 -1
  26. package/dist/adapters/mcp/prompt-response.js.map +1 -1
  27. package/dist/adapters/mcp/resource-response.d.ts +14 -1
  28. package/dist/adapters/mcp/resource-response.d.ts.map +1 -1
  29. package/dist/adapters/mcp/resource-response.js +14 -1
  30. package/dist/adapters/mcp/resource-response.js.map +1 -1
  31. package/dist/adapters/mcp/sdk-compat.d.ts +11 -3
  32. package/dist/adapters/mcp/sdk-compat.d.ts.map +1 -1
  33. package/dist/adapters/mcp/sdk-compat.js +213 -24
  34. package/dist/adapters/mcp/sdk-compat.js.map +1 -1
  35. package/dist/adapters/mcp/tool-response.d.ts +39 -4
  36. package/dist/adapters/mcp/tool-response.d.ts.map +1 -1
  37. package/dist/adapters/mcp/tool-response.js +39 -4
  38. package/dist/adapters/mcp/tool-response.js.map +1 -1
  39. package/dist/adapters/solana/commitment.d.ts +14 -2
  40. package/dist/adapters/solana/commitment.d.ts.map +1 -1
  41. package/dist/adapters/solana/commitment.js +14 -2
  42. package/dist/adapters/solana/commitment.js.map +1 -1
  43. package/dist/adapters/solana/connection.d.ts +11 -2
  44. package/dist/adapters/solana/connection.d.ts.map +1 -1
  45. package/dist/adapters/solana/connection.js +11 -2
  46. package/dist/adapters/solana/connection.js.map +1 -1
  47. package/dist/adapters/solana/index.d.ts +7 -1
  48. package/dist/adapters/solana/index.d.ts.map +1 -1
  49. package/dist/adapters/solana/index.js +7 -1
  50. package/dist/adapters/solana/index.js.map +1 -1
  51. package/dist/adapters/solana/public-key.d.ts +11 -2
  52. package/dist/adapters/solana/public-key.d.ts.map +1 -1
  53. package/dist/adapters/solana/public-key.js +11 -2
  54. package/dist/adapters/solana/public-key.js.map +1 -1
  55. package/dist/config/defaults.d.ts +5 -0
  56. package/dist/config/defaults.d.ts.map +1 -1
  57. package/dist/config/defaults.js +5 -0
  58. package/dist/config/defaults.js.map +1 -1
  59. package/dist/config/env.d.ts +4 -0
  60. package/dist/config/env.d.ts.map +1 -1
  61. package/dist/config/env.js +11 -6
  62. package/dist/config/env.js.map +1 -1
  63. package/dist/config/index.d.ts +5 -0
  64. package/dist/config/index.d.ts.map +1 -1
  65. package/dist/config/index.js +5 -0
  66. package/dist/config/index.js.map +1 -1
  67. package/dist/config/mcp-client-injection.d.ts.map +1 -1
  68. package/dist/config/mcp-client-injection.js +97 -1
  69. package/dist/config/mcp-client-injection.js.map +1 -1
  70. package/dist/config/paths.d.ts +5 -0
  71. package/dist/config/paths.d.ts.map +1 -1
  72. package/dist/config/paths.js +5 -0
  73. package/dist/config/paths.js.map +1 -1
  74. package/dist/config/profiles.d.ts +3 -10
  75. package/dist/config/profiles.d.ts.map +1 -1
  76. package/dist/config/profiles.js +5 -0
  77. package/dist/config/profiles.js.map +1 -1
  78. package/dist/config/schema.d.ts +5 -0
  79. package/dist/config/schema.d.ts.map +1 -1
  80. package/dist/config/schema.js +5 -0
  81. package/dist/config/schema.js.map +1 -1
  82. package/dist/config/secure-config.d.ts +5 -0
  83. package/dist/config/secure-config.d.ts.map +1 -1
  84. package/dist/config/secure-config.js +5 -0
  85. package/dist/config/secure-config.js.map +1 -1
  86. package/dist/config/setup.d.ts +5 -0
  87. package/dist/config/setup.d.ts.map +1 -1
  88. package/dist/config/setup.js +5 -0
  89. package/dist/config/setup.js.map +1 -1
  90. package/dist/config-cli.d.ts +3 -13
  91. package/dist/config-cli.d.ts.map +1 -1
  92. package/dist/config-cli.js +5 -0
  93. package/dist/config-cli.js.map +1 -1
  94. package/dist/core/constants.d.ts +25 -6
  95. package/dist/core/constants.d.ts.map +1 -1
  96. package/dist/core/constants.js +27 -8
  97. package/dist/core/constants.js.map +1 -1
  98. package/dist/core/errors.d.ts +5 -0
  99. package/dist/core/errors.d.ts.map +1 -1
  100. package/dist/core/errors.js +5 -0
  101. package/dist/core/errors.js.map +1 -1
  102. package/dist/core/guards.d.ts +5 -0
  103. package/dist/core/guards.d.ts.map +1 -1
  104. package/dist/core/guards.js +3 -1
  105. package/dist/core/guards.js.map +1 -1
  106. package/dist/core/index.d.ts +7 -1
  107. package/dist/core/index.d.ts.map +1 -1
  108. package/dist/core/index.js +7 -1
  109. package/dist/core/index.js.map +1 -1
  110. package/dist/core/logger.js +1 -1
  111. package/dist/core/logger.js.map +1 -1
  112. package/dist/core/result.d.ts +77 -9
  113. package/dist/core/result.d.ts.map +1 -1
  114. package/dist/core/result.js +68 -9
  115. package/dist/core/result.js.map +1 -1
  116. package/dist/core/types.d.ts +5 -0
  117. package/dist/core/types.d.ts.map +1 -1
  118. package/dist/core/types.js +3 -4
  119. package/dist/core/types.js.map +1 -1
  120. package/dist/index.d.ts +5 -0
  121. package/dist/index.d.ts.map +1 -1
  122. package/dist/index.js +5 -0
  123. package/dist/index.js.map +1 -1
  124. package/dist/payments/facilitator-rpc-fallback.d.ts.map +1 -1
  125. package/dist/payments/facilitator-rpc-fallback.js +95 -0
  126. package/dist/payments/facilitator-rpc-fallback.js.map +1 -1
  127. package/dist/payments/hosted-tool-eligibility.d.ts +1 -0
  128. package/dist/payments/hosted-tool-eligibility.d.ts.map +1 -1
  129. package/dist/payments/hosted-tool-eligibility.js +1 -0
  130. package/dist/payments/hosted-tool-eligibility.js.map +1 -1
  131. package/dist/payments/mcp-session-cache.d.ts +35 -0
  132. package/dist/payments/mcp-session-cache.d.ts.map +1 -0
  133. package/dist/payments/mcp-session-cache.js +83 -0
  134. package/dist/payments/mcp-session-cache.js.map +1 -0
  135. package/dist/payments/monetization-gate.d.ts +5 -0
  136. package/dist/payments/monetization-gate.d.ts.map +1 -1
  137. package/dist/payments/monetization-gate.js +24 -1
  138. package/dist/payments/monetization-gate.js.map +1 -1
  139. package/dist/payments/pricing.d.ts +1 -0
  140. package/dist/payments/pricing.d.ts.map +1 -1
  141. package/dist/payments/pricing.js +66 -8
  142. package/dist/payments/pricing.js.map +1 -1
  143. package/dist/payments/usage-ledger.d.ts +36 -2
  144. package/dist/payments/usage-ledger.d.ts.map +1 -1
  145. package/dist/payments/usage-ledger.js +121 -4
  146. package/dist/payments/usage-ledger.js.map +1 -1
  147. package/dist/payments/x402-paid-call.d.ts +50 -0
  148. package/dist/payments/x402-paid-call.d.ts.map +1 -1
  149. package/dist/payments/x402-paid-call.js +171 -0
  150. package/dist/payments/x402-paid-call.js.map +1 -1
  151. package/dist/policy/default-policies.d.ts +18 -2
  152. package/dist/policy/default-policies.d.ts.map +1 -1
  153. package/dist/policy/default-policies.js +18 -2
  154. package/dist/policy/default-policies.js.map +1 -1
  155. package/dist/policy/index.d.ts +6 -3
  156. package/dist/policy/index.d.ts.map +1 -1
  157. package/dist/policy/index.js +6 -3
  158. package/dist/policy/index.js.map +1 -1
  159. package/dist/policy/local-policy-engine.d.ts +71 -13
  160. package/dist/policy/local-policy-engine.d.ts.map +1 -1
  161. package/dist/policy/local-policy-engine.js +33 -11
  162. package/dist/policy/local-policy-engine.js.map +1 -1
  163. package/dist/policy/permission-checks.d.ts +29 -3
  164. package/dist/policy/permission-checks.d.ts.map +1 -1
  165. package/dist/policy/permission-checks.js +29 -3
  166. package/dist/policy/permission-checks.js.map +1 -1
  167. package/dist/policy/policy-engine.d.ts +22 -2
  168. package/dist/policy/policy-engine.d.ts.map +1 -1
  169. package/dist/policy/policy-engine.js +22 -2
  170. package/dist/policy/policy-engine.js.map +1 -1
  171. package/dist/policy/policy-types.d.ts +55 -5
  172. package/dist/policy/policy-types.d.ts.map +1 -1
  173. package/dist/policy/policy-types.js +8 -1
  174. package/dist/policy/policy-types.js.map +1 -1
  175. package/dist/policy/risk-level.d.ts +32 -3
  176. package/dist/policy/risk-level.d.ts.map +1 -1
  177. package/dist/policy/risk-level.js +32 -3
  178. package/dist/policy/risk-level.js.map +1 -1
  179. package/dist/policy/spending-limits.d.ts +29 -3
  180. package/dist/policy/spending-limits.d.ts.map +1 -1
  181. package/dist/policy/spending-limits.js +29 -3
  182. package/dist/policy/spending-limits.js.map +1 -1
  183. package/dist/premium/activation-manager.d.ts +43 -0
  184. package/dist/premium/activation-manager.d.ts.map +1 -0
  185. package/dist/premium/activation-manager.js +131 -0
  186. package/dist/premium/activation-manager.js.map +1 -0
  187. package/dist/premium/builtin-plugins.d.ts +143 -0
  188. package/dist/premium/builtin-plugins.d.ts.map +1 -0
  189. package/dist/premium/builtin-plugins.js +394 -0
  190. package/dist/premium/builtin-plugins.js.map +1 -0
  191. package/dist/premium/event-store.d.ts +61 -0
  192. package/dist/premium/event-store.d.ts.map +1 -0
  193. package/dist/premium/event-store.js +130 -0
  194. package/dist/premium/event-store.js.map +1 -0
  195. package/dist/premium/index.d.ts +54 -0
  196. package/dist/premium/index.d.ts.map +1 -0
  197. package/dist/premium/index.js +54 -0
  198. package/dist/premium/index.js.map +1 -0
  199. package/dist/premium/manifest-builder.d.ts +65 -0
  200. package/dist/premium/manifest-builder.d.ts.map +1 -0
  201. package/dist/premium/manifest-builder.js +182 -0
  202. package/dist/premium/manifest-builder.js.map +1 -0
  203. package/dist/premium/meme-radar-capabilities.d.ts +38 -0
  204. package/dist/premium/meme-radar-capabilities.d.ts.map +1 -0
  205. package/dist/premium/meme-radar-capabilities.js +306 -0
  206. package/dist/premium/meme-radar-capabilities.js.map +1 -0
  207. package/dist/premium/metrics.d.ts +27 -0
  208. package/dist/premium/metrics.d.ts.map +1 -0
  209. package/dist/premium/metrics.js +65 -0
  210. package/dist/premium/metrics.js.map +1 -0
  211. package/dist/premium/plugin-validator.d.ts +39 -0
  212. package/dist/premium/plugin-validator.d.ts.map +1 -0
  213. package/dist/premium/plugin-validator.js +325 -0
  214. package/dist/premium/plugin-validator.js.map +1 -0
  215. package/dist/premium/private-manifest-loader.d.ts +111 -0
  216. package/dist/premium/private-manifest-loader.d.ts.map +1 -0
  217. package/dist/premium/private-manifest-loader.js +285 -0
  218. package/dist/premium/private-manifest-loader.js.map +1 -0
  219. package/dist/premium/provider-bridge.d.ts +109 -0
  220. package/dist/premium/provider-bridge.d.ts.map +1 -0
  221. package/dist/premium/provider-bridge.js +239 -0
  222. package/dist/premium/provider-bridge.js.map +1 -0
  223. package/dist/premium/session-manager.d.ts +125 -0
  224. package/dist/premium/session-manager.d.ts.map +1 -0
  225. package/dist/premium/session-manager.js +337 -0
  226. package/dist/premium/session-manager.js.map +1 -0
  227. package/dist/premium/stream-broker.d.ts +98 -0
  228. package/dist/premium/stream-broker.d.ts.map +1 -0
  229. package/dist/premium/stream-broker.js +199 -0
  230. package/dist/premium/stream-broker.js.map +1 -0
  231. package/dist/premium/tech-fundamentals-capabilities.d.ts +37 -0
  232. package/dist/premium/tech-fundamentals-capabilities.d.ts.map +1 -0
  233. package/dist/premium/tech-fundamentals-capabilities.js +283 -0
  234. package/dist/premium/tech-fundamentals-capabilities.js.map +1 -0
  235. package/dist/premium/trading-capabilities.d.ts +36 -0
  236. package/dist/premium/trading-capabilities.d.ts.map +1 -0
  237. package/dist/premium/trading-capabilities.js +205 -0
  238. package/dist/premium/trading-capabilities.js.map +1 -0
  239. package/dist/premium/types.d.ts +518 -0
  240. package/dist/premium/types.d.ts.map +1 -0
  241. package/dist/premium/types.js +23 -0
  242. package/dist/premium/types.js.map +1 -0
  243. package/dist/premium/webhook-engine.d.ts +138 -0
  244. package/dist/premium/webhook-engine.d.ts.map +1 -0
  245. package/dist/premium/webhook-engine.js +510 -0
  246. package/dist/premium/webhook-engine.js.map +1 -0
  247. package/dist/prompts/context/sap-agent-context.prompt.d.ts +5 -0
  248. package/dist/prompts/context/sap-agent-context.prompt.d.ts.map +1 -1
  249. package/dist/prompts/context/sap-agent-context.prompt.js +2 -8
  250. package/dist/prompts/context/sap-agent-context.prompt.js.map +1 -1
  251. package/dist/prompts/context/sap-agent-intent-router.prompt.d.ts +14 -0
  252. package/dist/prompts/context/sap-agent-intent-router.prompt.d.ts.map +1 -0
  253. package/dist/prompts/context/sap-agent-intent-router.prompt.js +155 -0
  254. package/dist/prompts/context/sap-agent-intent-router.prompt.js.map +1 -0
  255. package/dist/prompts/context/sap-agent-start.prompt.js +1 -0
  256. package/dist/prompts/context/sap-agent-start.prompt.js.map +1 -1
  257. package/dist/prompts/developer/debug-sap-error.prompt.d.ts +5 -0
  258. package/dist/prompts/developer/debug-sap-error.prompt.d.ts.map +1 -1
  259. package/dist/prompts/developer/debug-sap-error.prompt.js +3 -4
  260. package/dist/prompts/developer/debug-sap-error.prompt.js.map +1 -1
  261. package/dist/prompts/developer/generate-sap-integration.prompt.d.ts +5 -0
  262. package/dist/prompts/developer/generate-sap-integration.prompt.d.ts.map +1 -1
  263. package/dist/prompts/developer/generate-sap-integration.prompt.js +3 -4
  264. package/dist/prompts/developer/generate-sap-integration.prompt.js.map +1 -1
  265. package/dist/prompts/developer/index.d.ts +4 -1
  266. package/dist/prompts/developer/index.d.ts.map +1 -1
  267. package/dist/prompts/developer/index.js +4 -1
  268. package/dist/prompts/developer/index.js.map +1 -1
  269. package/dist/prompts/execution-proof/explain-proof-of-execution.prompt.d.ts +5 -0
  270. package/dist/prompts/execution-proof/explain-proof-of-execution.prompt.d.ts.map +1 -1
  271. package/dist/prompts/execution-proof/explain-proof-of-execution.prompt.js +3 -4
  272. package/dist/prompts/execution-proof/explain-proof-of-execution.prompt.js.map +1 -1
  273. package/dist/prompts/execution-proof/index.d.ts +4 -1
  274. package/dist/prompts/execution-proof/index.d.ts.map +1 -1
  275. package/dist/prompts/execution-proof/index.js +4 -1
  276. package/dist/prompts/execution-proof/index.js.map +1 -1
  277. package/dist/prompts/execution-proof/verify-execution-proof.prompt.d.ts +5 -0
  278. package/dist/prompts/execution-proof/verify-execution-proof.prompt.d.ts.map +1 -1
  279. package/dist/prompts/execution-proof/verify-execution-proof.prompt.js +3 -4
  280. package/dist/prompts/execution-proof/verify-execution-proof.prompt.js.map +1 -1
  281. package/dist/prompts/index.d.ts +4 -1
  282. package/dist/prompts/index.d.ts.map +1 -1
  283. package/dist/prompts/index.js +4 -1
  284. package/dist/prompts/index.js.map +1 -1
  285. package/dist/prompts/payments/create-paid-api.prompt.d.ts +5 -0
  286. package/dist/prompts/payments/create-paid-api.prompt.d.ts.map +1 -1
  287. package/dist/prompts/payments/create-paid-api.prompt.js +3 -4
  288. package/dist/prompts/payments/create-paid-api.prompt.js.map +1 -1
  289. package/dist/prompts/payments/explain-x402-settlement.prompt.d.ts +5 -0
  290. package/dist/prompts/payments/explain-x402-settlement.prompt.d.ts.map +1 -1
  291. package/dist/prompts/payments/explain-x402-settlement.prompt.js +3 -4
  292. package/dist/prompts/payments/explain-x402-settlement.prompt.js.map +1 -1
  293. package/dist/prompts/payments/index.d.ts +4 -1
  294. package/dist/prompts/payments/index.d.ts.map +1 -1
  295. package/dist/prompts/payments/index.js +4 -1
  296. package/dist/prompts/payments/index.js.map +1 -1
  297. package/dist/prompts/register-prompts.d.ts +18 -2
  298. package/dist/prompts/register-prompts.d.ts.map +1 -1
  299. package/dist/prompts/register-prompts.js +21 -3
  300. package/dist/prompts/register-prompts.js.map +1 -1
  301. package/dist/prompts/registry/analyze-sap-agent.prompt.d.ts +5 -0
  302. package/dist/prompts/registry/analyze-sap-agent.prompt.d.ts.map +1 -1
  303. package/dist/prompts/registry/analyze-sap-agent.prompt.js +3 -4
  304. package/dist/prompts/registry/analyze-sap-agent.prompt.js.map +1 -1
  305. package/dist/prompts/registry/index.d.ts +4 -1
  306. package/dist/prompts/registry/index.d.ts.map +1 -1
  307. package/dist/prompts/registry/index.js +4 -1
  308. package/dist/prompts/registry/index.js.map +1 -1
  309. package/dist/prompts/registry/register-sap-agent.prompt.d.ts +5 -0
  310. package/dist/prompts/registry/register-sap-agent.prompt.d.ts.map +1 -1
  311. package/dist/prompts/registry/register-sap-agent.prompt.js +3 -4
  312. package/dist/prompts/registry/register-sap-agent.prompt.js.map +1 -1
  313. package/dist/remote/premium-memory.d.ts +90 -0
  314. package/dist/remote/premium-memory.d.ts.map +1 -0
  315. package/dist/remote/premium-memory.js +161 -0
  316. package/dist/remote/premium-memory.js.map +1 -0
  317. package/dist/remote/premium-routes.d.ts +99 -0
  318. package/dist/remote/premium-routes.d.ts.map +1 -0
  319. package/dist/remote/premium-routes.js +346 -0
  320. package/dist/remote/premium-routes.js.map +1 -0
  321. package/dist/remote/public-home/sections.d.ts.map +1 -1
  322. package/dist/remote/public-home/sections.js +7 -1
  323. package/dist/remote/public-home/sections.js.map +1 -1
  324. package/dist/remote/public-home/types.d.ts +6 -0
  325. package/dist/remote/public-home/types.d.ts.map +1 -1
  326. package/dist/remote/server.d.ts +18 -0
  327. package/dist/remote/server.d.ts.map +1 -1
  328. package/dist/remote/server.js +298 -116
  329. package/dist/remote/server.js.map +1 -1
  330. package/dist/remote/tx-relay.d.ts +42 -0
  331. package/dist/remote/tx-relay.d.ts.map +1 -0
  332. package/dist/remote/tx-relay.js +118 -0
  333. package/dist/remote/tx-relay.js.map +1 -0
  334. package/dist/resources/current/sap-current-config.resource.d.ts +5 -0
  335. package/dist/resources/current/sap-current-config.resource.d.ts.map +1 -1
  336. package/dist/resources/current/sap-current-config.resource.js +2 -5
  337. package/dist/resources/current/sap-current-config.resource.js.map +1 -1
  338. package/dist/resources/execution-proof/index.d.ts +5 -0
  339. package/dist/resources/execution-proof/index.d.ts.map +1 -1
  340. package/dist/resources/execution-proof/index.js +5 -0
  341. package/dist/resources/execution-proof/index.js.map +1 -1
  342. package/dist/resources/execution-proof/sap-execution-record.resource.d.ts +5 -0
  343. package/dist/resources/execution-proof/sap-execution-record.resource.d.ts.map +1 -1
  344. package/dist/resources/execution-proof/sap-execution-record.resource.js +3 -4
  345. package/dist/resources/execution-proof/sap-execution-record.resource.js.map +1 -1
  346. package/dist/resources/index.d.ts +5 -0
  347. package/dist/resources/index.d.ts.map +1 -1
  348. package/dist/resources/index.js +5 -0
  349. package/dist/resources/index.js.map +1 -1
  350. package/dist/resources/memory/index.d.ts +5 -0
  351. package/dist/resources/memory/index.d.ts.map +1 -1
  352. package/dist/resources/memory/index.js +5 -0
  353. package/dist/resources/memory/index.js.map +1 -1
  354. package/dist/resources/memory/sap-memory.resource.d.ts +5 -0
  355. package/dist/resources/memory/sap-memory.resource.d.ts.map +1 -1
  356. package/dist/resources/memory/sap-memory.resource.js +3 -4
  357. package/dist/resources/memory/sap-memory.resource.js.map +1 -1
  358. package/dist/resources/profile/sap-active-profile.resource.d.ts +5 -0
  359. package/dist/resources/profile/sap-active-profile.resource.d.ts.map +1 -1
  360. package/dist/resources/profile/sap-active-profile.resource.js +2 -5
  361. package/dist/resources/profile/sap-active-profile.resource.js.map +1 -1
  362. package/dist/resources/register-resources.d.ts +5 -0
  363. package/dist/resources/register-resources.d.ts.map +1 -1
  364. package/dist/resources/register-resources.js +3 -1
  365. package/dist/resources/register-resources.js.map +1 -1
  366. package/dist/resources/registry/index.d.ts +5 -0
  367. package/dist/resources/registry/index.d.ts.map +1 -1
  368. package/dist/resources/registry/index.js +5 -0
  369. package/dist/resources/registry/index.js.map +1 -1
  370. package/dist/resources/registry/sap-agent.resource.d.ts +5 -0
  371. package/dist/resources/registry/sap-agent.resource.d.ts.map +1 -1
  372. package/dist/resources/registry/sap-agent.resource.js +3 -4
  373. package/dist/resources/registry/sap-agent.resource.js.map +1 -1
  374. package/dist/resources/registry/sap-global-registry.resource.d.ts +18 -4
  375. package/dist/resources/registry/sap-global-registry.resource.d.ts.map +1 -1
  376. package/dist/resources/registry/sap-global-registry.resource.js +18 -4
  377. package/dist/resources/registry/sap-global-registry.resource.js.map +1 -1
  378. package/dist/resources/reputation/index.d.ts +4 -1
  379. package/dist/resources/reputation/index.d.ts.map +1 -1
  380. package/dist/resources/reputation/index.js +4 -1
  381. package/dist/resources/reputation/index.js.map +1 -1
  382. package/dist/resources/reputation/sap-reputation.resource.d.ts +18 -4
  383. package/dist/resources/reputation/sap-reputation.resource.d.ts.map +1 -1
  384. package/dist/resources/reputation/sap-reputation.resource.js +18 -4
  385. package/dist/resources/reputation/sap-reputation.resource.js.map +1 -1
  386. package/dist/resources/tool-schema/index.d.ts +4 -1
  387. package/dist/resources/tool-schema/index.d.ts.map +1 -1
  388. package/dist/resources/tool-schema/index.js +4 -1
  389. package/dist/resources/tool-schema/index.js.map +1 -1
  390. package/dist/resources/tool-schema/sap-tool-schema.resource.d.ts +18 -4
  391. package/dist/resources/tool-schema/sap-tool-schema.resource.d.ts.map +1 -1
  392. package/dist/resources/tool-schema/sap-tool-schema.resource.js +18 -4
  393. package/dist/resources/tool-schema/sap-tool-schema.resource.js.map +1 -1
  394. package/dist/sap/index.d.ts +7 -1
  395. package/dist/sap/index.d.ts.map +1 -1
  396. package/dist/sap/index.js +7 -1
  397. package/dist/sap/index.js.map +1 -1
  398. package/dist/sap/sap-client-manager.d.ts +80 -13
  399. package/dist/sap/sap-client-manager.d.ts.map +1 -1
  400. package/dist/sap/sap-client-manager.js +80 -13
  401. package/dist/sap/sap-client-manager.js.map +1 -1
  402. package/dist/sap/sap-errors.d.ts +22 -3
  403. package/dist/sap/sap-errors.d.ts.map +1 -1
  404. package/dist/sap/sap-errors.js +22 -3
  405. package/dist/sap/sap-errors.js.map +1 -1
  406. package/dist/sap/sap-types.d.ts +75 -6
  407. package/dist/sap/sap-types.d.ts.map +1 -1
  408. package/dist/sap/sap-types.js +11 -1
  409. package/dist/sap/sap-types.js.map +1 -1
  410. package/dist/schemas/common.schema.d.ts +45 -8
  411. package/dist/schemas/common.schema.d.ts.map +1 -1
  412. package/dist/schemas/common.schema.js +45 -8
  413. package/dist/schemas/common.schema.js.map +1 -1
  414. package/dist/schemas/developer.schema.d.ts +22 -3
  415. package/dist/schemas/developer.schema.d.ts.map +1 -1
  416. package/dist/schemas/developer.schema.js +22 -3
  417. package/dist/schemas/developer.schema.js.map +1 -1
  418. package/dist/schemas/execution-proof.schema.d.ts +29 -4
  419. package/dist/schemas/execution-proof.schema.d.ts.map +1 -1
  420. package/dist/schemas/execution-proof.schema.js +29 -4
  421. package/dist/schemas/execution-proof.schema.js.map +1 -1
  422. package/dist/schemas/identity.schema.d.ts +23 -3
  423. package/dist/schemas/identity.schema.d.ts.map +1 -1
  424. package/dist/schemas/identity.schema.js +23 -3
  425. package/dist/schemas/identity.schema.js.map +1 -1
  426. package/dist/schemas/index.d.ts +11 -1
  427. package/dist/schemas/index.d.ts.map +1 -1
  428. package/dist/schemas/index.js +11 -1
  429. package/dist/schemas/index.js.map +1 -1
  430. package/dist/schemas/memory.schema.d.ts +23 -3
  431. package/dist/schemas/memory.schema.d.ts.map +1 -1
  432. package/dist/schemas/memory.schema.js +23 -3
  433. package/dist/schemas/memory.schema.js.map +1 -1
  434. package/dist/schemas/payments.schema.d.ts +24 -3
  435. package/dist/schemas/payments.schema.d.ts.map +1 -1
  436. package/dist/schemas/payments.schema.js +24 -3
  437. package/dist/schemas/payments.schema.js.map +1 -1
  438. package/dist/schemas/registry.schema.d.ts +36 -4
  439. package/dist/schemas/registry.schema.d.ts.map +1 -1
  440. package/dist/schemas/registry.schema.js +36 -4
  441. package/dist/schemas/registry.schema.js.map +1 -1
  442. package/dist/schemas/reputation.schema.d.ts +22 -3
  443. package/dist/schemas/reputation.schema.d.ts.map +1 -1
  444. package/dist/schemas/reputation.schema.js +22 -3
  445. package/dist/schemas/reputation.schema.js.map +1 -1
  446. package/dist/schemas/settlement.schema.d.ts +31 -4
  447. package/dist/schemas/settlement.schema.d.ts.map +1 -1
  448. package/dist/schemas/settlement.schema.js +31 -4
  449. package/dist/schemas/settlement.schema.js.map +1 -1
  450. package/dist/schemas/tool-schema.schema.d.ts +29 -3
  451. package/dist/schemas/tool-schema.schema.d.ts.map +1 -1
  452. package/dist/schemas/tool-schema.schema.js +29 -3
  453. package/dist/schemas/tool-schema.schema.js.map +1 -1
  454. package/dist/schemas/transaction.schema.d.ts +23 -3
  455. package/dist/schemas/transaction.schema.d.ts.map +1 -1
  456. package/dist/schemas/transaction.schema.js +23 -3
  457. package/dist/schemas/transaction.schema.js.map +1 -1
  458. package/dist/security/approval-required.d.ts +19 -2
  459. package/dist/security/approval-required.d.ts.map +1 -1
  460. package/dist/security/approval-required.js +19 -2
  461. package/dist/security/approval-required.js.map +1 -1
  462. package/dist/security/index.d.ts +7 -1
  463. package/dist/security/index.d.ts.map +1 -1
  464. package/dist/security/index.js +7 -1
  465. package/dist/security/index.js.map +1 -1
  466. package/dist/security/private-key-guard.d.ts +18 -2
  467. package/dist/security/private-key-guard.d.ts.map +1 -1
  468. package/dist/security/private-key-guard.js +19 -2
  469. package/dist/security/private-key-guard.js.map +1 -1
  470. package/dist/security/prompt-injection-notes.d.ts +10 -1
  471. package/dist/security/prompt-injection-notes.d.ts.map +1 -1
  472. package/dist/security/prompt-injection-notes.js +10 -1
  473. package/dist/security/prompt-injection-notes.js.map +1 -1
  474. package/dist/security/unsafe-action-guard.d.ts +36 -10
  475. package/dist/security/unsafe-action-guard.d.ts.map +1 -1
  476. package/dist/security/unsafe-action-guard.js +67 -15
  477. package/dist/security/unsafe-action-guard.js.map +1 -1
  478. package/dist/server/create-server.d.ts +18 -3
  479. package/dist/server/create-server.d.ts.map +1 -1
  480. package/dist/server/create-server.js +18 -3
  481. package/dist/server/create-server.js.map +1 -1
  482. package/dist/server/index.d.ts +6 -1
  483. package/dist/server/index.d.ts.map +1 -1
  484. package/dist/server/index.js +6 -1
  485. package/dist/server/index.js.map +1 -1
  486. package/dist/server/register-capabilities.d.ts +17 -2
  487. package/dist/server/register-capabilities.d.ts.map +1 -1
  488. package/dist/server/register-capabilities.js +17 -2
  489. package/dist/server/register-capabilities.js.map +1 -1
  490. package/dist/server/server-metadata.d.ts +35 -1
  491. package/dist/server/server-metadata.d.ts.map +1 -1
  492. package/dist/server/server-metadata.js +36 -2
  493. package/dist/server/server-metadata.js.map +1 -1
  494. package/dist/session/agent-session.d.ts +35 -4
  495. package/dist/session/agent-session.d.ts.map +1 -1
  496. package/dist/session/agent-session.js +35 -4
  497. package/dist/session/agent-session.js.map +1 -1
  498. package/dist/session/delegated-session.d.ts +31 -3
  499. package/dist/session/delegated-session.d.ts.map +1 -1
  500. package/dist/session/delegated-session.js +31 -3
  501. package/dist/session/delegated-session.js.map +1 -1
  502. package/dist/session/index.d.ts +7 -1
  503. package/dist/session/index.d.ts.map +1 -1
  504. package/dist/session/index.js +7 -1
  505. package/dist/session/index.js.map +1 -1
  506. package/dist/session/redis-session-store.d.ts +94 -21
  507. package/dist/session/redis-session-store.d.ts.map +1 -1
  508. package/dist/session/redis-session-store.js +87 -20
  509. package/dist/session/redis-session-store.js.map +1 -1
  510. package/dist/session/session-limits.d.ts +34 -4
  511. package/dist/session/session-limits.d.ts.map +1 -1
  512. package/dist/session/session-limits.js +34 -4
  513. package/dist/session/session-limits.js.map +1 -1
  514. package/dist/session/session-permissions.d.ts +57 -7
  515. package/dist/session/session-permissions.d.ts.map +1 -1
  516. package/dist/session/session-permissions.js +57 -7
  517. package/dist/session/session-permissions.js.map +1 -1
  518. package/dist/session/session-store.d.ts +9 -1
  519. package/dist/session/session-store.d.ts.map +1 -1
  520. package/dist/session/session-store.js +18 -3
  521. package/dist/session/session-store.js.map +1 -1
  522. package/dist/session/session-types.d.ts +33 -4
  523. package/dist/session/session-types.d.ts.map +1 -1
  524. package/dist/session/session-types.js +9 -1
  525. package/dist/session/session-types.js.map +1 -1
  526. package/dist/signer/index.d.ts +7 -1
  527. package/dist/signer/index.d.ts.map +1 -1
  528. package/dist/signer/index.js +7 -1
  529. package/dist/signer/index.js.map +1 -1
  530. package/dist/signer/load-keypair.d.ts +25 -4
  531. package/dist/signer/load-keypair.d.ts.map +1 -1
  532. package/dist/signer/load-keypair.js +25 -4
  533. package/dist/signer/load-keypair.js.map +1 -1
  534. package/dist/signer/local-keypair-signer.d.ts +16 -2
  535. package/dist/signer/local-keypair-signer.d.ts.map +1 -1
  536. package/dist/signer/local-keypair-signer.js +16 -2
  537. package/dist/signer/local-keypair-signer.js.map +1 -1
  538. package/dist/signer/signer-resolver.d.ts +19 -2
  539. package/dist/signer/signer-resolver.d.ts.map +1 -1
  540. package/dist/signer/signer-resolver.js +26 -3
  541. package/dist/signer/signer-resolver.js.map +1 -1
  542. package/dist/signer/signer-types.d.ts +47 -5
  543. package/dist/signer/signer-types.d.ts.map +1 -1
  544. package/dist/signer/signer-types.js +13 -1
  545. package/dist/signer/signer-types.js.map +1 -1
  546. package/dist/tools/agent-start-tool.js +20 -1
  547. package/dist/tools/agent-start-tool.js.map +1 -1
  548. package/dist/tools/client-sdk-tools.d.ts.map +1 -1
  549. package/dist/tools/client-sdk-tools.js +27 -2
  550. package/dist/tools/client-sdk-tools.js.map +1 -1
  551. package/dist/tools/estimate-tool-cost.d.ts +13 -0
  552. package/dist/tools/estimate-tool-cost.d.ts.map +1 -0
  553. package/dist/tools/estimate-tool-cost.js +139 -0
  554. package/dist/tools/estimate-tool-cost.js.map +1 -0
  555. package/dist/tools/index.d.ts +7 -0
  556. package/dist/tools/index.d.ts.map +1 -1
  557. package/dist/tools/index.js +9 -0
  558. package/dist/tools/index.js.map +1 -1
  559. package/dist/tools/magicblock-tools.d.ts +25 -0
  560. package/dist/tools/magicblock-tools.d.ts.map +1 -1
  561. package/dist/tools/magicblock-tools.js +116 -8
  562. package/dist/tools/magicblock-tools.js.map +1 -1
  563. package/dist/tools/perp-tools.d.ts +39 -0
  564. package/dist/tools/perp-tools.d.ts.map +1 -0
  565. package/dist/tools/perp-tools.js +1110 -0
  566. package/dist/tools/perp-tools.js.map +1 -0
  567. package/dist/tools/premium-tools.d.ts +8 -0
  568. package/dist/tools/premium-tools.d.ts.map +1 -0
  569. package/dist/tools/premium-tools.js +1096 -0
  570. package/dist/tools/premium-tools.js.map +1 -0
  571. package/dist/tools/quick-context-tool.d.ts +16 -0
  572. package/dist/tools/quick-context-tool.d.ts.map +1 -0
  573. package/dist/tools/quick-context-tool.js +228 -0
  574. package/dist/tools/quick-context-tool.js.map +1 -0
  575. package/dist/tools/register-tools.d.ts.map +1 -1
  576. package/dist/tools/register-tools.js +14 -0
  577. package/dist/tools/register-tools.js.map +1 -1
  578. package/dist/tools/sap-sdk-tools.d.ts.map +1 -1
  579. package/dist/tools/sap-sdk-tools.js +42 -32
  580. package/dist/tools/sap-sdk-tools.js.map +1 -1
  581. package/dist/tools/skills-tools.d.ts +6 -0
  582. package/dist/tools/skills-tools.d.ts.map +1 -1
  583. package/dist/tools/skills-tools.js +5 -4
  584. package/dist/tools/skills-tools.js.map +1 -1
  585. package/dist/tools/x402-paid-call-tool.js +2 -2
  586. package/dist/tools/x402-paid-call-tool.js.map +1 -1
  587. package/dist/transports/index.d.ts +6 -1
  588. package/dist/transports/index.d.ts.map +1 -1
  589. package/dist/transports/index.js +6 -1
  590. package/dist/transports/index.js.map +1 -1
  591. package/dist/transports/stdio.d.ts +17 -5
  592. package/dist/transports/stdio.d.ts.map +1 -1
  593. package/dist/transports/stdio.js +17 -5
  594. package/dist/transports/stdio.js.map +1 -1
  595. package/dist/tui/wizard-save.d.ts +88 -8
  596. package/dist/tui/wizard-save.d.ts.map +1 -1
  597. package/dist/tui/wizard-save.js +77 -8
  598. package/dist/tui/wizard-save.js.map +1 -1
  599. package/docs/06_PAYMENTS_X402_AND_PAYSH.md +3 -3
  600. package/docs/07_ENDPOINTS_AND_CLIENTS.md +4 -1
  601. package/docs/14_DESKTOP_WIZARD_RELEASE.md +3 -3
  602. package/docs/16_SAP_AGENT_IDENTITY_PIPELINE.md +6 -0
  603. package/docs/18_PREMIUM_PLUGIN_RUNTIME.md +108 -0
  604. package/docs/BRANCH_AND_CI.md +67 -0
  605. package/docs/README.md +12 -0
  606. package/package.json +8 -9
  607. package/server.json +3 -3
  608. package/skills/sap-agent-registry/SKILL.md +6 -0
  609. package/skills/sap-mcp/SKILL.md +27 -4
  610. package/skills/sap-mcp/TOOL_REFERENCE.md +4 -1
  611. package/skills/sap-payments-x402/SKILL.md +22 -8
@@ -1,10 +1,31 @@
1
+ /**
2
+ * @name tui/wizard-save
3
+ * @description TUI wizard configuration persistence — saves profiles, generates keypairs, and writes config files.
4
+ *
5
+ * @flow
6
+ * 1. `saveTuiWizardConfig` takes wizard input, normalizes the profile name, and optionally
7
+ * generates a new Solana keypair (saved to disk with restrictive permissions).
8
+ * 2. Writes the full SAP MCP config JSON to the profile config path.
9
+ * 3. Sets the active profile marker file.
10
+ * 4. Returns the config path, wallet path, and agent public key.
11
+ *
12
+ * @module tui/wizard-save
13
+ */
1
14
  import { existsSync, mkdirSync, writeFileSync, chmodSync, readFileSync } from 'fs';
2
15
  import { dirname, join } from 'path';
3
16
  import { homedir } from 'os';
4
17
  import { Keypair } from '@solana/web3.js';
18
+ /** @description Regex pattern validating normalized profile names (lowercase alphanumeric with hyphens). */
5
19
  const PROFILE_NAME_PATTERN = /^[a-z0-9]+(?:-[a-z0-9]+)*$/;
6
20
  /**
7
- * Executes the preferred config dir operation.
21
+ * @name preferredConfigDir
22
+ * @description Returns the preferred configuration directory for SAP MCP profiles.
23
+ *
24
+ * Respects `XDG_CONFIG_HOME` on Linux, `%APPDATA%` on Windows, and `~/.config` on macOS.
25
+ *
26
+ * @returns Absolute path to the config directory.
27
+ *
28
+ * @usedBy `saveTuiWizardConfig`, `defaultWalletPath`, `profileConfigPath`.
8
29
  */
9
30
  export function preferredConfigDir() {
10
31
  if (process.env.XDG_CONFIG_HOME) {
@@ -16,20 +37,41 @@ export function preferredConfigDir() {
16
37
  return join(homedir(), '.config', 'mcp-sap');
17
38
  }
18
39
  /**
19
- * Executes the default wallet path operation.
40
+ * @name defaultWalletPath
41
+ * @description Returns the default keypair file path for a given profile name.
42
+ *
43
+ * @param profileName — Normalized profile name.
44
+ * @returns Absolute path to the keypair JSON file.
45
+ *
46
+ * @usedBy `saveTuiWizardConfig`.
20
47
  */
21
48
  export function defaultWalletPath(profileName) {
22
49
  return join(preferredConfigDir(), 'keypairs', `${normalizeProfileName(profileName)}-keypair.json`);
23
50
  }
24
51
  /**
25
- * Resolves the config file path for a profile name.
52
+ * @name profileConfigPath
53
+ * @description Resolves the config file path for a normalized profile name.
54
+ *
55
+ * @param profileName — Profile name to resolve (will be normalized).
56
+ * @returns Absolute path to the profile config JSON file.
57
+ *
58
+ * @usedBy `saveTuiWizardConfig`.
26
59
  */
27
60
  export function profileConfigPath(profileName) {
28
61
  const normalized = normalizeProfileName(profileName);
29
62
  return join(preferredConfigDir(), `config-${normalized}.json`);
30
63
  }
31
64
  /**
32
- * Normalizes profile names accepted by the TUI wizard.
65
+ * @name normalizeProfileName
66
+ * @description Normalizes a profile name to lowercase alphanumeric with single hyphens.
67
+ *
68
+ * Trims, lowercases, replaces non-alphanumeric sequences with hyphens, and strips
69
+ * leading/trailing hyphens.
70
+ *
71
+ * @param value — Raw profile name string from user input.
72
+ * @returns Normalized profile name string.
73
+ *
74
+ * @usedBy `defaultWalletPath`, `profileConfigPath`, `saveTuiWizardConfig`.
33
75
  */
34
76
  export function normalizeProfileName(value) {
35
77
  return value
@@ -39,13 +81,27 @@ export function normalizeProfileName(value) {
39
81
  .replace(/^-+|-+$/g, '');
40
82
  }
41
83
  /**
42
- * Returns true when a normalized profile name is safe for config and wallet paths.
84
+ * @name isValidProfileName
85
+ * @description Returns `true` when a normalized profile name is safe for config and wallet paths.
86
+ *
87
+ * Rejects empty names, names that don't match the profile pattern, and the reserved name `default`.
88
+ *
89
+ * @param value — Normalized profile name to validate.
90
+ * @returns `true` if the name is valid, `false` otherwise.
91
+ *
92
+ * @usedBy `saveTuiWizardConfig`.
43
93
  */
44
94
  export function isValidProfileName(value) {
45
95
  return PROFILE_NAME_PATTERN.test(value) && value !== 'default';
46
96
  }
47
97
  /**
48
- * Expands home-relative paths entered in the TUI wizard.
98
+ * @name normalizeTuiPath
99
+ * @description Expands home-relative paths (`~` and `~/`) entered in the TUI wizard.
100
+ *
101
+ * @param value — Raw path string from user input.
102
+ * @returns Expanded absolute path, or `undefined` if input was empty.
103
+ *
104
+ * @internal
49
105
  */
50
106
  function normalizeTuiPath(value) {
51
107
  if (!value) {
@@ -60,7 +116,13 @@ function normalizeTuiPath(value) {
60
116
  return value;
61
117
  }
62
118
  /**
63
- * Reads the public key from a local Solana keypair file.
119
+ * @name readAgentPubkey
120
+ * @description Reads the public key from a local Solana keypair file.
121
+ *
122
+ * @param walletPath — Optional path to the keypair JSON file.
123
+ * @returns Base58-encoded public key string, or `undefined` if the file doesn't exist or is invalid.
124
+ *
125
+ * @internal
64
126
  */
65
127
  function readAgentPubkey(walletPath) {
66
128
  if (!walletPath || !existsSync(walletPath)) {
@@ -73,7 +135,14 @@ function readAgentPubkey(walletPath) {
73
135
  return Keypair.fromSecretKey(Uint8Array.from(parsed)).publicKey.toBase58();
74
136
  }
75
137
  /**
76
- * Executes the save tui wizard config operation.
138
+ * @name saveTuiWizardConfig
139
+ * @description Saves a TUI wizard configuration to disk, optionally generating a new keypair.
140
+ *
141
+ * @param config — TUI wizard configuration data from user input.
142
+ * @returns Result containing the config path, wallet path, whether a wallet was created, and agent public key.
143
+ * @throws If the profile name is invalid or if file I/O fails.
144
+ *
145
+ * @usedBy TUI wizard save flow.
77
146
  */
78
147
  export function saveTuiWizardConfig(config) {
79
148
  const configDir = preferredConfigDir();
@@ -1 +1 @@
1
- {"version":3,"file":"wizard-save.js","sourceRoot":"","sources":["../../src/tui/wizard-save.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wizard-save.js","sourceRoot":"","sources":["../../src/tui/wizard-save.ts"],"names":[],"mappings":"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"}
@@ -11,9 +11,9 @@ The server does not charge for connecting. Payment is evaluated per MCP request,
11
11
  | Tier | Examples | Price |
12
12
  | --- | --- | --- |
13
13
  | Free | `tools/list`, `prompts/list`, `resources/list`, `sap_profile_current`, `sap_agent_start`, `sap_agent_runtime_status`, `sap_agent_context`, `sap_agent_next_action`, exact SAP agent/profile reads, compact `sap_list_agents` orientation pages with `limit <= 20` | Free |
14
- | Premium read | `sap_discover_agents`, `sap_list_all_agents`, full/enriched/large `sap_list_agents` pages, enriched network stats, indexed discovery, market/oracle/DAS reads | `$0.007` to `$0.01` |
15
- | Builder or batch | complex builders, SNS/domain batch checks, enriched analytics | `$0.01` to `$0.10` |
16
- | Value action | settlement-like or value-linked operations where appropriate | fixed `$0.20` plus optional `0.5%` |
14
+ | Premium read | `sap_discover_agents`, `sap_list_all_agents`, full/enriched/large `sap_list_agents` pages, market/oracle/DAS reads | `$0.001` default |
15
+ | Builder or batch | complex builders, SNS/domain batch checks, unsigned transaction builders, routing preparation | `$0.008` default, batch = sum of paid calls |
16
+ | Value action | settlement-like or value-linked operations where appropriate | `$0.09` standard, `$0.15` for selected heavy execution paths |
17
17
 
18
18
  Do not apply percentage fees blindly to swaps or financial routing. Those workflows may create compliance, custody, and routing implications.
19
19
 
@@ -10,6 +10,9 @@
10
10
  | `GET` | `/server.json` | Machine-readable public server metadata. | Public. |
11
11
  | `GET` | `/pricing.json` | Machine-readable x402/pay.sh pricing catalog generated from the hosted pricing registry. | Public. |
12
12
  | `GET` | `/openapi.json` | OpenAPI 3.1 discovery document for the hosted MCP endpoint, x402 metadata, and pay.sh catalog link. | Public. |
13
+ | `GET` | `/premium/catalog.json` | Secret-free premium plugin contracts, schemas, pricing models, and provider readiness. | Public. |
14
+ | `GET` | `/premium/streams.json` | Secret-free premium stream contracts for future x402/pay.sh real-time delivery rails. | Public. |
15
+ | `GET` | `/premium/webhooks.json` | Secret-free premium webhook contracts with signed delivery expectations. | Public. |
13
16
  | `GET` | `/.well-known/x402` | x402 discovery document for paid hosted MCP resources. | Public. |
14
17
  | `GET` | `/pay/provider.yml` | Secret-free pay.sh provider YAML for the hosted SAP MCP catalog/proxy workflow. | Public. |
15
18
  | `GET` | `/favicon.png` | SAP MCP favicon/social preview asset. | Public. |
@@ -132,7 +135,7 @@ Codex supports Streamable HTTP MCP servers with URL-based TOML entries. Use loca
132
135
  ```toml
133
136
  [mcp_servers.sap]
134
137
  command = "npx"
135
- args = ["--yes", "--package", "@oobe-protocol-labs/sap-mcp-server@0.9.16", "sap-mcp-server"]
138
+ args = ["--yes", "--package", "@oobe-protocol-labs/sap-mcp-server@0.9.21", "sap-mcp-server"]
136
139
 
137
140
  [mcp_servers.sap.env]
138
141
  SAP_MCP_ALLOW_ENV_CONFIG_OVERRIDE = "false"
@@ -66,7 +66,7 @@ url = "https://mcp.sap.oobeprotocol.ai/mcp"
66
66
  ```toml
67
67
  [mcp_servers.sap_payments]
68
68
  command = "npx"
69
- args = ["--yes", "--package", "@oobe-protocol-labs/sap-mcp-server@0.9.16", "sap-mcp-server"]
69
+ args = ["--yes", "--package", "@oobe-protocol-labs/sap-mcp-server@0.9.21", "sap-mcp-server"]
70
70
  startup_timeout_sec = 300
71
71
  tool_timeout_sec = 300
72
72
 
@@ -279,8 +279,8 @@ npm pack --dry-run --cache ./.npm-cache
279
279
  The current local macOS arm64 build produces:
280
280
 
281
281
  ```txt
282
- SAP-MCP-Wizard-0.9.16-arm64.dmg
283
- SAP-MCP-Wizard-0.9.16-arm64.zip
282
+ SAP-MCP-Wizard-0.9.21-arm64.dmg
283
+ SAP-MCP-Wizard-0.9.21-arm64.zip
284
284
  ```
285
285
 
286
286
  Windows EXE and Linux artifacts are produced by the GitHub Actions matrix.
@@ -235,6 +235,12 @@ Then call:
235
235
  confirms the agent account and reports a non-failing `protocolFee` audit.
236
236
  - Do not call profile/image update complete until `sap_payments_update_agent`
237
237
  confirms and a fresh `sap_get_agent_profile` read shows the intended fields.
238
+ - If an update returns Anchor 3012, `AccountNotInitialized`, or a
239
+ `pricing_menu` error, do not classify it as missing `sap_payments` and do not
240
+ ask the user to repair/restart the runtime. The local signer route worked; the
241
+ SAP registry account lifecycle is missing a required on-chain PDA. Call
242
+ `sap_agent_next_action` and `sap_protocol_invariants`, then use the current
243
+ SDK/server initializer path before retrying the update.
238
244
  - Do not create temporary signing scripts.
239
245
  - Do not read keypair JSON.
240
246
  - Do not pay x402 for writes that the hosted server says require local signer.
@@ -0,0 +1,108 @@
1
+ # SAP MCP Premium Plugin Runtime
2
+
3
+ SAP MCP includes a typed premium plugin contract for paid streams, webhooks, and enterprise capabilities. The goal is to let agents discover paid real-time capabilities, validate schemas before spending, and bind future x402/pay.sh receipts to a clear session id without exposing private provider code or user key material.
4
+
5
+ This layer is deliberately strict:
6
+
7
+ - no fake stream data
8
+ - no implicit provider claims
9
+ - no execution of plugin code from user input
10
+ - no keypair bytes or provider secrets in public metadata
11
+ - no x402 charge for invalid catalog/session planning requests
12
+
13
+ ## What Ships In The Open Server
14
+
15
+ The public MCP server exposes free discovery and planning tools:
16
+
17
+ | Tool | Purpose |
18
+ | --- | --- |
19
+ | `sap_premium_plugin_catalog` | Lists premium plugin manifests, schemas, pricing contracts, provider readiness, and private plugin loader guidance. |
20
+ | `sap_stream_catalog` | Lists stream capability contracts such as quote deltas, price ticks, registry events, and x402 ledger events. |
21
+ | `sap_webhook_catalog` | Lists webhook delivery contracts and signed callback event types. |
22
+ | `sap_premium_validate_plugin_manifest` | Validates a manifest before publication or enterprise loading. |
23
+ | `sap_premium_plugin_template` | Builds a strict data-only manifest template for custom stream, webhook, or premium tool contracts. |
24
+ | `sap_premium_session_start` | Creates an unpaid, bounded session plan for a premium capability. |
25
+ | `sap_premium_session_status` | Reads in-memory premium session planning status. |
26
+
27
+ Planning is free because it prevents wasted x402 attempts. Live premium delivery should be charged by the delivery rail once the provider is configured and the session is activation-ready.
28
+
29
+ ## Public HTTP Discovery
30
+
31
+ The hosted server also exposes the same premium contracts as public, machine-readable JSON:
32
+
33
+ | Endpoint | Purpose |
34
+ | --- | --- |
35
+ | `/premium/catalog.json` | Full premium plugin catalog with provider readiness, pricing contracts, stream/webhook/tool capability ids, and private loader guidance. |
36
+ | `/premium/streams.json` | Stream-only discovery for price ticks, quote deltas, registry events, and x402 ledger streams. |
37
+ | `/premium/webhooks.json` | Webhook-only discovery for signed callback subscriptions and event delivery contracts. |
38
+
39
+ These endpoints are discovery-only. They do not activate paid streams, execute private plugins, expose provider secrets, or return live provider data while readiness is false.
40
+
41
+ ## Provider Readiness
42
+
43
+ Capabilities that depend on external streaming or webhook infrastructure include explicit provider env vars. If a required env var is missing, the capability returns:
44
+
45
+ ```txt
46
+ status: requires-provider
47
+ ```
48
+
49
+ Agents must not attempt paid activation when provider readiness is false. They should tell the user that the capability is contract-ready but not live on this deployment.
50
+
51
+ ## Built-In Premium Contracts
52
+
53
+ The open catalog currently defines contract-level manifests for:
54
+
55
+ | Plugin | Capability Examples |
56
+ | --- | --- |
57
+ | `sap-premium-market-data` | Jupiter quote deltas, Pyth price ticks, price threshold webhooks. |
58
+ | `sap-premium-trading-streams` | Cross-DEX arbitrage scanning, volatility breakout detection, MEV-protected route optimization. |
59
+ | `sap-premium-meme-radar` | New listing alerts, social sentiment, rugpull risk, DEX volume anomalies. |
60
+ | `sap-premium-tech-fundamentals` | GitHub activity spikes, TVL changes, tokenomics analysis. |
61
+
62
+ These are not mock feeds. They are typed contracts that become live only when the corresponding provider env is configured.
63
+
64
+ ## Private Enterprise Plugins
65
+
66
+ Enterprise/private plugin code should live outside the public repository. The public server exposes the contract and validation path only.
67
+
68
+ Supported loader env contract:
69
+
70
+ ```txt
71
+ SAP_MCP_ENABLE_PREMIUM_PLUGINS=true
72
+ SAP_MCP_PLUGIN_DIR=/secure/path/to/private/plugins
73
+ SAP_MCP_PREMIUM_EXPOSE_PRIVATE_DISCOVERY=false
74
+ ```
75
+
76
+ Private plugins must provide manifests that pass:
77
+
78
+ ```txt
79
+ sap_premium_validate_plugin_manifest
80
+ ```
81
+
82
+ The runtime loads private manifests as data only from the configured directory.
83
+ It does not execute plugin code supplied through MCP tool input. Private and
84
+ enterprise manifests are not exposed in public catalog responses unless
85
+ `SAP_MCP_PREMIUM_EXPOSE_PRIVATE_DISCOVERY=true` is set deliberately, which
86
+ should be reserved for authenticated or explicitly shared deployments.
87
+
88
+ Use `sap_premium_plugin_template` to generate a starter manifest, then store the
89
+ reviewed JSON in the private plugin subrepo under `manifests/`. Plugging and
90
+ unplugging a private capability is a file/deploy operation: add or remove the
91
+ manifest, validate it, and restart the hosted server with the intended env.
92
+
93
+ ## Agent Flow
94
+
95
+ Recommended agent behavior:
96
+
97
+ 1. Call `sap_premium_plugin_catalog` with `includeSchemas:true`.
98
+ 2. Use `sap_stream_catalog` or `sap_webhook_catalog` to pick an exact capability id.
99
+ 3. Check `providerStatus` and the capability-level `providerReady` boolean.
100
+ 4. Call `sap_premium_session_start` to get a bounded session plan and estimated price.
101
+ 5. Activate only through the future paid delivery rail when provider readiness is true.
102
+ 6. Bind x402/pay.sh receipt, session id, plugin id, capability id, and event ids in the audit output.
103
+
104
+ If the provider is not ready, stop cleanly and do not request payment.
105
+
106
+ ## Why This Matters
107
+
108
+ Agent commerce needs more than one-shot tools. Trading agents, research agents, protocol monitors, and marketplace agents need fast event access with clear payment boundaries. SAP MCP premium plugins create the contract layer for that: typed schemas, bounded sessions, x402/pay.sh pricing, signed delivery, and enterprise provider isolation.
@@ -0,0 +1,67 @@
1
+ # Branch & CI/CD Strategy
2
+
3
+ ## Branch model
4
+
5
+ ```
6
+ main ← production-ready, tagged releases only
7
+ develop ← integration branch, PRs merge here first
8
+ release/* ← optional release prep branches (release/0.9.21)
9
+ feature/* ← short-lived feature branches → PR to develop
10
+ hotfix/* ← urgent fixes → PR to main + cherry-pick to develop
11
+ ```
12
+
13
+ ### Flow
14
+
15
+ 1. **Feature work**: branch from `develop` → PR back to `develop`
16
+ 2. **Release prep**: branch `release/<version>` from `develop` → bump version, CHANGELOG → merge to `main` + tag
17
+ 3. **Hotfix**: branch from `main` → fix → PR to `main` + tag → cherry-pick to `develop`
18
+ 4. **Desktop builds**: triggered automatically on tag push, binary artifacts published to GitHub Release
19
+
20
+ ## CI/CD workflows
21
+
22
+ | Workflow | File | Triggers | Purpose |
23
+ |---|---|---|---|
24
+ | **CI** | `ci.yml` | push to main/develop, PR to main/develop | typecheck, lint, test, build, audit |
25
+ | **CodeQL** | GitHub default setup | push, PR, weekly cron | security analysis (JS/TS + Actions) — configured in repo Settings → Security → Code security |
26
+ | **Desktop Release** | `desktop-release.yml` | tag push, workflow_dispatch | build desktop binaries, publish to GitHub Release |
27
+
28
+ ### CI (`ci.yml`)
29
+
30
+ - Runs on: Ubuntu (full test suite) + Windows (typecheck + lint + build only — Unix path tests skip)
31
+ - Audit: `pnpm audit --audit-level high --prod` (production deps only)
32
+ - Concurrency group cancels stale runs on same ref
33
+
34
+ ### Desktop Release (`desktop-release.yml`)
35
+
36
+ - Triggers on: tag push (`*`) or manual dispatch
37
+ - Matrix: macOS 15, Windows 2025, Ubuntu 24.04
38
+ - Verify gates: typecheck + lint + test (Unix only) + build
39
+ - Audit: production deps only, high severity
40
+ - Publish job: downloads all 3 OS artifacts, generates SHA256 checksums, attaches to GitHub Release
41
+ - Signing: optional (uses secrets if available, warns if unsigned)
42
+
43
+ ## Secrets management
44
+
45
+ The `.gitignore` excludes:
46
+ - `.env`, `.env.local`, `.env.*.local`
47
+ - `*.pem`, `*.key`, `*.p8`, `*.p12`, `*.secret`
48
+ - `*keypair*.json`, `*wallet*.json`, `id.json`
49
+ - `keypairs/`, `wallets/`
50
+ - `sap-mcp-premium-private/` (separate private repo)
51
+ - `PRIVATE_VPS_DOCS/`, `*.private.md`
52
+
53
+ GitHub Actions secrets (configured in repo settings):
54
+ - `MACOS_CSC_LINK`, `MACOS_CSC_KEY_PASSWORD` — macOS code signing
55
+ - `APPLE_ID`, `APPLE_APP_SPECIFIC_PASSWORD`, `APPLE_TEAM_ID` — notarization
56
+ - `WINDOWS_CSC_LINK`, `WINDOWS_CSC_KEY_PASSWORD` — Windows code signing
57
+
58
+ ## Tag convention
59
+
60
+ Tags are plain version numbers: `0.9.21` (NOT `v0.9.21`).
61
+
62
+ ## Binary artifacts
63
+
64
+ Desktop binaries are built by CI and published to GitHub Releases only.
65
+ They are never committed to the repo. The `release/` directory is gitignored.
66
+
67
+ Local builds: `pnpm run desktop:build` outputs to `release/desktop/`.
package/docs/README.md CHANGED
@@ -65,6 +65,7 @@ For paid/write hosted tools, also configure the local `sap_payments` bridge. The
65
65
  - [Payments: x402 And pay.sh](user/03_PAYMENTS_X402_PAYSH.md)
66
66
  - [Smithery And MCP Marketplaces](user/07_SMITHERY_AND_MARKETPLACES.md)
67
67
  - [SAP Agent Identity Pipeline](16_SAP_AGENT_IDENTITY_PIPELINE.md)
68
+ - [Premium Plugin Runtime](18_PREMIUM_PLUGIN_RUNTIME.md)
68
69
 
69
70
  ## What The Hosted Server Provides
70
71
 
@@ -118,6 +119,7 @@ Read these first:
118
119
  6. [Configuration And Wizard](03_CONFIGURATION_AND_WIZARD.md)
119
120
  7. [Endpoints And Clients](07_ENDPOINTS_AND_CLIENTS.md)
120
121
  8. [SAP Agent Identity Pipeline](16_SAP_AGENT_IDENTITY_PIPELINE.md)
122
+ 9. [Premium Plugin Runtime](18_PREMIUM_PLUGIN_RUNTIME.md)
121
123
 
122
124
  ## Public Endpoints
123
125
 
@@ -127,6 +129,16 @@ Read these first:
127
129
  | `GET /docs` | This documentation site. |
128
130
  | `POST /mcp` | Streamable HTTP MCP endpoint for agents. |
129
131
  | `GET /server.json` | Public, secret-free machine-readable server metadata. |
132
+ | `GET /premium/catalog.json` | Public premium plugin contracts, pricing models, schemas, and provider readiness. |
133
+ | `GET /premium/streams.json` | Public premium stream contracts for future x402/pay.sh real-time delivery rails. |
134
+ | `GET /premium/webhooks.json` | Public premium webhook contracts with signed delivery expectations. |
135
+
136
+ Premium plugin authors can use `sap_premium_plugin_template` and
137
+ `sap_premium_validate_plugin_manifest` to build strict data-only contracts,
138
+ then deploy reviewed manifests from a private plugin directory. The public
139
+ server never executes plugin code supplied through MCP input and does not expose
140
+ private/enterprise manifests unless the operator explicitly enables private
141
+ discovery.
130
142
  | `GET /smithery.config.schema.json` | Optional Smithery setup schema for free discovery, native x402 clients, and local `sap_payments` bridge users. |
131
143
  | `GET /.well-known/agent-card.json` | A2A-style agent card. |
132
144
  | `GET /.well-known/sap-mcp-wizard.json` | Wizard install descriptor for agents that cannot see local config. |
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oobe-protocol-labs/sap-mcp-server",
3
- "version": "0.9.16",
3
+ "version": "0.9.21",
4
4
  "mcpName": "ai.oobeprotocol.sap.mcp/sap-mcp",
5
5
  "description": "Official MCP gateway for OOBE Protocol SAP — AI agents can interact with SAP identity, registry, reputation, tools, memory, payments, settlement, and proof-of-execution on Solana",
6
6
  "type": "module",
@@ -145,16 +145,15 @@
145
145
  "engines": {
146
146
  "node": ">=22.12.0"
147
147
  },
148
- "packageManager": "pnpm@11.7.0",
149
148
  "overrides": {
150
- "bigint-buffer": "file:vendor/bigint-buffer",
151
- "brace-expansion@<1.1.16": "1.1.16",
152
- "brace-expansion@>=2.0.0 <2.1.2": "2.1.2",
153
- "esbuild": "^0.28.1",
154
- "js-yaml@>=4.0.0 <4.3.0": "4.3.0",
149
+ "@hono/node-server": "2.0.10",
150
+ "body-parser": "1.20.6",
151
+ "fast-uri": "3.1.4",
152
+ "hono": "4.12.27",
155
153
  "langsmith": "^0.6.0",
154
+ "postcss": "8.5.18",
156
155
  "uuid": "^11.1.1",
157
- "vite": "8.1.0",
158
156
  "ws": "^8.21.0"
159
- }
157
+ },
158
+ "packageManager": "pnpm@11.7.0"
160
159
  }
package/server.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "name": "ai.oobeprotocol.sap.mcp/sap-mcp",
4
4
  "title": "SAP MCP Server | OOBE Protocol",
5
5
  "description": "Solana-native MCP gateway for SAP tools, DeFi, SNS identity, x402/pay.sh, and agent operations.",
6
- "version": "0.9.16",
6
+ "version": "0.9.21",
7
7
  "websiteUrl": "https://mcp.sap.oobeprotocol.ai/",
8
8
  "repository": {
9
9
  "url": "https://github.com/OOBE-PROTOCOL/sap-mcp",
@@ -29,7 +29,7 @@
29
29
  {
30
30
  "registryType": "npm",
31
31
  "identifier": "@oobe-protocol-labs/sap-mcp-server",
32
- "version": "0.9.16",
32
+ "version": "0.9.21",
33
33
  "transport": {
34
34
  "type": "stdio"
35
35
  },
@@ -45,7 +45,7 @@
45
45
  },
46
46
  {
47
47
  "type": "positional",
48
- "value": "@oobe-protocol-labs/sap-mcp-server@0.9.16"
48
+ "value": "@oobe-protocol-labs/sap-mcp-server@0.9.21"
49
49
  },
50
50
  {
51
51
  "type": "positional",
@@ -76,6 +76,12 @@ state, global directory listing, and agent profile inspection.
76
76
  - After `sap_payments_update_agent`, fetch the agent profile again and verify
77
77
  the changed fields. For image/profile updates, `agentUri` or `metadataUri`
78
78
  must resolve to public metadata containing the image URL.
79
+ - If `sap_payments_update_agent` returns Anchor 3012, `AccountNotInitialized`,
80
+ or mentions `pricing_menu`, do not run runtime repair and do not retry the
81
+ same write. This means the write reached the SAP on-chain program but a
82
+ required registry lifecycle PDA is missing or stale. Call
83
+ `sap_agent_next_action` and `sap_protocol_invariants`, then upgrade the
84
+ SDK/server or use the initializer path before retrying.
79
85
  - For full agent identity setup, follow
80
86
  `docs/16_SAP_AGENT_IDENTITY_PIPELINE.md`: SAP registration first, optional
81
87
  Metaplex/MPL Core identity, optional SNS domain and records, then a final SAP
@@ -12,6 +12,12 @@ available, then call `sap_agent_runtime_status` with the closest intent and
12
12
  `sap_skills_bundle` with `includeContents: true`. Load the returned SAP MCP
13
13
  skill contents into context before selecting advanced tools.
14
14
 
15
+ If the MCP runtime exposes prompts, use `sap-agent-intent-router` as the compact
16
+ decision prompt before paid calls, registry writes, escrow flows, identity
17
+ updates, or after SAP/x402/MCP errors. It routes the user intent to hosted
18
+ reads, `sap_payments_*`, unsigned builders, transaction finalization, or repair
19
+ without requiring a long pasted prompt from the user.
20
+
15
21
  Always inspect runtime context through MCP tools, not by reading config files:
16
22
 
17
23
  1. `sap_agent_start`
@@ -47,6 +53,10 @@ and error strings unchanged.
47
53
 
48
54
  ## Discovery Rules
49
55
 
56
+ - Treat SAP registry, balances, SNS ownership, quotes, settlement status, and
57
+ agent profile reads as fresh data. Do not rely on old chat memory when the
58
+ user asks for current state; use exact lightweight reads first, then paid
59
+ discovery only when enrichment or broad search is needed.
50
60
  - Use free exact/base reads first when the wallet, PDA, or a small orientation
51
61
  page is enough: `sap_agent_context`, `sap_get_agent`, `sap_get_agent_profile`,
52
62
  `sap_get_agent_stats`, `sap_is_agent_active`, `sap_get_global_state`, and
@@ -175,10 +185,19 @@ Use `sap_payments.sap_payments_profile_current` only as a narrower compatibility
175
185
  profile check.
176
186
 
177
187
  Basic wallet reads are free on hosted SAP MCP. Call `sol_get_balance`,
178
- `spl-token_getBalance`, and `spl-token_getTokenAccounts` directly on the hosted
179
- server. Do not send these balance checks through `sap_payments_call_paid_tool`,
180
- and do not summarize a balance read as a facilitator `BlockhashNotFound`
181
- problem unless a paid tool actually returned that error.
188
+ `spl-token_getBalance`, `spl-token_getTokenAccounts`, and `magicblock_balance`
189
+ directly on the hosted server. Do not send these balance checks through
190
+ `sap_payments_call_paid_tool`, and do not summarize a balance read as a
191
+ facilitator `BlockhashNotFound` problem unless a paid tool actually returned
192
+ that error. Use `jupiter_getHoldings` only when the user needs enriched paid
193
+ portfolio context.
194
+
195
+ Before any paid tool call, use `sap_estimate_tool_cost` with the tool name to
196
+ get the exact pricing tier, estimated USD cost, and recommended `maxPriceUsd`.
197
+ This prevents silent cap aborts and failed x402 attempts on local-signer-only
198
+ tools. For local-signer-only tools (e.g. `sap_register_agent`), the estimate
199
+ will say `tier: "local-signer-only"` and tell you to use the local
200
+ `sap_payments_*` equivalent instead of `sap_payments_call_paid_tool`.
182
201
 
183
202
  If a hosted paid tool returns `BlockhashNotFound`,
184
203
  `transaction_simulation_failed`, `smart_wallet_simulation_failed`, `node is
@@ -220,6 +239,10 @@ and protocol fee invariant were verified. If `success` is false while
220
239
  protocol registration lifecycle is not complete. After
221
240
  `sap_payments_update_agent`, fetch the agent again and confirm the changed
222
241
  fields before saying an image, metadata, pricing, or capability update is done.
242
+ If an update returns Anchor 3012, `AccountNotInitialized`, or `pricing_menu`, do
243
+ not call runtime repair or retry the same write. Route it through
244
+ `sap_agent_next_action` and `sap_protocol_invariants`; it is an SAP on-chain
245
+ registry lifecycle issue, not a missing local bridge.
223
246
 
224
247
  Before any write-like operation, use this routing order:
225
248
 
@@ -201,7 +201,10 @@ Protocol routing shortcuts:
201
201
 
202
202
  | User intent | Most specific tools |
203
203
  | --- | --- |
204
- | SOL or SPL balance | `sol_get_balance`, `spl-token_getBalance`, `spl-token_getTokenAccounts` |
204
+ | SOL or SPL balance (free) | `sol_get_balance`, `spl-token_getBalance`, `spl-token_getTokenAccounts`, `magicblock_balance` |
205
+ | Enriched holdings (paid read-premium) | `jupiter_getHoldings` |
206
+ | Pre-call cost estimate (free) | `sap_estimate_tool_cost` |
207
+ | Pricing catalog (free) | `sap_pricing_catalog` |
205
208
  | SOL or SPL transfer | `spl-token_transferSol`, `spl-token_transfer` |
206
209
  | Token launch/mint/burn | `spl-token_deployToken`, `spl-token_mintTo`, `spl-token_burn` |
207
210
  | Jupiter quote/swap | `jupiter_getQuote`, `jupiter_smartSwap`, `jupiter_swap`, `jupiter_swapInstructions` |
@@ -46,9 +46,13 @@ or external signer.
46
46
 
47
47
  - Free: `tools/list`, `prompts/list`, `resources/list`, `sap_profile_current`,
48
48
  `sap_agent_start`, `sap_agent_runtime_status`, `sap_agent_context`,
49
- `sap_agent_next_action`, exact SAP agent/profile reads, compact
50
- `sap_list_agents` pages with `limit <= 20`, `sap_get_network_overview`, `sol_get_balance`,
51
- `spl-token_getBalance`, and `spl-token_getTokenAccounts`.
49
+ `sap_agent_next_action`, `sap_estimate_tool_cost`, `sap_pricing_catalog`,
50
+ exact SAP agent/profile reads, compact `sap_list_agents` pages with
51
+ `limit <= 20`, `sap_get_network_overview`, core balance checks
52
+ (`sol_get_balance`, `spl-token_getBalance`, `spl-token_getTokenAccounts`,
53
+ `spl-token_getMint`, `spl-token_getSupply`, `magicblock_balance`,
54
+ `sap_x402_get_balance`). Enriched holdings such as `jupiter_getHoldings`
55
+ are paid read-premium.
52
56
  - Read premium: `sap_discover_agents`, `sap_list_all_agents`, full/enriched or
53
57
  large `sap_list_agents` pages, indexed discovery, network stats,
54
58
  protocol/capability indexes.
@@ -73,16 +77,26 @@ For fast x402 execution:
73
77
  change, but the tool name and arguments must match the challenge.
74
78
  3. Use `PAYMENT-SIGNATURE` first; use `X-PAYMENT` only for clients that require
75
79
  the alternate header.
76
- 4. Cache free `tools/list`, `prompts/list`, and `resources/list` locally rather
77
- than paying or re-fetching repeatedly.
80
+ 4. Cache only static MCP surface metadata such as `tools/list`, `prompts/list`,
81
+ and `resources/list` inside the runtime when useful. Do not cache on-chain
82
+ balances, SAP agent rows, pricing, SNS ownership, quotes, or settlement
83
+ state when the user expects fresh data.
78
84
  5. Treat `PAYMENT-RESPONSE` as the receipt bound to the tool output.
79
85
  6. If the client runtime cannot sign or attach x402 payment headers itself, use
80
86
  the local SAP MCP `sap_payments_call_paid_tool` bridge configured by the SAP
81
87
  MCP wizard instead of falling back to local stdio automatically.
82
88
 
83
- Do not use x402 for basic balance reads. `sol_get_balance`,
84
- `spl-token_getBalance`, and `spl-token_getTokenAccounts` are free hosted tools
85
- and should be called directly through the remote SAP MCP connection.
89
+ Do not use x402 for core balance reads. `sol_get_balance`,
90
+ `spl-token_getBalance`, `spl-token_getTokenAccounts`, `magicblock_balance`,
91
+ and `sap_x402_get_balance` are free hosted tools and should be called directly
92
+ through the remote SAP MCP connection. Use `jupiter_getHoldings` only when the
93
+ user needs enriched paid portfolio context. Always verify USDC and SOL balances
94
+ before attempting paid calls — an agent without USDC cannot make paid calls.
95
+
96
+ Before any paid tool call, use `sap_estimate_tool_cost` with the tool name to
97
+ get the exact tier, estimated USD cost, and recommended `maxPriceUsd`. This
98
+ prevents silent cap aborts and avoids wasting x402 attempts on local-signer-only
99
+ tools that never issue a 402 challenge.
86
100
 
87
101
  When available locally, call `sap_payments_call_paid_tool` with `toolName`,
88
102
  `arguments`, `maxPriceUsd`, and `confirm: true`. It initializes the hosted MCP