@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.
@@ -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 signature = await context.connection.sendRawTransaction(decodeInputBytes(signedTransactionBase64, 'base64'), {
238
- skipPreflight: input.skipPreflight,
239
- maxRetries: input.maxRetries,
240
- });
241
- result.submitted = true;
242
- result.signature = signature;
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
- submitted: true,
246
- signature,
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 rawTransaction = decodeInputBytes(input.signedTransaction, input.encoding);
345
- await assertTransactionPolicy(context, deserializeTransaction(input.signedTransaction, input.encoding));
346
- const signature = await context.connection.sendRawTransaction(rawTransaction, {
347
- skipPreflight: input.skipPreflight,
348
- maxRetries: input.maxRetries,
349
- });
350
- return createTextResponse(JSON.stringify({
351
- success: true,
352
- signature,
353
- }, null, 2));
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;AAkLtD;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,GAAG,IAAI,CAatF"}
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 transaction was submitted.' },
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 configured RPC. Never create temporary signing scripts, read keypair JSON, or call hosted sap_sign_transaction for user-owned signatures. Requires confirm: true.',
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. If this tool is missing or no signer is configured, ask the user to run the SAP MCP wizard full setup or repair flow and restart the agent runtime.',
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) {