Enforces safety policies for AI agent payments by evaluating transactions against local rules to return pay, review, or deny decisions.
Also known as base-buzz/paystage, @paystage/mcp
- Stars
- 5
- Tools
- 5
- Downloads, 30 days
- —
- Latest version
- —
- Last commit
- Nov 14, 2026
- License
- MIT
What is PayStage MCP?
PayStage enforces safety policies for AI agent payments by evaluating transactions against local rules to return pay, review, or deny decisions. It exposes 5 tools, such as evaluate_mcp_payment, list_outstanding_auths, evaluate_outstanding_auths.
Summary generated from the project's README
About PayStage MCP server
PayStage provides a safety layer for AI agent financial transactions by acting as a gatekeeper between an agent and its wallet. It evaluates proposed payments against a local policy file to determine if a transaction should be approved, sent for human review, or denied entirely. This server is designed for developers building autonomous agents that require controlled spending limits and security guardrails.
The server runs via stdio and can be integrated into Claude Desktop or Cursor. Users must provide a path to a local policy.json file through the PAYSTAGE_POLICY_PATH environment variable. It also supports an optional PAYSTAGE_RPC_URL for on-chain checks, defaulting to a public Base RPC. The umbrella server includes five specific tools to manage different aspects of transaction safety.
Key capabilities include evaluating x402 payments, checking trade orders via evaluate_hip3_trade, and monitoring spending patterns with evaluate_velocity. It also offers tools to list and evaluate outstanding authorizations to prevent double-payment risks.
What you can do with it
- 1Enforce transaction safety limitsAn AI agent can check if a proposed x402 payment complies with local security rules before moving funds.
- 2Monitor agent spending velocityA developer can use the server to ensure an agent does not exceed specific rate or spend-pattern thresholds.
- 3Validate HIP-3 trade ordersAn autonomous trader can verify if a specific trade order meets the predefined safety criteria in a local policy.
- 4Prevent double-payment risksThe system can audit authorized but unsettled payments to identify potential limbo or duplicate payment risks.
Written from the project's README. Every use case is checked against a quote from it.
How to install PayStage MCP
Formats verified 10 Nov 2026Add to CursorAdd to GooseInstall PayStage MCP in Claude Code
$ claude mcp add paystage -- npx -y @paystage/mcpInstall PayStage MCP in Cursor
~/.cursor/mcp.json
{
"mcpServers": {
"paystage": {
"command": "npx",
"args": [
"-y",
"@paystage/mcp"
]
}
}
}Install PayStage MCP in VS Code
.vscode/mcp.json
{
"servers": {
"paystage": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@paystage/mcp"
]
}
}
}Install PayStage MCP in VS Code CLI
$ code --add-mcp '{"name":"paystage","type":"stdio","command":"npx","args":["-y","@paystage/mcp"]}'Install PayStage MCP in Claude Desktop
claude_desktop_config.json
{
"mcpServers": {
"paystage": {
"command": "npx",
"args": [
"-y",
"@paystage/mcp"
]
}
}
}Install PayStage MCP in Codex
$ codex mcp add paystage -- npx -y @paystage/mcpInstall PayStage MCP in Codex config.toml
~/.codex/config.toml
[mcp_servers.paystage] command = "npx" args = ["-y", "@paystage/mcp"]
Install PayStage MCP in Gemini CLI
$ gemini mcp add -s user paystage npx -- -y @paystage/mcpInstall PayStage MCP in Gemini settings.json
~/.gemini/settings.json
{
"mcpServers": {
"paystage": {
"command": "npx",
"args": [
"-y",
"@paystage/mcp"
]
}
}
}PayStage MCP tools 5
Detected from the READMEevaluate_mcp_paymentlist_outstanding_authsevaluate_outstanding_authsevaluate_hip3_tradeevaluate_velocity
| evaluate_mcp_payment | — | |
| list_outstanding_auths | — | |
| evaluate_outstanding_auths | — | |
| evaluate_hip3_trade | — | |
| evaluate_velocity | — |
Configuration
PAYSTAGE_POLICY_PATHPAYSTAGE_RPC_URL
| Name | Description | |
|---|---|---|
| PAYSTAGE_POLICY_PATH | — | |
| PAYSTAGE_RPC_URL | — |
Automated checks
Ran Nov 13, 2026Full report →Passed our automated checks. That is not a security audit: read the code and give the server the narrowest access it needs. How checks work
- Source repository linked and reachablePass
- Open source license (OSI)Pass
- Commit or release in the last yearPass
- Package name not close to a popular packagePass
- Remote endpoint uses HTTPSNot checked
- Destructive tools are labelledPass
- No hidden instructions to the modelPass
- No critical advisory in the package or its dependenciesNot checked
README
View on GitHubPayStage
Your agent's wallet should not sign because a server asked it to.
PayStage sits between an agent and the x402 payment it is about to make, and answers one
question before the signature exists: should this payment happen? Every tool returns
pay, review, or do_not_pay, with the rule that fired and a receipt you can keep.
The gap it fills is narrow and load-bearing. x402 makes paying trivial and leaves deciding
to the caller: a wallet enforces signatures, not intent. @paystage/x402-guard evaluates the
challenge before the wallet signs, so a wrong payee, an over-cap amount or an unknown asset
never reaches the signing step at all.
Try it without installing anything:
curl -s -X POST https://api.paystage.xyz/v1/evaluate_mcp_payment \
-H 'content-type: application/json' \
-d '{"payment_required":{…},"policy":{…}}'
The hosted endpoint serves a real verdict with no payment and no account for the first 1,000 calls per IP per day — an agent cannot fill in a signup form, so requiring one would exclude exactly the callers this is built for.
Quick start
# Option 1: run instantly
npx -y -p @paystage/mcp paystage-mcp
# Option 2: install locally, then use the package bin
npm install @paystage/mcp
npx paystage-mcp
The server waits silently for an agent app to connect. That's normal; press Ctrl+C to exit. To try the tools without an app, run npx @modelcontextprotocol/inspector npx -y -p @paystage/mcp paystage-mcp.
@paystage/mcp is the umbrella MCP server (5 tools, including evaluate_hip3_trade and evaluate_velocity). It exposes the PayStage tools over stdio and reads a local policy file. See SECURITY.md for exactly what it accesses and why.
Four ways in
| You want | Use |
|---|---|
| the gate inside an agent's payment loop | @paystage/x402-guard |
| the tools in Claude Desktop or Cursor | @paystage/mcp |
| a verdict from your own service, hosting included | POST https://api.paystage.xyz/v1/evaluate_mcp_payment |
| the evaluator as a library | @paystage/preflight |
Listed on
Configure
The same MCP config works for Claude Desktop (claude_desktop_config.json) and Cursor (.cursor/mcp.json).
Using npx
{
"mcpServers": {
"paystage": {
"command": "npx",
"args": ["-y", "@paystage/mcp"],
"env": {
"PAYSTAGE_POLICY_PATH": "/absolute/path/to/policy.json",
"PAYSTAGE_RPC_URL": "https://mainnet.base.org"
}
}
}
}
Using a local npm install
{
"mcpServers": {
"paystage": {
"command": "node",
"args": ["./node_modules/@paystage/mcp/dist/cli.js"],
"env": {
"PAYSTAGE_POLICY_PATH": "/absolute/path/to/policy.json",
"PAYSTAGE_RPC_URL": "https://mainnet.base.org"
}
}
}
}
PAYSTAGE_POLICY_PATH(required): path to your localpolicy.json.PAYSTAGE_RPC_URL(optional): RPC endpoint used by on-chain checks. Defaults to a public Base RPC.
Policies
Everything PayStage does is decided by one local policy file. Three complete, annotated
examples are in registry/examples/ — copy one, change the
addresses and amounts, and point PAYSTAGE_POLICY_PATH at it. Each is schema-exact for
@paystage/policy and annotated field by field in
registry/examples/README.md.
- Reader bot — reads articles and search results; 0.05 USDC per call, unknown payees denied.
- Trading bot — places HIP-3 orders; per-agent budgets, velocity windows and human review above 10 USDC.
- Research agent — discovers data endpoints; unknown payees go to review, never an unattended pay.
Tools
| Tool | Status | What it does |
|---|---|---|
evaluate_mcp_payment |
Available now | Evaluates a proposed x402 payment against the local policy and returns pay, review, or do_not_pay. |
list_outstanding_auths |
Available now | Lists payments that are authorized but not yet settled. |
evaluate_outstanding_auths |
Available now | Evaluates outstanding authorizations and flags double-pay or limbo risk. |
evaluate_hip3_trade |
Available now | Evaluates a proposed HIP-3 / trade.xyz order against a local TradePolicy (allow | review | do_not_trade). Not financial advice — local policy gate only. |
evaluate_velocity |
Available now | Rate and spend-pattern velocity checks against the local policy. |
Packages
| Package | Role | Links |
|---|---|---|
@paystage/mcp |
Umbrella MCP server (start here) | npm |
@paystage/preflight |
MCP payment preflight | npm |
@paystage/auth-watch |
Outstanding-auth watch | npm |
@paystage/policy |
Policy parsing and evaluation | npm |
@paystage/trade-preflight |
HIP-3 / trade.xyz trade preflight | npm |
Verify it yourself
Every claim this project makes about itself is reducible to a command. Run it before you trust anything on the website:
node apps/hosted/scripts/conformance.mjs
It checks the published surfaces against reality — manifest shape, the five tools being listed, machine surfaces being genuinely different from each other, health and timing headers on both networks, the receipt key endpoint, that an unpaid evaluation is challenge-only, and that malformed input fails closed. Read-only: no payment, no key, no account. Exit code 1 if anything is off.
It runs daily in CI (cadence.yml) and the result history is on the site.
Supply chain
Socket.dev scores packages on capability, so a payment-safety tool will always carry
flags: it reads a policy file, reads two environment variables and talks to an RPC.
Every package README states exactly what it touches and why, and
SECURITY.md has the full table. The umbrella @paystage/mcp is ~16 KB
with no network, no filesystem and no eval of its own — the capability lives in the
tools it bundles.
Links
- Website: https://paystage.xyz
- X: https://x.com/paystage_xyz
- GitHub: https://github.com/base-buzz/paystage
- npm: https://www.npmjs.com/org/paystage
- Machine-readable: https://paystage.xyz/llms.txt
Development
This is a monorepo.
pnpm install
pnpm build
pnpm test
pnpm lint
Contributing
PayStage is built in the open, and outside contributions are welcome.
- Add a drainer address. Open a PR adding it to
KNOWN_DRAINERS.mdwith a public source link (incident report, explorer label, or security write-up). Unsourced addresses won't be merged. - Add an integration example. LangChain, AgentKit, ElizaOS and others are all welcome.
- Report a bypass. If an unsafe payment gets past preflight, open an issue. That's the most valuable contribution there is.
Look for issues labelled good first issue to get started.
License
MIT
PayStage MCP questions
How do I add PayStage MCP to Claude Code?
Run claude mcp add paystage -- npx -y @paystage/mcp in your terminal. Add --scope user to make it available in every project.
How do I add PayStage MCP to Cursor?
Open ~/.cursor/mcp.json and add the server under mcpServers, using the Cursor config shown in the install section above.
What tools does PayStage MCP provide?
It exposes 5 tools, including evaluate_mcp_payment, list_outstanding_auths, evaluate_outstanding_auths, evaluate_hip3_trade, evaluate_velocity.
What does PayStage do?
PayStage acts as a safety layer for AI agent wallets, deciding whether a proposed payment should proceed, require human review, or be denied based on a local policy.
How is payment behavior controlled?
All payment decisions are governed by a single local policy file that defines rules for different agent types.
Does the server require an RPC endpoint?
Yes, it uses an RPC endpoint for on-chain checks, which defaults to a public Base RPC if not specified.