Search / io.github.nirholas/x402-bridge
x402 Universal Payer
L0· runs locallyPay any x402 endpoint on the open web: auto-paying bridge with Bazaar discovery and spend caps.
v1.0.2 · active · repository · website · descriptor JSON · versions
Search / io.github.nirholas/x402-bridge
L0· runs locallyPay any x402 endpoint on the open web: auto-paying bridge with Bazaar discovery and spend caps.
v1.0.2 · active · repository · website · descriptor JSON · versions
{
"mcpServers": {
"x402-bridge": {
"command": "npx",
"args": [
"-y",
"@three-ws/[email protected]"
],
"env": {
"MCP_BRIDGE_EVM_PRIVATE_KEY": "${MCP_BRIDGE_EVM_PRIVATE_KEY}",
"MCP_BRIDGE_SVM_PRIVATE_KEY": "${MCP_BRIDGE_SVM_PRIVATE_KEY}",
"MCP_BRIDGE_MAX_PRICE_PER_CALL_ATOMIC": "100000",
"MCP_BRIDGE_MAX_TOTAL_ATOMIC": "1000000",
"MCP_BRIDGE_ALLOW_HTTP": "0",
"MCP_BRIDGE_DISCOVER_LIMIT": "20",
"MCP_BRIDGE_BAZAAR_URL": "https://api.cdp.coinbase.com/platform/v2/x402/discovery/resources",
"MCP_BRIDGE_BATCH_DEPOSIT_MULTIPLIER": "5",
"MCP_BRIDGE_MAX_DEPOSIT_ATOMIC": "5000000",
"X402_MCP_BRIDGE_CHANNELS_DIR": "~/.x402-mcp-bridge/channels"
}
}
}
}claude mcp add x402-bridge -e "MCP_BRIDGE_EVM_PRIVATE_KEY=${MCP_BRIDGE_EVM_PRIVATE_KEY}" -e "MCP_BRIDGE_SVM_PRIVATE_KEY=${MCP_BRIDGE_SVM_PRIVATE_KEY}" -e "MCP_BRIDGE_MAX_PRICE_PER_CALL_ATOMIC=100000" -e "MCP_BRIDGE_MAX_TOTAL_ATOMIC=1000000" -e "MCP_BRIDGE_ALLOW_HTTP=0" -e "MCP_BRIDGE_DISCOVER_LIMIT=20" -e "MCP_BRIDGE_BAZAAR_URL=https://api.cdp.coinbase.com/platform/v2/x402/discovery/resources" -e "MCP_BRIDGE_BATCH_DEPOSIT_MULTIPLIER=5" -e "MCP_BRIDGE_MAX_DEPOSIT_ATOMIC=5000000" -e "X402_MCP_BRIDGE_CHANNELS_DIR=~/.x402-mcp-bridge/channels" -- npx -y @three-ws/[email protected][mcp_servers.x402-bridge]
command = "npx"
args = ["-y", "@three-ws/[email protected]"]
env = { "MCP_BRIDGE_EVM_PRIVATE_KEY" = "${MCP_BRIDGE_EVM_PRIVATE_KEY}", "MCP_BRIDGE_SVM_PRIVATE_KEY" = "${MCP_BRIDGE_SVM_PRIVATE_KEY}", "MCP_BRIDGE_MAX_PRICE_PER_CALL_ATOMIC" = "100000", "MCP_BRIDGE_MAX_TOTAL_ATOMIC" = "1000000", "MCP_BRIDGE_ALLOW_HTTP" = "0", "MCP_BRIDGE_DISCOVER_LIMIT" = "20", "MCP_BRIDGE_BAZAAR_URL" = "https://api.cdp.coinbase.com/platform/v2/x402/discovery/resources", "MCP_BRIDGE_BATCH_DEPOSIT_MULTIPLIER" = "5", "MCP_BRIDGE_MAX_DEPOSIT_ATOMIC" = "5000000", "X402_MCP_BRIDGE_CHANNELS_DIR" = "~/.x402-mcp-bridge/channels" }
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"x402-bridge": {
"type": "local",
"command": [
"npx",
"-y",
"@three-ws/[email protected]"
],
"enabled": true,
"environment": {
"MCP_BRIDGE_EVM_PRIVATE_KEY": "{env:MCP_BRIDGE_EVM_PRIVATE_KEY}",
"MCP_BRIDGE_SVM_PRIVATE_KEY": "{env:MCP_BRIDGE_SVM_PRIVATE_KEY}",
"MCP_BRIDGE_MAX_PRICE_PER_CALL_ATOMIC": "100000",
"MCP_BRIDGE_MAX_TOTAL_ATOMIC": "1000000",
"MCP_BRIDGE_ALLOW_HTTP": "0",
"MCP_BRIDGE_DISCOVER_LIMIT": "20",
"MCP_BRIDGE_BAZAAR_URL": "https://api.cdp.coinbase.com/platform/v2/x402/discovery/resources",
"MCP_BRIDGE_BATCH_DEPOSIT_MULTIPLIER": "5",
"MCP_BRIDGE_MAX_DEPOSIT_ATOMIC": "5000000",
"X402_MCP_BRIDGE_CHANNELS_DIR": "~/.x402-mcp-bridge/channels"
}
}
}
}{
"mcpServers": {
"x402-bridge": {
"command": "npx",
"args": [
"-y",
"@three-ws/[email protected]"
],
"env": {
"MCP_BRIDGE_EVM_PRIVATE_KEY": "${MCP_BRIDGE_EVM_PRIVATE_KEY}",
"MCP_BRIDGE_SVM_PRIVATE_KEY": "${MCP_BRIDGE_SVM_PRIVATE_KEY}",
"MCP_BRIDGE_MAX_PRICE_PER_CALL_ATOMIC": "100000",
"MCP_BRIDGE_MAX_TOTAL_ATOMIC": "1000000",
"MCP_BRIDGE_ALLOW_HTTP": "0",
"MCP_BRIDGE_DISCOVER_LIMIT": "20",
"MCP_BRIDGE_BAZAAR_URL": "https://api.cdp.coinbase.com/platform/v2/x402/discovery/resources",
"MCP_BRIDGE_BATCH_DEPOSIT_MULTIPLIER": "5",
"MCP_BRIDGE_MAX_DEPOSIT_ATOMIC": "5000000",
"X402_MCP_BRIDGE_CHANNELS_DIR": "~/.x402-mcp-bridge/channels"
}
}
},
"deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=x402-bridge&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsIkB0aHJlZS13cy9tY3AtYnJpZGdlQDEuMC4yIl0sImVudiI6eyJNQ1BfQlJJREdFX0VWTV9QUklWQVRFX0tFWSI6IiR7TUNQX0JSSURHRV9FVk1fUFJJVkFURV9LRVl9IiwiTUNQX0JSSURHRV9TVk1fUFJJVkFURV9LRVkiOiIke01DUF9CUklER0VfU1ZNX1BSSVZBVEVfS0VZfSIsIk1DUF9CUklER0VfTUFYX1BSSUNFX1BFUl9DQUxMX0FUT01JQyI6IjEwMDAwMCIsIk1DUF9CUklER0VfTUFYX1RPVEFMX0FUT01JQyI6IjEwMDAwMDAiLCJNQ1BfQlJJREdFX0FMTE9XX0hUVFAiOiIwIiwiTUNQX0JSSURHRV9ESVNDT1ZFUl9MSU1JVCI6IjIwIiwiTUNQX0JSSURHRV9CQVpBQVJfVVJMIjoiaHR0cHM6Ly9hcGkuY2RwLmNvaW5iYXNlLmNvbS9wbGF0Zm9ybS92Mi94NDAyL2Rpc2NvdmVyeS9yZXNvdXJjZXMiLCJNQ1BfQlJJREdFX0JBVENIX0RFUE9TSVRfTVVMVElQTElFUiI6IjUiLCJNQ1BfQlJJREdFX01BWF9ERVBPU0lUX0FUT01JQyI6IjUwMDAwMDAiLCJYNDAyX01DUF9CUklER0VfQ0hBTk5FTFNfRElSIjoifi8ueDQwMi1tY3AtYnJpZGdlL2NoYW5uZWxzIn19"
}{
"servers": {
"x402-bridge": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@three-ws/[email protected]"
],
"env": {
"MCP_BRIDGE_EVM_PRIVATE_KEY": "${MCP_BRIDGE_EVM_PRIVATE_KEY}",
"MCP_BRIDGE_SVM_PRIVATE_KEY": "${MCP_BRIDGE_SVM_PRIVATE_KEY}",
"MCP_BRIDGE_MAX_PRICE_PER_CALL_ATOMIC": "100000",
"MCP_BRIDGE_MAX_TOTAL_ATOMIC": "1000000",
"MCP_BRIDGE_ALLOW_HTTP": "0",
"MCP_BRIDGE_DISCOVER_LIMIT": "20",
"MCP_BRIDGE_BAZAAR_URL": "https://api.cdp.coinbase.com/platform/v2/x402/discovery/resources",
"MCP_BRIDGE_BATCH_DEPOSIT_MULTIPLIER": "5",
"MCP_BRIDGE_MAX_DEPOSIT_ATOMIC": "5000000",
"X402_MCP_BRIDGE_CHANNELS_DIR": "~/.x402-mcp-bridge/channels"
}
}
}
}{
"mcpServers": {
"x402-bridge": {
"command": "npx",
"args": [
"-y",
"@three-ws/[email protected]"
],
"env": {
"MCP_BRIDGE_EVM_PRIVATE_KEY": "${MCP_BRIDGE_EVM_PRIVATE_KEY}",
"MCP_BRIDGE_SVM_PRIVATE_KEY": "${MCP_BRIDGE_SVM_PRIVATE_KEY}",
"MCP_BRIDGE_MAX_PRICE_PER_CALL_ATOMIC": "100000",
"MCP_BRIDGE_MAX_TOTAL_ATOMIC": "1000000",
"MCP_BRIDGE_ALLOW_HTTP": "0",
"MCP_BRIDGE_DISCOVER_LIMIT": "20",
"MCP_BRIDGE_BAZAAR_URL": "https://api.cdp.coinbase.com/platform/v2/x402/discovery/resources",
"MCP_BRIDGE_BATCH_DEPOSIT_MULTIPLIER": "5",
"MCP_BRIDGE_MAX_DEPOSIT_ATOMIC": "5000000",
"X402_MCP_BRIDGE_CHANNELS_DIR": "~/.x402-mcp-bridge/channels"
}
}
}
}extensions:
"x402-bridge":
enabled: true
name: "x402-bridge"
type: stdio
cmd: "npx"
args:
- "-y"
- "@three-ws/[email protected]"
envs:
"MCP_BRIDGE_EVM_PRIVATE_KEY": "${MCP_BRIDGE_EVM_PRIVATE_KEY}"
"MCP_BRIDGE_SVM_PRIVATE_KEY": "${MCP_BRIDGE_SVM_PRIVATE_KEY}"
"MCP_BRIDGE_MAX_PRICE_PER_CALL_ATOMIC": "100000"
"MCP_BRIDGE_MAX_TOTAL_ATOMIC": "1000000"
"MCP_BRIDGE_ALLOW_HTTP": "0"
"MCP_BRIDGE_DISCOVER_LIMIT": "20"
"MCP_BRIDGE_BAZAAR_URL": "https://api.cdp.coinbase.com/platform/v2/x402/discovery/resources"
"MCP_BRIDGE_BATCH_DEPOSIT_MULTIPLIER": "5"
"MCP_BRIDGE_MAX_DEPOSIT_ATOMIC": "5000000"
"X402_MCP_BRIDGE_CHANNELS_DIR": "~/.x402-mcp-bridge/channels"
timeout: 300
Placeholders to fill from your own secret store: ${MCP_BRIDGE_EVM_PRIVATE_KEY}, ${MCP_BRIDGE_SVM_PRIVATE_KEY}. The registry never accepts secret values.
This is a local package: the command runs on your machine.
Not scored: fewer than three checks apply, usually because no remote answered a credential-free probe or the server is a local package.
protocol.modern, protocol.stateless, protocol.transport, protocol.list_ttlno remote answered a protocol handshake (not probed yet, unreachable, or local-only)auth.prm, auth.as_metadata, auth.cimdno remote uses OAuthauth.secret_in_urlno templated URLtools.descriptions, tools.description_length, tools.schemas, tools.annotations, tools.directory_hints, tools.token_cost, tools.api_dumptool list unknown (behind auth, not probed, or empty)stability.changes, stability.rug_pulltool list unknowndeps.known_vulnsno known advisory in 179 resolved packagesdeps.mcp_sdk_version@modelcontextprotocol/sdk 1.30.1 has 1 known advisory (GHSA-6qxp-vccf-f47h); update @modelcontextprotocol/sdk to 1.31.0 or laterdeps.resolvable@three-ws/[email protected] resolved: 179 packagesNo tool definition changes recorded. A server's first observation is its baseline; later probes record what changes.
Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.
+repository +namespace-matches-repo +website ~liveness-unmeasured ~updated-62d-ago -duplicate-repo(51 names)
Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.
@three-ws/[email protected] npm178 dependencies, resolved · MCP SDK @modelcontextprotocol/sdk 1.30.1 · advisories checked 2026-10-19
| advisory | severity | package | fixed in |
|---|---|---|---|
| GHSA-6qxp-vccf-f47hMCP TypeScript SDK: OAuth client could send credentials to an authorization server chosen by the MCP server | high | @modelcontextprotocol/[email protected]MCP SDK, direct | fixed in 1.31.0 |
Dependency graphs from deps.dev; advisories from OSV.dev, including the GitHub Advisory Database and the PyPI Advisory Database; all CC BY 4.0. The graph is what a clean install of this version resolves today; nothing was installed or run. How it is checked.
| package | registry | version | runtime | secrets |
|---|---|---|---|---|
@three-ws/mcp-bridge | npm | 1.0.2 | npx | MCP_BRIDGE_EVM_PRIVATE_KEY, MCP_BRIDGE_SVM_PRIVATE_KEY |
No tools observed. Local packages are never executed by the registry.
Schemas: list_tools.
50 other active names share this repository (showing 10): io.github.nirholas/3d-agent-mcp, io.github.nirholas/3D-AI-Agent-Avatar, io.github.nirholas/activity-mcp, io.github.nirholas/agenc-mcp, io.github.nirholas/agentcore-payments-mcp, io.github.nirholas/agent-sniper, io.github.nirholas/agora-mcp, io.github.nirholas/alerts-mcp, io.github.nirholas/alibaba-cloud, io.github.nirholas/assistant-widget
And 73 more from this publisher.
{
"name": "io.github.nirholas/x402-bridge",
"icons": [
{
"src": "https://three.ws/three-ws-mcp-icon.svg",
"sizes": [
"any"
],
"mimeType": "image/svg+xml"
}
],
"title": "x402 Universal Payer",
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
"version": "1.0.2",
"packages": [
{
"version": "1.0.2",
"transport": {
"type": "stdio"
},
"identifier": "@three-ws/mcp-bridge",
"runtimeHint": "npx",
"registryType": "npm",
"environmentVariables": [
{
"name": "MCP_BRIDGE_EVM_PRIVATE_KEY",
"format": "string",
"isSecret": true,
"description": "0x-prefixed 32-byte hex private key that funds USDC payments on EVM chains (Base, Arbitrum, …). At least one of the EVM/SVM keys is required. Treat like cash — use a dedicated low-balance wallet."
},
{
"name": "MCP_BRIDGE_SVM_PRIVATE_KEY",
"format": "string",
"isSecret": true,
"description": "Solana secret key that funds USDC payments: base58 64-byte secret key (Phantom / solana-keygen format) or a JSON array of 64 integers. At least one of the EVM/SVM keys is required. Treat like cash."
},
{
"name": "MCP_BRIDGE_MAX_PRICE_PER_CALL_ATOMIC",
"format": "number",
"default": "100000",
"description": "Per-call spending cap in atomic units (USDC has 6 decimals). Payments above this abort with a clear reason."
},
{
"name": "MCP_BRIDGE_MAX_TOTAL_ATOMIC",
"format": "number",
"default": "1000000",
"description": "Cumulative session spending ceiling in atomic units. Once total spend would exceed it, further payments abort until restart."
},
{
"name": "MCP_BRIDGE_ALLOWED_PAYTO",
"format": "string",
"description": "Comma-separated payee allowlist. When set, any payment whose payTo address is not listed is refused."
},
{
"name": "MCP_BRIDGE_ALLOWED_HOSTS",
"format": "string",
"description": "Comma-separated hostname allowlist for outbound paid requests. When set, any other host is refused before a request is signed."
},
{
"name": "MCP_BRIDGE_ALLOW_HTTP",
"format": "boolean",
"default": "0",
"description": "Set to 1 to allow http:// targets (local development only). https is enforced otherwise."
},
{
"name": "MCP_BRIDGE_DISCOVER_LIMIT",
"format": "number",
"default": "20",
"description": "Max number of x402 Bazaar resources to register as dynamic tools at startup. Set 0 to disable discovery."
},
{
"name": "MCP_BRIDGE_BAZAAR_URL",
"format": "string",
"default": "https://api.cdp.coinbase.com/platform/v2/x402/discovery/resources",
"description": "x402 Bazaar discovery endpoint. Override to point at a self-hosted or alternative bazaar."
},
{
"name": "MCP_BRIDGE_BATCH_DEPOSIT_MULTIPLIER",
"format": "number",
"default": "5",
"description": "How many request-amounts to deposit at once when opening an EVM batch-settlement channel."
},
{
"name": "MCP_BRIDGE_MAX_DEPOSIT_ATOMIC",
"format": "number",
"default": "5000000",
"description": "Hard cap in atomic units on a single batch-settlement channel deposit or top-up."
},
{
"name": "X402_MCP_BRIDGE_CHANNELS_DIR",
"format": "string",
"default": "~/.x402-mcp-bridge/channels",
"description": "Directory for persisted batch-settlement channel state (survives client restarts)."
},
{
"name": "RPC_URL_8453",
"format": "string",
"description": "Per-chain RPC override, one variable per chain id (RPC_URL_<chainId>, e.g. RPC_URL_8453 for Base). Defaults to viem's public RPC for that chain."
}
]
}
],
"repository": {
"url": "https://github.com/nirholas/three.ws",
"source": "github",
"subfolder": "mcp-bridge"
},
"websiteUrl": "https://three.ws",
"description": "Pay any x402 endpoint on the open web: auto-paying bridge with Bazaar discovery and spend caps."
}