Scan and evaluate outstanding ERC-20, Permit2, and EIP-3009 token authorizations for a wallet against a specified policy.
Also known as base-buzz/paystage, auth-watch, @paystage/auth-watch
- Stars
- 5
- Tools
- —
- Downloads, 30 days
- —
- Latest version
- 0.2.0
- Last commit
- Nov 14, 2026
- License
- MIT
What is PayStage Auth Watch MCP?
PayStage Auth Watch scans and evaluate outstanding ERC-20, Permit2, and EIP-3009 token authorizations for a wallet against a specified policy.
Summary generated from the project's README
About PayStage Auth Watch MCP server
Monitoring wallet security by auditing token permissions is the primary function of PayStage Auth Watch. Developers use this tool to scan for outstanding ERC-20 allowances, Permit2 authorizations, and EIP-3009 nonces to ensure they align with specific security policies. It operates by performing read-only JSON-RPC eth_call requests against networks like Base mainnet or Base Sepolia.
Users interact with the server through two main tools: list_outstanding_auths and evaluate_outstanding_auths. The setup requires a wallet address and can be configured with a specific RPC URL via the PAYSTAGE_RPC_URL environment variable or direct arguments. Because the server only reads allowance and nonce state without holding private keys or signing transactions, it maintains a restricted security profile. It works with provided policy files to determine if current spender permissions meet your defined requirements.
What you can do with it
- 1Audit wallet token permissionsIdentify all active ERC-20 and Permit2 allowances for a specific wallet address on a given network.
- 2Verify spender complianceCheck if existing token spenders match the allowed list defined in a security policy.
- 3Monitor EIP-3009 noncesRetrieve outstanding nonces to assess the current authorization state of a wallet.
Written from the project's README. Every use case is checked against a quote from it.
How to install PayStage Auth Watch MCP
Formats verified 10 Nov 2026Add to CursorAdd to GooseInstall PayStage Auth Watch MCP in Claude Code
$ claude mcp add auth-watch -- npx -y @paystage/auth-watchInstall PayStage Auth Watch MCP in Cursor
~/.cursor/mcp.json
{
"mcpServers": {
"auth-watch": {
"command": "npx",
"args": [
"-y",
"@paystage/auth-watch"
]
}
}
}Install PayStage Auth Watch MCP in VS Code
.vscode/mcp.json
{
"servers": {
"auth-watch": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@paystage/auth-watch"
]
}
}
}Install PayStage Auth Watch MCP in VS Code CLI
$ code --add-mcp '{"name":"auth-watch","type":"stdio","command":"npx","args":["-y","@paystage/auth-watch"]}'Install PayStage Auth Watch MCP in Claude Desktop
claude_desktop_config.json
{
"mcpServers": {
"auth-watch": {
"command": "npx",
"args": [
"-y",
"@paystage/auth-watch"
]
}
}
}Install PayStage Auth Watch MCP in Codex
$ codex mcp add auth-watch -- npx -y @paystage/auth-watchInstall PayStage Auth Watch MCP in Codex config.toml
~/.codex/config.toml
[mcp_servers.auth-watch] command = "npx" args = ["-y", "@paystage/auth-watch"]
Install PayStage Auth Watch MCP in Gemini CLI
$ gemini mcp add -s user auth-watch npx -- -y @paystage/auth-watchInstall PayStage Auth Watch MCP in Gemini settings.json
~/.gemini/settings.json
{
"mcpServers": {
"auth-watch": {
"command": "npx",
"args": [
"-y",
"@paystage/auth-watch"
]
}
}
}Configuration
PAYSTAGE_POLICY_PATHPath to policy.json spending rules
PAYSTAGE_RPC_URLBase RPC URL override
| Name | Description | |
|---|---|---|
| PAYSTAGE_POLICY_PATH | Path to policy.json spending rules | |
| PAYSTAGE_RPC_URL | Base RPC URL override |
Automated checks
Ran Nov 14, 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 reachablebase-buzz/paystage is public and reachablegithub.com/base-buzz/paystage ↗Pass
- Package names this repository as its source@paystage/auth-watch names base-buzz/paystage as sourcenpmjs.com/package/@paystage/auth-watch ↗Pass
- Build provenance (Sigstore attestation)No build attestation published for this releaseNot checked
- Open source license (OSI)MITspdx.org/licenses/MIT.html ↗Pass
- Commit or release in the last yearLast commit or release 2026-11-13github.com/base-buzz/paystage ↗Pass
- OpenSSF ScorecardNot checked
- Package name not close to a popular packageNo popular package one edit away from @paystage/auth-watchPass
- No critical advisory in the package or its dependencies5 resolved dependencies checked; no critical advisoryosv.dev ↗Pass
- No hidden instructions to the model0 tool descriptions and the README read; no override phrases, credential paths or hidden charactersPass
- Destructive tools are labelledNot checked
- Remote endpoint answers the MCP handshakeNot checked
README
View on GitHub@paystage/auth-watch
Scan and evaluate outstanding token authorizations (ERC-20 allowances, Permit2 allowances, and EIP-3009 nonces) for a wallet against a Paystage policy.
Install
pnpm add @paystage/auth-watch
Library usage
import {
createRpcClient,
resolveRpcUrl,
listOutstandingAuths,
evaluateOutstandingAuths,
} from "@paystage/auth-watch";
import { loadPolicy } from "@paystage/policy";
const network = "eip155:8453";
const rpc = createRpcClient(resolveRpcUrl(network));
const policy = await loadPolicy("./paystage.policy.json");
const items = await listOutstandingAuths({
wallet: "0x...",
network,
tokens: ["0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"],
spenders: policy.allowed_spenders ?? policy.allowed_pay_to,
rpc,
});
const results = evaluateOutstandingAuths(items, policy);
MCP server
node dist/cli.js
Tools:
list_outstanding_auths— list outstanding authorizations.evaluate_outstanding_auths— list and evaluate against a policy.
Both accept wallet, optional network, tokens, spenders,
policy_path or inline policy, eip3009_nonces, and rpc_url.
Environment
PAYSTAGE_RPC_URL— overrides the default RPC URL for the network.
Supply chain and access
This is the package that legitimately touches the network, so the flags matter more here and deserve a plain answer:
| Flag | Why it is there |
|---|---|
| Network access | JSON-RPC eth_call reads against Base (https://mainnet.base.org by default, or PAYSTAGE_RPC_URL, or an rpc_url argument). Read-only. |
| URL strings | The known public RPC endpoints above. |
| Environment variable access | PAYSTAGE_RPC_URL, so an operator can pin their own node. |
It holds no keys and signs nothing — it reads allowance and nonce state. No shell,
no eval, no telemetry. Full table: SECURITY.md.
Networks
eip155:8453— Base mainnet (https://mainnet.base.org)eip155:84532— Base Sepolia (https://sepolia.base.org)
Links
- Website: https://paystage.xyz
- X: https://x.com/paystage_xyz
- Source: https://github.com/base-buzz/paystage
PayStage Auth Watch MCP questions
How do I add PayStage Auth Watch MCP to Claude Code?
Run claude mcp add auth-watch -- npx -y @paystage/auth-watch in your terminal. Add --scope user to make it available in every project.
How do I add PayStage Auth Watch MCP to Cursor?
Open ~/.cursor/mcp.json and add the server under mcpServers, using the Cursor config shown in the install section above.
Does this server require private keys?
No, the server holds no keys and does not sign any transactions; it only reads allowance and nonce state.
What kind of network access does it require?
It performs read-only JSON-RPC eth_call operations against the network.
Which networks are supported?
The server supports Base mainnet and Base Sepolia.