@oobe-protocol-labs/sap-mcp-server 0.7.4 → 0.9.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.
- package/CHANGELOG.md +140 -0
- package/README.md +14 -7
- package/USER_DOCS/00_START_HERE.md +45 -7
- package/USER_DOCS/01_HOSTED_REMOTE_MCP.md +2 -0
- package/USER_DOCS/03_PAYMENTS_X402_PAYSH.md +24 -6
- package/USER_DOCS/04_CLIENT_CONFIGS.md +26 -15
- package/USER_DOCS/06_DESKTOP_GUI_WIZARD.md +44 -22
- package/assets/logos/drift.svg +12 -0
- package/assets/logos/jupiter.ico +0 -0
- package/assets/logos/mcp.svg +11 -0
- package/assets/logos/meteora.png +0 -0
- package/assets/logos/orca.ico +0 -0
- package/assets/logos/raydium.ico +0 -0
- package/assets/logos/smithery.svg +11 -0
- package/assets/oobe-logo.png +0 -0
- package/dist/config/mcp-client-injection.d.ts +26 -7
- package/dist/config/mcp-client-injection.d.ts.map +1 -1
- package/dist/config/mcp-client-injection.js +182 -58
- package/dist/config/mcp-client-injection.js.map +1 -1
- package/dist/config/paths.d.ts +6 -0
- package/dist/config/paths.d.ts.map +1 -1
- package/dist/config/paths.js +14 -0
- package/dist/config/paths.js.map +1 -1
- package/dist/config/wizard.d.ts.map +1 -1
- package/dist/config/wizard.js +92 -57
- package/dist/config/wizard.js.map +1 -1
- package/dist/core/constants.d.ts +1 -1
- package/dist/core/constants.js +1 -1
- package/dist/payments/pricing.d.ts.map +1 -1
- package/dist/payments/pricing.js +12 -0
- package/dist/payments/pricing.js.map +1 -1
- package/dist/payments/x402-paid-call.d.ts +181 -1
- package/dist/payments/x402-paid-call.d.ts.map +1 -1
- package/dist/payments/x402-paid-call.js +432 -6
- package/dist/payments/x402-paid-call.js.map +1 -1
- package/dist/prompts/context/sap-agent-context.prompt.js +7 -3
- package/dist/prompts/context/sap-agent-context.prompt.js.map +1 -1
- package/dist/remote/public-home/escape.d.ts +11 -0
- package/dist/remote/public-home/escape.d.ts.map +1 -0
- package/dist/remote/public-home/escape.js +20 -0
- package/dist/remote/public-home/escape.js.map +1 -0
- package/dist/remote/public-home/index.d.ts +8 -0
- package/dist/remote/public-home/index.d.ts.map +1 -0
- package/dist/remote/public-home/index.js +57 -0
- package/dist/remote/public-home/index.js.map +1 -0
- package/dist/remote/public-home/scripts.d.ts +6 -0
- package/dist/remote/public-home/scripts.d.ts.map +1 -0
- package/dist/remote/public-home/scripts.js +106 -0
- package/dist/remote/public-home/scripts.js.map +1 -0
- package/dist/remote/public-home/sections.d.ts +67 -0
- package/dist/remote/public-home/sections.d.ts.map +1 -0
- package/dist/remote/public-home/sections.js +732 -0
- package/dist/remote/public-home/sections.js.map +1 -0
- package/dist/remote/public-home/styles.d.ts +6 -0
- package/dist/remote/public-home/styles.d.ts.map +1 -0
- package/dist/remote/public-home/styles.js +1534 -0
- package/dist/remote/public-home/styles.js.map +1 -0
- package/dist/remote/public-home/types.d.ts +97 -0
- package/dist/remote/public-home/types.d.ts.map +1 -0
- package/dist/remote/public-home/types.js +2 -0
- package/dist/remote/public-home/types.js.map +1 -0
- package/dist/remote/server.d.ts +3 -1
- package/dist/remote/server.d.ts.map +1 -1
- package/dist/remote/server.js +67 -282
- package/dist/remote/server.js.map +1 -1
- package/dist/security/tool-permissions.d.ts.map +1 -1
- package/dist/security/tool-permissions.js +5 -0
- package/dist/security/tool-permissions.js.map +1 -1
- package/dist/tools/magicblock-tools.js +6 -6
- package/dist/tools/magicblock-tools.js.map +1 -1
- package/dist/tools/profile-tools.d.ts.map +1 -1
- package/dist/tools/profile-tools.js +136 -33
- package/dist/tools/profile-tools.js.map +1 -1
- package/dist/tools/register-tools.d.ts.map +1 -1
- package/dist/tools/register-tools.js +5 -0
- package/dist/tools/register-tools.js.map +1 -1
- package/dist/tools/x402-paid-call-tool.d.ts +1 -1
- package/dist/tools/x402-paid-call-tool.d.ts.map +1 -1
- package/dist/tools/x402-paid-call-tool.js +360 -28
- package/dist/tools/x402-paid-call-tool.js.map +1 -1
- package/dist/tui/config-wizard.js +2 -2
- package/dist/tui/config-wizard.js.map +1 -1
- package/dist/tui/wizard-save.d.ts.map +1 -1
- package/dist/tui/wizard-save.js +7 -3
- package/dist/tui/wizard-save.js.map +1 -1
- package/dist/wizard-core/desktop-flow.d.ts +40 -1
- package/dist/wizard-core/desktop-flow.d.ts.map +1 -1
- package/dist/wizard-core/desktop-flow.js +207 -15
- package/dist/wizard-core/desktop-flow.js.map +1 -1
- package/docs/03_CONFIGURATION_AND_WIZARD.md +7 -2
- package/docs/06_PAYMENTS_X402_AND_PAYSH.md +30 -7
- package/docs/07_ENDPOINTS_AND_CLIENTS.md +1 -1
- package/docs/14_DESKTOP_WIZARD_RELEASE.md +25 -5
- package/docs/15_DASHBOARD_SCREENSHARE_SCRIPT.md +137 -0
- package/docs/README.md +23 -2
- package/package.json +1 -1
- package/server.json +3 -3
- package/skills/sap-mcp/SKILL.md +27 -7
- package/skills/sap-payments-x402/SKILL.md +37 -13
|
@@ -3,25 +3,30 @@
|
|
|
3
3
|
* @name X402PaidCallHelper
|
|
4
4
|
* @description Local helper for paying and retrying hosted SAP MCP x402 tool calls with a user-controlled SAP profile signer.
|
|
5
5
|
*/
|
|
6
|
-
import { readFileSync } from 'fs';
|
|
6
|
+
import { existsSync, readFileSync } from 'fs';
|
|
7
|
+
import { createHash } from 'crypto';
|
|
7
8
|
import { x402Client, x402HTTPClient } from '@x402/core/client';
|
|
8
9
|
import { registerExactSvmScheme } from '@x402/svm/exact/client';
|
|
9
10
|
import { createKeyPairSignerFromBytes } from '@solana/kit';
|
|
11
|
+
import { Connection, PublicKey } from '@solana/web3.js';
|
|
10
12
|
import { loadConfig } from '../config/env.js';
|
|
11
|
-
import { getProfileConfigPath } from '../config/profiles.js';
|
|
13
|
+
import { getActiveProfile, getProfileConfigPath } from '../config/profiles.js';
|
|
12
14
|
import { MCP_SERVER_VERSION } from '../core/constants.js';
|
|
13
|
-
const
|
|
15
|
+
export const DEFAULT_X402_PAID_CALL_ENDPOINT = 'https://mcp.sap.oobeprotocol.ai/mcp';
|
|
14
16
|
const MCP_PROTOCOL_VERSION = '2025-06-18';
|
|
15
17
|
const DEFAULT_MAX_ATTEMPTS = 3;
|
|
16
18
|
const MAX_ALLOWED_ATTEMPTS = 5;
|
|
17
19
|
const RETRY_BASE_DELAY_MS = 500;
|
|
20
|
+
const MAINNET_USDC_MINT = 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v';
|
|
21
|
+
const DEVNET_USDC_MINT = '4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU';
|
|
18
22
|
/**
|
|
19
23
|
* @name executeX402PaidCall
|
|
20
24
|
* @description Initializes MCP, obtains x402 payment requirements, signs locally, retries the call, and returns the settlement receipt.
|
|
21
25
|
*/
|
|
22
26
|
export async function executeX402PaidCall(input) {
|
|
23
27
|
validateInput(input);
|
|
24
|
-
const endpoint = input.endpoint ??
|
|
28
|
+
const endpoint = input.endpoint ?? DEFAULT_X402_PAID_CALL_ENDPOINT;
|
|
29
|
+
const profileName = input.profileName ?? getActiveProfile();
|
|
25
30
|
const config = loadPaymentProfile(input.profileName);
|
|
26
31
|
const signer = await loadClientSigner(config);
|
|
27
32
|
const httpClient = createHttpPaymentClient(signer);
|
|
@@ -37,6 +42,7 @@ export async function executeX402PaidCall(input) {
|
|
|
37
42
|
signerAddress: String(signer.address),
|
|
38
43
|
httpClient,
|
|
39
44
|
requestBody,
|
|
45
|
+
profileName,
|
|
40
46
|
maxPriceUsd: input.maxPriceUsd,
|
|
41
47
|
attempt,
|
|
42
48
|
transientRetries,
|
|
@@ -53,9 +59,177 @@ export async function executeX402PaidCall(input) {
|
|
|
53
59
|
}
|
|
54
60
|
throw new Error('x402 paid call exhausted retries.');
|
|
55
61
|
}
|
|
62
|
+
/**
|
|
63
|
+
* @name getX402PaymentReadiness
|
|
64
|
+
* @description Checks local profile, signer, RPC, balances, and commerce policy for hosted paid/write workflows.
|
|
65
|
+
*/
|
|
66
|
+
export async function getX402PaymentReadiness(profileName, endpoint = DEFAULT_X402_PAID_CALL_ENDPOINT) {
|
|
67
|
+
const activeProfile = profileName ?? getActiveProfile();
|
|
68
|
+
const configPath = getProfileConfigPath(activeProfile);
|
|
69
|
+
let config;
|
|
70
|
+
let signerAddress;
|
|
71
|
+
const issues = [];
|
|
72
|
+
try {
|
|
73
|
+
config = loadPaymentProfile(profileName);
|
|
74
|
+
}
|
|
75
|
+
catch (error) {
|
|
76
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
77
|
+
issues.push(`profile_load_failed: ${message}`);
|
|
78
|
+
}
|
|
79
|
+
if (config) {
|
|
80
|
+
try {
|
|
81
|
+
const signer = await loadClientSigner(config);
|
|
82
|
+
signerAddress = String(signer.address);
|
|
83
|
+
}
|
|
84
|
+
catch (error) {
|
|
85
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
86
|
+
issues.push(`signer_unavailable: ${message}`);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
const policy = readAgentCommercePolicy();
|
|
90
|
+
const network = networkFromRpcUrl(config?.rpcUrl);
|
|
91
|
+
const usdcMint = usdcMintForNetwork(network);
|
|
92
|
+
const balances = await readBalanceSnapshot(config?.rpcUrl, signerAddress, usdcMint, policy.autoPayX402BelowUsd);
|
|
93
|
+
if (balances.error) {
|
|
94
|
+
issues.push(`balance_check_degraded: ${balances.error}`);
|
|
95
|
+
}
|
|
96
|
+
const walletFileExists = Boolean(config?.walletPath && existsSync(config.walletPath));
|
|
97
|
+
if (config?.walletPath && !walletFileExists) {
|
|
98
|
+
issues.push('wallet_file_missing');
|
|
99
|
+
}
|
|
100
|
+
const canPayX402 = Boolean(signerAddress && balances.payerBalanceEnoughForAutoPay !== false);
|
|
101
|
+
const canExecuteWriteTools = Boolean(signerAddress && config?.mode !== 'readonly');
|
|
102
|
+
const status = !config || !signerAddress || !walletFileExists
|
|
103
|
+
? 'not-ready'
|
|
104
|
+
: issues.length > 0
|
|
105
|
+
? 'degraded'
|
|
106
|
+
: 'ready';
|
|
107
|
+
return {
|
|
108
|
+
hostedMcp: {
|
|
109
|
+
endpoint,
|
|
110
|
+
accountModel: 'hosted-remote-accountless',
|
|
111
|
+
toolNamespace: 'sap',
|
|
112
|
+
},
|
|
113
|
+
localBridge: {
|
|
114
|
+
status: 'connected',
|
|
115
|
+
toolNamespace: 'sap_payments',
|
|
116
|
+
preferredTool: 'sap_payments_call_paid_tool',
|
|
117
|
+
readinessTool: 'sap_payments_readiness',
|
|
118
|
+
},
|
|
119
|
+
profile: {
|
|
120
|
+
activeProfile,
|
|
121
|
+
configPath,
|
|
122
|
+
mode: config?.mode ?? 'readonly',
|
|
123
|
+
network,
|
|
124
|
+
rpcUrl: redactUrl(config?.rpcUrl),
|
|
125
|
+
programId: config?.programId ?? '',
|
|
126
|
+
walletPathConfigured: Boolean(config?.walletPath),
|
|
127
|
+
walletFileExists,
|
|
128
|
+
signerConfigured: Boolean(signerAddress),
|
|
129
|
+
...(signerAddress ? { signerPublicKey: signerAddress } : {}),
|
|
130
|
+
...(config?.agentPubkey ? { agentPubkey: config.agentPubkey } : {}),
|
|
131
|
+
secretMaterial: 'keypair-bytes-never-returned',
|
|
132
|
+
},
|
|
133
|
+
balances,
|
|
134
|
+
policy,
|
|
135
|
+
readiness: {
|
|
136
|
+
status,
|
|
137
|
+
canPayX402,
|
|
138
|
+
canExecuteWriteTools,
|
|
139
|
+
issues,
|
|
140
|
+
nextAction: readinessNextAction(status, issues, canPayX402),
|
|
141
|
+
},
|
|
142
|
+
agentInstruction: 'Call sap_payments_readiness first for hosted paid/write workflows. If status is ready or degraded with canPayX402=true, use sap_payments_call_paid_tool for paid hosted tools. Do not infer local wallet state from hosted sap_profile_current.',
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* @name probeX402PaymentChallenge
|
|
147
|
+
* @description Initializes hosted MCP and returns a parsed x402 challenge for one unpaid tool call without signing.
|
|
148
|
+
*/
|
|
149
|
+
export async function probeX402PaymentChallenge(input) {
|
|
150
|
+
const endpoint = input.endpoint ?? DEFAULT_X402_PAID_CALL_ENDPOINT;
|
|
151
|
+
const sessionId = await initializeMcpSession(endpoint);
|
|
152
|
+
const requestBody = input.body ?? buildToolCallRequest(input.toolName ?? '', input.arguments);
|
|
153
|
+
if (!input.body && !input.toolName) {
|
|
154
|
+
throw new Error('Provide either body or toolName.');
|
|
155
|
+
}
|
|
156
|
+
const unpaid = await postMcp(endpoint, requestBody, sessionId);
|
|
157
|
+
const paymentRequired = extractPaymentRequired(unpaid.response, unpaid.body);
|
|
158
|
+
const selectedRequirements = selectSingleRequirement(paymentRequired, input.maxPriceUsd ?? Number.POSITIVE_INFINITY);
|
|
159
|
+
return {
|
|
160
|
+
endpoint,
|
|
161
|
+
sessionId,
|
|
162
|
+
requestBody,
|
|
163
|
+
paymentRequired,
|
|
164
|
+
selectedRequirements,
|
|
165
|
+
amountUsd: paymentRequirementsAmountUsd(selectedRequirements),
|
|
166
|
+
instructions: {
|
|
167
|
+
signer: 'local-sap-mcp-profile-or-external-signer',
|
|
168
|
+
retryHeader: 'Payment-Signature',
|
|
169
|
+
settlementHeader: 'Payment-Response',
|
|
170
|
+
requestBinding: 'json-rpc-method-and-params',
|
|
171
|
+
recommendedTool: 'sap_payments_call_paid_tool',
|
|
172
|
+
},
|
|
173
|
+
};
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* @name signX402PaymentChallenge
|
|
177
|
+
* @description Signs a parsed x402 challenge with the active SAP MCP profile signer and returns a one-time payment header.
|
|
178
|
+
*/
|
|
179
|
+
export async function signX402PaymentChallenge(input) {
|
|
180
|
+
if (!input.confirm) {
|
|
181
|
+
throw new Error('Signing an x402 challenge requires confirm: true because it creates a payment authorization.');
|
|
182
|
+
}
|
|
183
|
+
if (!Number.isFinite(input.maxPriceUsd) || input.maxPriceUsd <= 0) {
|
|
184
|
+
throw new Error('Signing an x402 challenge requires a positive maxPriceUsd spending cap.');
|
|
185
|
+
}
|
|
186
|
+
const selectedRequirements = selectRequirementByIndex(input.paymentRequired, input.selectedIndex ?? 0, input.maxPriceUsd);
|
|
187
|
+
const config = loadPaymentProfile(input.profileName);
|
|
188
|
+
const signer = await loadClientSigner(config);
|
|
189
|
+
const httpClient = createHttpPaymentClient(signer);
|
|
190
|
+
const paymentPayload = await httpClient.createPaymentPayload({
|
|
191
|
+
...input.paymentRequired,
|
|
192
|
+
accepts: [selectedRequirements],
|
|
193
|
+
});
|
|
194
|
+
return {
|
|
195
|
+
signerAddress: String(signer.address),
|
|
196
|
+
amountUsd: paymentRequirementsAmountUsd(selectedRequirements),
|
|
197
|
+
payment: {
|
|
198
|
+
network: selectedRequirements.network,
|
|
199
|
+
asset: selectedRequirements.asset,
|
|
200
|
+
payTo: selectedRequirements.payTo,
|
|
201
|
+
},
|
|
202
|
+
headers: httpClient.encodePaymentSignatureHeader(paymentPayload),
|
|
203
|
+
payload: paymentPayload,
|
|
204
|
+
warning: 'Treat this payment header as one-time authorization material. Prefer sap_payments_call_paid_tool for normal agent use.',
|
|
205
|
+
};
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* @name inspectX402Receipt
|
|
209
|
+
* @description Decodes a PAYMENT-RESPONSE or X-PAYMENT-RESPONSE header for agent-readable receipt inspection.
|
|
210
|
+
*/
|
|
211
|
+
export function inspectX402Receipt(receiptHeader) {
|
|
212
|
+
const decoded = decodeMaybeBase64Json(receiptHeader);
|
|
213
|
+
if (!decoded.validJson) {
|
|
214
|
+
return {
|
|
215
|
+
validJson: false,
|
|
216
|
+
decoded: decoded.value,
|
|
217
|
+
warning: 'Receipt header is not JSON or base64-encoded JSON.',
|
|
218
|
+
};
|
|
219
|
+
}
|
|
220
|
+
const record = isRecord(decoded.value) ? decoded.value : {};
|
|
221
|
+
const txSignature = firstString(record, ['txSignature', 'signature', 'transactionSignature', 'transaction']);
|
|
222
|
+
const network = firstString(record, ['network', 'chain', 'chainId']);
|
|
223
|
+
return {
|
|
224
|
+
validJson: true,
|
|
225
|
+
decoded: decoded.value,
|
|
226
|
+
...(txSignature ? { txSignature } : {}),
|
|
227
|
+
...(network ? { network } : {}),
|
|
228
|
+
};
|
|
229
|
+
}
|
|
56
230
|
async function executePaidAttempt(options) {
|
|
57
231
|
const unpaid = await postMcp(options.endpoint, options.requestBody, options.sessionId);
|
|
58
|
-
const paymentRequired = options.httpClient
|
|
232
|
+
const paymentRequired = getPaymentRequiredResponse(options.httpClient, unpaid.response, unpaid.body);
|
|
59
233
|
const selectedRequirements = selectSingleRequirement(paymentRequired, options.maxPriceUsd);
|
|
60
234
|
const amountUsd = paymentRequirementsAmountUsd(selectedRequirements);
|
|
61
235
|
const paymentPayload = await options.httpClient.createPaymentPayload({
|
|
@@ -71,6 +245,31 @@ async function executePaidAttempt(options) {
|
|
|
71
245
|
if (isJsonRpcError(paid.body)) {
|
|
72
246
|
throw new Error(`Paid MCP call returned JSON-RPC error: ${JSON.stringify(paid.body.error)}`);
|
|
73
247
|
}
|
|
248
|
+
const toolName = extractToolName(options.requestBody);
|
|
249
|
+
const audit = {
|
|
250
|
+
intentId: buildIntentId(options.requestBody, options.sessionId),
|
|
251
|
+
profileName: options.profileName,
|
|
252
|
+
signerAddress: options.signerAddress,
|
|
253
|
+
endpoint: options.endpoint,
|
|
254
|
+
...(toolName ? { toolName } : {}),
|
|
255
|
+
requestMethod: options.requestBody.method,
|
|
256
|
+
payment: {
|
|
257
|
+
amountUsd,
|
|
258
|
+
network: selectedRequirements.network,
|
|
259
|
+
asset: selectedRequirements.asset,
|
|
260
|
+
payTo: selectedRequirements.payTo,
|
|
261
|
+
},
|
|
262
|
+
receipt: {
|
|
263
|
+
present: Boolean(paymentResult.settleResponse),
|
|
264
|
+
...(paymentResult.settleResponse?.transaction ? { transaction: paymentResult.settleResponse.transaction } : {}),
|
|
265
|
+
...(paymentResult.settleResponse?.network ? { network: paymentResult.settleResponse.network } : {}),
|
|
266
|
+
...(paymentResult.settleResponse?.amount ? { amount: paymentResult.settleResponse.amount } : {}),
|
|
267
|
+
...(paymentResult.settleResponse?.payer ? { payer: paymentResult.settleResponse.payer } : {}),
|
|
268
|
+
},
|
|
269
|
+
attempts: options.attempt,
|
|
270
|
+
transientRetries: options.transientRetries,
|
|
271
|
+
secretMaterial: 'keypair-bytes-never-returned',
|
|
272
|
+
};
|
|
74
273
|
return {
|
|
75
274
|
success: true,
|
|
76
275
|
endpoint: options.endpoint,
|
|
@@ -86,6 +285,7 @@ async function executePaidAttempt(options) {
|
|
|
86
285
|
response: paid.body,
|
|
87
286
|
attempts: options.attempt,
|
|
88
287
|
transientRetries: options.transientRetries,
|
|
288
|
+
audit,
|
|
89
289
|
};
|
|
90
290
|
}
|
|
91
291
|
function validateInput(input) {
|
|
@@ -181,6 +381,33 @@ async function postMcp(endpoint, body, sessionId, extraHeaders = {}) {
|
|
|
181
381
|
body: parseMcpHttpBody(text, response.headers.get('content-type') ?? ''),
|
|
182
382
|
};
|
|
183
383
|
}
|
|
384
|
+
function getPaymentRequiredResponse(httpClient, response, body) {
|
|
385
|
+
return httpClient.getPaymentRequiredResponse(name => response.headers.get(name), body);
|
|
386
|
+
}
|
|
387
|
+
function extractPaymentRequired(response, body) {
|
|
388
|
+
const header = response.headers.get('payment-required') ?? response.headers.get('PAYMENT-REQUIRED');
|
|
389
|
+
if (header) {
|
|
390
|
+
const decoded = decodeMaybeBase64Json(header);
|
|
391
|
+
if (decoded.validJson && isPaymentRequired(decoded.value)) {
|
|
392
|
+
return decoded.value;
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
if (isPaymentRequired(body)) {
|
|
396
|
+
return body;
|
|
397
|
+
}
|
|
398
|
+
if (isRecord(body) && isRecord(body.error) && isRecord(body.error.data)) {
|
|
399
|
+
const data = body.error.data;
|
|
400
|
+
const requirements = data.paymentRequirements;
|
|
401
|
+
if (Array.isArray(requirements)) {
|
|
402
|
+
return {
|
|
403
|
+
x402Version: 2,
|
|
404
|
+
error: 'Payment required',
|
|
405
|
+
accepts: requirements,
|
|
406
|
+
};
|
|
407
|
+
}
|
|
408
|
+
}
|
|
409
|
+
throw new Error(`Hosted MCP response did not contain an x402 challenge: ${JSON.stringify(body)}`);
|
|
410
|
+
}
|
|
184
411
|
function parseMcpHttpBody(text, contentType) {
|
|
185
412
|
if (!text.trim()) {
|
|
186
413
|
return null;
|
|
@@ -209,6 +436,20 @@ function selectSingleRequirement(paymentRequired, maxPriceUsd) {
|
|
|
209
436
|
}
|
|
210
437
|
return selected;
|
|
211
438
|
}
|
|
439
|
+
function selectRequirementByIndex(paymentRequired, selectedIndex, maxPriceUsd) {
|
|
440
|
+
if (!Array.isArray(paymentRequired.accepts) || paymentRequired.accepts.length === 0) {
|
|
441
|
+
throw new Error('Payment challenge did not include accepted payment requirements.');
|
|
442
|
+
}
|
|
443
|
+
if (!Number.isInteger(selectedIndex) || selectedIndex < 0 || selectedIndex >= paymentRequired.accepts.length) {
|
|
444
|
+
throw new Error(`selectedIndex must be between 0 and ${paymentRequired.accepts.length - 1}.`);
|
|
445
|
+
}
|
|
446
|
+
const selected = paymentRequired.accepts[selectedIndex];
|
|
447
|
+
const amountUsd = paymentRequirementsAmountUsd(selected);
|
|
448
|
+
if (amountUsd > maxPriceUsd) {
|
|
449
|
+
throw new Error(`Payment amount $${amountUsd.toFixed(6)} exceeds maxPriceUsd $${maxPriceUsd.toFixed(6)}.`);
|
|
450
|
+
}
|
|
451
|
+
return selected;
|
|
452
|
+
}
|
|
212
453
|
function paymentRequirementsAmountUsd(requirements) {
|
|
213
454
|
const compatibleRequirements = requirements;
|
|
214
455
|
const rawAmount = compatibleRequirements.amount || compatibleRequirements.maxAmountRequired;
|
|
@@ -268,6 +509,153 @@ function sleep(ms) {
|
|
|
268
509
|
function isJsonRpcError(value) {
|
|
269
510
|
return value !== null && typeof value === 'object' && 'error' in value;
|
|
270
511
|
}
|
|
512
|
+
function networkFromRpcUrl(value) {
|
|
513
|
+
if (!value) {
|
|
514
|
+
return 'mainnet-beta';
|
|
515
|
+
}
|
|
516
|
+
if (value.includes('mainnet')) {
|
|
517
|
+
return 'mainnet-beta';
|
|
518
|
+
}
|
|
519
|
+
if (value.includes('testnet')) {
|
|
520
|
+
return 'testnet';
|
|
521
|
+
}
|
|
522
|
+
if (value.includes('localhost') || value.includes('127.0.0.1') || value.includes('localnet')) {
|
|
523
|
+
return 'localnet';
|
|
524
|
+
}
|
|
525
|
+
return 'devnet';
|
|
526
|
+
}
|
|
527
|
+
function usdcMintForNetwork(network) {
|
|
528
|
+
return network === 'devnet' ? DEVNET_USDC_MINT : MAINNET_USDC_MINT;
|
|
529
|
+
}
|
|
530
|
+
function redactUrl(value) {
|
|
531
|
+
if (!value) {
|
|
532
|
+
return '';
|
|
533
|
+
}
|
|
534
|
+
try {
|
|
535
|
+
const url = new URL(value);
|
|
536
|
+
if (url.search) {
|
|
537
|
+
url.search = '?redacted=true';
|
|
538
|
+
}
|
|
539
|
+
return url.toString();
|
|
540
|
+
}
|
|
541
|
+
catch {
|
|
542
|
+
return value.includes('?') ? `${value.split('?')[0]}?redacted=true` : value;
|
|
543
|
+
}
|
|
544
|
+
}
|
|
545
|
+
async function readBalanceSnapshot(rpcUrl, signerAddress, usdcMint, autoPayX402BelowUsd) {
|
|
546
|
+
if (!rpcUrl || !signerAddress) {
|
|
547
|
+
return {
|
|
548
|
+
checked: false,
|
|
549
|
+
usdcMint,
|
|
550
|
+
error: 'missing_rpc_or_signer',
|
|
551
|
+
};
|
|
552
|
+
}
|
|
553
|
+
try {
|
|
554
|
+
const connection = new Connection(rpcUrl, 'confirmed');
|
|
555
|
+
const owner = new PublicKey(signerAddress);
|
|
556
|
+
const mint = new PublicKey(usdcMint);
|
|
557
|
+
const [lamports, tokenAccounts] = await Promise.all([
|
|
558
|
+
connection.getBalance(owner, 'confirmed'),
|
|
559
|
+
connection.getParsedTokenAccountsByOwner(owner, { mint }, 'confirmed'),
|
|
560
|
+
]);
|
|
561
|
+
const usdc = tokenAccounts.value.reduce((total, account) => {
|
|
562
|
+
const parsed = account.account.data.parsed;
|
|
563
|
+
if (!isRecord(parsed) || !isRecord(parsed.info) || !isRecord(parsed.info.tokenAmount)) {
|
|
564
|
+
return total;
|
|
565
|
+
}
|
|
566
|
+
const amount = parsed.info.tokenAmount.uiAmount;
|
|
567
|
+
return total + (typeof amount === 'number' && Number.isFinite(amount) ? amount : 0);
|
|
568
|
+
}, 0);
|
|
569
|
+
return {
|
|
570
|
+
checked: true,
|
|
571
|
+
sol: lamports / 1_000_000_000,
|
|
572
|
+
usdc,
|
|
573
|
+
usdcMint,
|
|
574
|
+
payerBalanceEnoughForAutoPay: usdc >= autoPayX402BelowUsd,
|
|
575
|
+
};
|
|
576
|
+
}
|
|
577
|
+
catch (error) {
|
|
578
|
+
return {
|
|
579
|
+
checked: false,
|
|
580
|
+
usdcMint,
|
|
581
|
+
error: error instanceof Error ? error.message : String(error),
|
|
582
|
+
};
|
|
583
|
+
}
|
|
584
|
+
}
|
|
585
|
+
function readAgentCommercePolicy() {
|
|
586
|
+
return {
|
|
587
|
+
autoPayX402BelowUsd: readPositiveNumberEnv('SAP_MCP_X402_AUTO_PAY_MAX_USD', 0.02),
|
|
588
|
+
dailyX402LimitUsd: readOptionalPositiveNumberEnv('SAP_MCP_X402_DAILY_LIMIT_USD'),
|
|
589
|
+
maxTradeUsd: readOptionalPositiveNumberEnv('SAP_MCP_MAX_TRADE_USD') ?? 10,
|
|
590
|
+
maxSlippageBps: readPositiveNumberEnv('SAP_MCP_MAX_SLIPPAGE_BPS', 100),
|
|
591
|
+
requireConfirmationAboveUsd: readPositiveNumberEnv('SAP_MCP_REQUIRE_CONFIRMATION_ABOVE_USD', 1),
|
|
592
|
+
allowedProtocols: readListEnv('SAP_MCP_ALLOWED_PROTOCOLS', ['jupiter', 'sns', 'sap', 'metaplex']),
|
|
593
|
+
maxAttempts: readIntegerEnv('SAP_MCP_X402_MAX_ATTEMPTS', DEFAULT_MAX_ATTEMPTS, 1, MAX_ALLOWED_ATTEMPTS),
|
|
594
|
+
};
|
|
595
|
+
}
|
|
596
|
+
function readPositiveNumberEnv(name, fallback) {
|
|
597
|
+
const value = process.env[name];
|
|
598
|
+
if (!value) {
|
|
599
|
+
return fallback;
|
|
600
|
+
}
|
|
601
|
+
const parsed = Number(value);
|
|
602
|
+
return Number.isFinite(parsed) && parsed >= 0 ? parsed : fallback;
|
|
603
|
+
}
|
|
604
|
+
function readOptionalPositiveNumberEnv(name) {
|
|
605
|
+
const value = process.env[name];
|
|
606
|
+
if (!value) {
|
|
607
|
+
return undefined;
|
|
608
|
+
}
|
|
609
|
+
const parsed = Number(value);
|
|
610
|
+
return Number.isFinite(parsed) && parsed >= 0 ? parsed : undefined;
|
|
611
|
+
}
|
|
612
|
+
function readIntegerEnv(name, fallback, min, max) {
|
|
613
|
+
const value = process.env[name];
|
|
614
|
+
if (!value) {
|
|
615
|
+
return fallback;
|
|
616
|
+
}
|
|
617
|
+
const parsed = Number(value);
|
|
618
|
+
return Number.isInteger(parsed) && parsed >= min && parsed <= max ? parsed : fallback;
|
|
619
|
+
}
|
|
620
|
+
function readListEnv(name, fallback) {
|
|
621
|
+
const value = process.env[name];
|
|
622
|
+
if (!value) {
|
|
623
|
+
return fallback;
|
|
624
|
+
}
|
|
625
|
+
const parsed = value.split(',').map(item => item.trim()).filter(Boolean);
|
|
626
|
+
return parsed.length > 0 ? parsed : fallback;
|
|
627
|
+
}
|
|
628
|
+
function readinessNextAction(status, issues, canPayX402) {
|
|
629
|
+
if (status === 'ready') {
|
|
630
|
+
return 'Use sap_payments_call_paid_tool for hosted paid/write SAP MCP calls.';
|
|
631
|
+
}
|
|
632
|
+
if (canPayX402) {
|
|
633
|
+
return 'Proceed with paid calls if the user accepts degraded readiness; retry transient RPC errors with fresh challenges.';
|
|
634
|
+
}
|
|
635
|
+
if (issues.some(issue => issue.includes('wallet_file_missing'))) {
|
|
636
|
+
return 'Run the SAP MCP wizard repair or update the active profile walletPath to an existing dedicated keypair.';
|
|
637
|
+
}
|
|
638
|
+
if (issues.some(issue => issue.includes('signer_unavailable'))) {
|
|
639
|
+
return 'Run the SAP MCP wizard full setup or repair the local signer before paid/write calls.';
|
|
640
|
+
}
|
|
641
|
+
return 'Run the SAP MCP wizard repair flow, restart the agent runtime, then call sap_payments_readiness again.';
|
|
642
|
+
}
|
|
643
|
+
function extractToolName(requestBody) {
|
|
644
|
+
if (requestBody.method !== 'tools/call' || !isRecord(requestBody.params)) {
|
|
645
|
+
return undefined;
|
|
646
|
+
}
|
|
647
|
+
const name = requestBody.params.name;
|
|
648
|
+
return typeof name === 'string' ? name : undefined;
|
|
649
|
+
}
|
|
650
|
+
function buildIntentId(requestBody, sessionId) {
|
|
651
|
+
const source = JSON.stringify({
|
|
652
|
+
method: requestBody.method,
|
|
653
|
+
params: requestBody.params ?? null,
|
|
654
|
+
sessionId,
|
|
655
|
+
at: Date.now(),
|
|
656
|
+
});
|
|
657
|
+
return `sap-intent-${createHash('sha256').update(source).digest('hex').slice(0, 16)}`;
|
|
658
|
+
}
|
|
271
659
|
function parseCliArgs(argv) {
|
|
272
660
|
const parsed = { confirm: false };
|
|
273
661
|
for (let index = 0; index < argv.length; index += 1) {
|
|
@@ -337,12 +725,50 @@ function isJsonRpcRequest(value) {
|
|
|
337
725
|
&& value.jsonrpc === '2.0'
|
|
338
726
|
&& typeof value.method === 'string';
|
|
339
727
|
}
|
|
728
|
+
function isRecord(value) {
|
|
729
|
+
return Boolean(value) && typeof value === 'object' && !Array.isArray(value);
|
|
730
|
+
}
|
|
731
|
+
function isPaymentRequired(value) {
|
|
732
|
+
return isRecord(value)
|
|
733
|
+
&& Array.isArray(value.accepts)
|
|
734
|
+
&& value.accepts.every(isPaymentRequirements);
|
|
735
|
+
}
|
|
736
|
+
function isPaymentRequirements(value) {
|
|
737
|
+
return isRecord(value)
|
|
738
|
+
&& typeof value.network === 'string'
|
|
739
|
+
&& typeof value.asset === 'string'
|
|
740
|
+
&& typeof value.payTo === 'string';
|
|
741
|
+
}
|
|
742
|
+
function decodeMaybeBase64Json(value) {
|
|
743
|
+
const candidates = [
|
|
744
|
+
value,
|
|
745
|
+
Buffer.from(value, 'base64').toString('utf-8'),
|
|
746
|
+
];
|
|
747
|
+
for (const candidate of candidates) {
|
|
748
|
+
try {
|
|
749
|
+
return { validJson: true, value: JSON.parse(candidate) };
|
|
750
|
+
}
|
|
751
|
+
catch {
|
|
752
|
+
continue;
|
|
753
|
+
}
|
|
754
|
+
}
|
|
755
|
+
return { validJson: false, value };
|
|
756
|
+
}
|
|
757
|
+
function firstString(record, keys) {
|
|
758
|
+
for (const key of keys) {
|
|
759
|
+
const value = record[key];
|
|
760
|
+
if (typeof value === 'string' && value.length > 0) {
|
|
761
|
+
return value;
|
|
762
|
+
}
|
|
763
|
+
}
|
|
764
|
+
return undefined;
|
|
765
|
+
}
|
|
340
766
|
function printUsageAndExit(exitCode) {
|
|
341
767
|
const usage = [
|
|
342
768
|
'sap-mcp-x402-paid-call --tool <tool> --arguments <json> --max-usd <n> --confirm',
|
|
343
769
|
'',
|
|
344
770
|
'Options:',
|
|
345
|
-
|
|
771
|
+
` --endpoint <url> Hosted MCP endpoint. Defaults to ${DEFAULT_X402_PAID_CALL_ENDPOINT}`,
|
|
346
772
|
' --tool <name> Remote MCP tool name to call.',
|
|
347
773
|
' --arguments <json> JSON object passed as tools/call arguments.',
|
|
348
774
|
' --body <json> Full JSON-RPC request object. Alternative to --tool.',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"x402-paid-call.js","sourceRoot":"","sources":["../../src/payments/x402-paid-call.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"x402-paid-call.js","sourceRoot":"","sources":["../../src/payments/x402-paid-call.ts"],"names":[],"mappings":"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"}
|
|
@@ -210,6 +210,7 @@ function buildContextMessage(options) {
|
|
|
210
210
|
- When summarizing hosted mode, say: "server is non-custodial; user signatures come from the local SAP profile or external signer." Do **not** say "signer not configured", "read-only only", "writes unavailable", or "remote MCP broken" unless a specific tool call returns that explicit error.
|
|
211
211
|
- Hosted writes are available only after the user completes the required x402/pay.sh payment proof and tool-specific signing flow. The hosted server must never be described as holding or needing the user's private key.
|
|
212
212
|
- Hosted paid tools should be paid through x402/pay.sh from the user's local SAP profile or external signer. Do not silently switch to local stdio just to avoid payment.
|
|
213
|
+
- Hosted remote is accountless: if \`sap_profile_current\` returns \`accountModel: hosted-remote-accountless\`, do not report \`default\` as the user's local profile. To inspect the user's local wallet/profile, call the local \`sap_payments.sap_payments_profile_current\` bridge when it is available.
|
|
213
214
|
- Local stdio is a developer fallback only when the user explicitly asks for local execution or the MCP client cannot perform remote/x402 calls.
|
|
214
215
|
- For Hermes global \`~/.hermes/mcp.json\`, use a flat \`sap: { url, transport }\` entry, not a nested \`mcpServers.sap\` object.
|
|
215
216
|
- For Hermes profile YAML, use \`mcp_servers.sap.url\` and \`mcp_servers.sap.transport\`.
|
|
@@ -254,15 +255,18 @@ For transactions, preview first with \`sap_preview_transaction\`; sign only with
|
|
|
254
255
|
### ⚡ x402 Hosted Payment Fast Path
|
|
255
256
|
- Local stdio MCP tools are free; do not create x402 payment payloads for local stdio calls.
|
|
256
257
|
- SAP MCP skill bootstrap tools are free: use \`sap_skills_list\`, \`sap_skills_bundle\`, and \`sap_skills_install\` directly. Do not route skill installation through \`sap_x402_paid_call\`.
|
|
258
|
+
- Basic wallet balance reads are free hosted tools: call \`sol_get_balance\`, \`spl-token_getBalance\`, and \`spl-token_getTokenAccounts\` directly on hosted SAP MCP. Do not route them through \`sap_payments_call_paid_tool\` or describe balance failures as x402 facilitator failures unless a paid tool actually returned the error.
|
|
257
259
|
- Hosted paid \`tools/call\` requests return HTTP \`402\` with \`PAYMENT-REQUIRED\` instructions.
|
|
258
260
|
- Treat \`402 Payment Required\` as the expected hosted payment handshake, not as a tool failure.
|
|
261
|
+
- Before any hosted paid/write workflow, call local \`sap_payments_readiness\` when the \`sap_payments\` bridge is available. It reports hosted MCP connectivity, local profile, signer, SOL/USDC payment balance, policy limits, and next action without exposing keypair bytes.
|
|
259
262
|
- Reuse the initialized MCP session and retry the same MCP method with the same params after payment; the x402 receipt is bound to method and params, not to JSON-RPC id.
|
|
260
263
|
- Prefer \`PAYMENT-SIGNATURE\` for the payment proof header; accept \`X-PAYMENT\` only when the client runtime requires it.
|
|
261
264
|
- Capture \`PAYMENT-RESPONSE\` or \`X-PAYMENT-RESPONSE\` as the settlement receipt bound to the tool output.
|
|
262
265
|
- x402/pay.sh payment payloads must be signed by the user's wizard-created SAP profile wallet or external signer, never by the hosted server.
|
|
263
|
-
-
|
|
264
|
-
-
|
|
265
|
-
- If
|
|
266
|
+
- Prefer the local \`sap_payments_call_paid_tool\` bridge with \`maxAttempts\` for hosted paid/write tools when readiness is ready/degraded and the runtime cannot natively replay x402 challenges. \`sap_x402_paid_call\` is a legacy alias.
|
|
267
|
+
- Use low-level \`sap_payments_prepare_challenge\`, \`sap_payments_sign_challenge\`, and \`sap_payments_verify_receipt\` only for custom x402 clients or troubleshooting; normal paid tool execution should go through \`sap_payments_call_paid_tool\`.
|
|
268
|
+
- If x402 returns \`BlockhashNotFound\`, \`transaction_simulation_failed\`, \`node is behind\`, or another retryable facilitator/RPC error, do not declare SAP MCP down and do not reuse the old signed payment payload. Re-run the local \`sap_payments_call_paid_tool\` helper or create a fresh payment challenge/payload with the same MCP method and params.
|
|
269
|
+
- If the current client runtime cannot produce x402 payment headers, use the local SAP MCP \`sap_payments_call_paid_tool\` bridge when available. If it is missing, ask the user to run the SAP MCP wizard to repair the local \`sap_payments\` MCP entry. Do not ask for a separate x402 plugin first, and do not call the local free server as an implicit substitute.
|
|
266
270
|
|
|
267
271
|
`;
|
|
268
272
|
if (includeProfiles && allProfiles.length > 0) {
|