@oobe-protocol-labs/sap-mcp-server 0.9.21 → 0.9.22

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 CHANGED
@@ -187,7 +187,7 @@ SAP_MCP_FACILITATOR_NETWORKS=devnet
187
187
  SAP_MCP_PRICE_READ_PREMIUM_USD=0.001
188
188
  SAP_MCP_PRICE_BUILDER_USD=0.008
189
189
  SAP_MCP_PRICE_VALUE_FIXED_USD=0.09
190
- SAP_MCP_PRICE_HEAVY_VALUE_USD=0.15
190
+ SAP_MCP_PRICE_HEAVY_VALUE_USD=0.05
191
191
  SAP_MCP_PRICE_VALUE_BPS=0
192
192
  SAP_MCP_PRICE_MIN_USD=0.001
193
193
  SAP_MCP_PRICE_MAX_USD=100
package/CHANGELOG.md CHANGED
@@ -2,6 +2,139 @@
2
2
 
3
3
  All notable changes to this project are documented in this file.
4
4
 
5
+ ## 0.9.22 - 2026-07-25
6
+
7
+ ### Added
8
+
9
+ - **`signerProfile` per-call parameter** on `sap_payments_finalize_transaction`.
10
+ Agents can now sign with a specific profile without switching `.active-profile`
11
+ manually. Multiple profiles coexist in the same session. Eliminates the #1
12
+ source of agent friction: profile-switch juggling + stale signer cache.
13
+ - **`sap_build_sol_transfer`** — Hosted unsigned builder for native SOL transfers
14
+ using `SystemProgram.transfer`. Fills the gap left by `spl-token_transferSol`
15
+ (local-signer-only). Returns base64 unsigned transaction for local signing.
16
+ - **`sap_build_spl_transfer`** — Hosted unsigned builder for SPL token transfers
17
+ with idempotent ATA creation. Uses raw `@solana/web3.js` `TransactionInstruction`
18
+ (no `@solana/spl-token` dependency). Returns base64 unsigned transaction.
19
+ - **x402 idempotency cache** in `McpMonetizationGate` — prevents double-charge on
20
+ retry. Successful settlements are cached by `requestHash` for 5 minutes
21
+ (max 10,000 entries, LRU eviction, opportunistic pruning). If the same
22
+ request is retried after a network failure, the cached settlement is returned
23
+ without re-charging the payer's USDC.
24
+ - **x402 nonce + TTL strict validation** — `validatePaymentRequirementsForDecision`
25
+ now enforces `maxTimeoutSeconds ≤ 120` and rejects invalid/missing TTL values.
26
+ Prevents stale challenge replay attacks.
27
+ - **Challenge-signature parameter** on `sap_profile_switch` — optional Ed25519
28
+ signature proving ownership of the target profile keypair. Prevents
29
+ impersonation via manual `.active-profile` file edits.
30
+ - **`preloadPremiumProviders`** at server startup — providers are eagerly loaded
31
+ and connected when the server boots, not lazily on first request. The
32
+ `providerHealth` response now reflects real provider status immediately.
33
+ - **3 new free meme-radar providers** (DexScreener + Solana RPC, no API keys):
34
+ - `meme.newlisting.alert` — detects newly listed tokens via DexScreener
35
+ `pairCreatedAt` with honeypot/dev-wallet risk flags.
36
+ - `meme.rugpull.detector` — on-chain mint/freeze authority checks via Solana
37
+ RPC + DexScreener liquidity drain detection. Risk score 0-1 with
38
+ exit/monitor/caution actions.
39
+ - `meme.social.sentiment` — bull/bear scores from DexScreener price momentum
40
+ (1h/6h/24h weighted) with volume acceleration confidence.
41
+ - **Multi-feed Pyth** — `pyth.price.tick` and `pyth.volatility.watch` now poll
42
+ 5 feeds by default (SOL/USD, WBTC/USD, WETH/USD, JUP/USD, USDC/USD) instead
43
+ of 1. All Pyth providers converted from WebSocket to HTTP polling
44
+ (`hermes.pyth.network/v2/updates/price/latest`).
45
+ - **`signalConfidence` field** on Pyth price tick events — normalized 0-1
46
+ confidence score derived from `1 - (confidenceInterval / price)`, separate
47
+ from the raw Pyth `confidenceIntervalUsd`.
48
+ - **ATR-based SL/TP** for volatility breakout signals — `stopLoss = entry ∓
49
+ 2×ATR`, `takeProfit = entry ± 3×ATR`, with `minSpreadPct` filter (0.1%)
50
+ to discard signals too tight for on-chain execution. `action` changed from
51
+ `sell` to `swap` for spot-only agents.
52
+ - **Applied filters in webhook relay response** — `sap_premium_webhook_relay`
53
+ now returns `subscribedEvents` and `appliedFilters` in the subscription
54
+ response for agent verification.
55
+ - **`sap-mcp-optimization` skill** (devops category) — documents pre-estimate,
56
+ profile routing, build→sign→submit, x402 payment rules, readiness checks,
57
+ budget management, and premium stream consumption patterns.
58
+ - Tool count: 317 → 319. Test count: 603 (unchanged, all updated).
59
+
60
+ ### Changed
61
+
62
+ - **Premium capability prices halved** — all 13 premium capabilities now cost
63
+ 50% less per unit/event:
64
+ - `jupiter.quote.delta`: $0.02 → $0.01/min
65
+ - `pyth.price.tick`: $0.015 → $0.0075/min
66
+ - `price.threshold.crossed`: $0.001 → $0.0005/event
67
+ - `jupiter.arbitrage.scan`: $0.05 → $0.025/min
68
+ - `pyth.volatility.watch`: $0.03 → $0.015/min
69
+ - `jupiter.route.optimized`: $0.025 → $0.0125/min
70
+ - `meme.newlisting.alert`: $0.003 → $0.0015/event
71
+ - `meme.social.sentiment`: $0.02 → $0.01/min
72
+ - `meme.rugpull.detector`: $0.04 → $0.02/min
73
+ - `meme.volume.spike`: $0.025 → $0.0125/min
74
+ - `tech.github.activity`: $0.002 → $0.001/event
75
+ - `tech.tvl.change`: $0.02 → $0.01/min
76
+ - `tech.tokenomics.analysis`: $0.004 → $0.002/event
77
+ - **Heavy value-action price**: $0.15 → $0.05 (max accepted x402 for
78
+ value-action tier tools).
79
+ - **Auto-pay threshold**: $0.02 → $0.05 (`SAP_MCP_X402_AUTO_PAY_MAX_USD`).
80
+ Read-premium ($0.001) and builder ($0.008) calls now auto-pay without
81
+ confirmation.
82
+ - **Premium poll/flush/metrics FREE** — `sap_premium_stream_poll`,
83
+ `sap_premium_stream_flush`, `sap_premium_webhook_relay_status`,
84
+ `sap_premium_metrics`, `sap_premium_session_status`, `sap_premium_close_session`
85
+ moved to FREE_TOOLS + STRICT_FREE_TOOLS. No x402 charge for consumption
86
+ or diagnostics.
87
+ - **Birdeye dependency removed** — all meme-radar capabilities now use
88
+ DexScreener + Solana RPC (both free, no API key). `SAP_MCP_PREMIUM_BIRDEYE_API_URL`
89
+ removed from all capability definitions and test fixtures.
90
+ - **Builder tool descriptions** now mention `sap_payments_finalize_transaction`
91
+ as the 1-call alternative to the 3-step preview→sign→submit flow.
92
+ - **`sap_estimate_tool_cost`** description now explicitly says "dry-run — no
93
+ charge, no x402 challenge" and includes `maxPriceUsd = estimate × 1.25`
94
+ guidance.
95
+ - **`sap_quick_context` nextAction** now includes explicit routing guidance:
96
+ accountless hosted → use `sap_payments_profile_current`, `signerProfile`
97
+ per-call, `sap_build_sol_transfer`/`sap_build_spl_transfer`, no signing scripts.
98
+
99
+ ### Fixed
100
+
101
+ - **Bridge cache coherence** — `sap_payments_profile_current` now re-reads
102
+ `.active-profile` and re-resolves the signer on every call. No more stale
103
+ signer after manual profile switch.
104
+ - **`sap_profile_switch` guidance** — when the hosted server is accountless,
105
+ the response now provides 3 concrete options (local bridge, manual edit,
106
+ CLI command) instead of a bare "Profile does not exist" error. Includes
107
+ stale cache warning.
108
+ - **Provider preload at startup** — providers are loaded and connected when
109
+ the server boots, not on first request. `providerHealth` is populated
110
+ immediately, not empty `{}`.
111
+ - **Provider delivery loop logging** — all `catch` blocks in provider-bridge,
112
+ webhook-engine, premium-tools, and premium-routes now log errors to stderr
113
+ instead of swallowing silently.
114
+ - **Meme volume spike provider** — replaced nonexistent DexScreener
115
+ `/v1/solana/volume` endpoint with real API (`/latest/dex/tokens/{mint}` and
116
+ `/latest/dex/search`). Added `activeMints` tracking, EMA baseline spike
117
+ detection, `MAX_MINTS_PER_POLL` limit.
118
+ - **Pyth providers** — converted from WebSocket (`wss://hermes.pyth.network/v2/ws`,
119
+ rejects bare connections) to HTTP polling (`/v2/updates/price/latest`).
120
+ - **All 12 provider import paths** — fixed `../../types.js` → `../types.js`.
121
+ - **`onchain.solana.ts`** — imported `ConfirmedSignatureInfo` from
122
+ `@solana/web3.js` to fix `blockTime: number | null | undefined` type mismatch.
123
+ - **Stale config references** — cleaned up all `0.02` auto-pay and `0.15`
124
+ heavy value refs in `.env.example`, `config.example.json`,
125
+ `config.secure-example.json`, `schema.json`, `mcp-client-injection.ts`, and
126
+ `explain-x402-settlement.prompt.ts`.
127
+
128
+ ### Security
129
+
130
+ - x402 idempotency cache prevents double-charge on retry (point 2c).
131
+ - x402 nonce + TTL strict validation caps challenge lifetime at 120s (point 5b).
132
+ - Challenge-signature parameter on profile switch prevents impersonation (point 5a).
133
+ - `secretMaterial: keypair-bytes-never-returned` guarantee maintained across
134
+ all signing tools.
135
+ - No secrets, private keys, or keypair bytes in source code (security audit clean).
136
+ - 0 dependency vulnerabilities (`pnpm audit`).
137
+
5
138
  ## 0.9.21 - 2026-07-25
6
139
 
7
140
  ### Added
@@ -56,7 +56,7 @@
56
56
  "readPremiumUsd": 0.001,
57
57
  "builderUsd": 0.008,
58
58
  "valueFixedUsd": 0.09,
59
- "heavyValueUsd": 0.15,
59
+ "heavyValueUsd": 0.05,
60
60
  "valueBps": 0,
61
61
  "minUsd": 0.001,
62
62
  "maxUsd": 100
@@ -59,7 +59,7 @@
59
59
  "readPremiumUsd": 0.001,
60
60
  "builderUsd": 0.008,
61
61
  "valueFixedUsd": 0.09,
62
- "heavyValueUsd": 0.15,
62
+ "heavyValueUsd": 0.05,
63
63
  "valueBps": 0,
64
64
  "minUsd": 0.001,
65
65
  "maxUsd": 100
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oobe-protocol-labs/sap-mcp-server",
3
- "version": "0.9.21",
3
+ "version": "0.9.22",
4
4
  "mcpName": "ai.oobeprotocol.sap.mcp/sap-mcp",
5
5
  "description": "Official MCP gateway for OOBE Protocol SAP — AI agents can interact with SAP identity, registry, reputation, tools, memory, payments, settlement, and proof-of-execution on Solana",
6
6
  "type": "module",