@oobe-protocol-labs/sap-mcp-server 0.9.15 → 0.9.20

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 (607) hide show
  1. package/.env.example +8 -7
  2. package/CHANGELOG.md +227 -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 +2 -0
  140. package/dist/payments/pricing.d.ts.map +1 -1
  141. package/dist/payments/pricing.js +126 -10
  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 +102 -0
  244. package/dist/premium/webhook-engine.d.ts.map +1 -0
  245. package/dist/premium/webhook-engine.js +382 -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 +34 -1
  491. package/dist/server/server-metadata.d.ts.map +1 -1
  492. package/dist/server/server-metadata.js +35 -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.d.ts.map +1 -1
  547. package/dist/tools/agent-start-tool.js +210 -2
  548. package/dist/tools/agent-start-tool.js.map +1 -1
  549. package/dist/tools/client-sdk-tools.d.ts.map +1 -1
  550. package/dist/tools/client-sdk-tools.js +27 -2
  551. package/dist/tools/client-sdk-tools.js.map +1 -1
  552. package/dist/tools/estimate-tool-cost.d.ts +13 -0
  553. package/dist/tools/estimate-tool-cost.d.ts.map +1 -0
  554. package/dist/tools/estimate-tool-cost.js +139 -0
  555. package/dist/tools/estimate-tool-cost.js.map +1 -0
  556. package/dist/tools/index.d.ts +6 -0
  557. package/dist/tools/index.d.ts.map +1 -1
  558. package/dist/tools/index.js +7 -0
  559. package/dist/tools/index.js.map +1 -1
  560. package/dist/tools/magicblock-tools.d.ts +25 -0
  561. package/dist/tools/magicblock-tools.d.ts.map +1 -1
  562. package/dist/tools/magicblock-tools.js +116 -8
  563. package/dist/tools/magicblock-tools.js.map +1 -1
  564. package/dist/tools/perp-tools.d.ts +39 -0
  565. package/dist/tools/perp-tools.d.ts.map +1 -0
  566. package/dist/tools/perp-tools.js +1110 -0
  567. package/dist/tools/perp-tools.js.map +1 -0
  568. package/dist/tools/premium-tools.d.ts +8 -0
  569. package/dist/tools/premium-tools.d.ts.map +1 -0
  570. package/dist/tools/premium-tools.js +732 -0
  571. package/dist/tools/premium-tools.js.map +1 -0
  572. package/dist/tools/register-tools.d.ts.map +1 -1
  573. package/dist/tools/register-tools.js +9 -0
  574. package/dist/tools/register-tools.js.map +1 -1
  575. package/dist/tools/sap-sdk-tools.d.ts.map +1 -1
  576. package/dist/tools/sap-sdk-tools.js +191 -13
  577. package/dist/tools/sap-sdk-tools.js.map +1 -1
  578. package/dist/tools/x402-paid-call-tool.js +2 -2
  579. package/dist/tools/x402-paid-call-tool.js.map +1 -1
  580. package/dist/transports/index.d.ts +6 -1
  581. package/dist/transports/index.d.ts.map +1 -1
  582. package/dist/transports/index.js +6 -1
  583. package/dist/transports/index.js.map +1 -1
  584. package/dist/transports/stdio.d.ts +17 -5
  585. package/dist/transports/stdio.d.ts.map +1 -1
  586. package/dist/transports/stdio.js +17 -5
  587. package/dist/transports/stdio.js.map +1 -1
  588. package/dist/tui/wizard-save.d.ts +88 -8
  589. package/dist/tui/wizard-save.d.ts.map +1 -1
  590. package/dist/tui/wizard-save.js +77 -8
  591. package/dist/tui/wizard-save.js.map +1 -1
  592. package/docs/06_PAYMENTS_X402_AND_PAYSH.md +20 -4
  593. package/docs/07_ENDPOINTS_AND_CLIENTS.md +4 -1
  594. package/docs/09_TOOLS_SKILLS_AND_AGENT_GUIDE.md +16 -5
  595. package/docs/14_DESKTOP_WIZARD_RELEASE.md +3 -3
  596. package/docs/16_SAP_AGENT_IDENTITY_PIPELINE.md +6 -0
  597. package/docs/18_PREMIUM_PLUGIN_RUNTIME.md +108 -0
  598. package/docs/README.md +12 -0
  599. package/package.json +8 -6
  600. package/server.json +3 -3
  601. package/skills/README.md +10 -2
  602. package/skills/sap-agent-registry/SKILL.md +27 -6
  603. package/skills/sap-discovery-indexing/SKILL.md +11 -0
  604. package/skills/sap-mcp/SKILL.md +49 -16
  605. package/skills/sap-mcp/TOOL_REFERENCE.md +20 -7
  606. package/skills/sap-operations/SKILL.md +11 -0
  607. package/skills/sap-payments-x402/SKILL.md +30 -8
@@ -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.15", "sap-mcp-server"]
138
+ args = ["--yes", "--package", "@oobe-protocol-labs/sap-mcp-server@0.9.20", "sap-mcp-server"]
136
139
 
137
140
  [mcp_servers.sap.env]
138
141
  SAP_MCP_ALLOW_ENV_CONFIG_OVERRIDE = "false"
@@ -26,13 +26,21 @@ Agents should:
26
26
  8. Answer in the user's language unless the user asks otherwise.
27
27
  9. Avoid showing internal thinking, keypair bytes, raw request secrets, or private config.
28
28
  10. Ask for approval before signing or value-moving operations when required by policy.
29
- 11. For paid hosted agent discovery, use targeted `sap_discover_agents` filters
29
+ 11. Use free exact/base SAP reads before paid discovery when possible:
30
+ `sap_agent_context`, `sap_get_agent`, `sap_get_agent_profile`,
31
+ `sap_get_agent_stats`, `sap_is_agent_active`, `sap_get_global_state`, and compact
32
+ `sap_list_agents` pages with `limit <= 20`, `view: "compact"`, and
33
+ `includeProtocolIndexes: false`.
34
+ 12. For paid hosted agent discovery, use targeted `sap_discover_agents` filters
30
35
  before broad scans: `query`, `wallet`, `agentPda`, `protocol`,
31
36
  `capability`, `capabilities`, `hasX402Endpoint`, small `limit`, then
32
37
  `pagination.nextCursor`.
33
- 12. If a capability lookup returns zero agents, retry with `query` or `wallet`
38
+ 13. If a capability lookup returns zero agents, retry with `query` or `wallet`
34
39
  before saying the agent is absent; AgentAccount rows are canonical and
35
40
  indexes can lag.
41
+ 14. Call `sap_agent_next_action` before retrying after `payment_required`,
42
+ `hosted_local_signer_required`, transient RPC errors, missing local bridge
43
+ tools, or submitted signatures that did not confirm.
36
44
 
37
45
  The intended user command is short:
38
46
 
@@ -54,9 +62,12 @@ unless the user explicitly asks what tools are available.
54
62
  SAP MCP exposes a free startup path:
55
63
 
56
64
  1. `sap_agent_start` returns the machine-readable agent playbook.
57
- 2. `sap-agent-start` is the matching MCP prompt for runtimes that prefer prompts.
58
- 3. `sap_skills_bundle` returns the bundled SAP MCP skills so the agent can load tool routing, x402, SNS, registry, chat, and Solana protocol guidance.
59
- 4. `sap_payments_readiness` checks the local non-custodial payment bridge before paid/write hosted calls.
65
+ 2. `sap_agent_runtime_status` returns the hosted/accountless/local-bridge routing table.
66
+ 3. `sap_agent_context` returns free compact SAP agent context before paid discovery.
67
+ 4. `sap_agent_next_action` classifies SAP MCP errors and tells the agent whether a retry is safe.
68
+ 5. `sap-agent-start` is the matching MCP prompt for runtimes that prefer prompts.
69
+ 6. `sap_skills_bundle` returns the bundled SAP MCP skills so the agent can load tool routing, x402, SNS, registry, chat, and Solana protocol guidance.
70
+ 7. `sap_payments_readiness` checks the local non-custodial payment bridge before paid/write hosted calls.
60
71
 
61
72
  These calls are free. Paid tools should only start after the agent has loaded
62
73
  skills and, when needed, verified the local `sap_payments` bridge.
@@ -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.15", "sap-mcp-server"]
69
+ args = ["--yes", "--package", "@oobe-protocol-labs/sap-mcp-server@0.9.20", "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.15-arm64.dmg
283
- SAP-MCP-Wizard-0.9.15-arm64.zip
282
+ SAP-MCP-Wizard-0.9.20-arm64.dmg
283
+ SAP-MCP-Wizard-0.9.20-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.
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.15",
3
+ "version": "0.9.20",
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,13 +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
- "esbuild": "^0.28.1",
149
+ "@hono/node-server": "2.0.10",
150
+ "body-parser": "1.20.6",
151
+ "fast-uri": "3.1.4",
152
+ "hono": "4.12.27",
152
153
  "langsmith": "^0.6.0",
154
+ "postcss": "8.5.18",
153
155
  "uuid": "^11.1.1",
154
- "vite": "8.1.0",
155
156
  "ws": "^8.21.0"
156
- }
157
+ },
158
+ "packageManager": "pnpm@11.7.0"
157
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.15",
6
+ "version": "0.9.20",
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.15",
32
+ "version": "0.9.20",
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.15"
48
+ "value": "@oobe-protocol-labs/sap-mcp-server@0.9.20"
49
49
  },
50
50
  {
51
51
  "type": "positional",
package/skills/README.md CHANGED
@@ -55,12 +55,20 @@ or wants to compare this bundled MCP skill pack with the source SDK skills:
55
55
  ## Agent Behavior
56
56
 
57
57
  - Answer in the same natural language as the user's latest request.
58
+ - Use free exact/base SAP reads before paid discovery when possible:
59
+ `sap_agent_context`, `sap_get_agent`, `sap_get_agent_profile`,
60
+ `sap_get_agent_stats`, `sap_is_agent_active`, `sap_get_global_state`, and
61
+ compact `sap_list_agents` pages with `limit <= 20`.
58
62
  - Use `sap_discover_agents` for targeted hosted agent search by query, wallet,
59
63
  PDA, protocol, capability, capability list, or x402 endpoint presence.
60
- - Use `sap_list_all_agents` for current global SAP ecosystem agent lists and
61
- continue with `pagination.nextCursor` when more pages are needed.
64
+ - Use `sap_list_all_agents` for current global SAP ecosystem agent lists only
65
+ when the user needs more than the free compact orientation page, and continue
66
+ with `pagination.nextCursor` when more pages are needed.
62
67
  - Treat `mcp_sap_<tool>` as a client display prefix; the callable MCP tool name
63
68
  inside this server is the suffix, for example `jupiter_getQuote`.
69
+ - Call `sap_agent_next_action` before retrying after `payment_required`,
70
+ `hosted_local_signer_required`, transient Solana RPC errors, a missing local
71
+ bridge, or a submitted signature that has not confirmed.
64
72
  - Use `skills/sap-mcp/TOOL_REFERENCE.md` and `USER_DOCS/05_SKILLS_AND_TOOLS.md`
65
73
  as the bundled routing maps when deciding which SAP MCP tool or skill domain
66
74
  applies to a user request.
@@ -12,10 +12,16 @@ state, global directory listing, and agent profile inspection.
12
12
  full identity setup, call `sap_agent_identity_plan` before any write. It is
13
13
  free and returns normalized fields, local-signer routing, metadata contract,
14
14
  forbidden actions, and verification checklist.
15
- 4. Call `sap_get_network_overview` for ecosystem counters when needed.
16
- 5. Use `sap_discover_agents` with `query`, `wallet`, `protocol`, or
17
- `capability` for targeted paid hosted directory reads.
18
- 6. Use `sap_list_all_agents` for global current agent lists and follow
15
+ 4. Use free exact/base reads before paid discovery: `sap_agent_context`,
16
+ `sap_get_agent`,
17
+ `sap_get_agent_profile`, `sap_get_agent_stats`, `sap_is_agent_active`,
18
+ `sap_get_global_state`, and `sap_list_agents` with `limit <= 20`,
19
+ `view: "compact"`, and `includeProtocolIndexes: false`.
20
+ 5. Call `sap_get_network_overview` for ecosystem counters when needed.
21
+ 6. Use `sap_discover_agents` with `query`, `wallet`, `protocol`, or
22
+ `capability` for targeted paid hosted directory reads when free exact/base
23
+ reads are not enough.
24
+ 7. Use `sap_list_all_agents` for global current agent lists and follow
19
25
  `pagination.nextCursor` for additional pages.
20
26
 
21
27
  ## Tools
@@ -23,6 +29,8 @@ state, global directory listing, and agent profile inspection.
23
29
  - `sap_register_agent`
24
30
  - `sap_protocol_invariants`
25
31
  - `sap_agent_identity_plan`
32
+ - `sap_agent_context`
33
+ - `sap_agent_next_action`
26
34
  - `sap_update_agent`
27
35
  - `sap_deactivate_agent`
28
36
  - `sap_reactivate_agent`
@@ -32,6 +40,7 @@ state, global directory listing, and agent profile inspection.
32
40
  - `sap_get_agent_stats`
33
41
  - `sap_get_global_state`
34
42
  - `sap_get_network_overview`
43
+ - `sap_list_agents`
35
44
  - `sap_list_all_agents`
36
45
  - `sap_is_agent_active`
37
46
  - `sap_report_calls`
@@ -50,6 +59,10 @@ state, global directory listing, and agent profile inspection.
50
59
  `confirm: true`. For other registry writes, run the write on the local SAP
51
60
  MCP profile or use a production unsigned builder/finalizer flow when
52
61
  available.
62
+ - Before any retry after `payment_required`, `hosted_local_signer_required`,
63
+ `BlockhashNotFound`, timeout, missing `sap_payments`, or a submitted
64
+ signature that did not confirm, call `sap_agent_next_action`. Follow its
65
+ `safeToRetryNow`, `nextTool`, and `forbiddenActions` fields.
53
66
  - Agent pictures must be public metadata, not desktop file paths. Upload the
54
67
  image or metadata JSON to IPFS, Arweave, Kommodo, or HTTPS, then set
55
68
  `agentUri`/`metadataUri` with `sap_payments_update_agent`.
@@ -63,6 +76,12 @@ state, global directory listing, and agent profile inspection.
63
76
  - After `sap_payments_update_agent`, fetch the agent profile again and verify
64
77
  the changed fields. For image/profile updates, `agentUri` or `metadataUri`
65
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.
66
85
  - For full agent identity setup, follow
67
86
  `docs/16_SAP_AGENT_IDENTITY_PIPELINE.md`: SAP registration first, optional
68
87
  Metaplex/MPL Core identity, optional SNS domain and records, then a final SAP
@@ -71,8 +90,10 @@ state, global directory listing, and agent profile inspection.
71
90
  `query`.
72
91
  - "Find x402 agents" means `sap_discover_agents` with
73
92
  `hasX402Endpoint: true`.
74
- - "List all agents" means `sap_list_all_agents` with a small `limit`, then
75
- `pagination.nextCursor` if the user wants more.
93
+ - "List all agents" means first call free `sap_list_agents` with
94
+ `limit <= 20`, `view: "compact"`, and `includeProtocolIndexes: false`; then
95
+ use paid `sap_list_all_agents` with `pagination.nextCursor` if the user wants
96
+ more, full rows, or ecosystem-scale enumeration.
76
97
  - "Agent by wallet" means `sap_get_agent` or `sap_get_agent_profile`.
77
98
  - "Is this agent live?" means `sap_is_agent_active`.
78
99
  - "Network totals" means `sap_get_network_overview`.
@@ -18,12 +18,21 @@ indexes, and filtered agent discovery.
18
18
 
19
19
  ## Rules
20
20
 
21
+ - Start with free orientation when possible:
22
+ - `sap_agent_context` for a one-shot compact context read and routing hints.
23
+ - `sap_get_agent` or `sap_get_agent_profile` for a known owner wallet.
24
+ - `sap_is_agent_active` for a known owner wallet status check.
25
+ - `sap_get_global_state` for compact registry state.
26
+ - `sap_list_agents` with `limit <= 20`, `view: "compact"`, and
27
+ `includeProtocolIndexes: false` for a small current directory page.
21
28
  - Use `sap_discover_agents` for paid hosted agent directory search. It supports
22
29
  `query`, `wallet`, `agentPda`, `protocol`, `capability`, `capabilities`,
23
30
  `capabilityMode`, `hasX402Endpoint`, `limit`, `cursor`, and `view`.
24
31
  - Use `sap_list_all_agents` for global directory requests or when the user asks
25
32
  for the whole SAP ecosystem. Keep the first page small and follow
26
33
  `pagination.nextCursor` only when the previous page is useful.
34
+ - Use paid discovery only when the user needs search, enrichment, full rows,
35
+ large pages, analytics, or global enumeration beyond the free compact page.
27
36
  - Prefer exact filters before broad scans: `wallet` when a wallet is known,
28
37
  `query` for an agent name such as `XONA`, and `capability` for one exact
29
38
  capability such as `creative:imageGeneration`.
@@ -34,6 +43,8 @@ indexes, and filtered agent discovery.
34
43
  the canonical AgentAccount directory.
35
44
  - Do not guess that global enumeration is impossible; try `sap_list_all_agents`
36
45
  first and report the exact failure if it fails.
46
+ - If discovery hits `payment_required`, a transient RPC error, or a missing
47
+ local bridge, call `sap_agent_next_action` before retrying or changing route.
37
48
 
38
49
  ## Common Inputs
39
50
 
@@ -12,20 +12,28 @@ 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`
18
24
  2. `sap_agent_runtime_status` with `intent: "connection"`, `"paid-call"`, `"registry-write"`, `"transaction-finalize"`, `"escrow"`, `"identity"`, or `"general"`
19
- 3. `sap_skills_bundle` with `includeContents: true`
20
- 4. `sap_pricing_catalog` before estimating hosted paid call tiers
21
- 5. `sap_skills_upgrade_plan` when local skills are missing or stale
22
- 6. `sap_runtime_repair_plan` when hosted tools are connected but `sap_payments` is missing
23
- 7. `sap_protocol_invariants` before SAP registry writes or when treasury, protocol fee, hosted write routing, or local signer routing is unclear
24
- 8. `sap_agent_identity_plan` before agent registration, profile-image updates, Metaplex identity, SNS linking, or full identity setup
25
- 9. `sap_profile_current`
26
- 10. `sap_profile_list`
27
- 11. `sap_profile_public_key`
28
- 12. `sap_network_stats`
25
+ 3. `sap_agent_context` for free compact agent/directory orientation before paid discovery
26
+ 4. `sap_skills_bundle` with `includeContents: true`
27
+ 5. `sap_pricing_catalog` before estimating hosted paid call tiers
28
+ 6. `sap_agent_next_action` before retrying after any SAP MCP error or partial write result
29
+ 7. `sap_skills_upgrade_plan` when local skills are missing or stale
30
+ 8. `sap_runtime_repair_plan` when hosted tools are connected but `sap_payments` is missing
31
+ 9. `sap_protocol_invariants` before SAP registry writes or when treasury, protocol fee, hosted write routing, or local signer routing is unclear
32
+ 10. `sap_agent_identity_plan` before agent registration, profile-image updates, Metaplex identity, SNS linking, or full identity setup
33
+ 11. `sap_profile_current`
34
+ 12. `sap_profile_list`
35
+ 13. `sap_profile_public_key`
36
+ 14. `sap_network_stats`
29
37
 
30
38
  For simple "are you connected?" checks, do not dump tool counts or inspect
31
39
  local files. Use `sap_agent_runtime_status` first and answer with the hosted
@@ -45,6 +53,15 @@ and error strings unchanged.
45
53
 
46
54
  ## Discovery Rules
47
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.
60
+ - Use free exact/base reads first when the wallet, PDA, or a small orientation
61
+ page is enough: `sap_agent_context`, `sap_get_agent`, `sap_get_agent_profile`,
62
+ `sap_get_agent_stats`, `sap_is_agent_active`, `sap_get_global_state`, and
63
+ `sap_list_agents` with `limit <= 20`, `view: "compact"`, and
64
+ `includeProtocolIndexes: false`.
48
65
  - Use `sap_get_network_overview` for live ecosystem counters.
49
66
  - Use `sap_discover_agents` for targeted paid hosted discovery. Prefer
50
67
  `query`, `wallet`, `agentPda`, `protocol`, `capability`, `capabilities`,
@@ -52,7 +69,9 @@ and error strings unchanged.
52
69
  - Use `sap_list_all_agents` when the user asks for all current SAP ecosystem
53
70
  agents. It performs global on-chain `AgentAccount` enumeration and returns
54
71
  `pagination.nextCursor` when more pages are available.
55
- - Use `sap_list_agents` as a compatibility alias for `sap_discover_agents`.
72
+ - Use `sap_list_agents` for a free compact orientation page first. Larger
73
+ pages, `view: "full"`, hydration, protocol index summaries, and global scans
74
+ are paid read-premium.
56
75
  - Use `sap_fetch_protocol_index` when a specific protocol ID is known.
57
76
  - If a capability lookup returns zero results, retry with `query` or `wallet`
58
77
  before saying an agent is absent. AgentAccount rows are canonical; indexes can
@@ -80,7 +99,8 @@ Use the bundled routing map for local MCP tool selection:
80
99
  - `USER_DOCS/05_SKILLS_AND_TOOLS.md`
81
100
 
82
101
  SAP MCP startup and skill bootstrap tools are free context/setup tools. Call
83
- `sap_agent_start`, `sap_agent_runtime_status`, `sap_pricing_catalog`,
102
+ `sap_agent_start`, `sap_agent_runtime_status`, `sap_agent_context`,
103
+ `sap_agent_next_action`, `sap_pricing_catalog`,
84
104
  `sap_skills_list`, `sap_skills_bundle`, `sap_skills_upgrade_plan`,
85
105
  `sap_runtime_repair_plan`, and local `sap_skills_install` directly. Do not
86
106
  route startup, runtime status, pricing catalog, skill listing, bundling,
@@ -165,10 +185,19 @@ Use `sap_payments.sap_payments_profile_current` only as a narrower compatibility
165
185
  profile check.
166
186
 
167
187
  Basic wallet reads are free on hosted SAP MCP. Call `sol_get_balance`,
168
- `spl-token_getBalance`, and `spl-token_getTokenAccounts` directly on the hosted
169
- server. Do not send these balance checks through `sap_payments_call_paid_tool`,
170
- and do not summarize a balance read as a facilitator `BlockhashNotFound`
171
- 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`.
172
201
 
173
202
  If a hosted paid tool returns `BlockhashNotFound`,
174
203
  `transaction_simulation_failed`, `smart_wallet_simulation_failed`, `node is
@@ -210,6 +239,10 @@ and protocol fee invariant were verified. If `success` is false while
210
239
  protocol registration lifecycle is not complete. After
211
240
  `sap_payments_update_agent`, fetch the agent again and confirm the changed
212
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.
213
246
 
214
247
  Before any write-like operation, use this routing order:
215
248
 
@@ -49,12 +49,22 @@ SAP registry and discovery:
49
49
  `sap_deactivate_tool`, `sap_reactivate_tool`,
50
50
  `sap_report_tool_invocations`, `sap_report_calls`.
51
51
 
52
- Use `sap_discover_agents` for targeted paid hosted agent search by `query`,
53
- `wallet`, `agentPda`, `protocol`, `capability`, `capabilities`, or
54
- `hasX402Endpoint`. Use `sap_list_all_agents` for user requests such as "give me
55
- a list of all agents in the SAP ecosystem rn"; start with a small `limit` and
56
- continue with `pagination.nextCursor`. If a capability lookup returns zero,
57
- retry with `query` or `wallet` before reporting that the agent is absent.
52
+ Use free exact/base reads before paid discovery when possible:
53
+ `sap_agent_context`, `sap_get_agent`, `sap_get_agent_profile`,
54
+ `sap_get_agent_stats`, `sap_is_agent_active`, `sap_get_global_state`, and
55
+ `sap_list_agents` with `limit <= 20`, `view: "compact"`, and
56
+ `includeProtocolIndexes: false`.
57
+ Use `sap_discover_agents` for targeted paid hosted search by `query`, `wallet`,
58
+ `agentPda`, `protocol`, `capability`, `capabilities`, or `hasX402Endpoint`.
59
+ Use paid `sap_list_all_agents` for user requests such as "give me a list of all
60
+ agents in the SAP ecosystem rn"; start with a small `limit` and continue with
61
+ `pagination.nextCursor`. If a capability lookup returns zero, retry with
62
+ `query` or `wallet` before reporting that the agent is absent.
63
+
64
+ Use `sap_agent_next_action` before retrying any SAP MCP error or partial write
65
+ result. It normalizes `payment_required`, `hosted_local_signer_required`,
66
+ transient Solana RPC failures, missing local bridge tools, and unconfirmed
67
+ submitted signatures into the next safe tool route.
58
68
 
59
69
  Use `sap_protocol_invariants` before registry writes when the program id,
60
70
  protocol treasury, source-level 0.1 SOL registration fee invariant, hosted
@@ -191,7 +201,10 @@ Protocol routing shortcuts:
191
201
 
192
202
  | User intent | Most specific tools |
193
203
  | --- | --- |
194
- | 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` |
195
208
  | SOL or SPL transfer | `spl-token_transferSol`, `spl-token_transfer` |
196
209
  | Token launch/mint/burn | `spl-token_deployToken`, `spl-token_mintTo`, `spl-token_burn` |
197
210
  | Jupiter quote/swap | `jupiter_getQuote`, `jupiter_smartSwap`, `jupiter_swap`, `jupiter_swapInstructions` |
@@ -36,6 +36,12 @@ Use `sap_discover_agents` for targeted hosted directory reads by `query`,
36
36
  `wallet`, `agentPda`, `protocol`, `capability`, `capabilities`, or
37
37
  `hasX402Endpoint`. Use `sap_list_all_agents` for global current ecosystem
38
38
  requests, keep pages small, and continue with `pagination.nextCursor`.
39
+ For first-pass orientation, prefer free reads: `sap_agent_context`,
40
+ `sap_get_agent`, `sap_get_agent_profile`, `sap_get_agent_stats`,
41
+ `sap_is_agent_active`, `sap_get_global_state`, and `sap_list_agents` with `limit <= 20`,
42
+ `view: "compact"`, and `includeProtocolIndexes: false`. Use paid discovery
43
+ only when the user needs search, enrichment, full rows, large pages, analytics,
44
+ or global enumeration beyond the compact page.
39
45
 
40
46
  Before registering or updating an agent profile, call free
41
47
  `sap_protocol_invariants` when treasury, registration fee, hosted write route,
@@ -52,6 +58,11 @@ Hosted accountless SAP MCP cannot sign wallet-owned registry writes. If hosted
52
58
  `confirmationStatus`, and `protocolFee.status`; after update, fetch the agent
53
59
  profile again and compare the changed fields.
54
60
 
61
+ If any SAP operation returns `payment_required`, `hosted_local_signer_required`,
62
+ `BlockhashNotFound`, timeout, missing `sap_payments`, or a submitted signature
63
+ that did not confirm, call `sap_agent_next_action` before retrying. Follow its
64
+ `safeToRetryNow` and `nextTool` fields.
65
+
55
66
  ## Memory
56
67
 
57
68
  Use: