@oobe-protocol-labs/sap-mcp-server 0.9.11 → 0.9.13
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 +35 -0
- package/USER_DOCS/00_START_HERE.md +1 -1
- package/USER_DOCS/04_CLIENT_CONFIGS.md +3 -3
- package/USER_DOCS/05_SKILLS_AND_TOOLS.md +1 -1
- package/USER_DOCS/06_DESKTOP_GUI_WIZARD.md +5 -5
- package/dist/core/constants.d.ts +1 -1
- package/dist/core/constants.js +1 -1
- package/dist/remote/public-home/sections.d.ts.map +1 -1
- package/dist/remote/public-home/sections.js +4 -2
- package/dist/remote/public-home/sections.js.map +1 -1
- package/dist/remote/public-home/types.d.ts +1 -0
- package/dist/remote/public-home/types.d.ts.map +1 -1
- package/dist/remote/server.d.ts +1 -0
- package/dist/remote/server.d.ts.map +1 -1
- package/dist/remote/server.js +153 -0
- package/dist/remote/server.js.map +1 -1
- package/dist/tools/agent-start-tool.js +5 -2
- package/dist/tools/agent-start-tool.js.map +1 -1
- package/dist/tools/transaction-tools.d.ts +56 -0
- package/dist/tools/transaction-tools.d.ts.map +1 -1
- package/dist/tools/transaction-tools.js +215 -18
- package/dist/tools/transaction-tools.js.map +1 -1
- package/dist/tools/x402-paid-call-tool.d.ts.map +1 -1
- package/dist/tools/x402-paid-call-tool.js +109 -5
- package/dist/tools/x402-paid-call-tool.js.map +1 -1
- package/docs/06_PAYMENTS_X402_AND_PAYSH.md +7 -2
- package/docs/07_ENDPOINTS_AND_CLIENTS.md +1 -1
- package/docs/14_DESKTOP_WIZARD_RELEASE.md +1 -1
- package/package.json +1 -1
- package/server.json +3 -3
- package/skills/sap-payments-x402/SKILL.md +6 -2
- package/smithery.config.schema.json +7 -0
|
@@ -8,6 +8,9 @@ import { registerTool } from '../adapters/mcp/sdk-compat.js';
|
|
|
8
8
|
import { createTextResponse } from '../adapters/mcp/tool-response.js';
|
|
9
9
|
const SYSTEM_TRANSFER_INSTRUCTION_INDEX = 2;
|
|
10
10
|
const SYSTEM_TRANSFER_LAYOUT_BYTES = 12;
|
|
11
|
+
const DEFAULT_CONFIRMATION_TIMEOUT_MS = 90_000;
|
|
12
|
+
const MAX_CONFIRMATION_TIMEOUT_MS = 180_000;
|
|
13
|
+
const DEFAULT_TX_SUBMIT_RELAY_URL = 'https://mcp.sap.oobeprotocol.ai/tx/submit';
|
|
11
14
|
/**
|
|
12
15
|
* @name decodeInputBytes
|
|
13
16
|
* @description Decodes base64/base58 transaction text into raw bytes.
|
|
@@ -134,6 +137,162 @@ export function serializeTransaction(transaction) {
|
|
|
134
137
|
verifySignatures: false,
|
|
135
138
|
}).toString('base64');
|
|
136
139
|
}
|
|
140
|
+
/**
|
|
141
|
+
* @name submitSignedTransactionWithLifecycle
|
|
142
|
+
* @description Submits a signed transaction through the configured local RPC and waits for a bounded confirmation result.
|
|
143
|
+
* @param context - Shared MCP runtime context.
|
|
144
|
+
* @param input - Signed transaction plus send/confirmation options.
|
|
145
|
+
* @returns Submission lifecycle result with retry guidance.
|
|
146
|
+
*/
|
|
147
|
+
export async function submitSignedTransactionWithLifecycle(context, input) {
|
|
148
|
+
const signedTransaction = input.signedTransaction;
|
|
149
|
+
const encoding = input.encoding ?? 'base64';
|
|
150
|
+
const rawTransaction = decodeInputBytes(signedTransaction, encoding);
|
|
151
|
+
await assertTransactionPolicy(context, deserializeTransaction(signedTransaction, encoding));
|
|
152
|
+
const signature = await context.connection.sendRawTransaction(rawTransaction, {
|
|
153
|
+
skipPreflight: input.skipPreflight,
|
|
154
|
+
maxRetries: input.maxRetries ?? context.config.maxRetries,
|
|
155
|
+
});
|
|
156
|
+
const confirmationTimeoutMs = boundConfirmationTimeout(input.confirmationTimeoutMs);
|
|
157
|
+
const desiredCommitment = input.commitment ?? 'confirmed';
|
|
158
|
+
const confirmation = await waitForSignatureStatus(context, signature, confirmationTimeoutMs, desiredCommitment);
|
|
159
|
+
return {
|
|
160
|
+
success: confirmation.success,
|
|
161
|
+
submitted: true,
|
|
162
|
+
signature,
|
|
163
|
+
confirmationStatus: confirmation.status,
|
|
164
|
+
retrySafe: confirmation.retrySafe,
|
|
165
|
+
...(confirmation.slot === undefined ? {} : { slot: confirmation.slot }),
|
|
166
|
+
explorerUrl: `https://solscan.io/tx/${signature}`,
|
|
167
|
+
audit: {
|
|
168
|
+
intentId: input.intentId ?? `sap-tx-${Date.now()}`,
|
|
169
|
+
submittedVia: 'local-rpc',
|
|
170
|
+
confirmationTimeoutMs,
|
|
171
|
+
desiredCommitment,
|
|
172
|
+
retrySafe: confirmation.retrySafe,
|
|
173
|
+
rule: confirmation.success
|
|
174
|
+
? 'The signed transaction was submitted and observed on-chain before returning success.'
|
|
175
|
+
: 'The signed transaction was submitted but did not reach the requested confirmation state before timeout; retry only when retrySafe is true and the user confirms.',
|
|
176
|
+
},
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* @name submitSignedTransactionViaRelay
|
|
181
|
+
* @description Submits a signed transaction to the hosted OOBE submit relay. The relay never signs; it only broadcasts and confirms already-signed bytes.
|
|
182
|
+
* @param input - Signed transaction plus send/confirmation options.
|
|
183
|
+
* @returns Relay lifecycle result with retry guidance.
|
|
184
|
+
*/
|
|
185
|
+
export async function submitSignedTransactionViaRelay(input) {
|
|
186
|
+
const relayUrl = input.submitRelayUrl ?? process.env.SAP_MCP_TX_SUBMIT_RELAY_URL ?? DEFAULT_TX_SUBMIT_RELAY_URL;
|
|
187
|
+
validateRelayUrl(relayUrl);
|
|
188
|
+
const response = await fetch(relayUrl, {
|
|
189
|
+
method: 'POST',
|
|
190
|
+
headers: {
|
|
191
|
+
'Content-Type': 'application/json',
|
|
192
|
+
Accept: 'application/json',
|
|
193
|
+
},
|
|
194
|
+
body: JSON.stringify({
|
|
195
|
+
signedTransaction: input.signedTransaction,
|
|
196
|
+
encoding: input.encoding ?? 'base64',
|
|
197
|
+
skipPreflight: input.skipPreflight,
|
|
198
|
+
maxRetries: input.maxRetries,
|
|
199
|
+
confirmationTimeoutMs: input.confirmationTimeoutMs,
|
|
200
|
+
commitment: input.commitment,
|
|
201
|
+
intentId: input.intentId,
|
|
202
|
+
}),
|
|
203
|
+
});
|
|
204
|
+
const body = await response.json().catch(() => undefined);
|
|
205
|
+
if (!response.ok) {
|
|
206
|
+
const message = typeof body === 'object' && body && 'error' in body
|
|
207
|
+
? String(body.error)
|
|
208
|
+
: `submit relay returned HTTP ${response.status}`;
|
|
209
|
+
throw new Error(message);
|
|
210
|
+
}
|
|
211
|
+
if (!isRelaySubmitResult(body)) {
|
|
212
|
+
throw new Error('submit relay returned an invalid transaction lifecycle response.');
|
|
213
|
+
}
|
|
214
|
+
return {
|
|
215
|
+
...body,
|
|
216
|
+
audit: {
|
|
217
|
+
...body.audit,
|
|
218
|
+
submittedVia: 'hosted-submit-relay',
|
|
219
|
+
relayUrl,
|
|
220
|
+
signerBoundary: 'local-signer-remote-submit-only',
|
|
221
|
+
},
|
|
222
|
+
};
|
|
223
|
+
}
|
|
224
|
+
async function waitForSignatureStatus(context, signature, timeoutMs, desiredCommitment) {
|
|
225
|
+
const startedAt = Date.now();
|
|
226
|
+
let lastStatus = 'missing';
|
|
227
|
+
let lastSlot;
|
|
228
|
+
while (Date.now() - startedAt < timeoutMs) {
|
|
229
|
+
const statuses = await context.connection.getSignatureStatuses([signature], { searchTransactionHistory: true });
|
|
230
|
+
const status = statuses.value[0];
|
|
231
|
+
if (status?.err) {
|
|
232
|
+
return {
|
|
233
|
+
success: false,
|
|
234
|
+
retrySafe: true,
|
|
235
|
+
status: 'failed',
|
|
236
|
+
...(status.slot === undefined ? {} : { slot: status.slot }),
|
|
237
|
+
};
|
|
238
|
+
}
|
|
239
|
+
if (status) {
|
|
240
|
+
lastStatus = status.confirmationStatus ?? 'processed';
|
|
241
|
+
lastSlot = status.slot;
|
|
242
|
+
if (commitmentReached(lastStatus, desiredCommitment)) {
|
|
243
|
+
return {
|
|
244
|
+
success: true,
|
|
245
|
+
retrySafe: false,
|
|
246
|
+
status: lastStatus,
|
|
247
|
+
...(lastSlot === undefined ? {} : { slot: lastSlot }),
|
|
248
|
+
};
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
await sleep(2_000);
|
|
252
|
+
}
|
|
253
|
+
return {
|
|
254
|
+
success: false,
|
|
255
|
+
retrySafe: lastStatus === 'missing',
|
|
256
|
+
status: lastStatus === 'missing' ? 'expired_or_not_landed' : lastStatus,
|
|
257
|
+
...(lastSlot === undefined ? {} : { slot: lastSlot }),
|
|
258
|
+
};
|
|
259
|
+
}
|
|
260
|
+
function commitmentReached(current, desired) {
|
|
261
|
+
const rank = {
|
|
262
|
+
processed: 1,
|
|
263
|
+
confirmed: 2,
|
|
264
|
+
finalized: 3,
|
|
265
|
+
};
|
|
266
|
+
return (rank[current] ?? 0) >= rank[desired];
|
|
267
|
+
}
|
|
268
|
+
function boundConfirmationTimeout(value) {
|
|
269
|
+
if (!Number.isFinite(value)) {
|
|
270
|
+
return DEFAULT_CONFIRMATION_TIMEOUT_MS;
|
|
271
|
+
}
|
|
272
|
+
return Math.max(15_000, Math.min(Number(value), MAX_CONFIRMATION_TIMEOUT_MS));
|
|
273
|
+
}
|
|
274
|
+
function validateRelayUrl(value) {
|
|
275
|
+
const url = new URL(value);
|
|
276
|
+
if (url.protocol !== 'https:' && url.hostname !== '127.0.0.1' && url.hostname !== 'localhost') {
|
|
277
|
+
throw new Error('submitRelayUrl must use https, localhost, or 127.0.0.1.');
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
function isRelaySubmitResult(value) {
|
|
281
|
+
if (!value || typeof value !== 'object') {
|
|
282
|
+
return false;
|
|
283
|
+
}
|
|
284
|
+
const record = value;
|
|
285
|
+
return typeof record.success === 'boolean'
|
|
286
|
+
&& record.submitted === true
|
|
287
|
+
&& typeof record.signature === 'string'
|
|
288
|
+
&& typeof record.confirmationStatus === 'string'
|
|
289
|
+
&& typeof record.retrySafe === 'boolean'
|
|
290
|
+
&& typeof record.explorerUrl === 'string'
|
|
291
|
+
&& typeof record.audit === 'object';
|
|
292
|
+
}
|
|
293
|
+
async function sleep(ms) {
|
|
294
|
+
await new Promise(resolve => setTimeout(resolve, ms));
|
|
295
|
+
}
|
|
137
296
|
/**
|
|
138
297
|
* @name describeTransaction
|
|
139
298
|
* @description Builds a stable JSON preview from a Solana transaction.
|
|
@@ -234,16 +393,38 @@ export async function finalizeTransactionWithLocalSigner(context, input) {
|
|
|
234
393
|
},
|
|
235
394
|
};
|
|
236
395
|
if (input.submit === true) {
|
|
237
|
-
const
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
396
|
+
const submitResult = input.submitViaRelay === false
|
|
397
|
+
? await submitSignedTransactionWithLifecycle(context, {
|
|
398
|
+
signedTransaction: signedTransactionBase64,
|
|
399
|
+
encoding: 'base64',
|
|
400
|
+
skipPreflight: input.skipPreflight,
|
|
401
|
+
maxRetries: input.maxRetries,
|
|
402
|
+
confirmationTimeoutMs: input.confirmationTimeoutMs,
|
|
403
|
+
commitment: input.commitment,
|
|
404
|
+
intentId: input.intentId,
|
|
405
|
+
})
|
|
406
|
+
: await submitSignedTransactionViaRelay({
|
|
407
|
+
signedTransaction: signedTransactionBase64,
|
|
408
|
+
encoding: 'base64',
|
|
409
|
+
skipPreflight: input.skipPreflight,
|
|
410
|
+
maxRetries: input.maxRetries,
|
|
411
|
+
confirmationTimeoutMs: input.confirmationTimeoutMs,
|
|
412
|
+
commitment: input.commitment,
|
|
413
|
+
submitRelayUrl: input.submitRelayUrl,
|
|
414
|
+
intentId: input.intentId,
|
|
415
|
+
});
|
|
416
|
+
result.success = submitResult.success;
|
|
417
|
+
result.submitted = submitResult.submitted;
|
|
418
|
+
result.signature = submitResult.signature;
|
|
419
|
+
result.confirmationStatus = submitResult.confirmationStatus;
|
|
420
|
+
result.retrySafe = submitResult.retrySafe;
|
|
421
|
+
result.explorerUrl = submitResult.explorerUrl;
|
|
243
422
|
result.audit = {
|
|
244
423
|
...result.audit,
|
|
245
|
-
|
|
246
|
-
|
|
424
|
+
...submitResult.audit,
|
|
425
|
+
submitted: submitResult.submitted,
|
|
426
|
+
signature: submitResult.signature,
|
|
427
|
+
transactionLanded: submitResult.success,
|
|
247
428
|
};
|
|
248
429
|
}
|
|
249
430
|
return result;
|
|
@@ -335,22 +516,38 @@ export function registerTransactionTools(server, context) {
|
|
|
335
516
|
encoding: { type: 'string', enum: ['base64', 'base58'], description: 'Input encoding' },
|
|
336
517
|
skipPreflight: { type: 'boolean', description: 'Skip RPC preflight checks' },
|
|
337
518
|
maxRetries: { type: 'number', description: 'Maximum RPC send retries' },
|
|
519
|
+
confirmationTimeoutMs: { type: 'number', description: 'Bounded confirmation wait in milliseconds. Defaults to 90000; maximum 180000.' },
|
|
520
|
+
commitment: { type: 'string', enum: ['processed', 'confirmed', 'finalized'], description: 'Desired confirmation status before returning success. Defaults to confirmed.' },
|
|
521
|
+
submitViaRelay: { type: 'boolean', description: 'When true, submit through the hosted OOBE relay. The relay only broadcasts already-signed bytes and never signs. Defaults to false for this local tool.' },
|
|
522
|
+
submitRelayUrl: { type: 'string', description: 'Optional submit relay URL. Must be HTTPS, localhost, or 127.0.0.1.' },
|
|
523
|
+
intentId: { type: 'string', description: 'Optional caller-provided id binding submission, confirmation, and audit output.' },
|
|
338
524
|
},
|
|
339
525
|
}, async (input) => {
|
|
340
526
|
try {
|
|
341
527
|
if (!input.signedTransaction) {
|
|
342
528
|
throw new Error('signedTransaction is required');
|
|
343
529
|
}
|
|
344
|
-
const
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
530
|
+
const result = input.submitViaRelay === true
|
|
531
|
+
? await submitSignedTransactionViaRelay({
|
|
532
|
+
signedTransaction: input.signedTransaction,
|
|
533
|
+
encoding: input.encoding,
|
|
534
|
+
skipPreflight: input.skipPreflight,
|
|
535
|
+
maxRetries: input.maxRetries,
|
|
536
|
+
confirmationTimeoutMs: input.confirmationTimeoutMs,
|
|
537
|
+
commitment: input.commitment,
|
|
538
|
+
submitRelayUrl: input.submitRelayUrl,
|
|
539
|
+
intentId: input.intentId,
|
|
540
|
+
})
|
|
541
|
+
: await submitSignedTransactionWithLifecycle(context, {
|
|
542
|
+
signedTransaction: input.signedTransaction,
|
|
543
|
+
encoding: input.encoding,
|
|
544
|
+
skipPreflight: input.skipPreflight,
|
|
545
|
+
maxRetries: input.maxRetries,
|
|
546
|
+
confirmationTimeoutMs: input.confirmationTimeoutMs,
|
|
547
|
+
commitment: input.commitment,
|
|
548
|
+
intentId: input.intentId,
|
|
549
|
+
});
|
|
550
|
+
return createTextResponse(JSON.stringify(result, null, 2), { isError: !result.success });
|
|
354
551
|
}
|
|
355
552
|
catch (error) {
|
|
356
553
|
return createTextResponse(`Error: ${error instanceof Error ? error.message : 'Unknown error'}`, { isError: true });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transaction-tools.js","sourceRoot":"","sources":["../../src/tools/transaction-tools.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"transaction-tools.js","sourceRoot":"","sources":["../../src/tools/transaction-tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"x402-paid-call-tool.d.ts","sourceRoot":"","sources":["../../src/tools/x402-paid-call-tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAIxE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"x402-paid-call-tool.d.ts","sourceRoot":"","sources":["../../src/tools/x402-paid-call-tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAIxE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAuLtD;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,GAAG,IAAI,CAatF"}
|
|
@@ -118,19 +118,24 @@ function registerPaymentsRegisterAgentTool(server, context) {
|
|
|
118
118
|
agentUri: { type: 'string', description: 'Optional URI to the agent off-chain metadata or service endpoint.' },
|
|
119
119
|
metadataUri: { type: 'string', description: 'Alias for agentUri; URI to off-chain agent metadata JSON.' },
|
|
120
120
|
x402Endpoint: { type: 'string', description: 'Optional x402 payment/discovery endpoint URL advertised by this agent.' },
|
|
121
|
+
confirmationTimeoutMs: {
|
|
122
|
+
type: 'number',
|
|
123
|
+
description: 'Optional local confirmation wait in milliseconds. Defaults to 90000 so the tool can distinguish confirmed registration from an expired/not-landed transaction.',
|
|
124
|
+
},
|
|
121
125
|
confirm: { type: 'boolean', description: 'Must be true. Confirms the user wants the local signer to submit this SAP registry transaction.' },
|
|
122
126
|
},
|
|
123
127
|
outputSchema: {
|
|
124
128
|
type: 'object',
|
|
125
129
|
properties: {
|
|
126
|
-
success: { type: 'boolean', description: 'Whether the local SAP agent registration
|
|
130
|
+
success: { type: 'boolean', description: 'Whether the local SAP agent registration account was confirmed on-chain.' },
|
|
127
131
|
signature: { type: 'string', description: 'Solana transaction signature returned by the SAP SDK.' },
|
|
132
|
+
confirmationStatus: { type: 'string', description: 'Final local confirmation result: confirmed, finalized, processed, expired, missing, or failed.' },
|
|
128
133
|
signerPublicKey: { type: 'string', description: 'Public key of the local SAP MCP signer that registered the agent.' },
|
|
129
134
|
profile: { type: 'string', description: 'Active local SAP MCP profile used for registration when available.' },
|
|
130
135
|
agent: { type: 'object', description: 'Agent registration fields submitted on-chain.' },
|
|
131
136
|
audit: { type: 'object', description: 'Agent-readable proof that the write was local, non-custodial, and did not use hosted x402.' },
|
|
132
137
|
},
|
|
133
|
-
required: ['success', 'signature', 'signerPublicKey', 'agent', 'audit'],
|
|
138
|
+
required: ['success', 'signature', 'confirmationStatus', 'signerPublicKey', 'agent', 'audit'],
|
|
134
139
|
},
|
|
135
140
|
annotations: {
|
|
136
141
|
readOnlyHint: false,
|
|
@@ -148,11 +153,47 @@ function registerPaymentsRegisterAgentTool(server, context) {
|
|
|
148
153
|
}
|
|
149
154
|
const args = parseRegisterAgentArgs(parsed);
|
|
150
155
|
const signature = await context.sapClient.agent.register(args);
|
|
156
|
+
const confirmation = await waitForLocalAgentRegistration(context, signature, parsed.confirmationTimeoutMs);
|
|
157
|
+
if (!confirmation.confirmed) {
|
|
158
|
+
return createTextResponse(JSON.stringify({
|
|
159
|
+
success: false,
|
|
160
|
+
signature,
|
|
161
|
+
confirmationStatus: confirmation.status,
|
|
162
|
+
signerPublicKey,
|
|
163
|
+
profile: activeProfile,
|
|
164
|
+
agentPda: confirmation.agentPda,
|
|
165
|
+
agent: {
|
|
166
|
+
name: args.name,
|
|
167
|
+
description: args.description,
|
|
168
|
+
agentId: args.agentId,
|
|
169
|
+
agentUri: args.agentUri,
|
|
170
|
+
x402Endpoint: args.x402Endpoint,
|
|
171
|
+
protocols: args.protocols,
|
|
172
|
+
capabilityCount: args.capabilities.length,
|
|
173
|
+
pricingTierCount: args.pricing.length,
|
|
174
|
+
},
|
|
175
|
+
audit: {
|
|
176
|
+
action: 'sap_payments_register_agent',
|
|
177
|
+
registeredLocally: true,
|
|
178
|
+
hostedX402Charged: false,
|
|
179
|
+
signerBoundary: 'local-sap-payments-bridge',
|
|
180
|
+
secretMaterial: 'keypair-bytes-never-returned',
|
|
181
|
+
transactionLanded: false,
|
|
182
|
+
retrySafe: confirmation.retrySafe,
|
|
183
|
+
rule: 'The local signer submitted the SAP registry transaction, but the transaction did not confirm or the agent account was not found inside the local confirmation window.',
|
|
184
|
+
nextAction: confirmation.retrySafe
|
|
185
|
+
? 'Ask the user for confirmation, then retry sap_payments_register_agent once with the same fields and confirm: true. Do not call hosted sap_register_agent.'
|
|
186
|
+
: 'Do not retry automatically. Inspect the signature and local RPC health first.',
|
|
187
|
+
},
|
|
188
|
+
}, null, 2), { isError: true });
|
|
189
|
+
}
|
|
151
190
|
return createTextResponse(JSON.stringify({
|
|
152
191
|
success: true,
|
|
153
192
|
signature,
|
|
193
|
+
confirmationStatus: confirmation.status,
|
|
154
194
|
signerPublicKey,
|
|
155
195
|
profile: activeProfile,
|
|
196
|
+
agentPda: confirmation.agentPda,
|
|
156
197
|
agent: {
|
|
157
198
|
name: args.name,
|
|
158
199
|
description: args.description,
|
|
@@ -169,6 +210,7 @@ function registerPaymentsRegisterAgentTool(server, context) {
|
|
|
169
210
|
hostedX402Charged: false,
|
|
170
211
|
signerBoundary: 'local-sap-payments-bridge',
|
|
171
212
|
secretMaterial: 'keypair-bytes-never-returned',
|
|
213
|
+
transactionLanded: true,
|
|
172
214
|
rule: 'Hosted sap_register_agent is accountless and cannot sign user-owned registry writes. This local bridge submitted the SAP registry transaction with the user-controlled profile signer.',
|
|
173
215
|
},
|
|
174
216
|
}, null, 2));
|
|
@@ -178,6 +220,44 @@ function registerPaymentsRegisterAgentTool(server, context) {
|
|
|
178
220
|
}
|
|
179
221
|
});
|
|
180
222
|
}
|
|
223
|
+
async function waitForLocalAgentRegistration(context, signature, timeoutMs = 90_000) {
|
|
224
|
+
const boundedTimeoutMs = Math.max(15_000, Math.min(timeoutMs, 180_000));
|
|
225
|
+
const startedAt = Date.now();
|
|
226
|
+
const [agentPda] = context.sapClient.agent.deriveAgent();
|
|
227
|
+
let lastStatus = 'missing';
|
|
228
|
+
while (Date.now() - startedAt < boundedTimeoutMs) {
|
|
229
|
+
const statuses = await context.connection.getSignatureStatuses([signature], { searchTransactionHistory: true });
|
|
230
|
+
const status = statuses.value[0];
|
|
231
|
+
if (status?.err) {
|
|
232
|
+
return {
|
|
233
|
+
confirmed: false,
|
|
234
|
+
retrySafe: true,
|
|
235
|
+
status: 'failed',
|
|
236
|
+
agentPda: agentPda.toBase58(),
|
|
237
|
+
};
|
|
238
|
+
}
|
|
239
|
+
lastStatus = status?.confirmationStatus ?? lastStatus;
|
|
240
|
+
const agent = await context.sapClient.agent.fetchNullable();
|
|
241
|
+
if (agent) {
|
|
242
|
+
return {
|
|
243
|
+
confirmed: true,
|
|
244
|
+
retrySafe: false,
|
|
245
|
+
status: status?.confirmationStatus ?? 'confirmed',
|
|
246
|
+
agentPda: agentPda.toBase58(),
|
|
247
|
+
};
|
|
248
|
+
}
|
|
249
|
+
await sleep(2_000);
|
|
250
|
+
}
|
|
251
|
+
return {
|
|
252
|
+
confirmed: false,
|
|
253
|
+
retrySafe: lastStatus === 'missing',
|
|
254
|
+
status: lastStatus === 'missing' ? 'expired_or_not_landed' : lastStatus,
|
|
255
|
+
agentPda: agentPda.toBase58(),
|
|
256
|
+
};
|
|
257
|
+
}
|
|
258
|
+
async function sleep(ms) {
|
|
259
|
+
await new Promise(resolve => setTimeout(resolve, ms));
|
|
260
|
+
}
|
|
181
261
|
function registerPaymentsCallExternalX402Tool(server) {
|
|
182
262
|
registerTool(server, 'sap_payments_call_external_x402', {
|
|
183
263
|
title: 'Pay And Call External x402 Endpoint',
|
|
@@ -241,7 +321,7 @@ function registerPaymentsCallExternalX402Tool(server) {
|
|
|
241
321
|
function registerPaymentsFinalizeTransactionTool(server, context) {
|
|
242
322
|
registerTool(server, 'sap_payments_finalize_transaction', {
|
|
243
323
|
title: 'Finalize Transaction With Local Signer',
|
|
244
|
-
description: 'Local non-custodial transaction finalizer for hosted SAP MCP builders. Use this when a hosted tool returns transactionBase64, transaction, or an unsigned Solana transaction. It previews, signs with the active local SAP MCP profile signer, and optionally submits through the
|
|
324
|
+
description: 'Local non-custodial transaction finalizer for hosted SAP MCP builders. Use this when a hosted tool returns transactionBase64, transaction, or an unsigned Solana transaction. It previews, signs with the active local SAP MCP profile signer, and optionally submits through the OOBE hosted submit relay for reliable confirmation. The relay only broadcasts already-signed bytes and never receives keypair material. Never create temporary signing scripts, read keypair JSON, or call hosted sap_sign_transaction for user-owned signatures. Requires confirm: true.',
|
|
245
325
|
inputSchema: {
|
|
246
326
|
transaction: {
|
|
247
327
|
type: 'string',
|
|
@@ -268,6 +348,23 @@ function registerPaymentsFinalizeTransactionTool(server, context) {
|
|
|
268
348
|
type: 'number',
|
|
269
349
|
description: 'Optional Solana RPC sendRawTransaction maxRetries value, used only when submit is true.',
|
|
270
350
|
},
|
|
351
|
+
confirmationTimeoutMs: {
|
|
352
|
+
type: 'number',
|
|
353
|
+
description: 'Optional bounded confirmation wait in milliseconds. Defaults to 90000; maximum 180000.',
|
|
354
|
+
},
|
|
355
|
+
commitment: {
|
|
356
|
+
type: 'string',
|
|
357
|
+
enum: ['processed', 'confirmed', 'finalized'],
|
|
358
|
+
description: 'Desired confirmation status before returning success. Defaults to confirmed.',
|
|
359
|
+
},
|
|
360
|
+
submitViaRelay: {
|
|
361
|
+
type: 'boolean',
|
|
362
|
+
description: 'When submit is true, defaults to true. Set false only when the user explicitly wants local RPC submission instead of the OOBE hosted submit relay.',
|
|
363
|
+
},
|
|
364
|
+
submitRelayUrl: {
|
|
365
|
+
type: 'string',
|
|
366
|
+
description: 'Optional submit relay URL. Must be HTTPS, localhost, or 127.0.0.1. Defaults to https://mcp.sap.oobeprotocol.ai/tx/submit.',
|
|
367
|
+
},
|
|
271
368
|
confirm: {
|
|
272
369
|
type: 'boolean',
|
|
273
370
|
description: 'Must be true. Confirms the user allows the local SAP MCP signer to sign this transaction.',
|
|
@@ -284,6 +381,9 @@ function registerPaymentsFinalizeTransactionTool(server, context) {
|
|
|
284
381
|
action: { type: 'string', description: 'preview-sign or preview-sign-submit.' },
|
|
285
382
|
submitted: { type: 'boolean', description: 'Whether the signed transaction was submitted to RPC.' },
|
|
286
383
|
signature: { type: 'string', description: 'Solana transaction signature when submit is true.' },
|
|
384
|
+
confirmationStatus: { type: 'string', description: 'Confirmed/finalized/failed/expired_or_not_landed status when submit is true.' },
|
|
385
|
+
retrySafe: { type: 'boolean', description: 'Whether the agent may ask the user to retry without risking a known landed duplicate.' },
|
|
386
|
+
explorerUrl: { type: 'string', description: 'Solana explorer URL for the submitted signature.' },
|
|
287
387
|
signerPublicKey: { type: 'string', description: 'Public key of the local signer that signed the transaction.' },
|
|
288
388
|
nativeTransferSol: { type: 'number', description: 'Estimated native SOL transferred by the transaction.' },
|
|
289
389
|
preview: { type: 'object', description: 'Decoded transaction preview and policy result.' },
|
|
@@ -667,6 +767,10 @@ function parseFinalizeTransactionInput(input) {
|
|
|
667
767
|
submit: record.submit === true,
|
|
668
768
|
skipPreflight: record.skipPreflight,
|
|
669
769
|
maxRetries: record.maxRetries,
|
|
770
|
+
confirmationTimeoutMs: record.confirmationTimeoutMs,
|
|
771
|
+
commitment: record.commitment,
|
|
772
|
+
submitViaRelay: record.submitViaRelay !== false,
|
|
773
|
+
submitRelayUrl: record.submitRelayUrl,
|
|
670
774
|
confirm: record.confirm === true,
|
|
671
775
|
intentId: record.intentId,
|
|
672
776
|
};
|
|
@@ -717,8 +821,8 @@ function formatFinalizeTransactionError(error) {
|
|
|
717
821
|
category: message.toLowerCase().includes('no local signer') || message.toLowerCase().includes('no signer')
|
|
718
822
|
? 'local_signer_missing'
|
|
719
823
|
: 'local_transaction_finalization_failed',
|
|
720
|
-
agentInstruction: 'Do not create temporary signing scripts, do not read keypair JSON, and do not call hosted sap_sign_transaction for user-owned signatures. Use sap_payments_finalize_transaction from the local sap_payments bridge.
|
|
721
|
-
nextAction: 'Call sap_payments_readiness. If the local signer is ready, retry sap_payments_finalize_transaction with confirm: true. If readiness says missing bridge or signer, run the wizard repair flow.',
|
|
824
|
+
agentInstruction: 'Do not create temporary signing scripts, do not read keypair JSON, and do not call hosted sap_sign_transaction for user-owned signatures. Use sap_payments_finalize_transaction from the local sap_payments bridge. For submit:true, prefer the default hosted submit relay unless the user explicitly requests local RPC submission.',
|
|
825
|
+
nextAction: 'Call sap_payments_readiness. If the local signer is ready, retry sap_payments_finalize_transaction with confirm: true, submit: true, and the same transaction only when retrySafe is true or the prior attempt never submitted. If readiness says missing bridge or signer, run the wizard repair flow.',
|
|
722
826
|
}, null, 2);
|
|
723
827
|
}
|
|
724
828
|
function isRetryablePaymentError(message) {
|