Search / io.github.piprail/mcp
PipRail
L0· runs locallyBudget-bound x402 payment wallet for AI agents — pays HTTP 402 URLs, capped locally. No backend.
v0.10.0 · active · repository · website · descriptor JSON · versions
Search / io.github.piprail/mcp
L0· runs locallyBudget-bound x402 payment wallet for AI agents — pays HTTP 402 URLs, capped locally. No backend.
v0.10.0 · active · repository · website · descriptor JSON · versions
{
"mcpServers": {
"piprail": {
"command": "npx",
"args": [
"-y",
"@piprail/[email protected]"
],
"env": {
"PIPRAIL_PRIVATE_KEY": "${PIPRAIL_PRIVATE_KEY}"
}
}
}
}claude mcp add piprail -e "PIPRAIL_PRIVATE_KEY=${PIPRAIL_PRIVATE_KEY}" -- npx -y @piprail/[email protected][mcp_servers.piprail]
command = "npx"
args = ["-y", "@piprail/[email protected]"]
env = { "PIPRAIL_PRIVATE_KEY" = "${PIPRAIL_PRIVATE_KEY}" }
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"piprail": {
"type": "local",
"command": [
"npx",
"-y",
"@piprail/[email protected]"
],
"enabled": true,
"environment": {
"PIPRAIL_PRIVATE_KEY": "{env:PIPRAIL_PRIVATE_KEY}"
}
}
}
}{
"mcpServers": {
"piprail": {
"command": "npx",
"args": [
"-y",
"@piprail/[email protected]"
],
"env": {
"PIPRAIL_PRIVATE_KEY": "${PIPRAIL_PRIVATE_KEY}"
}
}
},
"deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=piprail&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsIkBwaXByYWlsL21jcEAwLjEwLjAiXSwiZW52Ijp7IlBJUFJBSUxfUFJJVkFURV9LRVkiOiIke1BJUFJBSUxfUFJJVkFURV9LRVl9In19"
}{
"servers": {
"piprail": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@piprail/[email protected]"
],
"env": {
"PIPRAIL_PRIVATE_KEY": "${PIPRAIL_PRIVATE_KEY}"
}
}
}
}{
"mcpServers": {
"piprail": {
"command": "npx",
"args": [
"-y",
"@piprail/[email protected]"
],
"env": {
"PIPRAIL_PRIVATE_KEY": "${PIPRAIL_PRIVATE_KEY}"
}
}
}
}extensions:
"piprail":
enabled: true
name: "piprail"
type: stdio
cmd: "npx"
args:
- "-y"
- "@piprail/[email protected]"
envs:
"PIPRAIL_PRIVATE_KEY": "${PIPRAIL_PRIVATE_KEY}"
timeout: 300
Placeholders to fill from your own secret store: ${PIPRAIL_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 112 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@piprail/[email protected] resolved: 112 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-40d-ago
Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.
@piprail/[email protected] npm111 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 |
|---|---|---|---|---|
@piprail/mcp | npm | 0.10.0 | – | PIPRAIL_PRIVATE_KEY |
No tools observed. Local packages are never executed by the registry.
Schemas: list_tools.
{
"name": "io.github.piprail/mcp",
"title": "PipRail",
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
"version": "0.10.0",
"packages": [
{
"version": "0.10.0",
"transport": {
"type": "stdio"
},
"identifier": "@piprail/mcp",
"registryType": "npm",
"environmentVariables": [
{
"name": "PIPRAIL_PRIVATE_KEY",
"format": "string",
"isSecret": true,
"description": "Your wallet's private key/seed for the chosen chain. Optional: omit it to run read-only (discover/quote/register/budget/guide); set it to let the agent pay. Stays on your machine; the spend policy caps every payment."
},
{
"name": "PIPRAIL_CHAIN",
"format": "string",
"description": "Chain to pay on (default: base)."
},
{
"name": "PIPRAIL_CHAINS",
"format": "string",
"description": "Pay across several chains (instead of PIPRAIL_CHAIN): a comma-separated list, e.g. base,polygon,solana. Give each its own PIPRAIL_<CHAIN>_KEY (+ optional PIPRAIL_<CHAIN>_RPC_URL). The agent pays whichever chain a 402 asks for — the first listed that can settle — under one shared budget."
},
{
"name": "PIPRAIL_MAX_AMOUNT",
"format": "string",
"description": "Max spend per single payment, in token units (default: 0.10)."
},
{
"name": "PIPRAIL_MAX_TOTAL",
"format": "string",
"description": "Lifetime spend cap per token, in token units (default: 10.00)."
},
{
"name": "PIPRAIL_MAX_TOTAL_DENOM",
"format": "string",
"description": "Cross-token GRAND TOTAL: one spend cap per denomination across every stablecoin and chain, e.g. USD:20.00,EUR:5.00. Not a price oracle — sums tokens of the same unit, each counted 1:1. Native coins are excluded."
},
{
"name": "PIPRAIL_MAX_PAYMENTS",
"format": "string",
"description": "Lifetime cap on the NUMBER of payments, across every chain + token (e.g. 100)."
},
{
"name": "PIPRAIL_MAX_PAYMENTS_PER_WINDOW",
"format": "string",
"description": "Cap on the number of payments within PIPRAIL_WINDOW_SECONDS (a rolling rate limit; set PIPRAIL_WINDOW_SECONDS too)."
},
{
"name": "PIPRAIL_WARN_AT_FRACTION",
"format": "string",
"description": "Emit an early-warning event when spend crosses this fraction of any cap, e.g. 0.8 (80%). Needs PIPRAIL_EVENT_LOG to be visible."
},
{
"name": "PIPRAIL_SPEND_LOG",
"format": "string",
"description": "Path to a local append-only spend log. When set, the budget (lifetime, grand total, counts) SURVIVES a restart — hydrated from this file. No backend; you own the file."
},
{
"name": "PIPRAIL_EVENT_LOG",
"format": "string",
"description": "Mirror payment events (settled / declined / budget-threshold) as one-line JSON to 'stderr' or a file path — the operator's notification stream. Default: off."
},
{
"name": "PIPRAIL_TOKENS",
"format": "string",
"description": "Comma-separated allowed token symbols, plus the alias 'native' for the chain's coin (default: USDC)."
},
{
"name": "PIPRAIL_SCHEMES",
"format": "string",
"description": "Comma-separated payment schemes to settle (default: onchain-proof). Add 'exact' (onchain-proof,exact) to also pay standard x402 servers GASLESS on EVM + Solana (method auto-selected). Add 'upto' to also pay metered x402 servers on EVM (Permit2): sign a MAX, the server settles the actual <= max."
}
]
}
],
"repository": {
"url": "https://github.com/piprail/piprail",
"source": "github",
"subfolder": "mcp"
},
"websiteUrl": "https://piprail.com/mcp",
"description": "Budget-bound x402 payment wallet for AI agents — pays HTTP 402 URLs, capped locally. No backend."
}