@oobe-protocol-labs/sap-mcp-server 0.7.4 → 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 +123 -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 +1 -1
  59. package/dist/remote/server.d.ts.map +1 -1
  60. package/dist/remote/server.js +55 -282
  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
@@ -1,7 +1,9 @@
1
+ import { existsSync, readdirSync, readFileSync } from 'fs';
2
+ import { join } from 'path';
1
3
  import { defaults } from '../config/defaults.js';
2
- import { defaultGeneratedWalletPath } from '../config/paths.js';
4
+ import { defaultGeneratedWalletPath, getPreferredConfigDir } from '../config/paths.js';
3
5
  import { saveWizardSetup } from '../config/setup.js';
4
- import { discoverMcpClientTargets, installCodexHostedPaymentBridgeConfig, installHostedPaymentBridgeConfigs, installX402PaidCallAddon, } from '../config/mcp-client-injection.js';
6
+ import { discoverMcpClientTargets, installCodexHostedPaymentBridgeConfig, installHostedPaymentBridgeConfigs, installX402PaidCallAddon, validateHostedPaymentBridgeContent, } from '../config/mcp-client-injection.js';
5
7
  /**
6
8
  * @name normalizeDesktopProfileName
7
9
  * @description Produces a safe suggested profile name while preserving validation in saveWizardSetup.
@@ -22,7 +24,7 @@ export function createDefaultDesktopWizardDraft() {
22
24
  const profileName = 'my-sap-agent';
23
25
  return {
24
26
  profileName,
25
- mode: 'local-dev-keypair',
27
+ mode: 'hosted-api',
26
28
  rpcUrl: defaults.rpcUrl,
27
29
  createNewWallet: true,
28
30
  walletPath: defaultGeneratedWalletPath(profileName),
@@ -55,7 +57,7 @@ export function getDesktopRuntimeStatuses(homeDir) {
55
57
  detected: Boolean(byRuntime.get('codex')?.length),
56
58
  paths: byRuntime.get('codex')?.map((target) => target.path) ?? [],
57
59
  autoConfigurable: true,
58
- recommendation: 'Recommended: configure hosted SAP MCP plus local sap_payments bridge automatically.',
60
+ recommendation: 'Recommended: hosted SAP MCP plus local sap_payments bridge.',
59
61
  },
60
62
  {
61
63
  id: 'claude',
@@ -63,7 +65,7 @@ export function getDesktopRuntimeStatuses(homeDir) {
63
65
  detected: Boolean(byRuntime.get('claude')?.length),
64
66
  paths: byRuntime.get('claude')?.map((target) => target.path) ?? [],
65
67
  autoConfigurable: true,
66
- recommendation: 'Configure hosted SAP MCP plus local sap_payments bridge in Claude Desktop JSON.',
68
+ recommendation: 'Hosted SAP MCP plus local sap_payments bridge in Claude Desktop JSON.',
67
69
  },
68
70
  {
69
71
  id: 'hermes',
@@ -71,7 +73,7 @@ export function getDesktopRuntimeStatuses(homeDir) {
71
73
  detected: Boolean(byRuntime.get('hermes')?.length),
72
74
  paths: byRuntime.get('hermes')?.map((target) => target.path) ?? [],
73
75
  autoConfigurable: true,
74
- recommendation: 'Configure hosted SAP MCP plus local sap_payments bridge in Hermes global/profile config.',
76
+ recommendation: 'Hosted SAP MCP plus local sap_payments bridge in Hermes global/profile config.',
75
77
  },
76
78
  {
77
79
  id: 'openclaw',
@@ -79,10 +81,136 @@ export function getDesktopRuntimeStatuses(homeDir) {
79
81
  detected: Boolean(byRuntime.get('openclaw')?.length),
80
82
  paths: byRuntime.get('openclaw')?.map((target) => target.path) ?? [],
81
83
  autoConfigurable: true,
82
- recommendation: 'Configure hosted SAP MCP plus local sap_payments bridge in OpenClaw MCP JSON.',
84
+ recommendation: 'Hosted SAP MCP plus local sap_payments bridge in OpenClaw MCP JSON.',
83
85
  },
84
86
  ];
85
87
  }
88
+ /**
89
+ * @name getDesktopProfileStatuses
90
+ * @description Lists local SAP MCP config profiles without loading or exposing keypair material.
91
+ */
92
+ export function getDesktopProfileStatuses(homeDir) {
93
+ const configDir = homeDir ? join(homeDir, '.config', 'mcp-sap') : getPreferredConfigDir();
94
+ if (!existsSync(configDir)) {
95
+ return [];
96
+ }
97
+ const activeProfile = readActiveDesktopProfile(configDir);
98
+ const profiles = [];
99
+ for (const file of readdirSync(configDir)) {
100
+ const profileName = profileNameFromConfigFile(file);
101
+ if (!profileName) {
102
+ continue;
103
+ }
104
+ const profilePath = join(configDir, file);
105
+ const config = readJsonObject(profilePath);
106
+ const walletPath = readStringField(config, 'walletPath');
107
+ const rpcUrl = readStringField(config, 'rpcUrl');
108
+ const mode = readModeField(config, 'mode');
109
+ const externalSignerConfigured = Boolean(readStringField(config, 'externalSignerUrl'));
110
+ const issues = buildProfileReadinessIssues({
111
+ name: profileName,
112
+ mode,
113
+ walletPath,
114
+ walletExists: Boolean(walletPath && existsSync(walletPath)),
115
+ externalSignerConfigured,
116
+ });
117
+ profiles.push({
118
+ name: profileName,
119
+ path: profilePath,
120
+ active: profileName === activeProfile,
121
+ mode,
122
+ rpcUrl,
123
+ network: networkFromRpcUrl(rpcUrl),
124
+ agentPubkey: readStringField(config, 'agentPubkey'),
125
+ walletPath,
126
+ walletExists: Boolean(walletPath && existsSync(walletPath)),
127
+ externalSignerConfigured,
128
+ readiness: issues.length === 0 ? 'ready' : 'needs-attention',
129
+ issues,
130
+ });
131
+ }
132
+ profiles.sort((a, b) => {
133
+ if (a.active)
134
+ return -1;
135
+ if (b.active)
136
+ return 1;
137
+ return a.name.localeCompare(b.name);
138
+ });
139
+ return profiles;
140
+ }
141
+ function buildProfileReadinessIssues(input) {
142
+ const issues = [];
143
+ if (!input.mode) {
144
+ issues.push(`Profile "${input.name}" has no valid mode.`);
145
+ }
146
+ const needsSigner = input.mode === 'hosted-api'
147
+ || input.mode === 'local-dev-keypair'
148
+ || input.mode === 'delegated-session';
149
+ if (needsSigner && !input.walletPath && !input.externalSignerConfigured) {
150
+ issues.push(`Profile "${input.name}" needs a local wallet path or external signer for payments/write tools.`);
151
+ }
152
+ if (needsSigner && input.walletPath && !input.walletExists) {
153
+ issues.push(`Profile "${input.name}" points to a missing wallet file.`);
154
+ }
155
+ return issues;
156
+ }
157
+ function profileNameFromConfigFile(file) {
158
+ if (file === 'config.json') {
159
+ return 'default';
160
+ }
161
+ if (file.startsWith('config-') && file.endsWith('.json')) {
162
+ return file.slice('config-'.length, -'.json'.length);
163
+ }
164
+ return undefined;
165
+ }
166
+ function readActiveDesktopProfile(configDir) {
167
+ const activePath = join(configDir, '.active-profile');
168
+ if (!existsSync(activePath)) {
169
+ return 'default';
170
+ }
171
+ try {
172
+ return readFileSync(activePath, 'utf-8').trim() || 'default';
173
+ }
174
+ catch {
175
+ return 'default';
176
+ }
177
+ }
178
+ function readJsonObject(path) {
179
+ try {
180
+ const parsed = JSON.parse(readFileSync(path, 'utf-8'));
181
+ return parsed && typeof parsed === 'object' && !Array.isArray(parsed) ? parsed : {};
182
+ }
183
+ catch {
184
+ return {};
185
+ }
186
+ }
187
+ function readStringField(record, field) {
188
+ const value = record[field];
189
+ return typeof value === 'string' && value.length > 0 ? value : undefined;
190
+ }
191
+ function readModeField(record, field) {
192
+ const value = readStringField(record, field);
193
+ if (value === 'readonly'
194
+ || value === 'local-dev-keypair'
195
+ || value === 'external-signer'
196
+ || value === 'delegated-session'
197
+ || value === 'hosted-api') {
198
+ return value;
199
+ }
200
+ return undefined;
201
+ }
202
+ function networkFromRpcUrl(rpcUrl) {
203
+ if (!rpcUrl) {
204
+ return undefined;
205
+ }
206
+ if (rpcUrl.includes('devnet')) {
207
+ return 'devnet';
208
+ }
209
+ if (rpcUrl.includes('testnet')) {
210
+ return 'testnet';
211
+ }
212
+ return 'mainnet-beta';
213
+ }
86
214
  /**
87
215
  * @name validateDesktopWizardDraft
88
216
  * @description Returns actionable validation errors before persistence.
@@ -91,7 +219,7 @@ export function validateDesktopWizardDraft(draft) {
91
219
  const errors = [];
92
220
  if (draft.setupMode === 'payments-only') {
93
221
  if (draft.configureRuntimes.length === 0 && !draft.configureCodex && !draft.installAddonBundle) {
94
- errors.push('Choose at least one runtime or install the local addon bundle.');
222
+ errors.push('Choose at least one runtime or install the local bridge reference bundle.');
95
223
  }
96
224
  return errors;
97
225
  }
@@ -120,7 +248,7 @@ export function validateDesktopWizardDraft(draft) {
120
248
  * @name saveDesktopWizardDraft
121
249
  * @description Persists a desktop wizard draft and installs selected runtime integrations.
122
250
  */
123
- export async function saveDesktopWizardDraft(draft) {
251
+ export async function saveDesktopWizardDraft(draft, homeDir, platform = process.platform) {
124
252
  const errors = validateDesktopWizardDraft(draft);
125
253
  if (errors.length > 0) {
126
254
  throw new Error(errors.join('\n'));
@@ -148,7 +276,7 @@ export async function saveDesktopWizardDraft(draft) {
148
276
  if (draft.configureCodex) {
149
277
  selectedRuntimes.add('codex');
150
278
  }
151
- for (const result of installHostedPaymentBridgeConfigs(Array.from(selectedRuntimes))) {
279
+ for (const result of installHostedPaymentBridgeConfigs(Array.from(selectedRuntimes), homeDir, platform)) {
152
280
  runtimeActions.push({
153
281
  runtime: result.target.label,
154
282
  status: 'configured',
@@ -158,7 +286,7 @@ export async function saveDesktopWizardDraft(draft) {
158
286
  });
159
287
  }
160
288
  if (runtimeActions.length === 0 && draft.setupMode === 'full') {
161
- const codex = installCodexHostedPaymentBridgeConfig();
289
+ const codex = installCodexHostedPaymentBridgeConfig(homeDir, platform);
162
290
  runtimeActions.push({
163
291
  runtime: 'Codex',
164
292
  status: 'configured',
@@ -168,14 +296,77 @@ export async function saveDesktopWizardDraft(draft) {
168
296
  });
169
297
  }
170
298
  if (draft.installAddonBundle) {
171
- const addon = installX402PaidCallAddon();
299
+ const addon = installX402PaidCallAddon(homeDir ? join(homeDir, '.config', 'mcp-sap', 'addons', 'x402-paid-call') : undefined);
172
300
  runtimeActions.push({
173
- runtime: 'x402 paid-call addon',
301
+ runtime: 'SAP MCP payment bridge bundle',
174
302
  status: 'installed',
175
303
  path: addon.targetDir,
176
- message: `Installed ${addon.addonId} addon bundle.`,
304
+ message: `Installed ${addon.addonId} reference bundle.`,
177
305
  });
178
306
  }
179
- return { setup, setupMode: draft.setupMode, runtimeActions };
307
+ const readiness = buildDesktopReadiness({
308
+ profileName: draft.setupMode === 'full' ? profileName : undefined,
309
+ selectedRuntimes: Array.from(selectedRuntimes),
310
+ runtimeActions,
311
+ homeDir,
312
+ platform,
313
+ });
314
+ return { setup, setupMode: draft.setupMode, readiness, runtimeActions };
315
+ }
316
+ function buildDesktopReadiness(input) {
317
+ const profiles = getDesktopProfileStatuses(input.homeDir);
318
+ const activeProfile = input.profileName
319
+ ? profiles.find((profile) => profile.name === input.profileName)
320
+ : profiles.find((profile) => profile.active);
321
+ const profileIssues = activeProfile
322
+ ? activeProfile.issues
323
+ : ['No active local SAP MCP profile was found.'];
324
+ const runtimeIssues = collectRuntimeReadinessIssues(input);
325
+ const nextSteps = buildReadinessNextSteps(profileIssues, runtimeIssues);
326
+ return {
327
+ status: profileIssues.length === 0 && runtimeIssues.length === 0 ? 'ready' : 'needs-attention',
328
+ profileName: activeProfile?.name,
329
+ profileIssues,
330
+ runtimeIssues,
331
+ nextSteps,
332
+ };
333
+ }
334
+ function collectRuntimeReadinessIssues(input) {
335
+ const targets = discoverMcpClientTargets(input.homeDir, input.platform);
336
+ const selected = new Set(input.selectedRuntimes.length > 0 ? input.selectedRuntimes : ['codex']);
337
+ const configuredPaths = new Set(input.runtimeActions.map((action) => action.path).filter((path) => Boolean(path)));
338
+ const runtimeIssues = [];
339
+ for (const target of targets) {
340
+ const runtimeId = target.id;
341
+ if (!selected.has(runtimeId) || !configuredPaths.has(target.path) || !existsSync(target.path)) {
342
+ continue;
343
+ }
344
+ const content = readFileSync(target.path, 'utf-8');
345
+ const issues = validateHostedPaymentBridgeContent(target, content, input.platform);
346
+ if (issues.length > 0) {
347
+ runtimeIssues.push({
348
+ runtime: target.label,
349
+ path: target.path,
350
+ issues,
351
+ });
352
+ }
353
+ }
354
+ return runtimeIssues;
355
+ }
356
+ function buildReadinessNextSteps(profileIssues, runtimeIssues) {
357
+ const nextSteps = [];
358
+ if (profileIssues.some((issue) => issue.includes('missing wallet file'))) {
359
+ nextSteps.push('Open Full hosted SAP MCP setup and create a new dedicated wallet, or update the profile to an existing wallet/external signer.');
360
+ }
361
+ if (profileIssues.some((issue) => issue.includes('No active local SAP MCP profile'))) {
362
+ nextSteps.push('Create a named SAP MCP profile with the wizard before using hosted paid/write tools.');
363
+ }
364
+ if (runtimeIssues.length > 0) {
365
+ nextSteps.push('Run Repair payment bridge only for the affected runtimes, then fully restart the agent runtime.');
366
+ }
367
+ if (nextSteps.length === 0) {
368
+ nextSteps.push('Restart the selected agent runtime so it reloads hosted sap plus local sap_payments.');
369
+ }
370
+ return nextSteps;
180
371
  }
181
372
  //# sourceMappingURL=desktop-flow.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"desktop-flow.js","sourceRoot":"","sources":["../../src/wizard-core/desktop-flow.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"desktop-flow.js","sourceRoot":"","sources":["../../src/wizard-core/desktop-flow.ts"],"names":[],"mappings":"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"}
@@ -74,7 +74,7 @@ Desktop flow:
74
74
  2. Create or import a dedicated SAP MCP wallet.
75
75
  3. Set policy limits and optional Bento Guard metadata.
76
76
  4. Detect local agent runtimes.
77
- 5. Configure hosted MCP and the local x402 paid-call bridge where supported.
77
+ 5. Configure hosted MCP and the local SAP MCP `sap_payments` bridge where supported.
78
78
  6. Show a final review before writing files.
79
79
 
80
80
  Release artifacts are produced as macOS DMG/ZIP, Windows NSIS EXE, and Linux tar.gz. See [14. Desktop Wizard Release](14_DESKTOP_WIZARD_RELEASE.md).
@@ -106,12 +106,16 @@ Do not inject keypair bytes, hard-coded legacy wallet paths, or stale RPC overri
106
106
  For hosted paid/write tools, clients may also need a local `sap_payments` bridge that exposes only:
107
107
 
108
108
  ```txt
109
+ sap_payments_call_paid_tool
110
+ sap_payments_prepare_challenge
111
+ sap_payments_sign_challenge
112
+ sap_payments_verify_receipt
109
113
  sap_x402_paid_call
110
114
  sap_profile_current
111
115
  sap_x402_estimate_cost
112
116
  ```
113
117
 
114
- This bridge signs x402 payment proofs locally with the active SAP MCP profile and retries the hosted tool call.
118
+ This bridge obtains x402 challenges, signs payment proofs locally with the active SAP MCP profile, retries hosted tool calls, and inspects receipts.
115
119
 
116
120
  ## 03.7 Config CLI
117
121
 
@@ -46,10 +46,22 @@ The retry must preserve the initialized `mcp-session-id` and the same MCP method
46
46
  and params that produced the challenge. JSON-RPC `id` is not part of the
47
47
  canonical paid request hash.
48
48
 
49
- ## 06.4 Local x402 Paid-Call Addon
49
+ ## 06.4 Local x402 Challenge Toolchain
50
50
 
51
51
  Some clients can connect to hosted Streamable HTTP MCP but cannot yet sign and
52
- replay x402 challenges natively. SAP MCP ships a local helper for that case:
52
+ replay x402 challenges natively. SAP MCP ships a local challenge toolchain for
53
+ that case. The recommended high-level MCP tool is:
54
+
55
+ ```text
56
+ sap_payments_call_paid_tool
57
+ ```
58
+
59
+ It obtains the hosted x402 challenge, validates the price and payment
60
+ coordinates, signs locally, retries the exact hosted MCP request, and returns
61
+ the tool result plus receipt. The legacy alias `sap_x402_paid_call` remains for
62
+ existing runtimes.
63
+
64
+ CLI equivalent:
53
65
 
54
66
  ```bash
55
67
  npm exec --yes --package @oobe-protocol-labs/sap-mcp-server -- sap-mcp-x402-paid-call \
@@ -60,8 +72,8 @@ npm exec --yes --package @oobe-protocol-labs/sap-mcp-server -- sap-mcp-x402-paid
60
72
  --confirm
61
73
  ```
62
74
 
63
- The wizard can install addon metadata and snippets for Hermes, Claude, Codex,
64
- OpenClaw, or custom runtimes:
75
+ The wizard can install local bridge reference metadata and snippets for Hermes,
76
+ Claude, Codex, OpenClaw, or custom runtimes:
65
77
 
66
78
  ```text
67
79
  ~/.config/mcp-sap/addons/x402-paid-call
@@ -73,9 +85,19 @@ the hosted call, and prints the settlement receipt. It does not send keypair
73
85
  bytes to the hosted server. It fails closed when the active profile has no
74
86
  supported local payment signer.
75
87
 
76
- Local stdio SAP MCP may expose `sap_x402_paid_call` when the process has a
77
- user-controlled wallet profile. The public hosted server should not advertise
78
- that helper in non-custodial mode because signing belongs on the user's machine.
88
+ Local stdio SAP MCP may expose these free payment bridge tools when the process
89
+ has a user-controlled wallet profile:
90
+
91
+ | Tool | Purpose |
92
+ | --- | --- |
93
+ | `sap_payments_call_paid_tool` | End-to-end paid hosted tool execution; preferred for agents. |
94
+ | `sap_payments_prepare_challenge` | Fetch and parse a hosted x402 challenge without signing. |
95
+ | `sap_payments_sign_challenge` | Sign a parsed challenge with the local SAP profile signer. |
96
+ | `sap_payments_verify_receipt` | Decode a payment response/receipt header for inspection. |
97
+ | `sap_x402_paid_call` | Backward-compatible alias for the high-level paid-call tool. |
98
+
99
+ The public hosted server should not advertise the signing helpers in
100
+ non-custodial mode because signing belongs on the user's machine.
79
101
 
80
102
  Transient settlement errors such as `BlockhashNotFound`,
81
103
  `transaction_simulation_failed`, `smart_wallet_simulation_failed`, `node is
@@ -131,7 +131,7 @@ Codex supports Streamable HTTP MCP servers with URL-based TOML entries. Use loca
131
131
  ```toml
132
132
  [mcp_servers.sap]
133
133
  command = "npx"
134
- 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"]
135
135
 
136
136
  [mcp_servers.sap.env]
137
137
  SAP_MCP_ALLOW_ENV_CONFIG_OVERRIDE = "false"
@@ -45,10 +45,10 @@ The desktop wizard supports two setup modes:
45
45
 
46
46
  | Mode | Behavior |
47
47
  | --- | --- |
48
- | Full SAP MCP setup | Creates or updates the local SAP MCP profile, wallet boundary, policy limits, hosted MCP runtime entries, and x402 bridge. |
49
- | x402 payment client only | Skips profile/wallet writes and only installs or repairs hosted MCP plus local `sap_payments` runtime entries. |
48
+ | Full SAP MCP setup | Creates or updates the local SAP MCP profile, wallet boundary, policy limits, hosted MCP runtime entries, and native local payment bridge. |
49
+ | Payment bridge repair | Skips profile/wallet writes and only installs or repairs hosted MCP plus local `sap_payments` runtime entries. |
50
50
 
51
- The x402-only mode is for users who already ran a wizard, can see hosted SAP MCP tools, but cannot execute paid/write calls because their runtime does not yet attach payment proofs.
51
+ Payment bridge repair mode is for users who already ran a wizard, can see hosted SAP MCP tools, but cannot execute paid/write calls because their runtime does not yet attach payment proofs.
52
52
 
53
53
  ### 14.4.1 Codex
54
54
 
@@ -66,9 +66,15 @@ 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", "sap-mcp-server"]
70
- enabled_tools = ["sap_x402_paid_call", "sap_profile_current", "sap_x402_estimate_cost"]
69
+ args = ["--yes", "--package", "@oobe-protocol-labs/sap-mcp-server@0.8.0", "sap-mcp-server"]
70
+ startup_timeout_sec = 300
71
71
  tool_timeout_sec = 300
72
+
73
+ [mcp_servers.sap_payments.env]
74
+ SAP_MCP_ALLOW_ENV_CONFIG_OVERRIDE = "false"
75
+ SAP_MCP_PAYMENTS_BRIDGE_ONLY = "true"
76
+ SAP_ALLOWED_TOOLS = "all"
77
+ SAP_LOG_LEVEL = "info"
72
78
  ```
73
79
 
74
80
  On Windows, use `npx.cmd`.
@@ -120,6 +126,10 @@ OpenClaw receives root `mcpServers` JSON when `~/.openclaw/mcp.json` is selected
120
126
  Every supported runtime may also receive a local `sap_payments` server with only these enabled tools:
121
127
 
122
128
  ```txt
129
+ sap_payments_call_paid_tool
130
+ sap_payments_prepare_challenge
131
+ sap_payments_sign_challenge
132
+ sap_payments_verify_receipt
123
133
  sap_x402_paid_call
124
134
  sap_profile_current
125
135
  sap_x402_estimate_cost
@@ -202,6 +212,15 @@ For signed tagged GitHub release builds, the macOS job uses these secrets when t
202
212
  | `APPLE_APP_SPECIFIC_PASSWORD` | App-specific password for notarization. |
203
213
  | `APPLE_TEAM_ID` | Apple Developer Team ID. |
204
214
 
215
+ For signed Windows tagged release builds, the Windows job uses these secrets when they are configured:
216
+
217
+ | Secret | Purpose |
218
+ | --- | --- |
219
+ | `WINDOWS_CSC_LINK` or `WIN_CSC_LINK` | Base64-encoded `.pfx/.p12` Authenticode certificate, or a secure URL supported by Electron Builder. |
220
+ | `WINDOWS_CSC_KEY_PASSWORD` or `WIN_CSC_KEY_PASSWORD` | Password for the Windows code signing certificate bundle. |
221
+
222
+ Every desktop build publishes `SHA256SUMS.txt` next to the DMG/ZIP/EXE/tar.gz artifacts.
223
+
205
224
  The Electron Builder macOS config uses:
206
225
 
207
226
  1. hardened runtime;
@@ -0,0 +1,137 @@
1
+ # SAP MCP Dashboard Screenshare Script
2
+
3
+ ## Purpose
4
+
5
+ Use this script for a 4-6 minute product walkthrough of <https://mcp.sap.oobeprotocol.ai/>. The tone should be direct, technical, and commercial: SAP MCP is not just another MCP server; it is a Solana-native operations gateway for agent runtimes.
6
+
7
+ ## 0. Opening Hook
8
+
9
+ **Screen:** Open <https://mcp.sap.oobeprotocol.ai/>.
10
+
11
+ **Say:**
12
+
13
+ Agent runtimes are moving from chat and retrieval into real execution. The missing piece is a clean operations layer: identity, wallet boundaries, payments, protocol tools, and a way to keep user keys under user control.
14
+
15
+ This is SAP MCP by OOBE Protocol: a hosted Solana-native MCP gateway for agents. It gives Claude, Codex, Hermes, OpenClaw, and custom agents one standard endpoint for Solana DeFi, Solana RPC, and Synapse Agent Protocol operations.
16
+
17
+ ## 1. Dashboard Overview
18
+
19
+ **Screen:** Point to the hero, hosted endpoint, payment counters, and public navigation.
20
+
21
+ **Say:**
22
+
23
+ The hosted MCP endpoint is `https://mcp.sap.oobeprotocol.ai/mcp`. Agents connect through standard Streamable HTTP MCP. The public dashboard gives builders the important operational signals without exposing secrets: endpoint metadata, docs, downloads, x402 discovery, pay.sh provider data, and live payment activity.
24
+
25
+ The model is remote tools, local signatures. The hosted server provides the tool surface and monetization rails, while the user's local SAP profile or external signer authorizes paid and value-moving calls.
26
+
27
+ ## 2. Three Protocol Buckets
28
+
29
+ **Screen:** Scroll to the protocol surface / bento grid section.
30
+
31
+ **Say:**
32
+
33
+ SAP MCP is organized around three core buckets.
34
+
35
+ First: Solana DeFi protocols. Agents can access integrations across Jupiter, Raydium, Orca, Meteora, Drift, market data, swaps, quotes, and related execution flows.
36
+
37
+ Second: Solana RPC and asset primitives. Balances, token accounts, DAS assets, NFT metadata, program reads, transactions, simulations, and chain inspection are exposed as MCP tools.
38
+
39
+ Third: Synapse Agent Protocol. This is the coordination layer: agent registry, reputation, tool registry, escrow, settlement, attestations, SNS identity, x402 flows, pay.sh metadata, skills, and proof-oriented agent operations.
40
+
41
+ The point is simple: one MCP gateway can turn a normal agent runtime into a protocol-aware on-chain operator.
42
+
43
+ ## 3. Installation Path
44
+
45
+ **Screen:** Scroll to the integration/install section and download cards.
46
+
47
+ **Say:**
48
+
49
+ There are two installation paths.
50
+
51
+ For most users, use the native desktop wizard. Download Windows, macOS, or Linux directly from the GitHub release. The wizard creates an isolated SAP MCP profile, wallet boundary, policy defaults, hosted MCP config, and the local `sap_payments` bridge for paid calls.
52
+
53
+ For developers and servers, use the TUI from npm:
54
+
55
+ ```bash
56
+ npm exec --yes --package @oobe-protocol-labs/sap-mcp-server -- sap-mcp-config wizard
57
+ ```
58
+
59
+ The desktop GUI and the TUI both end in the same production model: hosted MCP at `/mcp`, plus local non-custodial signing and x402 payment handling.
60
+
61
+ ## 4. Wizard Walkthrough
62
+
63
+ **Screen:** Open the SAP MCP Wizard.
64
+
65
+ **Say:**
66
+
67
+ The wizard is built for both normal users and technical operators.
68
+
69
+ The default path is full hosted SAP MCP setup. It creates or repairs the local profile, configures the selected runtime, and installs the local payment bridge.
70
+
71
+ If a user already has a profile, they can choose the repair path. That fixes only the SAP MCP runtime entries, keeps other MCP servers intact, and updates only OOBE's own `sap` and `sap_payments` blocks.
72
+
73
+ The important security rule is that keypair bytes are never pasted into remote configs. The hosted server never custodies user keys. Paid and write tools require the user-controlled local profile or an external signer.
74
+
75
+ ## 5. Runtime Connection
76
+
77
+ **Screen:** Show Codex, Hermes, Claude, or another runtime with SAP MCP connected.
78
+
79
+ **Say:**
80
+
81
+ Once the runtime restarts, it gets two surfaces.
82
+
83
+ The remote SAP MCP namespace exposes the full hosted tool catalog. Read tools work immediately.
84
+
85
+ The local `sap_payments` bridge handles paid or write calls when the runtime cannot natively replay x402 challenges. It signs the payment proof locally, retries the hosted MCP call, and returns the receipt and tool output without sending private key material to OOBE.
86
+
87
+ That is the trust boundary: global hosted tools, local authorization.
88
+
89
+ ## 6. Payments And Monetization
90
+
91
+ **Screen:** Point to payment/x402/pay.sh cards and `.well-known/x402`.
92
+
93
+ **Say:**
94
+
95
+ SAP MCP supports x402 and pay.sh for agent-native monetization.
96
+
97
+ Paid tools return a standard HTTP 402 challenge. The local bridge or a native x402-capable runtime resolves the challenge, settles through the OOBE facilitator, and binds payment to the tool call.
98
+
99
+ This lets hosted MCP tools become revenue-generating APIs without bearer tokens, custodial wallets, or hardcoded runtime secrets.
100
+
101
+ For builders, this means paid discovery, premium analytics, transaction builders, registry operations, SNS checks, settlement flows, and future subscription-style products can all live behind one MCP interface.
102
+
103
+ ## 7. Solana Value Proposition
104
+
105
+ **Screen:** Return to the hero or protocol surface.
106
+
107
+ **Say:**
108
+
109
+ For Solana, SAP MCP is a distribution layer for protocols.
110
+
111
+ Instead of every agent integration being custom, protocols can be exposed as well-described MCP tools, enriched with skills and docs, and monetized with x402 or pay.sh.
112
+
113
+ For agents, it is a coordination layer. They can discover tools, inspect state, register identity, link SNS, handle payments, and execute operations through a standard interface.
114
+
115
+ For users, it is non-custodial by default. The remote server provides access; the local signer controls authorization.
116
+
117
+ ## 8. Closing CTA
118
+
119
+ **Screen:** Show install button and docs.
120
+
121
+ **Say:**
122
+
123
+ You can try SAP MCP today at `mcp.sap.oobeprotocol.ai`.
124
+
125
+ Download the native wizard, or run the TUI from npm. Connect your agent runtime, keep signing local, and start building Solana-native agent operations with SAP MCP.
126
+
127
+ This is the path from agent profiles to on-chain operators.
128
+
129
+ ## Short Social Cut
130
+
131
+ SAP MCP turns agent runtimes into Solana-native operators.
132
+
133
+ One hosted MCP endpoint gives agents access to Solana DeFi, Solana RPC, and Synapse Agent Protocol tools. The wizard creates the local profile, signer boundary, runtime config, and x402 payment bridge.
134
+
135
+ Remote tools. Local signatures. Smooth payments. No custodial key handling.
136
+
137
+ Try it at <https://mcp.sap.oobeprotocol.ai/>.