@oobe-protocol-labs/sap-mcp-server 0.9.2 → 0.9.3
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 +8 -7
- package/CHANGELOG.md +731 -0
- package/README.md +9 -3
- package/USER_DOCS/00_START_HERE.md +51 -4
- package/USER_DOCS/01_HOSTED_REMOTE_MCP.md +1 -1
- package/USER_DOCS/03_PAYMENTS_X402_PAYSH.md +32 -3
- package/USER_DOCS/04_CLIENT_CONFIGS.md +14 -7
- package/USER_DOCS/05_SKILLS_AND_TOOLS.md +68 -8
- package/USER_DOCS/06_DESKTOP_GUI_WIZARD.md +20 -14
- package/USER_DOCS/07_SMITHERY_AND_MARKETPLACES.md +7 -0
- package/config.example.json +5 -4
- package/config.schema.json +9 -4
- package/config.secure-example.json +5 -4
- package/dist/adapters/index.d.ts +7 -1
- package/dist/adapters/index.d.ts.map +1 -1
- package/dist/adapters/index.js +7 -1
- package/dist/adapters/index.js.map +1 -1
- package/dist/adapters/mcp/errors.d.ts +13 -1
- package/dist/adapters/mcp/errors.d.ts.map +1 -1
- package/dist/adapters/mcp/errors.js +13 -1
- package/dist/adapters/mcp/errors.js.map +1 -1
- package/dist/adapters/mcp/index.d.ts +7 -1
- package/dist/adapters/mcp/index.d.ts.map +1 -1
- package/dist/adapters/mcp/index.js +7 -1
- package/dist/adapters/mcp/index.js.map +1 -1
- package/dist/adapters/mcp/prompt-response.d.ts +13 -1
- package/dist/adapters/mcp/prompt-response.d.ts.map +1 -1
- package/dist/adapters/mcp/prompt-response.js +13 -1
- package/dist/adapters/mcp/prompt-response.js.map +1 -1
- package/dist/adapters/mcp/resource-response.d.ts +14 -1
- package/dist/adapters/mcp/resource-response.d.ts.map +1 -1
- package/dist/adapters/mcp/resource-response.js +14 -1
- package/dist/adapters/mcp/resource-response.js.map +1 -1
- package/dist/adapters/mcp/sdk-compat.d.ts +11 -3
- package/dist/adapters/mcp/sdk-compat.d.ts.map +1 -1
- package/dist/adapters/mcp/sdk-compat.js +232 -25
- package/dist/adapters/mcp/sdk-compat.js.map +1 -1
- package/dist/adapters/mcp/tool-response.d.ts +51 -3
- package/dist/adapters/mcp/tool-response.d.ts.map +1 -1
- package/dist/adapters/mcp/tool-response.js +48 -3
- package/dist/adapters/mcp/tool-response.js.map +1 -1
- package/dist/adapters/solana/commitment.d.ts +14 -2
- package/dist/adapters/solana/commitment.d.ts.map +1 -1
- package/dist/adapters/solana/commitment.js +14 -2
- package/dist/adapters/solana/commitment.js.map +1 -1
- package/dist/adapters/solana/connection.d.ts +11 -2
- package/dist/adapters/solana/connection.d.ts.map +1 -1
- package/dist/adapters/solana/connection.js +11 -2
- package/dist/adapters/solana/connection.js.map +1 -1
- package/dist/adapters/solana/index.d.ts +7 -1
- package/dist/adapters/solana/index.d.ts.map +1 -1
- package/dist/adapters/solana/index.js +7 -1
- package/dist/adapters/solana/index.js.map +1 -1
- package/dist/adapters/solana/public-key.d.ts +11 -2
- package/dist/adapters/solana/public-key.d.ts.map +1 -1
- package/dist/adapters/solana/public-key.js +11 -2
- package/dist/adapters/solana/public-key.js.map +1 -1
- package/dist/config/defaults.d.ts +5 -0
- package/dist/config/defaults.d.ts.map +1 -1
- package/dist/config/defaults.js +5 -0
- package/dist/config/defaults.js.map +1 -1
- package/dist/config/env.d.ts +4 -0
- package/dist/config/env.d.ts.map +1 -1
- package/dist/config/env.js +15 -10
- package/dist/config/env.js.map +1 -1
- package/dist/config/index.d.ts +5 -0
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +5 -0
- package/dist/config/index.js.map +1 -1
- package/dist/config/mcp-client-injection.d.ts.map +1 -1
- package/dist/config/mcp-client-injection.js +136 -33
- package/dist/config/mcp-client-injection.js.map +1 -1
- package/dist/config/paths.d.ts +14 -1
- package/dist/config/paths.d.ts.map +1 -1
- package/dist/config/paths.js +20 -1
- package/dist/config/paths.js.map +1 -1
- package/dist/config/profiles.d.ts +3 -10
- package/dist/config/profiles.d.ts.map +1 -1
- package/dist/config/profiles.js +5 -0
- package/dist/config/profiles.js.map +1 -1
- package/dist/config/schema.d.ts +5 -0
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js +5 -0
- package/dist/config/schema.js.map +1 -1
- package/dist/config/secure-config.d.ts +5 -0
- package/dist/config/secure-config.d.ts.map +1 -1
- package/dist/config/secure-config.js +5 -0
- package/dist/config/secure-config.js.map +1 -1
- package/dist/config/setup.d.ts +5 -0
- package/dist/config/setup.d.ts.map +1 -1
- package/dist/config/setup.js +5 -0
- package/dist/config/setup.js.map +1 -1
- package/dist/config/wizard.d.ts +6 -0
- package/dist/config/wizard.d.ts.map +1 -1
- package/dist/config/wizard.js +102 -18
- package/dist/config/wizard.js.map +1 -1
- package/dist/config-cli.d.ts +3 -13
- package/dist/config-cli.d.ts.map +1 -1
- package/dist/config-cli.js +14 -1
- package/dist/config-cli.js.map +1 -1
- package/dist/core/constants.d.ts +33 -6
- package/dist/core/constants.d.ts.map +1 -1
- package/dist/core/constants.js +38 -8
- package/dist/core/constants.js.map +1 -1
- package/dist/core/errors.d.ts +5 -0
- package/dist/core/errors.d.ts.map +1 -1
- package/dist/core/errors.js +5 -0
- package/dist/core/errors.js.map +1 -1
- package/dist/core/guards.d.ts +5 -0
- package/dist/core/guards.d.ts.map +1 -1
- package/dist/core/guards.js +3 -1
- package/dist/core/guards.js.map +1 -1
- package/dist/core/index.d.ts +7 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +7 -1
- package/dist/core/index.js.map +1 -1
- package/dist/core/logger.js +1 -1
- package/dist/core/result.d.ts +77 -9
- package/dist/core/result.d.ts.map +1 -1
- package/dist/core/result.js +68 -9
- package/dist/core/result.js.map +1 -1
- package/dist/core/types.d.ts +5 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js +3 -4
- package/dist/core/types.js.map +1 -1
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/dist/memory/async-processor.d.ts +107 -0
- package/dist/memory/async-processor.d.ts.map +1 -0
- package/dist/memory/async-processor.js +204 -0
- package/dist/memory/async-processor.js.map +1 -0
- package/dist/memory/auto-record.d.ts +47 -0
- package/dist/memory/auto-record.d.ts.map +1 -0
- package/dist/memory/auto-record.js +133 -0
- package/dist/memory/auto-record.js.map +1 -0
- package/dist/memory/database.d.ts +103 -0
- package/dist/memory/database.d.ts.map +1 -0
- package/dist/memory/database.js +337 -0
- package/dist/memory/database.js.map +1 -0
- package/dist/memory/hermes-bridge.d.ts +70 -0
- package/dist/memory/hermes-bridge.d.ts.map +1 -0
- package/dist/memory/hermes-bridge.js +155 -0
- package/dist/memory/hermes-bridge.js.map +1 -0
- package/dist/memory/index.d.ts +23 -0
- package/dist/memory/index.d.ts.map +1 -0
- package/dist/memory/index.js +22 -0
- package/dist/memory/index.js.map +1 -0
- package/dist/memory/memory-store.d.ts +76 -0
- package/dist/memory/memory-store.d.ts.map +1 -0
- package/dist/memory/memory-store.js +231 -0
- package/dist/memory/memory-store.js.map +1 -0
- package/dist/memory/stream-buffer-store.d.ts +69 -0
- package/dist/memory/stream-buffer-store.d.ts.map +1 -0
- package/dist/memory/stream-buffer-store.js +182 -0
- package/dist/memory/stream-buffer-store.js.map +1 -0
- package/dist/memory/tool-call-store.d.ts +68 -0
- package/dist/memory/tool-call-store.d.ts.map +1 -0
- package/dist/memory/tool-call-store.js +189 -0
- package/dist/memory/tool-call-store.js.map +1 -0
- package/dist/memory/types.d.ts +197 -0
- package/dist/memory/types.d.ts.map +1 -0
- package/dist/memory/types.js +15 -0
- package/dist/memory/types.js.map +1 -0
- package/dist/memory/utils.d.ts +30 -0
- package/dist/memory/utils.d.ts.map +1 -0
- package/dist/memory/utils.js +47 -0
- package/dist/memory/utils.js.map +1 -0
- package/dist/payments/facilitator-rpc-fallback.d.ts.map +1 -1
- package/dist/payments/facilitator-rpc-fallback.js +95 -0
- package/dist/payments/facilitator-rpc-fallback.js.map +1 -1
- package/dist/payments/hosted-tool-eligibility.d.ts +22 -0
- package/dist/payments/hosted-tool-eligibility.d.ts.map +1 -0
- package/dist/payments/hosted-tool-eligibility.js +173 -0
- package/dist/payments/hosted-tool-eligibility.js.map +1 -0
- package/dist/payments/index.d.ts +2 -2
- package/dist/payments/index.d.ts.map +1 -1
- package/dist/payments/index.js +1 -1
- package/dist/payments/index.js.map +1 -1
- package/dist/payments/mcp-session-cache.d.ts +35 -0
- package/dist/payments/mcp-session-cache.d.ts.map +1 -0
- package/dist/payments/mcp-session-cache.js +83 -0
- package/dist/payments/mcp-session-cache.js.map +1 -0
- package/dist/payments/monetization-gate.d.ts +33 -0
- package/dist/payments/monetization-gate.d.ts.map +1 -1
- package/dist/payments/monetization-gate.js +124 -12
- package/dist/payments/monetization-gate.js.map +1 -1
- package/dist/payments/pricing.d.ts +31 -0
- package/dist/payments/pricing.d.ts.map +1 -1
- package/dist/payments/pricing.js +317 -19
- package/dist/payments/pricing.js.map +1 -1
- package/dist/payments/usage-ledger.d.ts +36 -2
- package/dist/payments/usage-ledger.d.ts.map +1 -1
- package/dist/payments/usage-ledger.js +121 -4
- package/dist/payments/usage-ledger.js.map +1 -1
- package/dist/payments/x402-paid-call.d.ts +121 -0
- package/dist/payments/x402-paid-call.d.ts.map +1 -1
- package/dist/payments/x402-paid-call.js +428 -1
- package/dist/payments/x402-paid-call.js.map +1 -1
- package/dist/policy/default-policies.d.ts +18 -2
- package/dist/policy/default-policies.d.ts.map +1 -1
- package/dist/policy/default-policies.js +18 -2
- package/dist/policy/default-policies.js.map +1 -1
- package/dist/policy/index.d.ts +6 -3
- package/dist/policy/index.d.ts.map +1 -1
- package/dist/policy/index.js +6 -3
- package/dist/policy/index.js.map +1 -1
- package/dist/policy/local-policy-engine.d.ts +71 -13
- package/dist/policy/local-policy-engine.d.ts.map +1 -1
- package/dist/policy/local-policy-engine.js +33 -11
- package/dist/policy/local-policy-engine.js.map +1 -1
- package/dist/policy/permission-checks.d.ts +29 -3
- package/dist/policy/permission-checks.d.ts.map +1 -1
- package/dist/policy/permission-checks.js +29 -3
- package/dist/policy/permission-checks.js.map +1 -1
- package/dist/policy/policy-engine.d.ts +22 -2
- package/dist/policy/policy-engine.d.ts.map +1 -1
- package/dist/policy/policy-engine.js +22 -2
- package/dist/policy/policy-engine.js.map +1 -1
- package/dist/policy/policy-types.d.ts +55 -5
- package/dist/policy/policy-types.d.ts.map +1 -1
- package/dist/policy/policy-types.js +8 -1
- package/dist/policy/policy-types.js.map +1 -1
- package/dist/policy/risk-level.d.ts +32 -3
- package/dist/policy/risk-level.d.ts.map +1 -1
- package/dist/policy/risk-level.js +32 -3
- package/dist/policy/risk-level.js.map +1 -1
- package/dist/policy/spending-limits.d.ts +29 -3
- package/dist/policy/spending-limits.d.ts.map +1 -1
- package/dist/policy/spending-limits.js +29 -3
- package/dist/policy/spending-limits.js.map +1 -1
- package/dist/premium/activation-manager.d.ts +43 -0
- package/dist/premium/activation-manager.d.ts.map +1 -0
- package/dist/premium/activation-manager.js +131 -0
- package/dist/premium/activation-manager.js.map +1 -0
- package/dist/premium/builtin-plugins.d.ts +165 -0
- package/dist/premium/builtin-plugins.d.ts.map +1 -0
- package/dist/premium/builtin-plugins.js +422 -0
- package/dist/premium/builtin-plugins.js.map +1 -0
- package/dist/premium/event-store.d.ts +61 -0
- package/dist/premium/event-store.d.ts.map +1 -0
- package/dist/premium/event-store.js +130 -0
- package/dist/premium/event-store.js.map +1 -0
- package/dist/premium/index.d.ts +54 -0
- package/dist/premium/index.d.ts.map +1 -0
- package/dist/premium/index.js +54 -0
- package/dist/premium/index.js.map +1 -0
- package/dist/premium/manifest-builder.d.ts +65 -0
- package/dist/premium/manifest-builder.d.ts.map +1 -0
- package/dist/premium/manifest-builder.js +182 -0
- package/dist/premium/manifest-builder.js.map +1 -0
- package/dist/premium/meme-radar-capabilities.d.ts +38 -0
- package/dist/premium/meme-radar-capabilities.d.ts.map +1 -0
- package/dist/premium/meme-radar-capabilities.js +306 -0
- package/dist/premium/meme-radar-capabilities.js.map +1 -0
- package/dist/premium/metrics.d.ts +27 -0
- package/dist/premium/metrics.d.ts.map +1 -0
- package/dist/premium/metrics.js +65 -0
- package/dist/premium/metrics.js.map +1 -0
- package/dist/premium/plugin-validator.d.ts +39 -0
- package/dist/premium/plugin-validator.d.ts.map +1 -0
- package/dist/premium/plugin-validator.js +325 -0
- package/dist/premium/plugin-validator.js.map +1 -0
- package/dist/premium/private-manifest-loader.d.ts +111 -0
- package/dist/premium/private-manifest-loader.d.ts.map +1 -0
- package/dist/premium/private-manifest-loader.js +285 -0
- package/dist/premium/private-manifest-loader.js.map +1 -0
- package/dist/premium/provider-bridge.d.ts +133 -0
- package/dist/premium/provider-bridge.d.ts.map +1 -0
- package/dist/premium/provider-bridge.js +349 -0
- package/dist/premium/provider-bridge.js.map +1 -0
- package/dist/premium/session-manager.d.ts +125 -0
- package/dist/premium/session-manager.d.ts.map +1 -0
- package/dist/premium/session-manager.js +337 -0
- package/dist/premium/session-manager.js.map +1 -0
- package/dist/premium/stream-broker.d.ts +98 -0
- package/dist/premium/stream-broker.d.ts.map +1 -0
- package/dist/premium/stream-broker.js +199 -0
- package/dist/premium/stream-broker.js.map +1 -0
- package/dist/premium/tech-fundamentals-capabilities.d.ts +37 -0
- package/dist/premium/tech-fundamentals-capabilities.d.ts.map +1 -0
- package/dist/premium/tech-fundamentals-capabilities.js +283 -0
- package/dist/premium/tech-fundamentals-capabilities.js.map +1 -0
- package/dist/premium/trading-capabilities.d.ts +36 -0
- package/dist/premium/trading-capabilities.d.ts.map +1 -0
- package/dist/premium/trading-capabilities.js +205 -0
- package/dist/premium/trading-capabilities.js.map +1 -0
- package/dist/premium/types.d.ts +518 -0
- package/dist/premium/types.d.ts.map +1 -0
- package/dist/premium/types.js +23 -0
- package/dist/premium/types.js.map +1 -0
- package/dist/premium/webhook-engine.d.ts +138 -0
- package/dist/premium/webhook-engine.d.ts.map +1 -0
- package/dist/premium/webhook-engine.js +516 -0
- package/dist/premium/webhook-engine.js.map +1 -0
- package/dist/prompts/context/sap-agent-context.prompt.d.ts +5 -0
- package/dist/prompts/context/sap-agent-context.prompt.d.ts.map +1 -1
- package/dist/prompts/context/sap-agent-context.prompt.js +20 -16
- package/dist/prompts/context/sap-agent-context.prompt.js.map +1 -1
- package/dist/prompts/context/sap-agent-intent-router.prompt.d.ts +14 -0
- package/dist/prompts/context/sap-agent-intent-router.prompt.d.ts.map +1 -0
- package/dist/prompts/context/sap-agent-intent-router.prompt.js +155 -0
- package/dist/prompts/context/sap-agent-intent-router.prompt.js.map +1 -0
- package/dist/prompts/context/sap-agent-start.prompt.js +7 -0
- package/dist/prompts/context/sap-agent-start.prompt.js.map +1 -1
- package/dist/prompts/developer/debug-sap-error.prompt.d.ts +5 -0
- package/dist/prompts/developer/debug-sap-error.prompt.d.ts.map +1 -1
- package/dist/prompts/developer/debug-sap-error.prompt.js +3 -4
- package/dist/prompts/developer/debug-sap-error.prompt.js.map +1 -1
- package/dist/prompts/developer/generate-sap-integration.prompt.d.ts +5 -0
- package/dist/prompts/developer/generate-sap-integration.prompt.d.ts.map +1 -1
- package/dist/prompts/developer/generate-sap-integration.prompt.js +3 -4
- package/dist/prompts/developer/generate-sap-integration.prompt.js.map +1 -1
- package/dist/prompts/developer/index.d.ts +4 -1
- package/dist/prompts/developer/index.d.ts.map +1 -1
- package/dist/prompts/developer/index.js +4 -1
- package/dist/prompts/developer/index.js.map +1 -1
- package/dist/prompts/execution-proof/explain-proof-of-execution.prompt.d.ts +5 -0
- package/dist/prompts/execution-proof/explain-proof-of-execution.prompt.d.ts.map +1 -1
- package/dist/prompts/execution-proof/explain-proof-of-execution.prompt.js +3 -4
- package/dist/prompts/execution-proof/explain-proof-of-execution.prompt.js.map +1 -1
- package/dist/prompts/execution-proof/index.d.ts +4 -1
- package/dist/prompts/execution-proof/index.d.ts.map +1 -1
- package/dist/prompts/execution-proof/index.js +4 -1
- package/dist/prompts/execution-proof/index.js.map +1 -1
- package/dist/prompts/execution-proof/verify-execution-proof.prompt.d.ts +5 -0
- package/dist/prompts/execution-proof/verify-execution-proof.prompt.d.ts.map +1 -1
- package/dist/prompts/execution-proof/verify-execution-proof.prompt.js +3 -4
- package/dist/prompts/execution-proof/verify-execution-proof.prompt.js.map +1 -1
- package/dist/prompts/index.d.ts +4 -1
- package/dist/prompts/index.d.ts.map +1 -1
- package/dist/prompts/index.js +4 -1
- package/dist/prompts/index.js.map +1 -1
- package/dist/prompts/payments/create-paid-api.prompt.d.ts +5 -0
- package/dist/prompts/payments/create-paid-api.prompt.d.ts.map +1 -1
- package/dist/prompts/payments/create-paid-api.prompt.js +3 -4
- package/dist/prompts/payments/create-paid-api.prompt.js.map +1 -1
- package/dist/prompts/payments/explain-x402-settlement.prompt.d.ts +5 -0
- package/dist/prompts/payments/explain-x402-settlement.prompt.d.ts.map +1 -1
- package/dist/prompts/payments/explain-x402-settlement.prompt.js +4 -5
- package/dist/prompts/payments/explain-x402-settlement.prompt.js.map +1 -1
- package/dist/prompts/payments/index.d.ts +4 -1
- package/dist/prompts/payments/index.d.ts.map +1 -1
- package/dist/prompts/payments/index.js +4 -1
- package/dist/prompts/payments/index.js.map +1 -1
- package/dist/prompts/register-prompts.d.ts +18 -2
- package/dist/prompts/register-prompts.d.ts.map +1 -1
- package/dist/prompts/register-prompts.js +21 -3
- package/dist/prompts/register-prompts.js.map +1 -1
- package/dist/prompts/registry/analyze-sap-agent.prompt.d.ts +5 -0
- package/dist/prompts/registry/analyze-sap-agent.prompt.d.ts.map +1 -1
- package/dist/prompts/registry/analyze-sap-agent.prompt.js +3 -4
- package/dist/prompts/registry/analyze-sap-agent.prompt.js.map +1 -1
- package/dist/prompts/registry/index.d.ts +4 -1
- package/dist/prompts/registry/index.d.ts.map +1 -1
- package/dist/prompts/registry/index.js +4 -1
- package/dist/prompts/registry/index.js.map +1 -1
- package/dist/prompts/registry/register-sap-agent.prompt.d.ts +5 -0
- package/dist/prompts/registry/register-sap-agent.prompt.d.ts.map +1 -1
- package/dist/prompts/registry/register-sap-agent.prompt.js +22 -23
- package/dist/prompts/registry/register-sap-agent.prompt.js.map +1 -1
- package/dist/remote/premium-memory.d.ts +90 -0
- package/dist/remote/premium-memory.d.ts.map +1 -0
- package/dist/remote/premium-memory.js +161 -0
- package/dist/remote/premium-memory.js.map +1 -0
- package/dist/remote/premium-routes.d.ts +99 -0
- package/dist/remote/premium-routes.d.ts.map +1 -0
- package/dist/remote/premium-routes.js +347 -0
- package/dist/remote/premium-routes.js.map +1 -0
- package/dist/remote/public-home/sections.d.ts.map +1 -1
- package/dist/remote/public-home/sections.js +23 -4
- package/dist/remote/public-home/sections.js.map +1 -1
- package/dist/remote/public-home/types.d.ts +9 -0
- package/dist/remote/public-home/types.d.ts.map +1 -1
- package/dist/remote/server.d.ts +20 -0
- package/dist/remote/server.d.ts.map +1 -1
- package/dist/remote/server.js +369 -8
- package/dist/remote/server.js.map +1 -1
- package/dist/remote/tx-relay.d.ts +42 -0
- package/dist/remote/tx-relay.d.ts.map +1 -0
- package/dist/remote/tx-relay.js +118 -0
- package/dist/remote/tx-relay.js.map +1 -0
- package/dist/resources/current/sap-current-config.resource.d.ts +5 -0
- package/dist/resources/current/sap-current-config.resource.d.ts.map +1 -1
- package/dist/resources/current/sap-current-config.resource.js +2 -5
- package/dist/resources/current/sap-current-config.resource.js.map +1 -1
- package/dist/resources/execution-proof/index.d.ts +5 -0
- package/dist/resources/execution-proof/index.d.ts.map +1 -1
- package/dist/resources/execution-proof/index.js +5 -0
- package/dist/resources/execution-proof/index.js.map +1 -1
- package/dist/resources/execution-proof/sap-execution-record.resource.d.ts +5 -0
- package/dist/resources/execution-proof/sap-execution-record.resource.d.ts.map +1 -1
- package/dist/resources/execution-proof/sap-execution-record.resource.js +3 -4
- package/dist/resources/execution-proof/sap-execution-record.resource.js.map +1 -1
- package/dist/resources/index.d.ts +5 -0
- package/dist/resources/index.d.ts.map +1 -1
- package/dist/resources/index.js +5 -0
- package/dist/resources/index.js.map +1 -1
- package/dist/resources/memory/index.d.ts +5 -0
- package/dist/resources/memory/index.d.ts.map +1 -1
- package/dist/resources/memory/index.js +5 -0
- package/dist/resources/memory/index.js.map +1 -1
- package/dist/resources/memory/sap-memory.resource.d.ts +5 -0
- package/dist/resources/memory/sap-memory.resource.d.ts.map +1 -1
- package/dist/resources/memory/sap-memory.resource.js +3 -4
- package/dist/resources/memory/sap-memory.resource.js.map +1 -1
- package/dist/resources/profile/sap-active-profile.resource.d.ts +5 -0
- package/dist/resources/profile/sap-active-profile.resource.d.ts.map +1 -1
- package/dist/resources/profile/sap-active-profile.resource.js +2 -5
- package/dist/resources/profile/sap-active-profile.resource.js.map +1 -1
- package/dist/resources/register-resources.d.ts +5 -0
- package/dist/resources/register-resources.d.ts.map +1 -1
- package/dist/resources/register-resources.js +3 -1
- package/dist/resources/register-resources.js.map +1 -1
- package/dist/resources/registry/index.d.ts +5 -0
- package/dist/resources/registry/index.d.ts.map +1 -1
- package/dist/resources/registry/index.js +5 -0
- package/dist/resources/registry/index.js.map +1 -1
- package/dist/resources/registry/sap-agent.resource.d.ts +5 -0
- package/dist/resources/registry/sap-agent.resource.d.ts.map +1 -1
- package/dist/resources/registry/sap-agent.resource.js +3 -4
- package/dist/resources/registry/sap-agent.resource.js.map +1 -1
- package/dist/resources/registry/sap-global-registry.resource.d.ts +18 -4
- package/dist/resources/registry/sap-global-registry.resource.d.ts.map +1 -1
- package/dist/resources/registry/sap-global-registry.resource.js +18 -4
- package/dist/resources/registry/sap-global-registry.resource.js.map +1 -1
- package/dist/resources/reputation/index.d.ts +4 -1
- package/dist/resources/reputation/index.d.ts.map +1 -1
- package/dist/resources/reputation/index.js +4 -1
- package/dist/resources/reputation/index.js.map +1 -1
- package/dist/resources/reputation/sap-reputation.resource.d.ts +18 -4
- package/dist/resources/reputation/sap-reputation.resource.d.ts.map +1 -1
- package/dist/resources/reputation/sap-reputation.resource.js +18 -4
- package/dist/resources/reputation/sap-reputation.resource.js.map +1 -1
- package/dist/resources/tool-schema/index.d.ts +4 -1
- package/dist/resources/tool-schema/index.d.ts.map +1 -1
- package/dist/resources/tool-schema/index.js +4 -1
- package/dist/resources/tool-schema/index.js.map +1 -1
- package/dist/resources/tool-schema/sap-tool-schema.resource.d.ts +18 -4
- package/dist/resources/tool-schema/sap-tool-schema.resource.d.ts.map +1 -1
- package/dist/resources/tool-schema/sap-tool-schema.resource.js +18 -4
- package/dist/resources/tool-schema/sap-tool-schema.resource.js.map +1 -1
- package/dist/sap/index.d.ts +7 -1
- package/dist/sap/index.d.ts.map +1 -1
- package/dist/sap/index.js +7 -1
- package/dist/sap/index.js.map +1 -1
- package/dist/sap/sap-client-manager.d.ts +80 -13
- package/dist/sap/sap-client-manager.d.ts.map +1 -1
- package/dist/sap/sap-client-manager.js +80 -13
- package/dist/sap/sap-client-manager.js.map +1 -1
- package/dist/sap/sap-errors.d.ts +22 -3
- package/dist/sap/sap-errors.d.ts.map +1 -1
- package/dist/sap/sap-errors.js +22 -3
- package/dist/sap/sap-errors.js.map +1 -1
- package/dist/sap/sap-types.d.ts +75 -6
- package/dist/sap/sap-types.d.ts.map +1 -1
- package/dist/sap/sap-types.js +11 -1
- package/dist/sap/sap-types.js.map +1 -1
- package/dist/schemas/common.schema.d.ts +45 -8
- package/dist/schemas/common.schema.d.ts.map +1 -1
- package/dist/schemas/common.schema.js +45 -8
- package/dist/schemas/common.schema.js.map +1 -1
- package/dist/schemas/developer.schema.d.ts +22 -3
- package/dist/schemas/developer.schema.d.ts.map +1 -1
- package/dist/schemas/developer.schema.js +22 -3
- package/dist/schemas/developer.schema.js.map +1 -1
- package/dist/schemas/execution-proof.schema.d.ts +29 -4
- package/dist/schemas/execution-proof.schema.d.ts.map +1 -1
- package/dist/schemas/execution-proof.schema.js +29 -4
- package/dist/schemas/execution-proof.schema.js.map +1 -1
- package/dist/schemas/identity.schema.d.ts +23 -3
- package/dist/schemas/identity.schema.d.ts.map +1 -1
- package/dist/schemas/identity.schema.js +23 -3
- package/dist/schemas/identity.schema.js.map +1 -1
- package/dist/schemas/index.d.ts +11 -1
- package/dist/schemas/index.d.ts.map +1 -1
- package/dist/schemas/index.js +11 -1
- package/dist/schemas/index.js.map +1 -1
- package/dist/schemas/memory.schema.d.ts +23 -3
- package/dist/schemas/memory.schema.d.ts.map +1 -1
- package/dist/schemas/memory.schema.js +23 -3
- package/dist/schemas/memory.schema.js.map +1 -1
- package/dist/schemas/payments.schema.d.ts +24 -3
- package/dist/schemas/payments.schema.d.ts.map +1 -1
- package/dist/schemas/payments.schema.js +24 -3
- package/dist/schemas/payments.schema.js.map +1 -1
- package/dist/schemas/registry.schema.d.ts +38 -6
- package/dist/schemas/registry.schema.d.ts.map +1 -1
- package/dist/schemas/registry.schema.js +36 -4
- package/dist/schemas/registry.schema.js.map +1 -1
- package/dist/schemas/reputation.schema.d.ts +22 -3
- package/dist/schemas/reputation.schema.d.ts.map +1 -1
- package/dist/schemas/reputation.schema.js +22 -3
- package/dist/schemas/reputation.schema.js.map +1 -1
- package/dist/schemas/settlement.schema.d.ts +31 -4
- package/dist/schemas/settlement.schema.d.ts.map +1 -1
- package/dist/schemas/settlement.schema.js +31 -4
- package/dist/schemas/settlement.schema.js.map +1 -1
- package/dist/schemas/tool-schema.schema.d.ts +29 -3
- package/dist/schemas/tool-schema.schema.d.ts.map +1 -1
- package/dist/schemas/tool-schema.schema.js +29 -3
- package/dist/schemas/tool-schema.schema.js.map +1 -1
- package/dist/schemas/transaction.schema.d.ts +23 -3
- package/dist/schemas/transaction.schema.d.ts.map +1 -1
- package/dist/schemas/transaction.schema.js +23 -3
- package/dist/schemas/transaction.schema.js.map +1 -1
- package/dist/security/approval-required.d.ts +19 -2
- package/dist/security/approval-required.d.ts.map +1 -1
- package/dist/security/approval-required.js +19 -2
- package/dist/security/approval-required.js.map +1 -1
- package/dist/security/index.d.ts +7 -1
- package/dist/security/index.d.ts.map +1 -1
- package/dist/security/index.js +7 -1
- package/dist/security/index.js.map +1 -1
- package/dist/security/private-key-guard.d.ts +18 -2
- package/dist/security/private-key-guard.d.ts.map +1 -1
- package/dist/security/private-key-guard.js +19 -2
- package/dist/security/private-key-guard.js.map +1 -1
- package/dist/security/prompt-injection-notes.d.ts +10 -1
- package/dist/security/prompt-injection-notes.d.ts.map +1 -1
- package/dist/security/prompt-injection-notes.js +10 -1
- package/dist/security/prompt-injection-notes.js.map +1 -1
- package/dist/security/tool-permissions.d.ts.map +1 -1
- package/dist/security/tool-permissions.js +12 -0
- package/dist/security/tool-permissions.js.map +1 -1
- package/dist/security/unsafe-action-guard.d.ts +36 -10
- package/dist/security/unsafe-action-guard.d.ts.map +1 -1
- package/dist/security/unsafe-action-guard.js +67 -15
- package/dist/security/unsafe-action-guard.js.map +1 -1
- package/dist/server/create-server.d.ts +18 -3
- package/dist/server/create-server.d.ts.map +1 -1
- package/dist/server/create-server.js +18 -3
- package/dist/server/create-server.js.map +1 -1
- package/dist/server/index.d.ts +6 -1
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +6 -1
- package/dist/server/index.js.map +1 -1
- package/dist/server/register-capabilities.d.ts +17 -2
- package/dist/server/register-capabilities.d.ts.map +1 -1
- package/dist/server/register-capabilities.js +17 -2
- package/dist/server/register-capabilities.js.map +1 -1
- package/dist/server/server-metadata.d.ts +35 -1
- package/dist/server/server-metadata.d.ts.map +1 -1
- package/dist/server/server-metadata.js +36 -2
- package/dist/server/server-metadata.js.map +1 -1
- package/dist/session/agent-session.d.ts +35 -4
- package/dist/session/agent-session.d.ts.map +1 -1
- package/dist/session/agent-session.js +35 -4
- package/dist/session/agent-session.js.map +1 -1
- package/dist/session/delegated-session.d.ts +31 -3
- package/dist/session/delegated-session.d.ts.map +1 -1
- package/dist/session/delegated-session.js +31 -3
- package/dist/session/delegated-session.js.map +1 -1
- package/dist/session/index.d.ts +7 -1
- package/dist/session/index.d.ts.map +1 -1
- package/dist/session/index.js +7 -1
- package/dist/session/index.js.map +1 -1
- package/dist/session/redis-session-store.d.ts +94 -21
- package/dist/session/redis-session-store.d.ts.map +1 -1
- package/dist/session/redis-session-store.js +87 -20
- package/dist/session/redis-session-store.js.map +1 -1
- package/dist/session/session-limits.d.ts +34 -4
- package/dist/session/session-limits.d.ts.map +1 -1
- package/dist/session/session-limits.js +34 -4
- package/dist/session/session-limits.js.map +1 -1
- package/dist/session/session-permissions.d.ts +57 -7
- package/dist/session/session-permissions.d.ts.map +1 -1
- package/dist/session/session-permissions.js +57 -7
- package/dist/session/session-permissions.js.map +1 -1
- package/dist/session/session-store.d.ts +9 -1
- package/dist/session/session-store.d.ts.map +1 -1
- package/dist/session/session-store.js +18 -3
- package/dist/session/session-store.js.map +1 -1
- package/dist/session/session-types.d.ts +33 -4
- package/dist/session/session-types.d.ts.map +1 -1
- package/dist/session/session-types.js +9 -1
- package/dist/session/session-types.js.map +1 -1
- package/dist/signer/index.d.ts +7 -1
- package/dist/signer/index.d.ts.map +1 -1
- package/dist/signer/index.js +7 -1
- package/dist/signer/index.js.map +1 -1
- package/dist/signer/load-keypair.d.ts +25 -4
- package/dist/signer/load-keypair.d.ts.map +1 -1
- package/dist/signer/load-keypair.js +25 -4
- package/dist/signer/load-keypair.js.map +1 -1
- package/dist/signer/local-keypair-signer.d.ts +19 -3
- package/dist/signer/local-keypair-signer.d.ts.map +1 -1
- package/dist/signer/local-keypair-signer.js +24 -4
- package/dist/signer/local-keypair-signer.js.map +1 -1
- package/dist/signer/signer-resolver.d.ts +19 -2
- package/dist/signer/signer-resolver.d.ts.map +1 -1
- package/dist/signer/signer-resolver.js +26 -3
- package/dist/signer/signer-resolver.js.map +1 -1
- package/dist/signer/signer-types.d.ts +47 -5
- package/dist/signer/signer-types.d.ts.map +1 -1
- package/dist/signer/signer-types.js +13 -1
- package/dist/signer/signer-types.js.map +1 -1
- package/dist/strategies/strategy-store.d.ts +82 -0
- package/dist/strategies/strategy-store.d.ts.map +1 -0
- package/dist/strategies/strategy-store.js +165 -0
- package/dist/strategies/strategy-store.js.map +1 -0
- package/dist/tools/agent-start-tool.d.ts.map +1 -1
- package/dist/tools/agent-start-tool.js +481 -5
- package/dist/tools/agent-start-tool.js.map +1 -1
- 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/estimate-tool-cost.d.ts +13 -0
- package/dist/tools/estimate-tool-cost.d.ts.map +1 -0
- package/dist/tools/estimate-tool-cost.js +139 -0
- package/dist/tools/estimate-tool-cost.js.map +1 -0
- package/dist/tools/index.d.ts +8 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +11 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/magicblock-tools.d.ts +31 -6
- package/dist/tools/magicblock-tools.d.ts.map +1 -1
- package/dist/tools/magicblock-tools.js +178 -53
- package/dist/tools/magicblock-tools.js.map +1 -1
- package/dist/tools/memory-tools.d.ts +26 -0
- package/dist/tools/memory-tools.d.ts.map +1 -0
- package/dist/tools/memory-tools.js +533 -0
- package/dist/tools/memory-tools.js.map +1 -0
- package/dist/tools/perp-tools.d.ts +39 -0
- package/dist/tools/perp-tools.d.ts.map +1 -0
- package/dist/tools/perp-tools.js +1110 -0
- package/dist/tools/perp-tools.js.map +1 -0
- package/dist/tools/premium-tools.d.ts +8 -0
- package/dist/tools/premium-tools.d.ts.map +1 -0
- package/dist/tools/premium-tools.js +1102 -0
- package/dist/tools/premium-tools.js.map +1 -0
- package/dist/tools/profile-tools.d.ts.map +1 -1
- package/dist/tools/profile-tools.js +18 -1
- package/dist/tools/profile-tools.js.map +1 -1
- package/dist/tools/quick-context-tool.d.ts +16 -0
- package/dist/tools/quick-context-tool.d.ts.map +1 -0
- package/dist/tools/quick-context-tool.js +304 -0
- package/dist/tools/quick-context-tool.js.map +1 -0
- package/dist/tools/register-tools.d.ts.map +1 -1
- package/dist/tools/register-tools.js +17 -0
- package/dist/tools/register-tools.js.map +1 -1
- package/dist/tools/sap-sdk-tools.d.ts +419 -0
- package/dist/tools/sap-sdk-tools.d.ts.map +1 -1
- package/dist/tools/sap-sdk-tools.js +1547 -126
- package/dist/tools/sap-sdk-tools.js.map +1 -1
- package/dist/tools/sap-sns-tools.d.ts +2 -2
- package/dist/tools/sap-sns-tools.d.ts.map +1 -1
- package/dist/tools/sap-sns-tools.js +12 -8
- package/dist/tools/sap-sns-tools.js.map +1 -1
- package/dist/tools/skills-tools.d.ts +16 -0
- package/dist/tools/skills-tools.d.ts.map +1 -1
- package/dist/tools/skills-tools.js +282 -5
- package/dist/tools/skills-tools.js.map +1 -1
- package/dist/tools/tool-aliases.d.ts.map +1 -1
- package/dist/tools/tool-aliases.js +7 -0
- package/dist/tools/tool-aliases.js.map +1 -1
- package/dist/tools/transaction-tools.d.ts +135 -0
- package/dist/tools/transaction-tools.d.ts.map +1 -1
- package/dist/tools/transaction-tools.js +515 -16
- 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 +756 -23
- package/dist/tools/x402-paid-call-tool.js.map +1 -1
- package/dist/transports/index.d.ts +6 -1
- package/dist/transports/index.d.ts.map +1 -1
- package/dist/transports/index.js +6 -1
- package/dist/transports/index.js.map +1 -1
- package/dist/transports/stdio.d.ts +17 -5
- package/dist/transports/stdio.d.ts.map +1 -1
- package/dist/transports/stdio.js +17 -5
- package/dist/transports/stdio.js.map +1 -1
- package/dist/tui/wizard-save.d.ts +88 -8
- package/dist/tui/wizard-save.d.ts.map +1 -1
- package/dist/tui/wizard-save.js +77 -8
- package/dist/tui/wizard-save.js.map +1 -1
- package/dist/wizard-core/desktop-flow.d.ts.map +1 -1
- package/dist/wizard-core/desktop-flow.js +4 -2
- package/dist/wizard-core/desktop-flow.js.map +1 -1
- package/docs/03_CONFIGURATION_AND_WIZARD.md +5 -3
- package/docs/06_PAYMENTS_X402_AND_PAYSH.md +82 -4
- package/docs/07_ENDPOINTS_AND_CLIENTS.md +7 -3
- package/docs/09_TOOLS_SKILLS_AND_AGENT_GUIDE.md +21 -3
- package/docs/14_DESKTOP_WIZARD_RELEASE.md +8 -6
- package/docs/16_SAP_AGENT_IDENTITY_PIPELINE.md +304 -0
- package/docs/18_PREMIUM_PLUGIN_RUNTIME.md +108 -0
- package/docs/BRANCH_AND_CI.md +67 -0
- package/docs/README.md +19 -2
- package/docs/magicblock-tools.md +70 -29
- package/package.json +10 -6
- package/server.json +3 -3
- package/skills/README.md +12 -2
- package/skills/sap-agent-registry/SKILL.md +99 -4
- package/skills/sap-defi/SKILL.md +8 -4
- package/skills/sap-discovery-indexing/SKILL.md +26 -4
- package/skills/sap-escrow-settlement/SKILL.md +22 -4
- package/skills/sap-mcp/SKILL.md +140 -22
- package/skills/sap-mcp/TOOL_REFERENCE.md +47 -7
- package/skills/sap-nft-metaplex/SKILL.md +22 -0
- package/skills/sap-operations/SKILL.md +32 -3
- package/skills/sap-payments-x402/SKILL.md +85 -8
- package/skills/sap-sns/SKILL.md +32 -10
- package/smithery.config.schema.json +7 -0
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* @name adapters/mcp/index
|
|
3
|
+
* @description Barrel export for the MCP adapter subsystem.
|
|
4
|
+
*
|
|
5
|
+
* Re-exports tool response helpers, resource response helpers,
|
|
6
|
+
* prompt response helpers, and the MCP error class.
|
|
7
|
+
*
|
|
8
|
+
* @module adapters/mcp/index
|
|
3
9
|
*/
|
|
4
10
|
export { createTextResponse, createJsonResponse, createErrorResponse } from './tool-response.js';
|
|
5
11
|
export { createResourceResponse } from './resource-response.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/adapters/mcp/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/adapters/mcp/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACjG,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* @name adapters/mcp/prompt-response
|
|
3
|
+
* @description Helper for constructing MCP prompt responses.
|
|
4
|
+
*
|
|
5
|
+
* @module adapters/mcp/prompt-response
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* @name createPromptResponse
|
|
9
|
+
* @description Wraps an array of role/content message objects into an MCP prompt response.
|
|
10
|
+
*
|
|
11
|
+
* @param messages — Array of message objects with `role` and `content` string fields.
|
|
12
|
+
* @returns An MCP prompt response containing the provided messages.
|
|
13
|
+
*
|
|
14
|
+
* @usedBy MCP prompt handlers
|
|
3
15
|
*/
|
|
4
16
|
export declare function createPromptResponse(messages: Array<{
|
|
5
17
|
role: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt-response.d.ts","sourceRoot":"","sources":["../../../src/adapters/mcp/prompt-response.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"prompt-response.d.ts","sourceRoot":"","sources":["../../../src/adapters/mcp/prompt-response.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG;IAAE,QAAQ,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAE/I"}
|
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* @name adapters/mcp/prompt-response
|
|
3
|
+
* @description Helper for constructing MCP prompt responses.
|
|
4
|
+
*
|
|
5
|
+
* @module adapters/mcp/prompt-response
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* @name createPromptResponse
|
|
9
|
+
* @description Wraps an array of role/content message objects into an MCP prompt response.
|
|
10
|
+
*
|
|
11
|
+
* @param messages — Array of message objects with `role` and `content` string fields.
|
|
12
|
+
* @returns An MCP prompt response containing the provided messages.
|
|
13
|
+
*
|
|
14
|
+
* @usedBy MCP prompt handlers
|
|
3
15
|
*/
|
|
4
16
|
export function createPromptResponse(messages) {
|
|
5
17
|
return { messages };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt-response.js","sourceRoot":"","sources":["../../../src/adapters/mcp/prompt-response.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"prompt-response.js","sourceRoot":"","sources":["../../../src/adapters/mcp/prompt-response.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;;;;;GAQG;AACH,MAAM,UAAU,oBAAoB,CAAC,QAAkD;IACrF,OAAO,EAAE,QAAQ,EAAE,CAAC;AACtB,CAAC"}
|
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* @name adapters/mcp/resource-response
|
|
3
|
+
* @description Helper for constructing MCP resource responses.
|
|
4
|
+
*
|
|
5
|
+
* @module adapters/mcp/resource-response
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* @name createResourceResponse
|
|
9
|
+
* @description Wraps a URI and text payload into an MCP resource response.
|
|
10
|
+
*
|
|
11
|
+
* @param uri — The resource URI to return.
|
|
12
|
+
* @param data — The text content to embed in the response.
|
|
13
|
+
* @returns An MCP resource response with `uri` and `text` fields.
|
|
14
|
+
*
|
|
15
|
+
* @usedBy MCP resource handlers
|
|
3
16
|
*/
|
|
4
17
|
export declare function createResourceResponse(uri: string, data: string): {
|
|
5
18
|
uri: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resource-response.d.ts","sourceRoot":"","sources":["../../../src/adapters/mcp/resource-response.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"resource-response.d.ts","sourceRoot":"","sources":["../../../src/adapters/mcp/resource-response.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAE/F"}
|
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* @name adapters/mcp/resource-response
|
|
3
|
+
* @description Helper for constructing MCP resource responses.
|
|
4
|
+
*
|
|
5
|
+
* @module adapters/mcp/resource-response
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* @name createResourceResponse
|
|
9
|
+
* @description Wraps a URI and text payload into an MCP resource response.
|
|
10
|
+
*
|
|
11
|
+
* @param uri — The resource URI to return.
|
|
12
|
+
* @param data — The text content to embed in the response.
|
|
13
|
+
* @returns An MCP resource response with `uri` and `text` fields.
|
|
14
|
+
*
|
|
15
|
+
* @usedBy MCP resource handlers
|
|
3
16
|
*/
|
|
4
17
|
export function createResourceResponse(uri, data) {
|
|
5
18
|
return { uri, text: data };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resource-response.js","sourceRoot":"","sources":["../../../src/adapters/mcp/resource-response.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"resource-response.js","sourceRoot":"","sources":["../../../src/adapters/mcp/resource-response.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;;;;;;GASG;AACH,MAAM,UAAU,sBAAsB,CAAC,GAAW,EAAE,IAAY;IAC9D,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAC7B,CAAC"}
|
|
@@ -18,6 +18,14 @@ import type { SapMcpContext } from '../../core/types.js';
|
|
|
18
18
|
type ResourceHandler = () => Promise<unknown>;
|
|
19
19
|
type ResourceTemplateHandler = (uri: string, args: Record<string, unknown>) => Promise<unknown>;
|
|
20
20
|
type PromptHandler = (args: Record<string, unknown>) => Promise<unknown>;
|
|
21
|
+
type ResourceTemplateMatch = {
|
|
22
|
+
args: Record<string, string>;
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* @name matchResourceTemplateUri
|
|
26
|
+
* @description Matches MCP resource URI templates without converting attacker-controlled text into a regular expression.
|
|
27
|
+
*/
|
|
28
|
+
export declare function matchResourceTemplateUri(uriTemplate: string, resourceUri: string): ResourceTemplateMatch | undefined;
|
|
21
29
|
/**
|
|
22
30
|
* Associates runtime context with an MCP server so tool calls can enforce policy and key-safety guards.
|
|
23
31
|
*/
|
|
@@ -78,7 +86,7 @@ export declare function registerTool<TInput = unknown>(server: Server, name: str
|
|
|
78
86
|
*
|
|
79
87
|
* Registers a resource and ensures JSON-RPC handlers are set up for resources/list and resources/read
|
|
80
88
|
*/
|
|
81
|
-
export declare function registerResource(server: Server, uri: string,
|
|
89
|
+
export declare function registerResource(server: Server, uri: string, _schema: unknown, definition: {
|
|
82
90
|
name: string;
|
|
83
91
|
description?: string;
|
|
84
92
|
mimeType?: string;
|
|
@@ -109,7 +117,7 @@ export declare function registerResource(server: Server, uri: string, schema: un
|
|
|
109
117
|
*
|
|
110
118
|
* Registers a resource template and ensures JSON-RPC handlers are set up
|
|
111
119
|
*/
|
|
112
|
-
export declare function registerResourceTemplate(server: Server, uriTemplate: string,
|
|
120
|
+
export declare function registerResourceTemplate(server: Server, uriTemplate: string, _schema: unknown, definition: {
|
|
113
121
|
name: string;
|
|
114
122
|
description?: string;
|
|
115
123
|
mimeType?: string;
|
|
@@ -139,7 +147,7 @@ export declare function registerResourceTemplate(server: Server, uriTemplate: st
|
|
|
139
147
|
*
|
|
140
148
|
* Registers a prompt and ensures JSON-RPC handlers are set up for prompts/list and prompts/get
|
|
141
149
|
*/
|
|
142
|
-
export declare function registerPrompt(server: Server, name: string,
|
|
150
|
+
export declare function registerPrompt(server: Server, name: string, _schema: unknown, definition: {
|
|
143
151
|
description: string;
|
|
144
152
|
arguments?: Array<{
|
|
145
153
|
name: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sdk-compat.d.ts","sourceRoot":"","sources":["../../../src/adapters/mcp/sdk-compat.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,KAAK,EACV,IAAI,EACJ,eAAe,EACf,QAAQ,EACR,gBAAgB,EAChB,MAAM,EACP,MAAM,oCAAoC,CAAC;AAW5C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"sdk-compat.d.ts","sourceRoot":"","sources":["../../../src/adapters/mcp/sdk-compat.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,KAAK,EACV,IAAI,EACJ,eAAe,EACf,QAAQ,EACR,gBAAgB,EAChB,MAAM,EACP,MAAM,oCAAoC,CAAC;AAW5C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAyBzD,KAAK,eAAe,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;AAC9C,KAAK,uBAAuB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;AAChG,KAAK,aAAa,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;AAgBzE,KAAK,qBAAqB,GAAG;IAC3B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9B,CAAC;AAwBF;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,qBAAqB,GAAG,SAAS,CAsDpH;AAweD;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,IAAI,CAEpF;AAsQD;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,MAAM,GAAG,OAAO,EAC3C,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE;IACV,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,OAAO,CAAC;IACrB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,eAAe,CAAC;CAC/B,EACD,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgG7C;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE;IACV,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,EACD,OAAO,EAAE,eAAe;;;;;;;;;;;;;;;;;;;;;EA0DzB;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE;IACV,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,EACD,OAAO,EAAE,uBAAuB;;;;;;;;;;;;;;;;;;;;EAuFjC;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE;IACV,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,KAAK,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;KACpB,CAAC,CAAC;CACJ,EACD,OAAO,EAAE,aAAa;;;;;;;;;;;;;;;;;;EAmEvB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,EAAE,CAEzD;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,EAAE,CAEjE;AAED;;GAEG;AACH,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,EAAE,CAEjF;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAE7D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG;IAChD,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;CAClB,CAGA"}
|
|
@@ -14,6 +14,8 @@
|
|
|
14
14
|
*/
|
|
15
15
|
import { ListToolsRequestSchema, CallToolRequestSchema, ListResourcesRequestSchema, ReadResourceRequestSchema, ListResourceTemplatesRequestSchema, ListPromptsRequestSchema, GetPromptRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
|
|
16
16
|
import { logger } from '../../core/logger.js';
|
|
17
|
+
import { isHostedAccountlessBlockedTool } from '../../payments/hosted-tool-eligibility.js';
|
|
18
|
+
import { classifyTool } from '../../payments/pricing.js';
|
|
17
19
|
import { checkToolPermissions, privateKeyGuard } from '../../security/index.js';
|
|
18
20
|
import { canonicalizeToolName } from '../../tools/tool-aliases.js';
|
|
19
21
|
// Track which handlers have been registered to avoid duplicates
|
|
@@ -28,6 +30,53 @@ const executionContexts = new WeakMap();
|
|
|
28
30
|
function withRegistrationStore(server) {
|
|
29
31
|
return server;
|
|
30
32
|
}
|
|
33
|
+
/**
|
|
34
|
+
* @name matchResourceTemplateUri
|
|
35
|
+
* @description Matches MCP resource URI templates without converting attacker-controlled text into a regular expression.
|
|
36
|
+
*/
|
|
37
|
+
export function matchResourceTemplateUri(uriTemplate, resourceUri) {
|
|
38
|
+
const args = {};
|
|
39
|
+
let templateIndex = 0;
|
|
40
|
+
let resourceIndex = 0;
|
|
41
|
+
while (templateIndex < uriTemplate.length) {
|
|
42
|
+
const openBrace = uriTemplate.indexOf('{', templateIndex);
|
|
43
|
+
if (openBrace === -1) {
|
|
44
|
+
const literal = uriTemplate.slice(templateIndex);
|
|
45
|
+
return resourceUri.slice(resourceIndex) === literal ? { args } : undefined;
|
|
46
|
+
}
|
|
47
|
+
const literal = uriTemplate.slice(templateIndex, openBrace);
|
|
48
|
+
if (!resourceUri.startsWith(literal, resourceIndex)) {
|
|
49
|
+
return undefined;
|
|
50
|
+
}
|
|
51
|
+
resourceIndex += literal.length;
|
|
52
|
+
const closeBrace = uriTemplate.indexOf('}', openBrace + 1);
|
|
53
|
+
if (closeBrace === -1) {
|
|
54
|
+
return undefined;
|
|
55
|
+
}
|
|
56
|
+
const argName = uriTemplate.slice(openBrace + 1, closeBrace);
|
|
57
|
+
if (!argName) {
|
|
58
|
+
return undefined;
|
|
59
|
+
}
|
|
60
|
+
const nextLiteralStart = closeBrace + 1;
|
|
61
|
+
const nextOpenBrace = uriTemplate.indexOf('{', nextLiteralStart);
|
|
62
|
+
const nextLiteral = uriTemplate.slice(nextLiteralStart, nextOpenBrace === -1 ? uriTemplate.length : nextOpenBrace);
|
|
63
|
+
const nextSlash = resourceUri.indexOf('/', resourceIndex);
|
|
64
|
+
const segmentEnd = nextLiteral
|
|
65
|
+
? resourceUri.indexOf(nextLiteral, resourceIndex)
|
|
66
|
+
: (nextSlash === -1 ? resourceUri.length : nextSlash);
|
|
67
|
+
if (segmentEnd === -1 || segmentEnd === resourceIndex) {
|
|
68
|
+
return undefined;
|
|
69
|
+
}
|
|
70
|
+
const argValue = resourceUri.slice(resourceIndex, segmentEnd);
|
|
71
|
+
if (argValue.includes('/')) {
|
|
72
|
+
return undefined;
|
|
73
|
+
}
|
|
74
|
+
args[argName] = argValue;
|
|
75
|
+
resourceIndex = segmentEnd;
|
|
76
|
+
templateIndex = closeBrace + 1;
|
|
77
|
+
}
|
|
78
|
+
return resourceIndex === resourceUri.length ? { args } : undefined;
|
|
79
|
+
}
|
|
31
80
|
/**
|
|
32
81
|
* @name isResourceReadResult
|
|
33
82
|
* @description Detects handlers that already return an MCP resources/read result.
|
|
@@ -76,14 +125,34 @@ function isToolCallResult(value) {
|
|
|
76
125
|
* @name toToolCallResult
|
|
77
126
|
* @description Normalizes legacy tool handler returns and native MCP tool results.
|
|
78
127
|
*/
|
|
79
|
-
function
|
|
128
|
+
function parseSingleJsonTextContent(content) {
|
|
129
|
+
if (content.length !== 1 || content[0].type !== 'text' || typeof content[0].text !== 'string') {
|
|
130
|
+
return undefined;
|
|
131
|
+
}
|
|
132
|
+
try {
|
|
133
|
+
const parsed = JSON.parse(content[0].text);
|
|
134
|
+
return isPlainObject(parsed) ? parsed : undefined;
|
|
135
|
+
}
|
|
136
|
+
catch {
|
|
137
|
+
return undefined;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
function toToolCallResult(result, hasExplicitOutputSchema = false) {
|
|
80
141
|
if (isToolCallResult(result)) {
|
|
142
|
+
const inferredStructuredContent = hasExplicitOutputSchema && result.isError !== true
|
|
143
|
+
? parseSingleJsonTextContent(result.content)
|
|
144
|
+
: undefined;
|
|
145
|
+
const structuredContent = result.structuredContent
|
|
146
|
+
?? inferredStructuredContent
|
|
147
|
+
?? (hasExplicitOutputSchema
|
|
148
|
+
? undefined
|
|
149
|
+
: {
|
|
150
|
+
content: result.content,
|
|
151
|
+
isError: result.isError,
|
|
152
|
+
});
|
|
81
153
|
return {
|
|
82
154
|
...result,
|
|
83
|
-
structuredContent:
|
|
84
|
-
content: result.content,
|
|
85
|
-
isError: result.isError,
|
|
86
|
-
},
|
|
155
|
+
...(structuredContent === undefined ? {} : { structuredContent }),
|
|
87
156
|
};
|
|
88
157
|
}
|
|
89
158
|
const content = [
|
|
@@ -92,9 +161,12 @@ function toToolCallResult(result) {
|
|
|
92
161
|
text: typeof result === 'string' ? result : JSON.stringify(result, null, 2),
|
|
93
162
|
},
|
|
94
163
|
];
|
|
164
|
+
const structuredContent = hasExplicitOutputSchema
|
|
165
|
+
? (isPlainObject(result) ? result : undefined)
|
|
166
|
+
: { content };
|
|
95
167
|
return {
|
|
96
168
|
content,
|
|
97
|
-
structuredContent: {
|
|
169
|
+
...(structuredContent === undefined ? {} : { structuredContent }),
|
|
98
170
|
};
|
|
99
171
|
}
|
|
100
172
|
/**
|
|
@@ -216,6 +288,45 @@ function formatParameterLabel(name) {
|
|
|
216
288
|
function inferParameterDescription(toolTitle, parameterName) {
|
|
217
289
|
const lower = parameterName.toLowerCase();
|
|
218
290
|
const label = formatParameterLabel(parameterName);
|
|
291
|
+
if (lower === 'toolname' || lower === 'tool') {
|
|
292
|
+
return `${label} to inspect or execute. Use the exact MCP name from tools/list; do not rewrite hyphenated names.`;
|
|
293
|
+
}
|
|
294
|
+
if (lower === 'arguments' || lower === 'args') {
|
|
295
|
+
return `${label} object passed to the target tool. Match the target tool schema exactly; do not include wallet/keypair secret bytes.`;
|
|
296
|
+
}
|
|
297
|
+
if (lower === 'maxpriceusd') {
|
|
298
|
+
return `${label} safety cap in USD for one x402 payment. Estimate with sap_estimate_tool_cost first and abort if the challenge exceeds this cap.`;
|
|
299
|
+
}
|
|
300
|
+
if (lower === 'maxtotalusd') {
|
|
301
|
+
return `${label} total USD safety cap for a batch x402 workflow. Abort before any call that would exceed this budget.`;
|
|
302
|
+
}
|
|
303
|
+
if (lower === 'confirmaction' || lower === 'confirm') {
|
|
304
|
+
return `${label} flag required before local signing, payment, or write execution. Set true only after the user approves the preview/cost.`;
|
|
305
|
+
}
|
|
306
|
+
if (lower === 'agenturi' || lower === 'metadatauri') {
|
|
307
|
+
return `${label} public HTTPS/IPFS/Arweave metadata URI for the SAP agent profile. Desktop file paths are invalid for on-chain metadata.`;
|
|
308
|
+
}
|
|
309
|
+
if (lower === 'x402endpoint') {
|
|
310
|
+
return `${label} public x402 discovery endpoint for this agent or provider, usually a .well-known/x402 URL.`;
|
|
311
|
+
}
|
|
312
|
+
if (lower === 'capabilities') {
|
|
313
|
+
return `${label} array describing agent/tool capabilities. Use stable IDs, protocol labels, and human-readable descriptions; validate category values before writes.`;
|
|
314
|
+
}
|
|
315
|
+
if (lower === 'protocols') {
|
|
316
|
+
return `${label} array of protocol identifiers such as sap, mcp, jupiter, pyth, metaplex, sns, or x402.`;
|
|
317
|
+
}
|
|
318
|
+
if (lower === 'pricing') {
|
|
319
|
+
return `${label} array of x402/pay.sh pricing tiers for the registered agent or tool. Amounts should be denominated explicitly in USDC smallest units when applicable.`;
|
|
320
|
+
}
|
|
321
|
+
if (lower === 'transactionbase64' || lower === 'transaction') {
|
|
322
|
+
return `${label} unsigned or signed transaction payload. Preview and finalize with sap_payments_finalize_transaction; never create ad-hoc signing scripts or read keypair JSON.`;
|
|
323
|
+
}
|
|
324
|
+
if (lower === 'submit') {
|
|
325
|
+
return `${label} flag controlling whether a locally signed transaction is submitted after preview/signing. Use submit:true only after user approval.`;
|
|
326
|
+
}
|
|
327
|
+
if (lower === 'submitviarelay' || lower === 'submitrelayurl') {
|
|
328
|
+
return `${label} for routing already-signed transaction bytes through the OOBE hosted relay/RPC path. The relay never receives private keys.`;
|
|
329
|
+
}
|
|
219
330
|
if (lower.includes('wallet') || lower.includes('owner')) {
|
|
220
331
|
return `${label} address used by ${toolTitle}.`;
|
|
221
332
|
}
|
|
@@ -280,6 +391,11 @@ function enrichSchemaDescriptions(schema, toolTitle) {
|
|
|
280
391
|
if (isPlainObject(enriched.items)) {
|
|
281
392
|
enriched.items = enrichProperty(propertyName, enriched.items);
|
|
282
393
|
}
|
|
394
|
+
for (const compositionKey of ['oneOf', 'anyOf', 'allOf']) {
|
|
395
|
+
if (Array.isArray(enriched[compositionKey])) {
|
|
396
|
+
enriched[compositionKey] = enriched[compositionKey].map((candidate) => (isPlainObject(candidate) ? enrichProperty(propertyName, candidate) : candidate));
|
|
397
|
+
}
|
|
398
|
+
}
|
|
283
399
|
return enriched;
|
|
284
400
|
};
|
|
285
401
|
const properties = isPlainObject(schema.properties)
|
|
@@ -293,6 +409,103 @@ function enrichSchemaDescriptions(schema, toolTitle) {
|
|
|
293
409
|
properties,
|
|
294
410
|
};
|
|
295
411
|
}
|
|
412
|
+
function priceHintForTier(tier) {
|
|
413
|
+
switch (tier) {
|
|
414
|
+
case 'free':
|
|
415
|
+
return 'free; call directly without x402';
|
|
416
|
+
case 'read-premium':
|
|
417
|
+
return 'paid read-premium; estimate first, then use sap_payments_call_paid_tool when the runtime cannot replay x402 natively';
|
|
418
|
+
case 'builder':
|
|
419
|
+
return 'paid builder; estimate first, then pay/build and finalize unsigned transactions locally when returned';
|
|
420
|
+
case 'value-action':
|
|
421
|
+
return 'paid value-action; preview cost and transaction effects before user confirmation';
|
|
422
|
+
case 'batch':
|
|
423
|
+
return 'paid batch; enforce maxPriceUsd and maxTotalUsd caps';
|
|
424
|
+
default:
|
|
425
|
+
return 'priced by hosted x402 challenge';
|
|
426
|
+
}
|
|
427
|
+
}
|
|
428
|
+
function localSignerEquivalent(toolName) {
|
|
429
|
+
const equivalents = {
|
|
430
|
+
sap_register_agent: 'sap_payments_register_agent',
|
|
431
|
+
sap_update_agent: 'sap_payments_update_agent',
|
|
432
|
+
sap_sign_transaction: 'sap_payments_finalize_transaction',
|
|
433
|
+
};
|
|
434
|
+
if (equivalents[toolName])
|
|
435
|
+
return equivalents[toolName];
|
|
436
|
+
if (toolName.startsWith('sap_escrow_build_'))
|
|
437
|
+
return 'sap_payments_finalize_transaction';
|
|
438
|
+
if (toolName.startsWith('sap_sns_build_'))
|
|
439
|
+
return 'sap_payments_finalize_transaction';
|
|
440
|
+
if (toolName.startsWith('sap_x402_build_'))
|
|
441
|
+
return 'sap_payments_finalize_transaction';
|
|
442
|
+
return undefined;
|
|
443
|
+
}
|
|
444
|
+
function classifyToolIntent(toolName) {
|
|
445
|
+
if (toolName.startsWith('sap_payments_') || toolName === 'sap_x402_paid_call') {
|
|
446
|
+
return 'local non-custodial payment/signing bridge';
|
|
447
|
+
}
|
|
448
|
+
if (toolName.startsWith('sap_agent_') || toolName.startsWith('sap_runtime_') || toolName.startsWith('sap_skills_')) {
|
|
449
|
+
return 'agent bootstrap, routing, skills, or repair guidance';
|
|
450
|
+
}
|
|
451
|
+
if (toolName.includes('_build_') || toolName.startsWith('sap_escrow_build_') || toolName.startsWith('sap_sns_build_')) {
|
|
452
|
+
return 'hosted unsigned transaction builder';
|
|
453
|
+
}
|
|
454
|
+
if (toolName.includes('swap') || toolName.includes('trade') || toolName.includes('buy') || toolName.includes('sell')) {
|
|
455
|
+
return 'Solana value-action or trading workflow';
|
|
456
|
+
}
|
|
457
|
+
if (toolName.includes('register') || toolName.includes('update') || toolName.includes('mint') || toolName.includes('transfer')) {
|
|
458
|
+
return 'local-signer write workflow';
|
|
459
|
+
}
|
|
460
|
+
if (toolName.includes('list') || toolName.includes('get') || toolName.includes('fetch') || toolName.includes('discover') || toolName.includes('search')) {
|
|
461
|
+
return 'read/discovery workflow';
|
|
462
|
+
}
|
|
463
|
+
return 'SAP MCP tool workflow';
|
|
464
|
+
}
|
|
465
|
+
function buildToolIntentGuidance(toolName, title) {
|
|
466
|
+
const tier = classifyTool(toolName);
|
|
467
|
+
const intent = classifyToolIntent(toolName);
|
|
468
|
+
const localEquivalent = localSignerEquivalent(toolName);
|
|
469
|
+
const hostedBlocked = isHostedAccountlessBlockedTool(toolName);
|
|
470
|
+
const routing = hostedBlocked
|
|
471
|
+
? `Routing: hosted accountless write is blocked; do not call this as a paid hosted write and no x402 payment should be charged. Use ${localEquivalent ?? 'the local sap_payments bridge or a hosted unsigned builder'} when user signing is required.`
|
|
472
|
+
: toolName.startsWith('sap_payments_')
|
|
473
|
+
? 'Routing: local sap_payments bridge. It may sign x402 payment payloads or user-approved transactions locally, and must never expose keypair bytes.'
|
|
474
|
+
: localEquivalent && toolName.includes('_build_')
|
|
475
|
+
? `Routing: hosted-safe builder. If a transaction is returned, preview/sign/submit with ${localEquivalent}; never create temporary signing scripts.`
|
|
476
|
+
: tier === 'free'
|
|
477
|
+
? 'Routing: free hosted call; call directly and keep it small/exact when possible.'
|
|
478
|
+
: 'Routing: paid hosted call; call sap_estimate_tool_cost first, then use sap_payments_call_paid_tool if the runtime cannot handle x402 natively.';
|
|
479
|
+
const safety = toolName.startsWith('sap_payments_') || hostedBlocked || localEquivalent
|
|
480
|
+
? 'Signer boundary: user-controlled local profile or external signer; OOBE hosted MCP remains non-custodial.'
|
|
481
|
+
: 'Signer boundary: hosted reads/builders never receive keypair bytes; value-moving results must be finalized locally when signing is required.';
|
|
482
|
+
const descriptionSuffix = [
|
|
483
|
+
`Intent: ${intent}.`,
|
|
484
|
+
`Pricing: ${priceHintForTier(tier)}.`,
|
|
485
|
+
routing,
|
|
486
|
+
safety,
|
|
487
|
+
].join(' ');
|
|
488
|
+
return {
|
|
489
|
+
descriptionSuffix,
|
|
490
|
+
schemaDescription: `${title} input schema. ${descriptionSuffix} Use exact field names from this schema; do not guess aliases or include private key material.`,
|
|
491
|
+
};
|
|
492
|
+
}
|
|
493
|
+
function enrichToolDefinition(name, title, description, inputSchema) {
|
|
494
|
+
const guidance = buildToolIntentGuidance(name, title);
|
|
495
|
+
const suffix = `\n\nSAP MCP execution guidance: ${guidance.descriptionSuffix}`;
|
|
496
|
+
const enrichedDescription = description.includes('SAP MCP execution guidance:')
|
|
497
|
+
? description
|
|
498
|
+
: `${description}${suffix}`;
|
|
499
|
+
return {
|
|
500
|
+
description: enrichedDescription,
|
|
501
|
+
inputSchema: {
|
|
502
|
+
...inputSchema,
|
|
503
|
+
description: typeof inputSchema.description === 'string'
|
|
504
|
+
? `${inputSchema.description} ${guidance.schemaDescription}`
|
|
505
|
+
: guidance.schemaDescription,
|
|
506
|
+
},
|
|
507
|
+
};
|
|
508
|
+
}
|
|
296
509
|
/**
|
|
297
510
|
* Associates runtime context with an MCP server so tool calls can enforce policy and key-safety guards.
|
|
298
511
|
*/
|
|
@@ -530,12 +743,14 @@ export function registerTool(server, name, definition, handler) {
|
|
|
530
743
|
logger.debug('Registering tool', { name });
|
|
531
744
|
const store = withRegistrationStore(server);
|
|
532
745
|
const title = definition.title ?? formatToolTitle(name);
|
|
746
|
+
const inputSchema = enrichSchemaDescriptions(normalizeInputSchema(definition.inputSchema), title);
|
|
747
|
+
const enriched = enrichToolDefinition(name, title, definition.description, inputSchema);
|
|
533
748
|
// Store tool definition
|
|
534
749
|
const tool = {
|
|
535
750
|
name,
|
|
536
751
|
title,
|
|
537
|
-
description:
|
|
538
|
-
inputSchema:
|
|
752
|
+
description: enriched.description,
|
|
753
|
+
inputSchema: enriched.inputSchema,
|
|
539
754
|
outputSchema: normalizeOutputSchema(definition.outputSchema),
|
|
540
755
|
annotations: {
|
|
541
756
|
...inferToolAnnotations(name, title),
|
|
@@ -545,8 +760,10 @@ export function registerTool(server, name, definition, handler) {
|
|
|
545
760
|
// Initialize server storage if needed
|
|
546
761
|
store.toolHandlers = store.toolHandlers || {};
|
|
547
762
|
store.tools = store.tools || [];
|
|
763
|
+
store.toolHasExplicitOutputSchema = store.toolHasExplicitOutputSchema || {};
|
|
548
764
|
// Store handler and tool definition
|
|
549
765
|
store.toolHandlers[name] = (input) => handler(input);
|
|
766
|
+
store.toolHasExplicitOutputSchema[name] = definition.outputSchema !== undefined;
|
|
550
767
|
store.tools.push(tool);
|
|
551
768
|
// Register JSON-RPC handlers if not already done
|
|
552
769
|
const registry = ensureHandlerRegistry(server);
|
|
@@ -593,7 +810,8 @@ export function registerTool(server, name, definition, handler) {
|
|
|
593
810
|
}
|
|
594
811
|
const result = await handler(args || {});
|
|
595
812
|
logger.debug('Tool call completed', { tool: canonicalToolName, requestedTool: toolName });
|
|
596
|
-
|
|
813
|
+
const hasExplicitOutputSchema = Boolean(withRegistrationStore(server).toolHasExplicitOutputSchema?.[canonicalToolName]);
|
|
814
|
+
return toToolCallResult(result, hasExplicitOutputSchema);
|
|
597
815
|
}
|
|
598
816
|
catch (error) {
|
|
599
817
|
logger.error('Tool call failed', { tool: canonicalToolName, requestedTool: toolName, error });
|
|
@@ -610,7 +828,7 @@ export function registerTool(server, name, definition, handler) {
|
|
|
610
828
|
*
|
|
611
829
|
* Registers a resource and ensures JSON-RPC handlers are set up for resources/list and resources/read
|
|
612
830
|
*/
|
|
613
|
-
export function registerResource(server, uri,
|
|
831
|
+
export function registerResource(server, uri, _schema, definition, handler) {
|
|
614
832
|
logger.debug('Registering resource', { uri });
|
|
615
833
|
const store = withRegistrationStore(server);
|
|
616
834
|
const resource = {
|
|
@@ -664,7 +882,7 @@ export function registerResource(server, uri, schema, definition, handler) {
|
|
|
664
882
|
*
|
|
665
883
|
* Registers a resource template and ensures JSON-RPC handlers are set up
|
|
666
884
|
*/
|
|
667
|
-
export function registerResourceTemplate(server, uriTemplate,
|
|
885
|
+
export function registerResourceTemplate(server, uriTemplate, _schema, definition, handler) {
|
|
668
886
|
logger.debug('Registering resource template', { uriTemplate });
|
|
669
887
|
const store = withRegistrationStore(server);
|
|
670
888
|
const template = {
|
|
@@ -719,21 +937,10 @@ export function registerResourceTemplate(server, uriTemplate, schema, definition
|
|
|
719
937
|
const handler = templateHandlers[tmpl.uriTemplate];
|
|
720
938
|
if (!handler)
|
|
721
939
|
continue;
|
|
722
|
-
|
|
723
|
-
const pattern = tmpl.uriTemplate.replace(/\{[^}]+\}/g, '([^/]+)');
|
|
724
|
-
const regex = new RegExp(`^${pattern}$`);
|
|
725
|
-
const match = resourceUri.match(regex);
|
|
940
|
+
const match = matchResourceTemplateUri(tmpl.uriTemplate, resourceUri);
|
|
726
941
|
if (match) {
|
|
727
|
-
// Extract template arguments from URI
|
|
728
|
-
const argNames = tmpl.uriTemplate.match(/\{([^}]+)\}/g)?.map((s) => s.slice(1, -1)) || [];
|
|
729
|
-
const args = {};
|
|
730
|
-
match.slice(1).forEach((value, i) => {
|
|
731
|
-
if (argNames[i]) {
|
|
732
|
-
args[argNames[i]] = value;
|
|
733
|
-
}
|
|
734
|
-
});
|
|
735
942
|
try {
|
|
736
|
-
const result = await handler(resourceUri, args);
|
|
943
|
+
const result = await handler(resourceUri, match.args);
|
|
737
944
|
return toResourceReadResult(result, resourceUri, tmpl.mimeType || 'application/json');
|
|
738
945
|
}
|
|
739
946
|
catch (error) {
|
|
@@ -755,7 +962,7 @@ export function registerResourceTemplate(server, uriTemplate, schema, definition
|
|
|
755
962
|
*
|
|
756
963
|
* Registers a prompt and ensures JSON-RPC handlers are set up for prompts/list and prompts/get
|
|
757
964
|
*/
|
|
758
|
-
export function registerPrompt(server, name,
|
|
965
|
+
export function registerPrompt(server, name, _schema, definition, handler) {
|
|
759
966
|
logger.debug('Registering prompt', { name });
|
|
760
967
|
const store = withRegistrationStore(server);
|
|
761
968
|
const prompt = {
|