@oobe-protocol-labs/sap-mcp-server 0.9.0 → 0.9.2
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 +30 -0
- package/CHANGELOG.md +43 -2
- package/README.md +19 -2
- package/USER_DOCS/00_START_HERE.md +1 -0
- package/USER_DOCS/01_HOSTED_REMOTE_MCP.md +17 -3
- package/USER_DOCS/04_CLIENT_CONFIGS.md +3 -3
- package/USER_DOCS/05_SKILLS_AND_TOOLS.md +27 -3
- package/USER_DOCS/06_DESKTOP_GUI_WIZARD.md +5 -5
- package/USER_DOCS/07_SMITHERY_AND_MARKETPLACES.md +163 -0
- package/assets/logos/claude.png +0 -0
- package/assets/logos/codex.webp +0 -0
- package/assets/logos/hermes.png +0 -0
- package/assets/logos/openclaw.svg +22 -0
- package/config.schema.json +5 -0
- package/dist/config/env.d.ts +4 -0
- package/dist/config/env.d.ts.map +1 -1
- package/dist/config/env.js +3 -0
- package/dist/config/env.js.map +1 -1
- package/dist/core/constants.d.ts +6 -1
- package/dist/core/constants.d.ts.map +1 -1
- package/dist/core/constants.js +14 -1
- package/dist/core/constants.js.map +1 -1
- package/dist/payments/pricing.d.ts +1 -1
- package/dist/payments/pricing.d.ts.map +1 -1
- package/dist/payments/pricing.js +20 -3
- package/dist/payments/pricing.js.map +1 -1
- package/dist/policy/local-policy-engine.js +1 -1
- package/dist/policy/local-policy-engine.js.map +1 -1
- package/dist/prompts/context/sap-agent-context.prompt.js +6 -0
- package/dist/prompts/context/sap-agent-context.prompt.js.map +1 -1
- package/dist/prompts/context/sap-agent-start.prompt.d.ts +14 -0
- package/dist/prompts/context/sap-agent-start.prompt.d.ts.map +1 -0
- package/dist/prompts/context/sap-agent-start.prompt.js +96 -0
- package/dist/prompts/context/sap-agent-start.prompt.js.map +1 -0
- package/dist/prompts/developer/generate-sap-integration.prompt.js +1 -1
- package/dist/prompts/developer/generate-sap-integration.prompt.js.map +1 -1
- package/dist/prompts/payments/explain-x402-settlement.prompt.d.ts.map +1 -1
- package/dist/prompts/payments/explain-x402-settlement.prompt.js +13 -10
- package/dist/prompts/payments/explain-x402-settlement.prompt.js.map +1 -1
- package/dist/prompts/register-prompts.d.ts.map +1 -1
- package/dist/prompts/register-prompts.js +3 -1
- package/dist/prompts/register-prompts.js.map +1 -1
- package/dist/remote/public-home/index.d.ts.map +1 -1
- package/dist/remote/public-home/index.js +2 -1
- package/dist/remote/public-home/index.js.map +1 -1
- package/dist/remote/public-home/scripts.d.ts +1 -1
- package/dist/remote/public-home/scripts.d.ts.map +1 -1
- package/dist/remote/public-home/scripts.js +29 -0
- package/dist/remote/public-home/scripts.js.map +1 -1
- package/dist/remote/public-home/sections.d.ts +5 -0
- package/dist/remote/public-home/sections.d.ts.map +1 -1
- package/dist/remote/public-home/sections.js +73 -6
- package/dist/remote/public-home/sections.js.map +1 -1
- package/dist/remote/public-home/styles.d.ts +1 -1
- package/dist/remote/public-home/styles.d.ts.map +1 -1
- package/dist/remote/public-home/styles.js +460 -16
- package/dist/remote/public-home/styles.js.map +1 -1
- package/dist/remote/rate-limiter.d.ts +2 -0
- package/dist/remote/rate-limiter.d.ts.map +1 -1
- package/dist/remote/rate-limiter.js +23 -0
- package/dist/remote/rate-limiter.js.map +1 -1
- package/dist/remote/server.d.ts +70 -1
- package/dist/remote/server.d.ts.map +1 -1
- package/dist/remote/server.js +412 -15
- package/dist/remote/server.js.map +1 -1
- package/dist/runtime/module-resolution.d.ts.map +1 -1
- package/dist/runtime/module-resolution.js +41 -8
- package/dist/runtime/module-resolution.js.map +1 -1
- package/dist/schemas/settlement.schema.d.ts +2 -2
- package/dist/security/tool-permissions.d.ts.map +1 -1
- package/dist/security/tool-permissions.js +1 -6
- package/dist/security/tool-permissions.js.map +1 -1
- package/dist/server/create-server.d.ts.map +1 -1
- package/dist/server/create-server.js +2 -1
- package/dist/server/create-server.js.map +1 -1
- package/dist/tools/agent-start-tool.d.ts +12 -0
- package/dist/tools/agent-start-tool.d.ts.map +1 -0
- package/dist/tools/agent-start-tool.js +156 -0
- package/dist/tools/agent-start-tool.js.map +1 -0
- package/dist/tools/client-sdk-tools.d.ts +7 -0
- package/dist/tools/client-sdk-tools.d.ts.map +1 -1
- package/dist/tools/client-sdk-tools.js +80 -4
- package/dist/tools/client-sdk-tools.js.map +1 -1
- package/dist/tools/index.d.ts +1 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +3 -1
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/register-tools.d.ts.map +1 -1
- package/dist/tools/register-tools.js +5 -1
- package/dist/tools/register-tools.js.map +1 -1
- package/dist/tools/sap-sdk-tools.d.ts +2 -2
- package/dist/tools/sap-sdk-tools.d.ts.map +1 -1
- package/dist/tools/sap-sdk-tools.js +111 -108
- package/dist/tools/sap-sdk-tools.js.map +1 -1
- package/dist/tools/sap-sns-tools.d.ts +4 -4
- package/dist/tools/sap-sns-tools.js +4 -4
- package/dist/tools/skills-tools.js +1 -1
- package/dist/tools/skills-tools.js.map +1 -1
- package/docs/05_REMOTE_VPS_DEPLOYMENT.md +32 -0
- package/docs/06_PAYMENTS_X402_AND_PAYSH.md +11 -0
- package/docs/07_ENDPOINTS_AND_CLIENTS.md +1 -1
- package/docs/09_TOOLS_SKILLS_AND_AGENT_GUIDE.md +42 -11
- package/docs/14_DESKTOP_WIZARD_RELEASE.md +1 -1
- package/docs/README.md +6 -3
- package/docs/_sidebar.md +1 -0
- package/package.json +3 -2
- package/server.json +3 -3
- package/skills/README.md +2 -2
- package/skills/sap-escrow-settlement/SKILL.md +15 -11
- package/skills/sap-mcp/SKILL.md +26 -11
- package/skills/sap-mcp/TOOL_REFERENCE.md +6 -5
- package/skills/sap-operations/SKILL.md +6 -7
- package/smithery.config.schema.json +59 -0
package/.env.example
CHANGED
|
@@ -74,6 +74,32 @@ SAP_HTTP_PORT=8787
|
|
|
74
74
|
SAP_HTTP_HOST=127.0.0.1
|
|
75
75
|
# SAP_HTTP_CORS_ORIGINS=https://app.example.com,https://admin.example.com
|
|
76
76
|
|
|
77
|
+
# =============================================================================
|
|
78
|
+
# Hosted Remote Scaling & Backpressure
|
|
79
|
+
# =============================================================================
|
|
80
|
+
# Redis should be enabled for clustered/PM2 multi-process hosted deployments.
|
|
81
|
+
# It shares rate limits and payment usage ledger streams across workers.
|
|
82
|
+
# SAP_MCP_USE_REDIS=true
|
|
83
|
+
# SAP_MCP_REDIS_URL=redis://127.0.0.1:6379
|
|
84
|
+
|
|
85
|
+
# Stateful Streamable HTTP sessions. Idle sessions are closed automatically so
|
|
86
|
+
# crawlers and abandoned agent sessions cannot exhaust memory.
|
|
87
|
+
SAP_MCP_REMOTE_MAX_STATEFUL_SESSIONS=2000
|
|
88
|
+
SAP_MCP_REMOTE_SESSION_IDLE_TTL_MS=600000
|
|
89
|
+
SAP_MCP_REMOTE_SESSION_ABSOLUTE_TTL_MS=3600000
|
|
90
|
+
SAP_MCP_REMOTE_SESSION_CLEANUP_INTERVAL_MS=30000
|
|
91
|
+
|
|
92
|
+
# Global in-process backpressure for active MCP requests/streams.
|
|
93
|
+
# Raise this with enough RAM/CPU and a reverse proxy connection budget.
|
|
94
|
+
SAP_MCP_REMOTE_MAX_IN_FLIGHT_REQUESTS=1024
|
|
95
|
+
|
|
96
|
+
# Node HTTP tuning for reverse-proxied Streamable HTTP.
|
|
97
|
+
SAP_MCP_REMOTE_REQUEST_TIMEOUT_MS=300000
|
|
98
|
+
SAP_MCP_REMOTE_HEADERS_TIMEOUT_MS=65000
|
|
99
|
+
SAP_MCP_REMOTE_KEEP_ALIVE_TIMEOUT_MS=75000
|
|
100
|
+
# 0 means unlimited requests per socket.
|
|
101
|
+
SAP_MCP_REMOTE_MAX_REQUESTS_PER_SOCKET=0
|
|
102
|
+
|
|
77
103
|
# =============================================================================
|
|
78
104
|
# Remote MCP Access Control
|
|
79
105
|
# =============================================================================
|
|
@@ -131,6 +157,10 @@ SAP_MCP_X402_MAX_TIMEOUT_SECONDS=120
|
|
|
131
157
|
# SAP_MCP_X402_FACILITATOR_AUTH_TOKEN=
|
|
132
158
|
# Optional browser/manual checkout link included in 402 JSON responses.
|
|
133
159
|
# SAP_MCP_PAY_SH_CHECKOUT_URL=https://pay.sh/checkout/YOUR_CHECKOUT_ID
|
|
160
|
+
# Optional strict hosted marketplace mode. Keeps MCP handshake/discovery,
|
|
161
|
+
# base profile, skills bootstrap, and local payment bridge helper tools free,
|
|
162
|
+
# but charges basic balance and operational reads.
|
|
163
|
+
SAP_MCP_MONETIZATION_STRICT_TOOLS=false
|
|
134
164
|
|
|
135
165
|
# OOBE self-hosted x402 facilitator.
|
|
136
166
|
# The facilitator signer is a dedicated fee-payer keypair used only to complete
|
package/CHANGELOG.md
CHANGED
|
@@ -2,9 +2,50 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project are documented in this file.
|
|
4
4
|
|
|
5
|
-
##
|
|
5
|
+
## 0.9.2 - 2026-07-17
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
### Added
|
|
8
|
+
|
|
9
|
+
- Added the free `sap_agent_start` tool and matching `sap-agent-start` prompt so
|
|
10
|
+
users can tell an agent "Start SAP MCP" instead of pasting a long operations
|
|
11
|
+
prompt. The bootstrap points agents to `sap_skills_bundle`,
|
|
12
|
+
`sap_payments_readiness`, and `sap_payments_call_paid_tool` while preserving
|
|
13
|
+
hosted accountless/non-custodial behavior.
|
|
14
|
+
|
|
15
|
+
### Fixed
|
|
16
|
+
|
|
17
|
+
- Tightened SAP MCP agent bootstrap behavior so simple connection checks stay
|
|
18
|
+
concise instead of dumping the full tool catalog or protocol category list.
|
|
19
|
+
- Added AgentKit SPL token input alias normalization for common wallet-owner
|
|
20
|
+
fields, reducing schema-discovery retries in agent runtimes.
|
|
21
|
+
|
|
22
|
+
## 0.9.1 - 2026-07-16
|
|
23
|
+
|
|
24
|
+
Hotfix for hosted SAP MCP users whose agent runtime connected to the remote
|
|
25
|
+
`sap` server but could not start the local non-custodial `sap_payments` bridge
|
|
26
|
+
from an `npx`/`npm exec` install.
|
|
27
|
+
|
|
28
|
+
### Fixed
|
|
29
|
+
|
|
30
|
+
- Fixed `sap-mcp-server` startup when launched by Hermes, Codex, Claude,
|
|
31
|
+
OpenClaw, or another MCP runtime through `npx` outside the repository. The
|
|
32
|
+
CLI bootstrap now adds both package-local and npm/npx parent `node_modules`
|
|
33
|
+
paths before loading the server, so SAP SDK assets such as
|
|
34
|
+
`@oobe-protocol-labs/synapse-sap-sdk/idl/synapse_agent_sap.json` resolve
|
|
35
|
+
correctly.
|
|
36
|
+
- Made the runtime module resolver find the actual package root from any
|
|
37
|
+
compiled `dist/*` entrypoint instead of assuming a fixed folder depth.
|
|
38
|
+
- Updated generated runtime config examples and wizard tests to pin the local
|
|
39
|
+
`sap_payments` bridge to `@oobe-protocol-labs/sap-mcp-server@0.9.1`.
|
|
40
|
+
|
|
41
|
+
### Verification
|
|
42
|
+
|
|
43
|
+
- `pnpm run lint`
|
|
44
|
+
- `pnpm run typecheck`
|
|
45
|
+
- `pnpm test -- --run src/runtime/module-resolution.test.ts src/payments/pricing.test.ts src/payments/monetization-gate.test.ts src/remote/server.test.ts`
|
|
46
|
+
- `pnpm run build`
|
|
47
|
+
- Real packaged install smoke test from a temporary directory using the generated
|
|
48
|
+
npm tarball and `SAP_MCP_PAYMENTS_BRIDGE_ONLY=true`.
|
|
8
49
|
|
|
9
50
|
## 0.9.0 - 2026-07-16
|
|
10
51
|
|
package/README.md
CHANGED
|
@@ -60,6 +60,17 @@ Create or select a profile:
|
|
|
60
60
|
npx sap-mcp-config wizard
|
|
61
61
|
```
|
|
62
62
|
|
|
63
|
+
After connecting hosted SAP MCP in an agent runtime, start the agent context
|
|
64
|
+
with one short message:
|
|
65
|
+
|
|
66
|
+
```text
|
|
67
|
+
Start SAP MCP.
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
The agent should call the free `sap_agent_start` tool or `sap-agent-start`
|
|
71
|
+
prompt, load `sap_skills_bundle`, and use the local `sap_payments` bridge for
|
|
72
|
+
paid/write hosted calls.
|
|
73
|
+
|
|
63
74
|
Inspect the active profile:
|
|
64
75
|
|
|
65
76
|
```bash
|
|
@@ -117,7 +128,7 @@ For paid/write hosted tools, add the local non-custodial payment bridge as well:
|
|
|
117
128
|
```toml
|
|
118
129
|
[mcp_servers.sap_payments]
|
|
119
130
|
command = "npx"
|
|
120
|
-
args = ["--yes", "--package", "@oobe-protocol-labs/sap-mcp-server@0.9.
|
|
131
|
+
args = ["--yes", "--package", "@oobe-protocol-labs/sap-mcp-server@0.9.2", "sap-mcp-server"]
|
|
121
132
|
startup_timeout_sec = 300
|
|
122
133
|
tool_timeout_sec = 300
|
|
123
134
|
|
|
@@ -135,7 +146,7 @@ Codex supports Streamable HTTP MCP servers with URL-based entries in `config.tom
|
|
|
135
146
|
```toml
|
|
136
147
|
[mcp_servers.sap]
|
|
137
148
|
command = "npx"
|
|
138
|
-
args = ["--yes", "--package", "@oobe-protocol-labs/sap-mcp-server@0.9.
|
|
149
|
+
args = ["--yes", "--package", "@oobe-protocol-labs/sap-mcp-server@0.9.2", "sap-mcp-server"]
|
|
139
150
|
|
|
140
151
|
[mcp_servers.sap.env]
|
|
141
152
|
SAP_MCP_ALLOW_ENV_CONFIG_OVERRIDE = "false"
|
|
@@ -180,6 +191,12 @@ DELETE /mcp
|
|
|
180
191
|
|
|
181
192
|
`GET /docs` serves the public documentation site for install, start, configuration, hosted remote MCP, x402/pay.sh payments, and MCP client setup.
|
|
182
193
|
|
|
194
|
+
Marketplace listings such as Smithery can use [`smithery.config.schema.json`](smithery.config.schema.json)
|
|
195
|
+
to explain the hosted setup path. The schema intentionally asks for no
|
|
196
|
+
secrets: SAP MCP hosted reads work remotely, while paid/write calls use the
|
|
197
|
+
wizard-managed local `sap_payments` bridge, local profile policy, and
|
|
198
|
+
user-controlled signer.
|
|
199
|
+
|
|
183
200
|
See [05. Remote VPS Deployment](docs/05_REMOTE_VPS_DEPLOYMENT.md) and [07. Endpoints And Clients](docs/07_ENDPOINTS_AND_CLIENTS.md).
|
|
184
201
|
|
|
185
202
|
## 6. Monetization
|
|
@@ -188,3 +188,4 @@ npm exec --yes --package @oobe-protocol-labs/sap-mcp-server -- sap-mcp-config au
|
|
|
188
188
|
| `04_CLIENT_CONFIGS.md` | Claude, Hermes, Codex, OpenClaw config examples |
|
|
189
189
|
| `05_SKILLS_AND_TOOLS.md` | Skills, tool selection, and security behavior |
|
|
190
190
|
| `06_DESKTOP_GUI_WIZARD.md` | Desktop GUI wizard install, hosted setup, local payment bridge, and runtime behavior |
|
|
191
|
+
| `07_SMITHERY_AND_MARKETPLACES.md` | Smithery setup schema, marketplace usage, native x402 clients, and local bridge guidance |
|
|
@@ -108,7 +108,21 @@ npm exec --yes --package @oobe-protocol-labs/sap-mcp-server -- sap-mcp-config sh
|
|
|
108
108
|
npm exec --yes --package @oobe-protocol-labs/sap-mcp-server -- sap-mcp-config profile-info
|
|
109
109
|
```
|
|
110
110
|
|
|
111
|
-
## 4.
|
|
111
|
+
## 4. First Agent Message
|
|
112
|
+
|
|
113
|
+
After the hosted `sap` server and local `sap_payments` bridge are configured,
|
|
114
|
+
restart the agent runtime and say:
|
|
115
|
+
|
|
116
|
+
```text
|
|
117
|
+
Start SAP MCP.
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
The agent should call `sap_agent_start`, load `sap_skills_bundle`, inspect
|
|
121
|
+
hosted profile state, and use `sap_payments_readiness` before paid/write calls.
|
|
122
|
+
This is the normal path for non-technical users. They should not need to paste a
|
|
123
|
+
long prompt or manually explain x402.
|
|
124
|
+
|
|
125
|
+
## 5. Test Hosted MCP Manually
|
|
112
126
|
|
|
113
127
|
Initialize:
|
|
114
128
|
|
|
@@ -130,7 +144,7 @@ curl -iN https://mcp.sap.oobeprotocol.ai/mcp \
|
|
|
130
144
|
-d '{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}'
|
|
131
145
|
```
|
|
132
146
|
|
|
133
|
-
##
|
|
147
|
+
## 6. Free Tool Smoke Test
|
|
134
148
|
|
|
135
149
|
```bash
|
|
136
150
|
curl -iN https://mcp.sap.oobeprotocol.ai/mcp \
|
|
@@ -143,7 +157,7 @@ curl -iN https://mcp.sap.oobeprotocol.ai/mcp \
|
|
|
143
157
|
|
|
144
158
|
The RPC URL in returned metadata must be redacted if it contains query secrets.
|
|
145
159
|
|
|
146
|
-
##
|
|
160
|
+
## 7. Paid Tool Smoke Test
|
|
147
161
|
|
|
148
162
|
```bash
|
|
149
163
|
curl -iN https://mcp.sap.oobeprotocol.ai/mcp \
|
|
@@ -45,7 +45,7 @@ url = "https://mcp.sap.oobeprotocol.ai/mcp"
|
|
|
45
45
|
|
|
46
46
|
[mcp_servers.sap_payments]
|
|
47
47
|
command = "npx.cmd"
|
|
48
|
-
args = ["--yes", "--package", "@oobe-protocol-labs/sap-mcp-server@0.9.
|
|
48
|
+
args = ["--yes", "--package", "@oobe-protocol-labs/sap-mcp-server@0.9.2", "sap-mcp-server"]
|
|
49
49
|
startup_timeout_sec = 300
|
|
50
50
|
tool_timeout_sec = 300
|
|
51
51
|
|
|
@@ -65,7 +65,7 @@ the complete local stdio SAP MCP process instead of using the hosted endpoint, u
|
|
|
65
65
|
```toml
|
|
66
66
|
[mcp_servers.sap]
|
|
67
67
|
command = "npx.cmd"
|
|
68
|
-
args = ["--yes", "--package", "@oobe-protocol-labs/sap-mcp-server@0.9.
|
|
68
|
+
args = ["--yes", "--package", "@oobe-protocol-labs/sap-mcp-server@0.9.2", "sap-mcp-server"]
|
|
69
69
|
|
|
70
70
|
[mcp_servers.sap.env]
|
|
71
71
|
SAP_MCP_ALLOW_ENV_CONFIG_OVERRIDE = "false"
|
|
@@ -194,7 +194,7 @@ For Claude Code, use the official MCP CLI pattern:
|
|
|
194
194
|
|
|
195
195
|
```bash
|
|
196
196
|
claude mcp add --transport http sap https://mcp.sap.oobeprotocol.ai/mcp
|
|
197
|
-
claude mcp add --transport stdio sap_payments -- npx --yes --package @oobe-protocol-labs/sap-mcp-server@0.9.
|
|
197
|
+
claude mcp add --transport stdio sap_payments -- npx --yes --package @oobe-protocol-labs/sap-mcp-server@0.9.2 sap-mcp-server
|
|
198
198
|
```
|
|
199
199
|
|
|
200
200
|
Set `SAP_MCP_PAYMENTS_BRIDGE_ONLY=true` and `SAP_ALLOWED_TOOLS=all` in the
|
|
@@ -1,6 +1,30 @@
|
|
|
1
1
|
# Skills And Tool Usage
|
|
2
2
|
|
|
3
|
-
## 1.
|
|
3
|
+
## 1. Start SAP MCP
|
|
4
|
+
|
|
5
|
+
Users should not need to paste a long operations prompt. After connecting the
|
|
6
|
+
hosted `sap` MCP server, say this to the agent:
|
|
7
|
+
|
|
8
|
+
```text
|
|
9
|
+
Start SAP MCP.
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
The agent should then:
|
|
13
|
+
|
|
14
|
+
1. call `sap_agent_start`;
|
|
15
|
+
2. call `sap_skills_bundle` with `includeContents: true`;
|
|
16
|
+
3. use exact tool names from `tools/list`;
|
|
17
|
+
4. call `sap_payments_readiness` if the local `sap_payments` bridge is visible;
|
|
18
|
+
5. use `sap_payments_call_paid_tool` for paid hosted tools that return x402 payment requirements.
|
|
19
|
+
|
|
20
|
+
If `sap_payments` is missing, run the wizard repair flow and restart the agent
|
|
21
|
+
runtime:
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
npm exec --yes --package @oobe-protocol-labs/sap-mcp-server -- sap-mcp-config wizard
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## 2. Install Skills
|
|
4
28
|
|
|
5
29
|
List bundled skills:
|
|
6
30
|
|
|
@@ -34,7 +58,7 @@ Install bundled skills into a local agent skill directory:
|
|
|
34
58
|
}
|
|
35
59
|
```
|
|
36
60
|
|
|
37
|
-
##
|
|
61
|
+
## 3. Tool Selection
|
|
38
62
|
|
|
39
63
|
Use profile and context first:
|
|
40
64
|
|
|
@@ -63,7 +87,7 @@ Use transactions:
|
|
|
63
87
|
- `sap_sign_transaction`
|
|
64
88
|
- `sap_submit_signed_transaction`
|
|
65
89
|
|
|
66
|
-
##
|
|
90
|
+
## 4. Agent Safety
|
|
67
91
|
|
|
68
92
|
Agents must not:
|
|
69
93
|
|
|
@@ -106,7 +106,7 @@ url = "https://mcp.sap.oobeprotocol.ai/mcp"
|
|
|
106
106
|
|
|
107
107
|
[mcp_servers.sap_payments]
|
|
108
108
|
command = "npx"
|
|
109
|
-
args = ["--yes", "--package", "@oobe-protocol-labs/sap-mcp-server@0.9.
|
|
109
|
+
args = ["--yes", "--package", "@oobe-protocol-labs/sap-mcp-server@0.9.2", "sap-mcp-server"]
|
|
110
110
|
startup_timeout_sec = 300
|
|
111
111
|
tool_timeout_sec = 300
|
|
112
112
|
|
|
@@ -138,7 +138,7 @@ Claude Desktop uses a root `mcpServers` JSON object:
|
|
|
138
138
|
},
|
|
139
139
|
"sap_payments": {
|
|
140
140
|
"command": "npx",
|
|
141
|
-
"args": ["--yes", "--package", "@oobe-protocol-labs/sap-mcp-server@0.9.
|
|
141
|
+
"args": ["--yes", "--package", "@oobe-protocol-labs/sap-mcp-server@0.9.2", "sap-mcp-server"],
|
|
142
142
|
"env": {
|
|
143
143
|
"SAP_MCP_ALLOW_ENV_CONFIG_OVERRIDE": "false",
|
|
144
144
|
"SAP_MCP_PAYMENTS_BRIDGE_ONLY": "true",
|
|
@@ -170,7 +170,7 @@ Hermes global `mcp.json` uses flat server entries:
|
|
|
170
170
|
},
|
|
171
171
|
"sap_payments": {
|
|
172
172
|
"command": "npx",
|
|
173
|
-
"args": ["--yes", "--package", "@oobe-protocol-labs/sap-mcp-server@0.9.
|
|
173
|
+
"args": ["--yes", "--package", "@oobe-protocol-labs/sap-mcp-server@0.9.2", "sap-mcp-server"],
|
|
174
174
|
"env": {
|
|
175
175
|
"SAP_MCP_ALLOW_ENV_CONFIG_OVERRIDE": "false",
|
|
176
176
|
"SAP_MCP_PAYMENTS_BRIDGE_ONLY": "true",
|
|
@@ -193,7 +193,7 @@ mcp_servers:
|
|
|
193
193
|
args:
|
|
194
194
|
- --yes
|
|
195
195
|
- --package
|
|
196
|
-
- @oobe-protocol-labs/sap-mcp-server@0.9.
|
|
196
|
+
- @oobe-protocol-labs/sap-mcp-server@0.9.2
|
|
197
197
|
- sap-mcp-server
|
|
198
198
|
env:
|
|
199
199
|
SAP_MCP_ALLOW_ENV_CONFIG_OVERRIDE: "false"
|
|
@@ -215,7 +215,7 @@ OpenClaw MCP JSON uses the same root `mcpServers` structure as generic MCP clien
|
|
|
215
215
|
},
|
|
216
216
|
"sap_payments": {
|
|
217
217
|
"command": "npx",
|
|
218
|
-
"args": ["--yes", "--package", "@oobe-protocol-labs/sap-mcp-server@0.9.
|
|
218
|
+
"args": ["--yes", "--package", "@oobe-protocol-labs/sap-mcp-server@0.9.2", "sap-mcp-server"],
|
|
219
219
|
"env": {
|
|
220
220
|
"SAP_MCP_ALLOW_ENV_CONFIG_OVERRIDE": "false",
|
|
221
221
|
"SAP_MCP_PAYMENTS_BRIDGE_ONLY": "true",
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
# Smithery And MCP Marketplaces
|
|
2
|
+
|
|
3
|
+
## 1. What Smithery Connects To
|
|
4
|
+
|
|
5
|
+
Smithery connects to the hosted SAP MCP endpoint:
|
|
6
|
+
|
|
7
|
+
```txt
|
|
8
|
+
https://mcp.sap.oobeprotocol.ai/mcp
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
The hosted endpoint is non-custodial. It can expose tools, prompts, resources,
|
|
12
|
+
metadata, free discovery calls, and x402 payment challenges, but it does not
|
|
13
|
+
store or load user keypairs.
|
|
14
|
+
|
|
15
|
+
Marketplace metadata:
|
|
16
|
+
|
|
17
|
+
```txt
|
|
18
|
+
https://mcp.sap.oobeprotocol.ai/server.json
|
|
19
|
+
https://mcp.sap.oobeprotocol.ai/.well-known/mcp/server-card.json
|
|
20
|
+
https://mcp.sap.oobeprotocol.ai/smithery.config.schema.json
|
|
21
|
+
https://mcp.sap.oobeprotocol.ai/.well-known/x402
|
|
22
|
+
https://mcp.sap.oobeprotocol.ai/pay/provider.yml
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## 2. Recommended Smithery Mode
|
|
26
|
+
|
|
27
|
+
Use Smithery first for free discovery and tool inspection:
|
|
28
|
+
|
|
29
|
+
- `initialize`
|
|
30
|
+
- `tools/list`
|
|
31
|
+
- `prompts/list`
|
|
32
|
+
- `resources/list`
|
|
33
|
+
- `sap_profile_current`
|
|
34
|
+
- `sap_skills_list`
|
|
35
|
+
- `sap_get_network_overview`
|
|
36
|
+
- `sap_payments_readiness` when the local bridge is also installed
|
|
37
|
+
|
|
38
|
+
Paid/write calls return an x402 challenge. That is expected behavior, not an
|
|
39
|
+
authentication error.
|
|
40
|
+
|
|
41
|
+
## 3. Paid Tool Options
|
|
42
|
+
|
|
43
|
+
There are three supported paths for paid hosted SAP MCP tools.
|
|
44
|
+
|
|
45
|
+
| Path | Use When | What Pays |
|
|
46
|
+
| --- | --- | --- |
|
|
47
|
+
| Free discovery | The user is browsing tools, docs, metadata, or base context. | Nothing. |
|
|
48
|
+
| Native x402 client | The agent runtime or marketplace can parse `PAYMENT-REQUIRED`, sign locally, and retry with `PAYMENT-SIGNATURE` or `X-PAYMENT`. | The runtime's x402 wallet or payer. |
|
|
49
|
+
| Local `sap_payments` bridge | The runtime can call local MCP tools but does not replay x402 itself. | The user's local SAP MCP profile or external signer. |
|
|
50
|
+
|
|
51
|
+
The hosted server never signs for the user.
|
|
52
|
+
|
|
53
|
+
## 4. Smithery Config Schema
|
|
54
|
+
|
|
55
|
+
SAP MCP publishes a Smithery-friendly JSON schema:
|
|
56
|
+
|
|
57
|
+
```txt
|
|
58
|
+
https://mcp.sap.oobeprotocol.ai/smithery.config.schema.json
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
The schema is intentionally optional because free discovery works immediately.
|
|
62
|
+
It asks the user or runtime to declare the intended usage mode:
|
|
63
|
+
|
|
64
|
+
- `free-discovery`
|
|
65
|
+
- `x402-native-client`
|
|
66
|
+
- `local-sap-payments-bridge`
|
|
67
|
+
|
|
68
|
+
When publishing or refreshing SAP MCP on Smithery, pass the same schema file:
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
npx --yes smithery mcp publish https://mcp.sap.oobeprotocol.ai/mcp \
|
|
72
|
+
-n oobe-protocol/sap-mcp \
|
|
73
|
+
--config-schema smithery.config.schema.json
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
## 5. Local Bridge Setup
|
|
77
|
+
|
|
78
|
+
For most users who want paid/write tools, run the wizard locally:
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
npm exec --yes --package @oobe-protocol-labs/sap-mcp-server -- sap-mcp-config wizard
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
Choose the recommended full hosted setup. The wizard configures:
|
|
85
|
+
|
|
86
|
+
- hosted `sap` remote MCP;
|
|
87
|
+
- local `sap_payments` MCP bridge;
|
|
88
|
+
- active SAP MCP profile;
|
|
89
|
+
- local wallet or external signer boundary;
|
|
90
|
+
- policy limits for paid/write operations.
|
|
91
|
+
|
|
92
|
+
After restarting the agent runtime, ask the agent to run:
|
|
93
|
+
|
|
94
|
+
```txt
|
|
95
|
+
sap_payments_readiness
|
|
96
|
+
sap_payments_profile_current
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
Then paid hosted calls should be routed through:
|
|
100
|
+
|
|
101
|
+
```txt
|
|
102
|
+
sap_payments_call_paid_tool
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
## 6. Native x402 Client Flow
|
|
106
|
+
|
|
107
|
+
If the user already has an x402-capable client, the flow is:
|
|
108
|
+
|
|
109
|
+
1. Call the hosted paid tool normally.
|
|
110
|
+
2. Receive `HTTP 402` with `PAYMENT-REQUIRED`.
|
|
111
|
+
3. Parse the first accepted requirement from `accepts[0]`.
|
|
112
|
+
4. Build and sign a fresh payment payload from that exact requirement.
|
|
113
|
+
5. Retry the exact same MCP method and params in the same MCP session.
|
|
114
|
+
6. Send the proof as `PAYMENT-SIGNATURE` or `X-PAYMENT`.
|
|
115
|
+
7. Read `PAYMENT-RESPONSE` or `X-PAYMENT-RESPONSE` as the receipt.
|
|
116
|
+
|
|
117
|
+
The JSON-RPC `id` may change during retry, but the method and params must stay
|
|
118
|
+
the same. SAP MCP binds payment to the canonical tool request, not to a private
|
|
119
|
+
server-side session wallet.
|
|
120
|
+
|
|
121
|
+
## 7. Why Calls Can Exceed Paid Volume
|
|
122
|
+
|
|
123
|
+
Marketplace traffic often contains many unpaid probes:
|
|
124
|
+
|
|
125
|
+
- capability scanning;
|
|
126
|
+
- `tools/list`;
|
|
127
|
+
- agents trying paid tools without an x402 payer;
|
|
128
|
+
- retries that stop after receiving the challenge;
|
|
129
|
+
- read-only marketplace analytics.
|
|
130
|
+
|
|
131
|
+
Those requests count as calls or payment challenges, but they do not count as
|
|
132
|
+
settled volume. Settled volume only increases when a valid x402 proof is
|
|
133
|
+
verified and settled through the OOBE facilitator.
|
|
134
|
+
|
|
135
|
+
## 8. Strict Marketplace Monetization
|
|
136
|
+
|
|
137
|
+
OOBE hosted deployments can run strict tool monetization:
|
|
138
|
+
|
|
139
|
+
```bash
|
|
140
|
+
SAP_MCP_MONETIZATION_STRICT_TOOLS=true
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
In strict mode, MCP handshake and discovery still work, but every operational
|
|
144
|
+
tool call outside base profile, skill bootstrap, and local `sap_payments` bridge
|
|
145
|
+
helpers requires x402 payment. This is the correct mode when public marketplace
|
|
146
|
+
traffic should not receive free balance, token-account, or operational reads.
|
|
147
|
+
|
|
148
|
+
Strict mode does not make Smithery or any marketplace pay automatically. It only
|
|
149
|
+
ensures that unpaid operational calls are challenged consistently. The caller
|
|
150
|
+
still needs a native x402 payer, a custom x402 CLI/proxy, or the local
|
|
151
|
+
`sap_payments` bridge.
|
|
152
|
+
|
|
153
|
+
## 9. Agent Instructions
|
|
154
|
+
|
|
155
|
+
Agents should summarize SAP MCP marketplace state like this:
|
|
156
|
+
|
|
157
|
+
> SAP MCP hosted tools are connected. Free discovery works directly. Paid or
|
|
158
|
+
> write tools require either a native x402-capable client or the local
|
|
159
|
+
> `sap_payments` bridge created by the SAP MCP wizard. OOBE never receives
|
|
160
|
+
> user keypair bytes.
|
|
161
|
+
|
|
162
|
+
Avoid saying the hosted server "has no signer" as if the user is blocked. The
|
|
163
|
+
correct trust model is: remote tools, local signatures.
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
<svg viewBox="0 0 120 120" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<defs>
|
|
3
|
+
<linearGradient id="lobster-gradient" x1="0%" y1="0%" x2="100%" y2="100%">
|
|
4
|
+
<stop offset="0%" stop-color="#ff4d4d"/>
|
|
5
|
+
<stop offset="100%" stop-color="#991b1b"/>
|
|
6
|
+
</linearGradient>
|
|
7
|
+
</defs>
|
|
8
|
+
<!-- Body -->
|
|
9
|
+
<path d="M60 10 C30 10 15 35 15 55 C15 75 30 95 45 100 L45 110 L55 110 L55 100 C55 100 60 102 65 100 L65 110 L75 110 L75 100 C90 95 105 75 105 55 C105 35 90 10 60 10Z" fill="url(#lobster-gradient)"/>
|
|
10
|
+
<!-- Left Claw -->
|
|
11
|
+
<path d="M20 45 C5 40 0 50 5 60 C10 70 20 65 25 55 C28 48 25 45 20 45Z" fill="url(#lobster-gradient)"/>
|
|
12
|
+
<!-- Right Claw -->
|
|
13
|
+
<path d="M100 45 C115 40 120 50 115 60 C110 70 100 65 95 55 C92 48 95 45 100 45Z" fill="url(#lobster-gradient)"/>
|
|
14
|
+
<!-- Antenna -->
|
|
15
|
+
<path d="M45 15 Q35 5 30 8" stroke="#ff4d4d" stroke-width="3" stroke-linecap="round"/>
|
|
16
|
+
<path d="M75 15 Q85 5 90 8" stroke="#ff4d4d" stroke-width="3" stroke-linecap="round"/>
|
|
17
|
+
<!-- Eyes -->
|
|
18
|
+
<circle cx="45" cy="35" r="6" fill="#050810"/>
|
|
19
|
+
<circle cx="75" cy="35" r="6" fill="#050810"/>
|
|
20
|
+
<circle cx="46" cy="34" r="2.5" fill="#00e5cc"/>
|
|
21
|
+
<circle cx="76" cy="34" r="2.5" fill="#00e5cc"/>
|
|
22
|
+
</svg>
|
package/config.schema.json
CHANGED
|
@@ -307,6 +307,11 @@
|
|
|
307
307
|
"format": "uri",
|
|
308
308
|
"description": "Optional pay.sh checkout URL included in 402 response bodies."
|
|
309
309
|
},
|
|
310
|
+
"strictTools": {
|
|
311
|
+
"type": "boolean",
|
|
312
|
+
"default": false,
|
|
313
|
+
"description": "When true, hosted monetization charges every non-essential tool call. MCP handshake/discovery, base profile, skills bootstrap, and local payment bridge helper tools remain free."
|
|
314
|
+
},
|
|
310
315
|
"prices": {
|
|
311
316
|
"type": "object",
|
|
312
317
|
"additionalProperties": false,
|
package/dist/config/env.d.ts
CHANGED
|
@@ -55,6 +55,7 @@ export declare const envSchema: z.ZodObject<{
|
|
|
55
55
|
SAP_MCP_X402_FACILITATOR_AUTH_TOKEN: z.ZodOptional<z.ZodString>;
|
|
56
56
|
SAP_MCP_X402_MAX_TIMEOUT_SECONDS: z.ZodDefault<z.ZodNumber>;
|
|
57
57
|
SAP_MCP_PAY_SH_CHECKOUT_URL: z.ZodOptional<z.ZodString>;
|
|
58
|
+
SAP_MCP_MONETIZATION_STRICT_TOOLS: z.ZodDefault<z.ZodEffects<z.ZodBoolean, boolean, unknown>>;
|
|
58
59
|
SAP_MCP_PRICE_READ_PREMIUM_USD: z.ZodDefault<z.ZodNumber>;
|
|
59
60
|
SAP_MCP_PRICE_BUILDER_USD: z.ZodDefault<z.ZodNumber>;
|
|
60
61
|
SAP_MCP_PRICE_VALUE_FIXED_USD: z.ZodDefault<z.ZodNumber>;
|
|
@@ -88,6 +89,7 @@ export declare const envSchema: z.ZodObject<{
|
|
|
88
89
|
SAP_MCP_MONETIZATION_ENABLED: boolean;
|
|
89
90
|
SAP_MCP_MONETIZATION_PROVIDER: "x402" | "pay-sh";
|
|
90
91
|
SAP_MCP_X402_MAX_TIMEOUT_SECONDS: number;
|
|
92
|
+
SAP_MCP_MONETIZATION_STRICT_TOOLS: boolean;
|
|
91
93
|
SAP_MCP_PRICE_READ_PREMIUM_USD: number;
|
|
92
94
|
SAP_MCP_PRICE_BUILDER_USD: number;
|
|
93
95
|
SAP_MCP_PRICE_VALUE_FIXED_USD: number;
|
|
@@ -153,6 +155,7 @@ export declare const envSchema: z.ZodObject<{
|
|
|
153
155
|
SAP_MCP_X402_FACILITATOR_AUTH_TOKEN?: string | undefined;
|
|
154
156
|
SAP_MCP_X402_MAX_TIMEOUT_SECONDS?: number | undefined;
|
|
155
157
|
SAP_MCP_PAY_SH_CHECKOUT_URL?: string | undefined;
|
|
158
|
+
SAP_MCP_MONETIZATION_STRICT_TOOLS?: unknown;
|
|
156
159
|
SAP_MCP_PRICE_READ_PREMIUM_USD?: number | undefined;
|
|
157
160
|
SAP_MCP_PRICE_BUILDER_USD?: number | undefined;
|
|
158
161
|
SAP_MCP_PRICE_VALUE_FIXED_USD?: number | undefined;
|
|
@@ -234,6 +237,7 @@ export interface SapMcpMonetizationConfig {
|
|
|
234
237
|
facilitatorAuthToken?: string;
|
|
235
238
|
maxTimeoutSeconds: number;
|
|
236
239
|
payShCheckoutUrl?: string;
|
|
240
|
+
strictTools: boolean;
|
|
237
241
|
prices: {
|
|
238
242
|
readPremiumUsd: number;
|
|
239
243
|
builderUsd: number;
|
package/dist/config/env.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/config/env.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AA0DxB;;GAEG;AACH,eAAO,MAAM,SAAS
|
|
1
|
+
{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/config/env.ts"],"names":[],"mappings":"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"}
|
package/dist/config/env.js
CHANGED
|
@@ -112,6 +112,7 @@ export const envSchema = z.object({
|
|
|
112
112
|
SAP_MCP_X402_FACILITATOR_AUTH_TOKEN: z.string().optional(),
|
|
113
113
|
SAP_MCP_X402_MAX_TIMEOUT_SECONDS: z.coerce.number().positive().default(120),
|
|
114
114
|
SAP_MCP_PAY_SH_CHECKOUT_URL: z.string().url().optional(),
|
|
115
|
+
SAP_MCP_MONETIZATION_STRICT_TOOLS: booleanEnvSchema.default(false),
|
|
115
116
|
SAP_MCP_PRICE_READ_PREMIUM_USD: z.coerce.number().positive().default(0.008),
|
|
116
117
|
SAP_MCP_PRICE_BUILDER_USD: z.coerce.number().positive().default(0.05),
|
|
117
118
|
SAP_MCP_PRICE_VALUE_FIXED_USD: z.coerce.number().nonnegative().default(0.2),
|
|
@@ -518,6 +519,8 @@ function transformToRuntimeConfig(env, fileConfig = {}) {
|
|
|
518
519
|
facilitatorAuthToken: env.SAP_MCP_X402_FACILITATOR_AUTH_TOKEN,
|
|
519
520
|
maxTimeoutSeconds: env.SAP_MCP_X402_MAX_TIMEOUT_SECONDS,
|
|
520
521
|
payShCheckoutUrl: env.SAP_MCP_PAY_SH_CHECKOUT_URL,
|
|
522
|
+
strictTools: asOptionalBoolean(monetizationConfig.strictTools)
|
|
523
|
+
?? env.SAP_MCP_MONETIZATION_STRICT_TOOLS,
|
|
521
524
|
prices: {
|
|
522
525
|
readPremiumUsd: asOptionalNumber(monetizationPrices.readPremiumUsd) ?? env.SAP_MCP_PRICE_READ_PREMIUM_USD,
|
|
523
526
|
builderUsd: asOptionalNumber(monetizationPrices.builderUsd) ?? env.SAP_MCP_PRICE_BUILDER_USD,
|