@oobe-protocol-labs/sap-mcp-server 0.7.3 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (90) hide show
  1. package/CHANGELOG.md +139 -0
  2. package/README.md +14 -7
  3. package/USER_DOCS/00_START_HERE.md +45 -7
  4. package/USER_DOCS/01_HOSTED_REMOTE_MCP.md +2 -0
  5. package/USER_DOCS/03_PAYMENTS_X402_PAYSH.md +13 -5
  6. package/USER_DOCS/04_CLIENT_CONFIGS.md +25 -15
  7. package/USER_DOCS/06_DESKTOP_GUI_WIZARD.md +36 -21
  8. package/assets/logos/drift.svg +12 -0
  9. package/assets/logos/jupiter.ico +0 -0
  10. package/assets/logos/mcp.svg +11 -0
  11. package/assets/logos/meteora.png +0 -0
  12. package/assets/logos/orca.ico +0 -0
  13. package/assets/logos/raydium.ico +0 -0
  14. package/assets/logos/smithery.svg +11 -0
  15. package/assets/oobe-logo.png +0 -0
  16. package/dist/config/mcp-client-injection.d.ts +26 -7
  17. package/dist/config/mcp-client-injection.d.ts.map +1 -1
  18. package/dist/config/mcp-client-injection.js +182 -58
  19. package/dist/config/mcp-client-injection.js.map +1 -1
  20. package/dist/config/wizard.d.ts.map +1 -1
  21. package/dist/config/wizard.js +92 -57
  22. package/dist/config/wizard.js.map +1 -1
  23. package/dist/core/constants.d.ts +1 -1
  24. package/dist/core/constants.js +1 -1
  25. package/dist/payments/pricing.d.ts.map +1 -1
  26. package/dist/payments/pricing.js +11 -0
  27. package/dist/payments/pricing.js.map +1 -1
  28. package/dist/payments/x402-paid-call.d.ts +85 -1
  29. package/dist/payments/x402-paid-call.d.ts.map +1 -1
  30. package/dist/payments/x402-paid-call.js +168 -4
  31. package/dist/payments/x402-paid-call.js.map +1 -1
  32. package/dist/prompts/context/sap-agent-context.prompt.js +6 -3
  33. package/dist/prompts/context/sap-agent-context.prompt.js.map +1 -1
  34. package/dist/remote/public-home/escape.d.ts +11 -0
  35. package/dist/remote/public-home/escape.d.ts.map +1 -0
  36. package/dist/remote/public-home/escape.js +20 -0
  37. package/dist/remote/public-home/escape.js.map +1 -0
  38. package/dist/remote/public-home/index.d.ts +8 -0
  39. package/dist/remote/public-home/index.d.ts.map +1 -0
  40. package/dist/remote/public-home/index.js +57 -0
  41. package/dist/remote/public-home/index.js.map +1 -0
  42. package/dist/remote/public-home/scripts.d.ts +6 -0
  43. package/dist/remote/public-home/scripts.d.ts.map +1 -0
  44. package/dist/remote/public-home/scripts.js +106 -0
  45. package/dist/remote/public-home/scripts.js.map +1 -0
  46. package/dist/remote/public-home/sections.d.ts +67 -0
  47. package/dist/remote/public-home/sections.d.ts.map +1 -0
  48. package/dist/remote/public-home/sections.js +727 -0
  49. package/dist/remote/public-home/sections.js.map +1 -0
  50. package/dist/remote/public-home/styles.d.ts +6 -0
  51. package/dist/remote/public-home/styles.d.ts.map +1 -0
  52. package/dist/remote/public-home/styles.js +1534 -0
  53. package/dist/remote/public-home/styles.js.map +1 -0
  54. package/dist/remote/public-home/types.d.ts +95 -0
  55. package/dist/remote/public-home/types.d.ts.map +1 -0
  56. package/dist/remote/public-home/types.js +2 -0
  57. package/dist/remote/public-home/types.js.map +1 -0
  58. package/dist/remote/server.d.ts +41 -1
  59. package/dist/remote/server.d.ts.map +1 -1
  60. package/dist/remote/server.js +109 -292
  61. package/dist/remote/server.js.map +1 -1
  62. package/dist/security/tool-permissions.d.ts.map +1 -1
  63. package/dist/security/tool-permissions.js +5 -0
  64. package/dist/security/tool-permissions.js.map +1 -1
  65. package/dist/tools/magicblock-tools.js +6 -6
  66. package/dist/tools/magicblock-tools.js.map +1 -1
  67. package/dist/tools/profile-tools.d.ts.map +1 -1
  68. package/dist/tools/profile-tools.js +136 -33
  69. package/dist/tools/profile-tools.js.map +1 -1
  70. package/dist/tools/register-tools.d.ts.map +1 -1
  71. package/dist/tools/register-tools.js +5 -0
  72. package/dist/tools/register-tools.js.map +1 -1
  73. package/dist/tools/x402-paid-call-tool.d.ts +1 -1
  74. package/dist/tools/x402-paid-call-tool.d.ts.map +1 -1
  75. package/dist/tools/x402-paid-call-tool.js +314 -28
  76. package/dist/tools/x402-paid-call-tool.js.map +1 -1
  77. package/dist/wizard-core/desktop-flow.d.ts +40 -1
  78. package/dist/wizard-core/desktop-flow.d.ts.map +1 -1
  79. package/dist/wizard-core/desktop-flow.js +206 -15
  80. package/dist/wizard-core/desktop-flow.js.map +1 -1
  81. package/docs/03_CONFIGURATION_AND_WIZARD.md +6 -2
  82. package/docs/06_PAYMENTS_X402_AND_PAYSH.md +29 -7
  83. package/docs/07_ENDPOINTS_AND_CLIENTS.md +1 -1
  84. package/docs/14_DESKTOP_WIZARD_RELEASE.md +24 -5
  85. package/docs/15_DASHBOARD_SCREENSHARE_SCRIPT.md +137 -0
  86. package/docs/README.md +23 -2
  87. package/package.json +1 -1
  88. package/server.json +3 -3
  89. package/skills/sap-mcp/SKILL.md +23 -7
  90. package/skills/sap-payments-x402/SKILL.md +37 -13
package/CHANGELOG.md CHANGED
@@ -4,6 +4,145 @@ All notable changes to this project are documented in this file.
4
4
 
5
5
  ## [Unreleased]
6
6
 
7
+ ### Added
8
+
9
+ - Added homepage and docs quick-start steppers for the two supported integration
10
+ paths: native desktop download for normal users and CLI wizard for developers,
11
+ with direct references to `/docs` pages for desktop setup, client configs, and
12
+ x402/pay.sh payments.
13
+ - Redesigned the hosted landing page navigation and integration path as a
14
+ server-rendered glass navigation bar plus shadcn-inspired setup cards with
15
+ native Windows, macOS, and Linux download actions.
16
+
17
+ ### Fixed
18
+
19
+ - Fixed the packaged Windows desktop wizard startup by converting the internal
20
+ `dist/wizard-core` module path to a `file://` URL before dynamic ESM import.
21
+ This prevents `ERR_UNSUPPORTED_ESM_URL_SCHEME` when the app is installed under
22
+ a `C:\...` path.
23
+ - Fixed desktop wizard responsiveness on narrower macOS and Windows windows by
24
+ removing page-level horizontal overflow, collapsing the setup chooser before
25
+ it clips, and constraining long paths/URLs inside cards.
26
+ - Added a persistent Home action to the desktop wizard sidebar so users can
27
+ return to the initial setup choice after finishing a repair or full setup.
28
+ - Fixed landing page setup-step layout on desktop and mobile by moving long CLI
29
+ commands out of numbered steps, making command blocks horizontally scrollable,
30
+ and preventing equal-height cards from stretching the stepper content.
31
+ - Refined the public install and native download cards so the release badge,
32
+ platform cards, and direct installer links clearly target the current 0.8.0
33
+ desktop wizard assets.
34
+ - Added the missing OpenAPI description for generic JSON-RPC `params` so
35
+ x402/pay.sh catalog validators and agent indexers can explain every required
36
+ request-body field.
37
+ - Removed MagicBlock `mock` authentication switches from public MCP tool schemas
38
+ and request forwarding so production tools expose only real API flows.
39
+ - Made hosted `sap` plus local `sap_payments` runtime injection platform-aware
40
+ end to end, with Windows tests proving that Codex, Claude, Hermes, and
41
+ OpenClaw payment bridge configs use `npx.cmd` where required.
42
+
43
+ ## 0.8.0 - 2026-07-14
44
+
45
+ ### Changed
46
+
47
+ - Made the normal wizard path hosted-first: `hosted-api` is now the default
48
+ recommended mode because agents should connect to
49
+ `https://mcp.sap.oobeprotocol.ai/mcp` while signatures and x402 proofs stay
50
+ local through the user SAP MCP profile.
51
+ - Promoted the native `sap_payments` MCP bridge from an optional add-on style
52
+ step to the recommended hosted paid/write setup for Claude, Hermes, Codex,
53
+ OpenClaw, and compatible runtimes.
54
+ - Updated the desktop wizard default draft to use hosted SAP MCP plus local
55
+ signing, added clearer normie-friendly setup copy, and added runtime actions
56
+ for selecting detected or all supported agent runtimes.
57
+ - Updated README and user docs to describe the recommended two-entry runtime
58
+ configuration: hosted `sap` plus local non-custodial `sap_payments`.
59
+
60
+ ### Verification
61
+
62
+ - `CI=true pnpm run typecheck`
63
+ - `CI=true pnpm test -- --run src/payments/pricing.test.ts src/server/create-server.test.ts src/config/mcp-client-injection.test.ts src/wizard-core/desktop-flow.test.ts`
64
+ - `CI=true pnpm run lint`
65
+ - `CI=true pnpm run build`
66
+ - `CI=true pnpm run desktop:renderer:build`
67
+
68
+ ## 0.7.7 - 2026-07-14
69
+
70
+ ### Changed
71
+
72
+ - Updated hosted profile tools to report the remote server as an explicit
73
+ accountless, non-custodial gateway instead of exposing a misleading
74
+ `default` profile from the VPS runtime.
75
+ - Added agent-facing guidance that local user profile, wallet, and signer
76
+ status must be read through the local `sap_payments.sap_profile_current`
77
+ bridge when the caller is connected to hosted remote MCP.
78
+ - Moved basic wallet balance reads (`sol_get_balance`,
79
+ `spl-token_getBalance`, and `spl-token_getTokenAccounts`) into the free
80
+ hosted tier so balance checks no longer depend on x402 facilitator
81
+ settlement or blockhash simulation.
82
+
83
+ ### Verification
84
+
85
+ - `CI=true pnpm run typecheck`
86
+ - `CI=true pnpm test -- --run src/payments/pricing.test.ts`
87
+
88
+ ## 0.7.6 - 2026-07-14
89
+
90
+ ### Changed
91
+
92
+ - Renamed desktop wizard and CLI wizard language from separate x402
93
+ plugin/addon setup to the native local SAP MCP `sap_payments` bridge.
94
+ - Updated user docs, runtime snippets, and skills to make
95
+ `sap_payments_call_paid_tool` the default hosted paid-tool path, with the
96
+ standalone `sap-mcp-x402-paid-call` command documented only as a legacy
97
+ terminal/custom-wrapper fallback.
98
+ - Prepared desktop release automation for signed macOS and Windows artifacts by
99
+ selecting OS-specific certificate secrets and publishing `SHA256SUMS.txt`
100
+ alongside DMG/ZIP/EXE/tar.gz outputs.
101
+
102
+ ### Verification
103
+
104
+ - `CI=true pnpm run verify:release`
105
+
106
+ ## 0.7.5 - 2026-07-14
107
+
108
+ ### Added
109
+
110
+ - Added native SAP MCP x402 challenge tools for agent runtimes:
111
+ `sap_payments_call_paid_tool`, `sap_payments_prepare_challenge`,
112
+ `sap_payments_sign_challenge`, and `sap_payments_verify_receipt`.
113
+ - Kept `sap_x402_paid_call` as a backward-compatible alias while making
114
+ `sap_payments_call_paid_tool` the recommended high-level path for hosted
115
+ paid/write tool calls.
116
+ - Added local receipt inspection coverage for `PAYMENT-RESPONSE` and
117
+ `X-PAYMENT-RESPONSE` headers.
118
+
119
+ ### Changed
120
+
121
+ - Updated runtime injection snippets so the local `sap_payments` bridge exposes
122
+ the complete payment challenge toolchain instead of only the legacy helper.
123
+ - Updated SAP MCP skills, prompts, and payment docs to teach agents the native
124
+ x402 challenge flow and avoid terminal/direct-RPC bypasses.
125
+
126
+ ### Verification
127
+
128
+ - `CI=true pnpm run verify:release`
129
+
130
+ ## 0.7.4 - 2026-07-13
131
+
132
+ ### Changed
133
+
134
+ - Added top-level metadata aliases to `/server.json` and
135
+ `/.well-known/mcp/server-card.json` for registry crawlers that score
136
+ description, homepage, icon, and display name outside nested MCP
137
+ `serverInfo` fields.
138
+ - Kept all metadata values derived from the canonical hosted SAP MCP title,
139
+ public description, homepage, and favicon without adding synthetic registry
140
+ data.
141
+
142
+ ### Verification
143
+
144
+ - `CI=true pnpm run verify:release`
145
+
7
146
  ## 0.7.3 - 2026-07-13
8
147
 
9
148
  ### Added
package/README.md CHANGED
@@ -80,7 +80,12 @@ or from source:
80
80
  node dist/cli.js
81
81
  ```
82
82
 
83
- Hosted customers connect their agents to `https://mcp.sap.oobeprotocol.ai/mcp`, but signing remains user-controlled. Any user who wants to pay x402/pay.sh charges, register or operate a SAP identity, or execute value-moving Solana/SAP tools should run the wizard first and keep the dedicated wallet under `~/.config/mcp-sap/keypairs/` or behind an external signer. Read-only hosted discovery can use the remote URL without a local signer.
83
+ Hosted customers connect their agents to `https://mcp.sap.oobeprotocol.ai/mcp`, but signing remains user-controlled. The recommended setup for most users is the wizard-managed pair of MCP entries:
84
+
85
+ - `sap`: hosted Streamable HTTP SAP MCP at `https://mcp.sap.oobeprotocol.ai/mcp`;
86
+ - `sap_payments`: local non-custodial payment bridge for x402/pay.sh paid/write calls.
87
+
88
+ Any user who wants to pay x402/pay.sh charges, register or operate a SAP identity, or execute value-moving Solana/SAP tools should run the wizard first and keep the dedicated wallet under `~/.config/mcp-sap/keypairs/` or behind an external signer. Read-only hosted discovery can use the remote URL without a local signer.
84
89
 
85
90
  ## 4. Local Client Config
86
91
 
@@ -112,13 +117,14 @@ For paid/write hosted tools, add the local non-custodial payment bridge as well:
112
117
  ```toml
113
118
  [mcp_servers.sap_payments]
114
119
  command = "npx"
115
- args = ["--yes", "--package", "@oobe-protocol-labs/sap-mcp-server", "sap-mcp-server"]
116
- enabled_tools = ["sap_x402_paid_call", "sap_profile_current", "sap_x402_estimate_cost"]
120
+ args = ["--yes", "--package", "@oobe-protocol-labs/sap-mcp-server@0.8.0", "sap-mcp-server"]
121
+ startup_timeout_sec = 300
117
122
  tool_timeout_sec = 300
118
123
 
119
124
  [mcp_servers.sap_payments.env]
120
125
  SAP_MCP_ALLOW_ENV_CONFIG_OVERRIDE = "false"
121
- SAP_ALLOWED_TOOLS = "sap_x402_paid_call,sap_profile_current,sap_x402_estimate_cost"
126
+ SAP_MCP_PAYMENTS_BRIDGE_ONLY = "true"
127
+ SAP_ALLOWED_TOOLS = "all"
122
128
  SAP_LOG_LEVEL = "info"
123
129
  ```
124
130
 
@@ -129,7 +135,7 @@ Codex supports Streamable HTTP MCP servers with URL-based entries in `config.tom
129
135
  ```toml
130
136
  [mcp_servers.sap]
131
137
  command = "npx"
132
- args = ["--yes", "--package", "@oobe-protocol-labs/sap-mcp-server", "sap-mcp-server"]
138
+ args = ["--yes", "--package", "@oobe-protocol-labs/sap-mcp-server@0.8.0", "sap-mcp-server"]
133
139
 
134
140
  [mcp_servers.sap.env]
135
141
  SAP_MCP_ALLOW_ENV_CONFIG_OVERRIDE = "false"
@@ -221,7 +227,8 @@ npx sap-mcp-pay-sh-spec \
221
227
  See [06. Payments, x402, And pay.sh](docs/06_PAYMENTS_X402_AND_PAYSH.md).
222
228
 
223
229
  For local agent runtimes that cannot replay x402 challenges natively, install
224
- the wizard's `x402_paid_call` addon or call the helper directly:
230
+ the wizard's local `sap_payments` bridge and call `sap_payments_call_paid_tool`.
231
+ The legacy CLI helper is still available for terminal use:
225
232
 
226
233
  ```bash
227
234
  npm exec --yes --package @oobe-protocol-labs/sap-mcp-server -- sap-mcp-x402-paid-call \
@@ -255,7 +262,7 @@ Installed binaries:
255
262
  | `sap-signing-proxy` | Local signing proxy |
256
263
  | `sap-mcp-facilitator` | Self-hosted x402 SVM facilitator |
257
264
  | `sap-mcp-pay-sh-spec` | pay.sh provider YAML generator |
258
- | `sap-mcp-x402-paid-call` | Local x402 payment helper for hosted paid MCP tools |
265
+ | `sap-mcp-x402-paid-call` | Legacy terminal/custom-wrapper fallback for hosted x402 paid MCP tools |
259
266
 
260
267
  ## 8. Documentation
261
268
 
@@ -15,19 +15,45 @@ Use one of two deployment modes:
15
15
 
16
16
  Hosted MCP still requires a local SAP MCP profile when the agent needs to sign payments or value-moving transactions. The hosted server never receives keypair bytes. The user's machine or external signer owns the trust boundary.
17
17
 
18
- Run the wizard:
18
+ Choose one setup path:
19
19
 
20
- ```bash
21
- npm exec --yes --package @oobe-protocol-labs/sap-mcp-server -- sap-mcp-config wizard
22
- ```
20
+ | Path | Best For | What It Does |
21
+ | --- | --- | --- |
22
+ | Native Desktop Wizard | Non-technical users and first-time setup | Downloads a guided GUI, creates the local SAP profile, detects runtimes, and configures hosted `sap` plus local `sap_payments`. |
23
+ | CLI Wizard | Developers, terminal users, servers | Runs the same setup from npm and can print or inject runtime config. |
24
+
25
+ ### Native Desktop Wizard
26
+
27
+ 1. Download the wizard from GitHub releases or from the hosted downloads descriptor.
28
+ 2. Open the wizard and choose **Full hosted SAP MCP setup**.
29
+ 3. Select detected runtimes such as Codex, Claude, Hermes, or OpenClaw.
30
+ 4. Restart the agent runtime and connect to hosted SAP MCP.
23
31
 
24
- For non-technical users, download the Desktop GUI Wizard from GitHub releases:
32
+ Release downloads:
25
33
 
26
34
  ```txt
27
35
  https://github.com/OOBE-PROTOCOL/sap-mcp/releases
36
+ https://mcp.sap.oobeprotocol.ai/wizard/downloads.json
37
+ ```
38
+
39
+ More details:
40
+
41
+ ```txt
42
+ https://mcp.sap.oobeprotocol.ai/docs/#/user/06_DESKTOP_GUI_WIZARD
43
+ ```
44
+
45
+ ### CLI Wizard
46
+
47
+ Run the wizard:
48
+
49
+ ```bash
50
+ npm exec --yes --package @oobe-protocol-labs/sap-mcp-server -- sap-mcp-config wizard
28
51
  ```
29
52
 
30
- The Desktop GUI Wizard creates the same profile and signer setup as the CLI wizard, then can configure hosted MCP plus the local x402 payment bridge for supported agent runtimes.
53
+ 1. Accept the default **hosted-api** mode for hosted SAP MCP.
54
+ 2. Create or import the dedicated local SAP MCP wallet profile.
55
+ 3. Let the wizard configure hosted `sap` plus local `sap_payments` for supported runtimes.
56
+ 4. Use `sap_payments_call_paid_tool` when a hosted tool requires x402 payment.
31
57
 
32
58
  Show the active profile:
33
59
 
@@ -47,6 +73,18 @@ Hosted documentation:
47
73
  https://mcp.sap.oobeprotocol.ai/docs
48
74
  ```
49
75
 
76
+ Client config docs:
77
+
78
+ ```txt
79
+ https://mcp.sap.oobeprotocol.ai/docs/#/user/04_CLIENT_CONFIGS
80
+ ```
81
+
82
+ Payment docs:
83
+
84
+ ```txt
85
+ https://mcp.sap.oobeprotocol.ai/docs/#/user/03_PAYMENTS_X402_PAYSH
86
+ ```
87
+
50
88
  Wizard descriptor:
51
89
 
52
90
  ```txt
@@ -149,4 +187,4 @@ npm exec --yes --package @oobe-protocol-labs/sap-mcp-server -- sap-mcp-config au
149
187
  | `03_PAYMENTS_X402_PAYSH.md` | x402, pay.sh pay-per-use, and pay.sh subscriptions |
150
188
  | `04_CLIENT_CONFIGS.md` | Claude, Hermes, Codex, OpenClaw config examples |
151
189
  | `05_SKILLS_AND_TOOLS.md` | Skills, tool selection, and security behavior |
152
- | `06_DESKTOP_GUI_WIZARD.md` | Desktop GUI wizard install, hosted setup, x402 client addon, and runtime behavior |
190
+ | `06_DESKTOP_GUI_WIZARD.md` | Desktop GUI wizard install, hosted setup, local payment bridge, and runtime behavior |
@@ -89,6 +89,8 @@ Read-only discovery can connect directly to the hosted MCP URL. Any agent that n
89
89
 
90
90
  If `sap_profile_current` reports `runtime.signerConfigured: false` on the hosted server, read it as a non-custodial guarantee: OOBE is not holding the user's wallet. It is not a reason to switch to local stdio automatically. Paid hosted tools should complete the x402/pay.sh payment flow from the user's local SAP profile or external signer. Use local stdio only when the user explicitly chooses local execution or the client cannot support remote Streamable HTTP/x402.
91
91
 
92
+ Hosted remote is accountless. If `sap_profile_current` returns `accountModel: hosted-remote-accountless`, the hosted server cannot see the user's local `~/.config/mcp-sap` profile and should not be summarized as profile `default`. Use the local `sap_payments.sap_payments_profile_current` bridge to inspect the user's real profile, wallet, and signer status.
93
+
92
94
  Agent-facing summary should say: "Hosted SAP MCP is connected. OOBE is non-custodial; user signatures come from the local SAP profile or external signer." Avoid "signer not configured", "read-only only", or "writes unavailable" unless a specific tool call returns that exact error.
93
95
 
94
96
  ## 3. Install And Configure
@@ -54,9 +54,15 @@ Hosted SAP MCP accepts payment proof headers used by the x402/payment flow and e
54
54
 
55
55
  The payment receipt should be treated as part of the tool output provenance. For paid hosted tools, agents should bind the receipt to the canonical request hash, tool name, method params, and returned result. The canonical hash ignores JSON-RPC `id`, so normal agent retries do not invalidate the receipt.
56
56
 
57
- ## 3. Local x402 Paid-Call Addon
57
+ ## 3. Local SAP MCP Payment Bridge
58
58
 
59
- Most agent runtimes can connect to hosted SAP MCP directly, but not every runtime can automatically sign an x402 challenge and replay the paid MCP request. SAP MCP ships a local helper for that gap:
59
+ Most agent runtimes can connect to hosted SAP MCP directly, but not every runtime can automatically sign an x402 challenge and replay the paid MCP request. The recommended fix is the local `sap_payments` MCP bridge created by the wizard. Agents should call:
60
+
61
+ ```txt
62
+ sap_payments_call_paid_tool
63
+ ```
64
+
65
+ The standalone CLI helper remains available as a terminal/custom-wrapper fallback:
60
66
 
61
67
  ```bash
62
68
  npm exec --yes --package @oobe-protocol-labs/sap-mcp-server -- sap-mcp-x402-paid-call \
@@ -76,19 +82,21 @@ The helper:
76
82
  5. retries the same MCP method and params with `PAYMENT-SIGNATURE`;
77
83
  6. returns the hosted MCP response plus the settlement receipt.
78
84
 
79
- Install or print addon snippets from the wizard:
85
+ Install or repair runtime bridge config from the wizard:
80
86
 
81
87
  ```bash
82
88
  npm exec --yes --package @oobe-protocol-labs/sap-mcp-server -- sap-mcp-config wizard
83
89
  ```
84
90
 
85
- The wizard writes the addon bundle under:
91
+ The wizard can also write a local reference bundle under:
86
92
 
87
93
  ```txt
88
94
  ~/.config/mcp-sap/addons/x402-paid-call
89
95
  ```
90
96
 
91
- Local stdio SAP MCP also exposes `sap_x402_paid_call` when the current process has a user-controlled wallet profile. The OOBE hosted server does not advertise this helper in non-custodial mode because payment signing must happen on the user's machine, not on `mcp.sap.oobeprotocol.ai`.
97
+ Local stdio SAP MCP also exposes the `sap_payments_call_paid_tool` challenge bridge and the legacy `sap_x402_paid_call` alias when the current process has a user-controlled wallet profile. The OOBE hosted server does not advertise these local signing helpers in non-custodial mode because payment signing must happen on the user's machine, not on `mcp.sap.oobeprotocol.ai`.
98
+
99
+ Basic wallet reads do not require x402. Call `sol_get_balance`, `spl-token_getBalance`, and `spl-token_getTokenAccounts` directly on hosted SAP MCP. They should not be routed through the local payment bridge and should not depend on the facilitator.
92
100
 
93
101
  Security boundaries:
94
102
 
@@ -45,13 +45,14 @@ url = "https://mcp.sap.oobeprotocol.ai/mcp"
45
45
 
46
46
  [mcp_servers.sap_payments]
47
47
  command = "npx.cmd"
48
- args = ["--yes", "--package", "@oobe-protocol-labs/sap-mcp-server", "sap-mcp-server"]
49
- enabled_tools = ["sap_x402_paid_call", "sap_profile_current", "sap_x402_estimate_cost"]
48
+ args = ["--yes", "--package", "@oobe-protocol-labs/sap-mcp-server@0.8.0", "sap-mcp-server"]
49
+ startup_timeout_sec = 300
50
50
  tool_timeout_sec = 300
51
51
 
52
52
  [mcp_servers.sap_payments.env]
53
53
  SAP_MCP_ALLOW_ENV_CONFIG_OVERRIDE = "false"
54
- SAP_ALLOWED_TOOLS = "sap_x402_paid_call,sap_profile_current,sap_x402_estimate_cost"
54
+ SAP_MCP_PAYMENTS_BRIDGE_ONLY = "true"
55
+ SAP_ALLOWED_TOOLS = "all"
55
56
  SAP_LOG_LEVEL = "info"
56
57
  ```
57
58
 
@@ -64,7 +65,7 @@ the complete local stdio SAP MCP process instead of using the hosted endpoint, u
64
65
  ```toml
65
66
  [mcp_servers.sap]
66
67
  command = "npx.cmd"
67
- args = ["--yes", "--package", "@oobe-protocol-labs/sap-mcp-server", "sap-mcp-server"]
68
+ args = ["--yes", "--package", "@oobe-protocol-labs/sap-mcp-server@0.8.0", "sap-mcp-server"]
68
69
 
69
70
  [mcp_servers.sap.env]
70
71
  SAP_MCP_ALLOW_ENV_CONFIG_OVERRIDE = "false"
@@ -110,6 +111,7 @@ Use this when the client requires stdio:
110
111
  "cwd": "/absolute/path/to/sap-mcp-server",
111
112
  "env": {
112
113
  "SAP_MCP_ALLOW_ENV_CONFIG_OVERRIDE": "false",
114
+ "SAP_MCP_PAYMENTS_BRIDGE_ONLY": "true",
113
115
  "SAP_LOG_LEVEL": "info"
114
116
  }
115
117
  }
@@ -128,6 +130,7 @@ mcp_servers:
128
130
  cwd: /absolute/path/to/sap-mcp-server
129
131
  env:
130
132
  SAP_MCP_ALLOW_ENV_CONFIG_OVERRIDE: "false"
133
+ SAP_MCP_PAYMENTS_BRIDGE_ONLY: "true"
131
134
  SAP_LOG_LEVEL: info
132
135
  ```
133
136
 
@@ -141,6 +144,7 @@ cwd = "/absolute/path/to/sap-mcp-server"
141
144
 
142
145
  [mcp_servers.sap.env]
143
146
  SAP_MCP_ALLOW_ENV_CONFIG_OVERRIDE = "false"
147
+ SAP_MCP_PAYMENTS_BRIDGE_ONLY = "true"
144
148
  SAP_LOG_LEVEL = "info"
145
149
  ```
146
150
 
@@ -154,15 +158,15 @@ Run:
154
158
  npm exec --yes --package @oobe-protocol-labs/sap-mcp-server -- sap-mcp-config wizard
155
159
  ```
156
160
 
157
- ## 8. x402 Paid-Call Addon
161
+ ## 8. Local SAP MCP Payment Bridge
158
162
 
159
- Hosted SAP MCP paid tools return an x402 challenge. Some agent runtimes expose remote MCP tools but do not yet have a native x402 replay path. The wizard can install a local addon bundle for Hermes, Claude, Codex, OpenClaw, or custom runtimes:
163
+ Hosted SAP MCP paid tools return an x402 challenge. Some agent runtimes expose remote MCP tools but do not yet have a native x402 replay path. The wizard configures a local `sap_payments` MCP bridge for Hermes, Claude, Codex, OpenClaw, or custom runtimes. It can also install a reference bundle for repair/custom clients:
160
164
 
161
165
  ```txt
162
166
  ~/.config/mcp-sap/addons/x402-paid-call
163
167
  ```
164
168
 
165
- The addon command is:
169
+ Normal agents should call `sap_payments_call_paid_tool` through the local `sap_payments` bridge. The standalone command is a terminal/custom-wrapper fallback:
166
170
 
167
171
  ```bash
168
172
  npm exec --yes --package @oobe-protocol-labs/sap-mcp-server -- sap-mcp-x402-paid-call \
@@ -176,6 +180,10 @@ For Codex, the recommended runtime integration is the local `sap_payments` MCP
176
180
  bridge shown above. It exposes only:
177
181
 
178
182
  ```txt
183
+ sap_payments_call_paid_tool
184
+ sap_payments_prepare_challenge
185
+ sap_payments_sign_challenge
186
+ sap_payments_verify_receipt
179
187
  sap_x402_paid_call
180
188
  sap_profile_current
181
189
  sap_x402_estimate_cost
@@ -185,14 +193,16 @@ For Claude Code, use the official MCP CLI pattern:
185
193
 
186
194
  ```bash
187
195
  claude mcp add --transport http sap https://mcp.sap.oobeprotocol.ai/mcp
188
- claude mcp add --transport stdio sap_payments -- npx --yes --package @oobe-protocol-labs/sap-mcp-server sap-mcp-server
196
+ claude mcp add --transport stdio sap_payments -- npx --yes --package @oobe-protocol-labs/sap-mcp-server@0.8.0 sap-mcp-server
189
197
  ```
190
198
 
191
- Set `SAP_ALLOWED_TOOLS=sap_x402_paid_call,sap_profile_current,sap_x402_estimate_cost`
192
- in the local bridge environment if your Claude runtime exposes environment
193
- configuration. This keeps the local bridge focused on payment retries.
199
+ Set `SAP_MCP_PAYMENTS_BRIDGE_ONLY=true` and `SAP_ALLOWED_TOOLS=all` in the
200
+ local bridge environment if your Claude runtime exposes environment
201
+ configuration. The bridge-only flag keeps the local process focused on payment
202
+ retries while `all` prevents future payment helper tools from being hidden by a
203
+ stale allow-list.
194
204
 
195
- Hermes plugin/addon concept:
205
+ Legacy Hermes command-wrapper concept:
196
206
 
197
207
  ```json
198
208
  {
@@ -209,11 +219,11 @@ Hermes plugin/addon concept:
209
219
  }
210
220
  ```
211
221
 
212
- Local MCP tool alternative:
222
+ Preferred local MCP tool call:
213
223
 
214
224
  ```json
215
225
  {
216
- "name": "sap_x402_paid_call",
226
+ "name": "sap_payments_call_paid_tool",
217
227
  "arguments": {
218
228
  "toolName": "sap_list_all_agents",
219
229
  "arguments": { "limit": 5 },
@@ -223,4 +233,4 @@ Local MCP tool alternative:
223
233
  }
224
234
  ```
225
235
 
226
- Do not add wallet paths, keypair bytes, RPC API keys, or profile-specific overrides to hosted MCP client config. Hosted MCP config points to `https://mcp.sap.oobeprotocol.ai/mcp`; the local addon/profile signs only the payment payload on the user's machine.
236
+ Do not add wallet paths, keypair bytes, RPC API keys, or profile-specific overrides to hosted MCP client config. Hosted MCP config points to `https://mcp.sap.oobeprotocol.ai/mcp`; the local `sap_payments` bridge signs only the payment payload on the user's machine.
@@ -10,7 +10,7 @@ It creates the same real SAP MCP profile as the CLI/TUI wizard:
10
10
  - a dedicated local SAP MCP wallet or external signer boundary;
11
11
  - conservative policy limits;
12
12
  - hosted MCP config for `https://mcp.sap.oobeprotocol.ai/mcp`;
13
- - optional local x402 paid-call bridge for agent runtimes.
13
+ - native local `sap_payments` bridge for hosted paid/write agent calls.
14
14
 
15
15
  The desktop app is not a mock installer. It calls the same setup modules used by `sap-mcp-config wizard`.
16
16
 
@@ -18,8 +18,15 @@ The first screen lets you choose one of two modes:
18
18
 
19
19
  | Mode | Use It When |
20
20
  | --- | --- |
21
- | **Full SAP MCP setup** | You are creating or refreshing a SAP MCP profile, wallet boundary, policy limits, hosted MCP entry, and x402 payment bridge. |
22
- | **Install x402 payment client only** | You already have `~/.config/mcp-sap` configured, hosted tools are visible, but paid/write calls still return `payment_required`. |
21
+ | **Full hosted SAP MCP setup** | **Recommended.** You are creating or refreshing a SAP MCP profile, wallet boundary, policy limits, hosted MCP entry, and native local payment bridge. |
22
+ | **Payment bridge repair** | You already have `~/.config/mcp-sap` configured, hosted tools are visible, but paid/write calls still return `payment_required`. |
23
+
24
+ The default full setup path configures two MCP entries for supported runtimes:
25
+
26
+ - `sap`: the hosted Streamable HTTP server at `https://mcp.sap.oobeprotocol.ai/mcp`;
27
+ - `sap_payments`: a local stdio bridge that signs x402 payment proofs with the user's SAP MCP profile or external signer.
28
+
29
+ This is the normal path for non-technical users and the recommended production path for technical users. Local stdio-only SAP MCP is still available for development, but it is not the default hosted onboarding flow.
23
30
 
24
31
  ## 2. When To Use It
25
32
 
@@ -71,14 +78,14 @@ Do not paste wallet/keypair material into support chats while troubleshooting in
71
78
 
72
79
  The desktop wizard walks through:
73
80
 
74
- 1. **Setup**: choose full setup or x402 payment-client-only repair.
81
+ 1. **Setup**: choose recommended full hosted setup or payment bridge repair.
75
82
  2. **Profile**: choose a real profile name; the wizard refuses ambiguous `default` profiles.
76
83
  3. **Wallet**: create a dedicated SAP MCP wallet or point to an existing dedicated keypair path.
77
84
  4. **Policy**: set max transaction value, daily limits, log level, and optional Bento Guard settings.
78
- 5. **Runtimes**: detect local agent runtimes and configure hosted SAP MCP plus local `sap_payments`.
85
+ 5. **Runtimes**: detect local agent runtimes and configure hosted SAP MCP plus local `sap_payments` using native JSON, TOML, or YAML for each runtime.
79
86
  6. **Review**: show config path, wallet boundary, hosted MCP endpoint, and runtime actions before writing.
80
87
 
81
- In x402 payment-client-only mode, the wizard skips profile, wallet, and policy steps. It only installs or repairs runtime MCP client entries and the optional addon bundle.
88
+ In payment bridge repair mode, the wizard skips profile, wallet, and policy steps. It only installs or repairs runtime MCP client entries and the optional local payment bridge reference bundle.
82
89
 
83
90
  The renderer never receives keypair bytes. Wallet creation and file writes happen in the local main process.
84
91
 
@@ -92,13 +99,14 @@ url = "https://mcp.sap.oobeprotocol.ai/mcp"
92
99
 
93
100
  [mcp_servers.sap_payments]
94
101
  command = "npx"
95
- args = ["--yes", "--package", "@oobe-protocol-labs/sap-mcp-server", "sap-mcp-server"]
96
- enabled_tools = ["sap_x402_paid_call", "sap_profile_current", "sap_x402_estimate_cost"]
102
+ args = ["--yes", "--package", "@oobe-protocol-labs/sap-mcp-server@0.8.0", "sap-mcp-server"]
103
+ startup_timeout_sec = 300
97
104
  tool_timeout_sec = 300
98
105
 
99
106
  [mcp_servers.sap_payments.env]
100
107
  SAP_MCP_ALLOW_ENV_CONFIG_OVERRIDE = "false"
101
- SAP_ALLOWED_TOOLS = "sap_x402_paid_call,sap_profile_current,sap_x402_estimate_cost"
108
+ SAP_MCP_PAYMENTS_BRIDGE_ONLY = "true"
109
+ SAP_ALLOWED_TOOLS = "all"
102
110
  SAP_LOG_LEVEL = "info"
103
111
  ```
104
112
 
@@ -123,10 +131,11 @@ Claude Desktop uses a root `mcpServers` JSON object:
123
131
  },
124
132
  "sap_payments": {
125
133
  "command": "npx",
126
- "args": ["--yes", "--package", "@oobe-protocol-labs/sap-mcp-server", "sap-mcp-server"],
134
+ "args": ["--yes", "--package", "@oobe-protocol-labs/sap-mcp-server@0.8.0", "sap-mcp-server"],
127
135
  "env": {
128
136
  "SAP_MCP_ALLOW_ENV_CONFIG_OVERRIDE": "false",
129
- "SAP_ALLOWED_TOOLS": "sap_x402_paid_call,sap_profile_current,sap_x402_estimate_cost",
137
+ "SAP_MCP_PAYMENTS_BRIDGE_ONLY": "true",
138
+ "SAP_ALLOWED_TOOLS": "all",
130
139
  "SAP_LOG_LEVEL": "info"
131
140
  }
132
141
  }
@@ -154,10 +163,11 @@ Hermes global `mcp.json` uses flat server entries:
154
163
  },
155
164
  "sap_payments": {
156
165
  "command": "npx",
157
- "args": ["--yes", "--package", "@oobe-protocol-labs/sap-mcp-server", "sap-mcp-server"],
166
+ "args": ["--yes", "--package", "@oobe-protocol-labs/sap-mcp-server@0.8.0", "sap-mcp-server"],
158
167
  "env": {
159
168
  "SAP_MCP_ALLOW_ENV_CONFIG_OVERRIDE": "false",
160
- "SAP_ALLOWED_TOOLS": "sap_x402_paid_call,sap_profile_current,sap_x402_estimate_cost",
169
+ "SAP_MCP_PAYMENTS_BRIDGE_ONLY": "true",
170
+ "SAP_ALLOWED_TOOLS": "all",
161
171
  "SAP_LOG_LEVEL": "info"
162
172
  }
163
173
  }
@@ -176,11 +186,12 @@ mcp_servers:
176
186
  args:
177
187
  - --yes
178
188
  - --package
179
- - @oobe-protocol-labs/sap-mcp-server
189
+ - @oobe-protocol-labs/sap-mcp-server@0.8.0
180
190
  - sap-mcp-server
181
191
  env:
182
192
  SAP_MCP_ALLOW_ENV_CONFIG_OVERRIDE: "false"
183
- SAP_ALLOWED_TOOLS: sap_x402_paid_call,sap_profile_current,sap_x402_estimate_cost
193
+ SAP_MCP_PAYMENTS_BRIDGE_ONLY: "true"
194
+ SAP_ALLOWED_TOOLS: all
184
195
  SAP_LOG_LEVEL: info
185
196
  ```
186
197
 
@@ -197,10 +208,11 @@ OpenClaw MCP JSON uses the same root `mcpServers` structure as generic MCP clien
197
208
  },
198
209
  "sap_payments": {
199
210
  "command": "npx",
200
- "args": ["--yes", "--package", "@oobe-protocol-labs/sap-mcp-server", "sap-mcp-server"],
211
+ "args": ["--yes", "--package", "@oobe-protocol-labs/sap-mcp-server@0.8.0", "sap-mcp-server"],
201
212
  "env": {
202
213
  "SAP_MCP_ALLOW_ENV_CONFIG_OVERRIDE": "false",
203
- "SAP_ALLOWED_TOOLS": "sap_x402_paid_call,sap_profile_current,sap_x402_estimate_cost",
214
+ "SAP_MCP_PAYMENTS_BRIDGE_ONLY": "true",
215
+ "SAP_ALLOWED_TOOLS": "all",
204
216
  "SAP_LOG_LEVEL": "info"
205
217
  }
206
218
  }
@@ -210,15 +222,17 @@ OpenClaw MCP JSON uses the same root `mcpServers` structure as generic MCP clien
210
222
 
211
223
  On Windows, command-backed bridge entries use `npx.cmd`.
212
224
 
213
- ## 7. x402 Client Addon
225
+ ## 7. Local Payment Bridge Reference Bundle
214
226
 
215
- The GUI can also install the x402 addon bundle under:
227
+ The GUI can also install a local bridge reference bundle under:
216
228
 
217
229
  ```txt
218
230
  ~/.config/mcp-sap/addons/x402-paid-call
219
231
  ```
220
232
 
221
- Direct helper command:
233
+ Normal agents should use the local `sap_payments` MCP bridge and call
234
+ `sap_payments_call_paid_tool`. The standalone command remains available only as
235
+ a terminal/custom-wrapper fallback:
222
236
 
223
237
  ```bash
224
238
  npm exec --yes --package @oobe-protocol-labs/sap-mcp-server -- sap-mcp-x402-paid-call \
@@ -228,7 +242,8 @@ npm exec --yes --package @oobe-protocol-labs/sap-mcp-server -- sap-mcp-x402-paid
228
242
  --confirm
229
243
  ```
230
244
 
231
- Use the helper when your agent runtime can see hosted tools but cannot natively sign and replay x402 challenges.
245
+ Use the command fallback only when your runtime cannot add the local
246
+ `sap_payments` MCP bridge.
232
247
 
233
248
  ## 8. CLI Fallback
234
249
 
@@ -0,0 +1,12 @@
1
+ <svg width="256" height="256" viewBox="0 0 256 256" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M0 64C0 28.6538 28.6538 0 64 0H192C227.346 0 256 28.6538 256 64V192C256 227.346 227.346 256 192 256H64C28.6538 256 0 227.346 0 192V64Z" fill="#08AA18"/>
3
+ <g clip-path="url(#clip0_354_3823)">
4
+ <path d="M32 62.9677C32 45.8647 45.8647 32 62.9677 32H193.032C210.135 32 224 45.8647 224 62.9677V193.032C224 210.135 210.135 224 193.032 224H62.9677C45.8647 224 32 210.135 32 193.032V62.9677Z" fill="#08AA18"/>
5
+ <path d="M105.764 71.4325C105.367 72.4792 106.14 73.599 107.259 73.5993H129.162C130.199 73.5993 130.962 74.5712 130.717 75.5786L116.825 132.535C116.424 134.18 118.518 135.239 119.606 133.941L169.692 74.1724C169.996 73.8097 170.446 73.5993 170.919 73.5993H203.043C204.411 73.5993 205.148 75.2066 204.256 76.2439L77.1854 224H65.261L92.329 110.773C92.5694 109.767 91.8069 108.8 90.7731 108.799H52.9722C51.6232 108.799 50.8805 107.233 51.7338 106.188L112.32 32H120.719L105.764 71.4325Z" fill="white"/>
6
+ </g>
7
+ <defs>
8
+ <clipPath id="clip0_354_3823">
9
+ <rect width="192" height="192" fill="white" transform="translate(32 32)"/>
10
+ </clipPath>
11
+ </defs>
12
+ </svg>
Binary file
@@ -0,0 +1,11 @@
1
+ <svg width="180" height="180" viewBox="0 0 180 180" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <rect width="180" height="180" rx="24" fill="black"/>
3
+ <mask id="mask0_246_1229" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="7" y="7" width="166" height="166">
4
+ <path d="M173 7H7V173H173V7Z" fill="white"/>
5
+ </mask>
6
+ <g mask="url(#mask0_246_1229)">
7
+ <path d="M23.5996 85.2532L86.2021 22.6507C94.8457 14.0071 108.86 14.0071 117.503 22.6507C126.147 31.2942 126.147 45.3083 117.503 53.9519L70.2254 101.23" stroke="white" stroke-width="11.0667" stroke-linecap="round"/>
8
+ <path d="M70.8789 100.578L117.504 53.952C126.148 45.3083 140.163 45.3083 148.806 53.952L149.132 54.278C157.776 62.9216 157.776 76.9357 149.132 85.5792L92.5139 142.198C89.6327 145.079 89.6327 149.75 92.5139 152.631L104.14 164.257" stroke="white" stroke-width="11.0667" stroke-linecap="round"/>
9
+ <path d="M101.853 38.3013L55.553 84.6011C46.9094 93.2447 46.9094 107.258 55.553 115.902C64.1966 124.546 78.2106 124.546 86.8543 115.902L133.154 69.6025" stroke="white" stroke-width="11.0667" stroke-linecap="round"/>
10
+ </g>
11
+ </svg>
Binary file
Binary file
Binary file