@oobe-protocol-labs/sap-mcp-server 0.9.37 → 0.9.50
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/.env.example +14 -0
- package/CHANGELOG.md +85 -0
- package/README.md +3 -3
- package/USER_DOCS/01_HOSTED_REMOTE_MCP.md +1 -1
- package/USER_DOCS/04_CLIENT_CONFIGS.md +3 -3
- package/USER_DOCS/06_DESKTOP_GUI_WIZARD.md +5 -5
- package/dist/config/env.d.ts +51 -0
- package/dist/config/env.d.ts.map +1 -1
- package/dist/config/env.js +32 -2
- package/dist/config/env.js.map +1 -1
- package/dist/core/constants.d.ts +1 -1
- package/dist/core/constants.js +1 -1
- package/dist/core/logger.js +1 -1
- package/dist/payments/monetization-gate.d.ts +5 -0
- package/dist/payments/monetization-gate.d.ts.map +1 -1
- package/dist/payments/monetization-gate.js +39 -2
- package/dist/payments/monetization-gate.js.map +1 -1
- package/dist/payments/prepaid-credit-store.d.ts +111 -0
- package/dist/payments/prepaid-credit-store.d.ts.map +1 -0
- package/dist/payments/prepaid-credit-store.js +230 -0
- package/dist/payments/prepaid-credit-store.js.map +1 -0
- package/dist/payments/pricing.d.ts.map +1 -1
- package/dist/payments/pricing.js +40 -1
- package/dist/payments/pricing.js.map +1 -1
- package/dist/payments/schema-validation.d.ts +52 -0
- package/dist/payments/schema-validation.d.ts.map +1 -0
- package/dist/payments/schema-validation.js +112 -0
- package/dist/payments/schema-validation.js.map +1 -0
- package/dist/payments/x402-paid-call.d.ts +21 -0
- package/dist/payments/x402-paid-call.d.ts.map +1 -1
- package/dist/payments/x402-paid-call.js +108 -3
- package/dist/payments/x402-paid-call.js.map +1 -1
- package/dist/perps/adrena/adrena-builder-commodity.d.ts +63 -0
- package/dist/perps/adrena/adrena-builder-commodity.d.ts.map +1 -0
- package/dist/perps/adrena/adrena-builder-commodity.js +200 -0
- package/dist/perps/adrena/adrena-builder-commodity.js.map +1 -0
- package/dist/perps/adrena/adrena-builder-core.d.ts +319 -0
- package/dist/perps/adrena/adrena-builder-core.d.ts.map +1 -0
- package/dist/perps/adrena/adrena-builder-core.js +517 -0
- package/dist/perps/adrena/adrena-builder-core.js.map +1 -0
- package/dist/perps/adrena/adrena-builder-liquidity.d.ts +50 -0
- package/dist/perps/adrena/adrena-builder-liquidity.d.ts.map +1 -0
- package/dist/perps/adrena/adrena-builder-liquidity.js +196 -0
- package/dist/perps/adrena/adrena-builder-liquidity.js.map +1 -0
- package/dist/perps/adrena/adrena-builder-staking.d.ts +57 -0
- package/dist/perps/adrena/adrena-builder-staking.d.ts.map +1 -0
- package/dist/perps/adrena/adrena-builder-staking.js +368 -0
- package/dist/perps/adrena/adrena-builder-staking.js.map +1 -0
- package/dist/perps/adrena/adrena-builder-trading.d.ts +160 -0
- package/dist/perps/adrena/adrena-builder-trading.d.ts.map +1 -0
- package/dist/perps/adrena/adrena-builder-trading.js +835 -0
- package/dist/perps/adrena/adrena-builder-trading.js.map +1 -0
- package/dist/perps/adrena/adrena-builder.d.ts +22 -0
- package/dist/perps/adrena/adrena-builder.d.ts.map +1 -0
- package/dist/perps/adrena/adrena-builder.js +22 -0
- package/dist/perps/adrena/adrena-builder.js.map +1 -0
- package/dist/perps/adrena/adrena-constants.d.ts +163 -0
- package/dist/perps/adrena/adrena-constants.d.ts.map +1 -0
- package/dist/perps/adrena/adrena-constants.js +122 -0
- package/dist/perps/adrena/adrena-constants.js.map +1 -0
- package/dist/perps/adrena/adrena-data-api.d.ts +180 -0
- package/dist/perps/adrena/adrena-data-api.d.ts.map +1 -0
- package/dist/perps/adrena/adrena-data-api.js +169 -0
- package/dist/perps/adrena/adrena-data-api.js.map +1 -0
- package/dist/perps/adrena/adrena-idl.d.ts +15084 -0
- package/dist/perps/adrena/adrena-idl.d.ts.map +1 -0
- package/dist/perps/adrena/adrena-idl.js +29903 -0
- package/dist/perps/adrena/adrena-idl.js.map +1 -0
- package/dist/perps/adrena/adrena-pda.d.ts +147 -0
- package/dist/perps/adrena/adrena-pda.d.ts.map +1 -0
- package/dist/perps/adrena/adrena-pda.js +211 -0
- package/dist/perps/adrena/adrena-pda.js.map +1 -0
- package/dist/perps/adrena/index.d.ts +12 -0
- package/dist/perps/adrena/index.d.ts.map +1 -0
- package/dist/perps/adrena/index.js +12 -0
- package/dist/perps/adrena/index.js.map +1 -0
- package/dist/perps/chart-indicators.d.ts +27 -0
- package/dist/perps/chart-indicators.d.ts.map +1 -0
- package/dist/perps/chart-indicators.js +345 -0
- package/dist/perps/chart-indicators.js.map +1 -0
- package/dist/perps/chart-tools.d.ts +45 -0
- package/dist/perps/chart-tools.d.ts.map +1 -0
- package/dist/perps/chart-tools.js +341 -0
- package/dist/perps/chart-tools.js.map +1 -0
- package/dist/perps/perp-analytics-tools.d.ts +20 -0
- package/dist/perps/perp-analytics-tools.d.ts.map +1 -0
- package/dist/perps/perp-analytics-tools.js +868 -0
- package/dist/perps/perp-analytics-tools.js.map +1 -0
- package/dist/perps/perp-constants.d.ts +362 -0
- package/dist/perps/perp-constants.d.ts.map +1 -0
- package/dist/perps/perp-constants.js +210 -0
- package/dist/perps/perp-constants.js.map +1 -0
- package/dist/perps/perp-decoders.d.ts +47 -0
- package/dist/perps/perp-decoders.d.ts.map +1 -0
- package/dist/perps/perp-decoders.js +332 -0
- package/dist/perps/perp-decoders.js.map +1 -0
- package/dist/policy/policy-engine.d.ts +42 -0
- package/dist/policy/policy-engine.d.ts.map +1 -1
- package/dist/policy/policy-engine.js +43 -0
- package/dist/policy/policy-engine.js.map +1 -1
- package/dist/premium/activation-manager.d.ts.map +1 -1
- package/dist/premium/activation-manager.js +20 -2
- package/dist/premium/activation-manager.js.map +1 -1
- package/dist/prompts/context/sap-agent-context.prompt.js +15 -1
- package/dist/prompts/context/sap-agent-context.prompt.js.map +1 -1
- package/dist/server/server-metadata.d.ts +15 -0
- package/dist/server/server-metadata.d.ts.map +1 -1
- package/dist/server/server-metadata.js +16 -1
- package/dist/server/server-metadata.js.map +1 -1
- package/dist/solana/ata-utils.d.ts +39 -0
- package/dist/solana/ata-utils.d.ts.map +1 -0
- package/dist/solana/ata-utils.js +49 -0
- package/dist/solana/ata-utils.js.map +1 -0
- package/dist/strategies/trade-journal.d.ts +78 -0
- package/dist/strategies/trade-journal.d.ts.map +1 -0
- package/dist/strategies/trade-journal.js +92 -0
- package/dist/strategies/trade-journal.js.map +1 -0
- package/dist/tools/adrena/adrena-commodity-tools.d.ts +15 -0
- package/dist/tools/adrena/adrena-commodity-tools.d.ts.map +1 -0
- package/dist/tools/adrena/adrena-commodity-tools.js +137 -0
- package/dist/tools/adrena/adrena-commodity-tools.js.map +1 -0
- package/dist/tools/adrena/adrena-data-tools.d.ts +23 -0
- package/dist/tools/adrena/adrena-data-tools.d.ts.map +1 -0
- package/dist/tools/adrena/adrena-data-tools.js +437 -0
- package/dist/tools/adrena/adrena-data-tools.js.map +1 -0
- package/dist/tools/adrena/adrena-helpers.d.ts +46 -0
- package/dist/tools/adrena/adrena-helpers.d.ts.map +1 -0
- package/dist/tools/adrena/adrena-helpers.js +41 -0
- package/dist/tools/adrena/adrena-helpers.js.map +1 -0
- package/dist/tools/adrena/adrena-index.d.ts +20 -0
- package/dist/tools/adrena/adrena-index.d.ts.map +1 -0
- package/dist/tools/adrena/adrena-index.js +75 -0
- package/dist/tools/adrena/adrena-index.js.map +1 -0
- package/dist/tools/adrena/adrena-limit-order-tools.d.ts +22 -0
- package/dist/tools/adrena/adrena-limit-order-tools.d.ts.map +1 -0
- package/dist/tools/adrena/adrena-limit-order-tools.js +91 -0
- package/dist/tools/adrena/adrena-limit-order-tools.js.map +1 -0
- package/dist/tools/adrena/adrena-liquidity-tools.d.ts +15 -0
- package/dist/tools/adrena/adrena-liquidity-tools.d.ts.map +1 -0
- package/dist/tools/adrena/adrena-liquidity-tools.js +108 -0
- package/dist/tools/adrena/adrena-liquidity-tools.js.map +1 -0
- package/dist/tools/adrena/adrena-snapshot-tools.d.ts +42 -0
- package/dist/tools/adrena/adrena-snapshot-tools.d.ts.map +1 -0
- package/dist/tools/adrena/adrena-snapshot-tools.js +124 -0
- package/dist/tools/adrena/adrena-snapshot-tools.js.map +1 -0
- package/dist/tools/adrena/adrena-staking-tools.d.ts +15 -0
- package/dist/tools/adrena/adrena-staking-tools.d.ts.map +1 -0
- package/dist/tools/adrena/adrena-staking-tools.js +139 -0
- package/dist/tools/adrena/adrena-staking-tools.js.map +1 -0
- package/dist/tools/adrena/adrena-trading-tools.d.ts +78 -0
- package/dist/tools/adrena/adrena-trading-tools.d.ts.map +1 -0
- package/dist/tools/adrena/adrena-trading-tools.js +556 -0
- package/dist/tools/adrena/adrena-trading-tools.js.map +1 -0
- package/dist/tools/adrena-tools.d.ts +2 -0
- package/dist/tools/adrena-tools.d.ts.map +1 -0
- package/dist/tools/adrena-tools.js +2 -0
- package/dist/tools/adrena-tools.js.map +1 -0
- package/dist/tools/client-sdk-tools.d.ts +8 -0
- package/dist/tools/client-sdk-tools.d.ts.map +1 -1
- package/dist/tools/client-sdk-tools.js +32 -7
- package/dist/tools/client-sdk-tools.js.map +1 -1
- package/dist/tools/memory-tools.d.ts.map +1 -1
- package/dist/tools/memory-tools.js +170 -0
- package/dist/tools/memory-tools.js.map +1 -1
- package/dist/tools/perp-tools.d.ts +6 -31
- package/dist/tools/perp-tools.d.ts.map +1 -1
- package/dist/tools/perp-tools.js +6 -1141
- package/dist/tools/perp-tools.js.map +1 -1
- package/dist/tools/premium-tools.d.ts.map +1 -1
- package/dist/tools/premium-tools.js +123 -5
- package/dist/tools/premium-tools.js.map +1 -1
- package/dist/tools/quick-context-tool.js +1 -0
- package/dist/tools/quick-context-tool.js.map +1 -1
- package/dist/tools/register-tools.d.ts.map +1 -1
- package/dist/tools/register-tools.js +4 -0
- package/dist/tools/register-tools.js.map +1 -1
- package/dist/tools/transaction-tools.d.ts +21 -1
- package/dist/tools/transaction-tools.d.ts.map +1 -1
- package/dist/tools/transaction-tools.js +114 -30
- 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 +288 -0
- package/dist/tools/x402-paid-call-tool.js.map +1 -1
- package/docs/07_ENDPOINTS_AND_CLIENTS.md +1 -1
- package/docs/10_OPERATIONS_RELEASE_AND_PM2.md +54 -6
- package/docs/14_DESKTOP_WIZARD_RELEASE.md +3 -3
- package/docs/BRANCH_AND_CI.md +2 -2
- package/package.json +3 -2
- package/server.json +3 -3
- package/skills/sap-defi/SKILL.md +93 -22
- package/skills/sap-mcp/TOOL_REFERENCE.md +39 -4
package/dist/payments/pricing.js
CHANGED
|
@@ -57,6 +57,7 @@ const FREE_TOOLS = new Set([
|
|
|
57
57
|
'sap_premium_webhook_relay_status',
|
|
58
58
|
'sap_premium_metrics',
|
|
59
59
|
'sap_quick_context',
|
|
60
|
+
'sap_perp_builder_status',
|
|
60
61
|
// Payment readiness and single-asset price checks stay free so agents can
|
|
61
62
|
// decide whether a user wallet needs SOL/USDC before any paid attempt.
|
|
62
63
|
'sol_get_balance',
|
|
@@ -132,6 +133,7 @@ const STRICT_FREE_TOOLS = new Set([
|
|
|
132
133
|
'sap_premium_webhook_relay_status',
|
|
133
134
|
'sap_premium_metrics',
|
|
134
135
|
'sap_quick_context',
|
|
136
|
+
'sap_perp_builder_status',
|
|
135
137
|
// Payment readiness and single-asset price checks stay free in strict mode too.
|
|
136
138
|
'sol_get_balance',
|
|
137
139
|
'spl-token_getBalance',
|
|
@@ -188,6 +190,17 @@ const MICRO_READ_TOOLS = new Set([
|
|
|
188
190
|
'sap_chart_ohlc',
|
|
189
191
|
'sap_chart_long_term',
|
|
190
192
|
'sap_chart_volume_profile',
|
|
193
|
+
// Adrena Data API — lightweight REST reads from datapi.adrena.trade.
|
|
194
|
+
'sap_adrena_get_positions',
|
|
195
|
+
'sap_adrena_get_pool_info',
|
|
196
|
+
'sap_adrena_get_custody_info',
|
|
197
|
+
'sap_adrena_get_trader_info',
|
|
198
|
+
'sap_adrena_get_trader_leaderboard',
|
|
199
|
+
'sap_adrena_get_mutagen',
|
|
200
|
+
'sap_adrena_get_mutagen_leaderboard',
|
|
201
|
+
'sap_adrena_get_prices',
|
|
202
|
+
'sap_adrena_get_trading_prices',
|
|
203
|
+
'sap_adrena_get_position_status',
|
|
191
204
|
]);
|
|
192
205
|
const READ_PREMIUM_TOOLS = new Set([
|
|
193
206
|
'sap_list_all_agents',
|
|
@@ -240,12 +253,36 @@ const BUILDER_TOOLS = new Set([
|
|
|
240
253
|
'sap_x402_build_headers_from_escrow',
|
|
241
254
|
'sap_build_sol_transfer',
|
|
242
255
|
'sap_build_spl_transfer',
|
|
256
|
+
'sap_perp_build_order_transaction',
|
|
243
257
|
'jupiter_swapInstructions',
|
|
244
258
|
'magicblock_deposit',
|
|
245
259
|
'magicblock_transfer',
|
|
246
260
|
'magicblock_withdraw',
|
|
247
261
|
'magicblock_initializeMint',
|
|
248
262
|
'magicblock_requestRandomness',
|
|
263
|
+
// Adrena perps protocol — local unsigned transaction builders.
|
|
264
|
+
'sap_adrena_build_open_long',
|
|
265
|
+
'sap_adrena_build_open_short',
|
|
266
|
+
'sap_adrena_build_close_long',
|
|
267
|
+
'sap_adrena_build_close_short',
|
|
268
|
+
'sap_adrena_build_set_stop_loss',
|
|
269
|
+
'sap_adrena_build_set_take_profit',
|
|
270
|
+
'sap_adrena_build_cancel_stop_loss',
|
|
271
|
+
'sap_adrena_build_cancel_take_profit',
|
|
272
|
+
'sap_adrena_build_add_limit_order',
|
|
273
|
+
'sap_adrena_build_cancel_limit_order',
|
|
274
|
+
'sap_adrena_build_open_commodity_long',
|
|
275
|
+
'sap_adrena_build_open_commodity_short',
|
|
276
|
+
'sap_adrena_build_close_commodity_long',
|
|
277
|
+
'sap_adrena_build_close_commodity_short',
|
|
278
|
+
'sap_adrena_build_add_liquidity',
|
|
279
|
+
'sap_adrena_build_remove_liquidity',
|
|
280
|
+
'sap_adrena_build_swap',
|
|
281
|
+
'sap_adrena_build_init_user_staking',
|
|
282
|
+
'sap_adrena_build_add_liquid_stake',
|
|
283
|
+
'sap_adrena_build_remove_liquid_stake',
|
|
284
|
+
'sap_adrena_build_add_locked_stake',
|
|
285
|
+
'sap_adrena_build_claim_stakes',
|
|
249
286
|
]);
|
|
250
287
|
const VALUE_ACTION_TOOLS = new Set([
|
|
251
288
|
'jupiter_getOrder',
|
|
@@ -263,6 +300,7 @@ const VALUE_ACTION_TOOLS = new Set([
|
|
|
263
300
|
'sap_x402_prepare_payment',
|
|
264
301
|
'sap_x402_settle',
|
|
265
302
|
'sap_x402_settle_batch',
|
|
303
|
+
'sap_payments_fund_prepaid',
|
|
266
304
|
]);
|
|
267
305
|
const HEAVY_VALUE_ACTION_TOOLS = new Set([
|
|
268
306
|
'jupiter_executeOrder',
|
|
@@ -367,7 +405,7 @@ export function buildPricingCatalog(config) {
|
|
|
367
405
|
paymentRequired: true,
|
|
368
406
|
priceUsd: clampPrice(config.prices.builderUsd, config),
|
|
369
407
|
pricingRule: 'Flat builder fee for unsigned transaction builders, batched domain checks, payment-header builders, routing builders, and complex pre-execution preparation.',
|
|
370
|
-
examples: ['sap_escrow_build_create_transaction', 'sap_sns_build_manage_record_transaction', 'jupiter_swapInstructions'],
|
|
408
|
+
examples: ['sap_escrow_build_create_transaction', 'sap_sns_build_manage_record_transaction', 'sap_perp_build_order_transaction', 'jupiter_swapInstructions'],
|
|
371
409
|
},
|
|
372
410
|
'value-action': {
|
|
373
411
|
paymentRequired: true,
|
|
@@ -400,6 +438,7 @@ export function buildPricingCatalog(config) {
|
|
|
400
438
|
'Use sap_estimate_tool_cost before any paid tool call to know the exact tier, estimated USD cost, and recommended maxPriceUsd. This avoids silent cap aborts and failed x402 attempts on local-signer-only tools.',
|
|
401
439
|
'Call sap_agent_next_action before retrying payment_required, hosted_local_signer_required, transient RPC failures, missing sap_payments, or submitted signatures that have not confirmed.',
|
|
402
440
|
'Call sap_prepare_action before swaps, registry writes, escrow, external x402 calls, premium streams, or transaction finalization. It returns the fresh-data requirements, local/hosted route, confirmation policy, retry rules, and proof-tape shape without charging x402.',
|
|
441
|
+
'Call sap_perp_builder_status before any perps execution request. Perps analytics can run from hosted data/RPC, but sap_perp_build_order_transaction is registered only when a real unsigned builder provider is configured.',
|
|
403
442
|
'Use session memory for operational context and audit only. Never use memory as cached truth for token prices, Jupiter quotes/orders, balances, blockhashes, simulations, liquidity, routes, or agent account state.',
|
|
404
443
|
`sap_list_agents compact pages with limit <= ${FREE_DIRECTORY_LIMIT} are micro-read. Larger pages, full hydration, sap_discover_agents, and sap_list_all_agents are read-premium.`,
|
|
405
444
|
'Use sap_payments_call_paid_tool for hosted paid tools when the runtime does not replay x402 natively.',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pricing.js","sourceRoot":"","sources":["../../src/payments/pricing.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pricing.js","sourceRoot":"","sources":["../../src/payments/pricing.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @name payments/schema-validation
|
|
3
|
+
* @description Pre-payment schema validation for x402 paid tool calls.
|
|
4
|
+
*
|
|
5
|
+
* Validates tool arguments against the local registration store's JSON Schema
|
|
6
|
+
* BEFORE the x402 challenge is fetched and paid. This prevents wasted USDC
|
|
7
|
+
* on calls with invalid schemas (e.g. wrong parameter names, missing required
|
|
8
|
+
* fields).
|
|
9
|
+
*
|
|
10
|
+
* If the tool name is not found in the local registration store (hosted-only
|
|
11
|
+
* tools), validation is skipped — we cannot validate what we don't have the
|
|
12
|
+
* schema for. This is intentionally non-breaking: existing behavior is
|
|
13
|
+
* preserved for unknown tools.
|
|
14
|
+
*
|
|
15
|
+
* @module payments/schema-validation
|
|
16
|
+
*/
|
|
17
|
+
import type { Server } from '@modelcontextprotocol/sdk/server/index.js';
|
|
18
|
+
/**
|
|
19
|
+
* Store the server reference for pre-payment schema validation.
|
|
20
|
+
* Called once during registerX402PaidCallTool().
|
|
21
|
+
* @param server — The MCP server instance with registered tools.
|
|
22
|
+
*/
|
|
23
|
+
export declare function setValidationServer(server: Server): void;
|
|
24
|
+
/**
|
|
25
|
+
* Validation result for a tool's input arguments.
|
|
26
|
+
*/
|
|
27
|
+
export interface SchemaValidationResult {
|
|
28
|
+
/** True if arguments match the tool's schema. */
|
|
29
|
+
valid: boolean;
|
|
30
|
+
/** Human-readable validation errors (empty if valid). */
|
|
31
|
+
errors: string[];
|
|
32
|
+
/** True if validation was skipped (tool not found locally). */
|
|
33
|
+
skipped: boolean;
|
|
34
|
+
/** Tool name that was validated. */
|
|
35
|
+
toolName: string;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Validate tool arguments against the local registration store's JSON Schema.
|
|
39
|
+
*
|
|
40
|
+
* Uses simple runtime type checking against the JSON Schema properties —
|
|
41
|
+
* checks required fields, enum values, and basic types. This is intentionally
|
|
42
|
+
* lightweight (no ajv dependency) to keep the bridge fast and dependency-free.
|
|
43
|
+
*
|
|
44
|
+
* If the tool is not registered locally, returns `skipped: true` and
|
|
45
|
+
* `valid: true` — the caller should proceed with the x402 flow as normal.
|
|
46
|
+
*
|
|
47
|
+
* @param toolName — Name of the tool to validate against.
|
|
48
|
+
* @param args — Arguments to validate.
|
|
49
|
+
* @returns SchemaValidationResult with validity and error details.
|
|
50
|
+
*/
|
|
51
|
+
export declare function validateToolArguments(toolName: string, args: unknown): SchemaValidationResult;
|
|
52
|
+
//# sourceMappingURL=schema-validation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema-validation.d.ts","sourceRoot":"","sources":["../../src/payments/schema-validation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAOxE;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAExD;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,iDAAiD;IACjD,KAAK,EAAE,OAAO,CAAC;IACf,yDAAyD;IACzD,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,+DAA+D;IAC/D,OAAO,EAAE,OAAO,CAAC;IACjB,oCAAoC;IACpC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,OAAO,GACZ,sBAAsB,CA0ExB"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @name payments/schema-validation
|
|
3
|
+
* @description Pre-payment schema validation for x402 paid tool calls.
|
|
4
|
+
*
|
|
5
|
+
* Validates tool arguments against the local registration store's JSON Schema
|
|
6
|
+
* BEFORE the x402 challenge is fetched and paid. This prevents wasted USDC
|
|
7
|
+
* on calls with invalid schemas (e.g. wrong parameter names, missing required
|
|
8
|
+
* fields).
|
|
9
|
+
*
|
|
10
|
+
* If the tool name is not found in the local registration store (hosted-only
|
|
11
|
+
* tools), validation is skipped — we cannot validate what we don't have the
|
|
12
|
+
* schema for. This is intentionally non-breaking: existing behavior is
|
|
13
|
+
* preserved for unknown tools.
|
|
14
|
+
*
|
|
15
|
+
* @module payments/schema-validation
|
|
16
|
+
*/
|
|
17
|
+
import { getRegisteredTools } from '../adapters/mcp/sdk-compat.js';
|
|
18
|
+
import { logger } from '../core/logger.js';
|
|
19
|
+
/** Module-level server reference set during tool registration. */
|
|
20
|
+
let validationServer = null;
|
|
21
|
+
/**
|
|
22
|
+
* Store the server reference for pre-payment schema validation.
|
|
23
|
+
* Called once during registerX402PaidCallTool().
|
|
24
|
+
* @param server — The MCP server instance with registered tools.
|
|
25
|
+
*/
|
|
26
|
+
export function setValidationServer(server) {
|
|
27
|
+
validationServer = server;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Validate tool arguments against the local registration store's JSON Schema.
|
|
31
|
+
*
|
|
32
|
+
* Uses simple runtime type checking against the JSON Schema properties —
|
|
33
|
+
* checks required fields, enum values, and basic types. This is intentionally
|
|
34
|
+
* lightweight (no ajv dependency) to keep the bridge fast and dependency-free.
|
|
35
|
+
*
|
|
36
|
+
* If the tool is not registered locally, returns `skipped: true` and
|
|
37
|
+
* `valid: true` — the caller should proceed with the x402 flow as normal.
|
|
38
|
+
*
|
|
39
|
+
* @param toolName — Name of the tool to validate against.
|
|
40
|
+
* @param args — Arguments to validate.
|
|
41
|
+
* @returns SchemaValidationResult with validity and error details.
|
|
42
|
+
*/
|
|
43
|
+
export function validateToolArguments(toolName, args) {
|
|
44
|
+
if (!validationServer) {
|
|
45
|
+
return { valid: true, errors: [], skipped: true, toolName };
|
|
46
|
+
}
|
|
47
|
+
const tools = getRegisteredTools(validationServer);
|
|
48
|
+
const tool = tools.find((t) => t.name === toolName);
|
|
49
|
+
if (!tool) {
|
|
50
|
+
// Tool not registered locally — likely a hosted-only tool.
|
|
51
|
+
// Skip validation: we don't have the schema.
|
|
52
|
+
return { valid: true, errors: [], skipped: true, toolName };
|
|
53
|
+
}
|
|
54
|
+
const schema = tool.inputSchema;
|
|
55
|
+
if (!schema || typeof schema !== 'object') {
|
|
56
|
+
return { valid: true, errors: [], skipped: true, toolName };
|
|
57
|
+
}
|
|
58
|
+
const properties = schema['properties'];
|
|
59
|
+
const required = schema['required'];
|
|
60
|
+
const errors = [];
|
|
61
|
+
// Check required fields
|
|
62
|
+
if (required && Array.isArray(required)) {
|
|
63
|
+
const record = (args ?? {});
|
|
64
|
+
for (const field of required) {
|
|
65
|
+
if (!(field in record) || record[field] === undefined) {
|
|
66
|
+
errors.push(`Missing required parameter: "${field}"`);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
// Check types and enums for provided fields
|
|
71
|
+
if (properties && args && typeof args === 'object' && !Array.isArray(args)) {
|
|
72
|
+
const record = args;
|
|
73
|
+
for (const [key, value] of Object.entries(record)) {
|
|
74
|
+
if (value === undefined)
|
|
75
|
+
continue;
|
|
76
|
+
const propSchema = properties[key];
|
|
77
|
+
if (!propSchema)
|
|
78
|
+
continue; // extra fields are OK if additionalProperties is not false
|
|
79
|
+
// Type check
|
|
80
|
+
const expectedType = propSchema['type'];
|
|
81
|
+
if (expectedType) {
|
|
82
|
+
const actualType = Array.isArray(value) ? 'array' : typeof value;
|
|
83
|
+
if (expectedType === 'integer' && typeof value === 'number') {
|
|
84
|
+
// OK — integer is a subset of number
|
|
85
|
+
}
|
|
86
|
+
else if (actualType !== expectedType && !(expectedType === 'number' && typeof value === 'number')) {
|
|
87
|
+
errors.push(`Parameter "${key}" expected type "${expectedType}", got "${actualType}"`);
|
|
88
|
+
continue;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
// Enum check
|
|
92
|
+
const enumValues = propSchema['enum'];
|
|
93
|
+
if (enumValues && Array.isArray(enumValues)) {
|
|
94
|
+
const strValue = String(value).toUpperCase();
|
|
95
|
+
const enumUpper = enumValues.map((v) => v.toUpperCase());
|
|
96
|
+
if (!enumUpper.includes(strValue)) {
|
|
97
|
+
errors.push(`Parameter "${key}" must be one of: ${enumValues.join(', ')}. Got: "${value}"`);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
if (errors.length > 0) {
|
|
103
|
+
logger.warn('Pre-payment schema validation failed', { toolName, errors });
|
|
104
|
+
}
|
|
105
|
+
return {
|
|
106
|
+
valid: errors.length === 0,
|
|
107
|
+
errors,
|
|
108
|
+
skipped: false,
|
|
109
|
+
toolName,
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=schema-validation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema-validation.js","sourceRoot":"","sources":["../../src/payments/schema-validation.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,6 +19,10 @@ export interface X402PaidCallInput {
|
|
|
19
19
|
maxPriceUsd: number;
|
|
20
20
|
maxAttempts?: number;
|
|
21
21
|
confirm: boolean;
|
|
22
|
+
/** Prepaid session ID. When set, the bridge injects an X-SAP-Prepaid-Session
|
|
23
|
+
* header into both the unpaid probe and paid retry. If the server grants
|
|
24
|
+
* access via prepaid balance (HTTP 200), no x402 payment is charged. */
|
|
25
|
+
prepaidSessionId?: string;
|
|
22
26
|
}
|
|
23
27
|
/**
|
|
24
28
|
* @name X402ExternalCallInput
|
|
@@ -182,6 +186,23 @@ export interface X402PaidCallResult {
|
|
|
182
186
|
response: unknown;
|
|
183
187
|
attempts: number;
|
|
184
188
|
transientRetries: readonly string[];
|
|
189
|
+
/** HTTP status code from the upstream server after payment. Present when
|
|
190
|
+
* payment was charged but the upstream returned a non-OK response (401,
|
|
191
|
+
* 500, etc.). The agent can use this to request a credit or refund. */
|
|
192
|
+
upstreamHttpStatus?: number;
|
|
193
|
+
/** True when the payment was charged but the upstream failed. Agent should
|
|
194
|
+
* not retry with the same parameters — the failure is upstream, not local. */
|
|
195
|
+
paymentChargedButUpstreamFailed?: boolean;
|
|
196
|
+
/** True when an x402 payment was actually charged (signed and settled).
|
|
197
|
+
* False when the call was granted via prepaid session balance or when no
|
|
198
|
+
* payment was needed. Agents can use this to distinguish prepaid vs paid. */
|
|
199
|
+
paymentCharged?: boolean;
|
|
200
|
+
/** True when a prepaid session was used to grant access without x402
|
|
201
|
+
* payment. The prepaidSessionId field identifies which session was used. */
|
|
202
|
+
prepaidUsed?: boolean;
|
|
203
|
+
/** The prepaid session ID used for this call, if any. Present when
|
|
204
|
+
* prepaidUsed is true. */
|
|
205
|
+
prepaidSessionId?: string;
|
|
185
206
|
audit: X402PaidCallAudit;
|
|
186
207
|
}
|
|
187
208
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"x402-paid-call.d.ts","sourceRoot":"","sources":["../../src/payments/x402-paid-call.ts"],"names":[],"mappings":";AACA;;;GAGG;AAMH,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAI7G,OAAO,EAAc,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAMjE,eAAO,MAAM,+BAA+B,wCAAwC,CAAC;AAUrF;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"x402-paid-call.d.ts","sourceRoot":"","sources":["../../src/payments/x402-paid-call.ts"],"names":[],"mappings":"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"}
|
|
@@ -70,6 +70,7 @@ export async function executeX402PaidCall(input) {
|
|
|
70
70
|
maxPriceUsd: input.maxPriceUsd,
|
|
71
71
|
attempt,
|
|
72
72
|
transientRetries,
|
|
73
|
+
prepaidSessionId: input.prepaidSessionId,
|
|
73
74
|
});
|
|
74
75
|
}
|
|
75
76
|
catch (error) {
|
|
@@ -413,7 +414,11 @@ export function inspectX402Receipt(receiptHeader) {
|
|
|
413
414
|
};
|
|
414
415
|
}
|
|
415
416
|
async function executePaidAttempt(options) {
|
|
416
|
-
|
|
417
|
+
// Build prepaid header if a prepaid session ID was provided
|
|
418
|
+
const prepaidHeaders = options.prepaidSessionId
|
|
419
|
+
? { 'X-SAP-Prepaid-Session': options.prepaidSessionId }
|
|
420
|
+
: {};
|
|
421
|
+
const unpaid = await postMcp(options.endpoint, options.requestBody, options.sessionId, prepaidHeaders);
|
|
417
422
|
// If the cached session expired server-side, invalidate and re-initialize once
|
|
418
423
|
if (unpaid.response.status === 404 || isSessionNotFound(unpaid.body)) {
|
|
419
424
|
if (options.sessionRefreshAttempted) {
|
|
@@ -423,6 +428,55 @@ async function executePaidAttempt(options) {
|
|
|
423
428
|
const freshSession = await initializeMcpSession(options.endpoint);
|
|
424
429
|
return executePaidAttempt({ ...options, sessionId: freshSession, sessionRefreshAttempted: true });
|
|
425
430
|
}
|
|
431
|
+
// ── Prepaid session bypass ──────────────────────────────────────────────
|
|
432
|
+
// If the server returned 200 (not 402), the prepaid session had sufficient
|
|
433
|
+
// balance and granted access. Return the result directly without x402 payment.
|
|
434
|
+
if (options.prepaidSessionId && unpaid.response.status === 200) {
|
|
435
|
+
if (isJsonRpcError(unpaid.body)) {
|
|
436
|
+
throw new Error(`Paid MCP call returned JSON-RPC error: ${JSON.stringify(unpaid.body.error)}`);
|
|
437
|
+
}
|
|
438
|
+
const toolName = extractToolName(options.requestBody);
|
|
439
|
+
const audit = {
|
|
440
|
+
intentId: buildIntentId(options.requestBody, options.sessionId),
|
|
441
|
+
profileName: options.profileName,
|
|
442
|
+
signerAddress: options.signerAddress,
|
|
443
|
+
endpoint: options.endpoint,
|
|
444
|
+
...(toolName ? { toolName } : {}),
|
|
445
|
+
requestMethod: options.requestBody.method,
|
|
446
|
+
payment: {
|
|
447
|
+
amountUsd: 0,
|
|
448
|
+
network: 'prepaid',
|
|
449
|
+
asset: 'prepaid-session',
|
|
450
|
+
payTo: 'prepaid-session',
|
|
451
|
+
},
|
|
452
|
+
receipt: {
|
|
453
|
+
present: false,
|
|
454
|
+
},
|
|
455
|
+
attempts: options.attempt,
|
|
456
|
+
transientRetries: options.transientRetries,
|
|
457
|
+
secretMaterial: 'keypair-bytes-never-returned',
|
|
458
|
+
};
|
|
459
|
+
return {
|
|
460
|
+
success: true,
|
|
461
|
+
endpoint: options.endpoint,
|
|
462
|
+
sessionId: options.sessionId,
|
|
463
|
+
signerAddress: options.signerAddress,
|
|
464
|
+
payment: {
|
|
465
|
+
amountUsd: 0,
|
|
466
|
+
network: 'prepaid',
|
|
467
|
+
asset: 'prepaid-session',
|
|
468
|
+
payTo: 'prepaid-session',
|
|
469
|
+
},
|
|
470
|
+
response: unpaid.body,
|
|
471
|
+
attempts: options.attempt,
|
|
472
|
+
transientRetries: options.transientRetries,
|
|
473
|
+
paymentCharged: false,
|
|
474
|
+
prepaidUsed: true,
|
|
475
|
+
prepaidSessionId: options.prepaidSessionId,
|
|
476
|
+
audit,
|
|
477
|
+
};
|
|
478
|
+
}
|
|
479
|
+
// ── Normal x402 flow: 402 challenge → sign → paid retry ───────────────────
|
|
426
480
|
const paymentRequired = getPaymentRequiredResponse(options.httpClient, unpaid.response, unpaid.body);
|
|
427
481
|
const selectedRequirements = selectSingleRequirement(paymentRequired, options.maxPriceUsd);
|
|
428
482
|
const amountUsd = paymentRequirementsAmountUsd(selectedRequirements);
|
|
@@ -431,10 +485,60 @@ async function executePaidAttempt(options) {
|
|
|
431
485
|
accepts: [selectedRequirements],
|
|
432
486
|
});
|
|
433
487
|
const paymentHeaders = options.httpClient.encodePaymentSignatureHeader(paymentPayload);
|
|
434
|
-
|
|
488
|
+
// Merge prepaid header with payment header for the paid retry
|
|
489
|
+
const paid = await postMcp(options.endpoint, options.requestBody, options.sessionId, { ...prepaidHeaders, ...paymentHeaders });
|
|
435
490
|
const paymentResult = await options.httpClient.processPaymentResult(paymentPayload, name => paid.response.headers.get(name), paid.response.status);
|
|
436
491
|
if (!paid.response.ok) {
|
|
437
|
-
|
|
492
|
+
// Payment was already settled, but the upstream returned an error (401,
|
|
493
|
+
// 500, etc.). Return a structured failure instead of throwing so the
|
|
494
|
+
// agent knows the payment was charged but the service failed.
|
|
495
|
+
// This enables future credit/refund workflows.
|
|
496
|
+
const toolName = extractToolName(options.requestBody);
|
|
497
|
+
const audit = {
|
|
498
|
+
intentId: buildIntentId(options.requestBody, options.sessionId),
|
|
499
|
+
profileName: options.profileName,
|
|
500
|
+
signerAddress: options.signerAddress,
|
|
501
|
+
endpoint: options.endpoint,
|
|
502
|
+
...(toolName ? { toolName } : {}),
|
|
503
|
+
requestMethod: options.requestBody.method,
|
|
504
|
+
payment: {
|
|
505
|
+
amountUsd,
|
|
506
|
+
network: selectedRequirements.network,
|
|
507
|
+
asset: selectedRequirements.asset,
|
|
508
|
+
payTo: selectedRequirements.payTo,
|
|
509
|
+
},
|
|
510
|
+
receipt: {
|
|
511
|
+
present: Boolean(paymentResult.settleResponse),
|
|
512
|
+
...(paymentResult.settleResponse?.transaction ? { transaction: paymentResult.settleResponse.transaction } : {}),
|
|
513
|
+
...(paymentResult.settleResponse?.network ? { network: paymentResult.settleResponse.network } : {}),
|
|
514
|
+
...(paymentResult.settleResponse?.amount ? { amount: paymentResult.settleResponse.amount } : {}),
|
|
515
|
+
...(paymentResult.settleResponse?.payer ? { payer: paymentResult.settleResponse.payer } : {}),
|
|
516
|
+
},
|
|
517
|
+
attempts: options.attempt,
|
|
518
|
+
transientRetries: options.transientRetries,
|
|
519
|
+
secretMaterial: 'keypair-bytes-never-returned',
|
|
520
|
+
};
|
|
521
|
+
appendLocalPaymentAudit('hosted-paid-tool-upstream-failed', audit);
|
|
522
|
+
return {
|
|
523
|
+
success: false,
|
|
524
|
+
endpoint: options.endpoint,
|
|
525
|
+
sessionId: options.sessionId,
|
|
526
|
+
signerAddress: options.signerAddress,
|
|
527
|
+
payment: {
|
|
528
|
+
amountUsd,
|
|
529
|
+
network: selectedRequirements.network,
|
|
530
|
+
asset: selectedRequirements.asset,
|
|
531
|
+
payTo: selectedRequirements.payTo,
|
|
532
|
+
},
|
|
533
|
+
settlement: paymentResult.settleResponse,
|
|
534
|
+
response: paid.body,
|
|
535
|
+
attempts: options.attempt,
|
|
536
|
+
transientRetries: options.transientRetries,
|
|
537
|
+
upstreamHttpStatus: paid.response.status,
|
|
538
|
+
paymentChargedButUpstreamFailed: true,
|
|
539
|
+
paymentCharged: true,
|
|
540
|
+
audit,
|
|
541
|
+
};
|
|
438
542
|
}
|
|
439
543
|
if (isJsonRpcError(paid.body)) {
|
|
440
544
|
throw new Error(`Paid MCP call returned JSON-RPC error: ${JSON.stringify(paid.body.error)}`);
|
|
@@ -480,6 +584,7 @@ async function executePaidAttempt(options) {
|
|
|
480
584
|
response: paid.body,
|
|
481
585
|
attempts: options.attempt,
|
|
482
586
|
transientRetries: options.transientRetries,
|
|
587
|
+
paymentCharged: true,
|
|
483
588
|
audit,
|
|
484
589
|
};
|
|
485
590
|
}
|