Actiongate
Pre-execution safety layer for autonomous agent wallets — risk scoring, simulation, and policy enforcement via MCP, with free tier and pay-per-call pricing over x402
Developer Docs
Proxy paid tools over REST and MCP.
ActionGate loads one config file, exposes each tool over /proxy/:toolName and /mcp, and settles paid usage with x402 or Stripe-funded API credits.
If you do not provide a config file, ActionGate falls back to the original safety demo endpoints under /v1/* and keeps the bundled treasury prompts.
Machine discovery
https://api.actiongate.xyz/.well-known/agent.json
https://api.actiongate.xyz/.well-known/mcp/server-card.json
Reference
https://api.actiongate.xyz/docs/openapi.yaml
Legacy fallback demo: https://api.actiongate.xyz/docs/openapi-fallback-demo.yaml
Generic proxy: https://api.actiongate.xyz/proxy/:toolName
Remote MCP: https://api.actiongate.xyz/mcp
Proxy config guide: /docs/proxy-config-guide.md
Example config: /examples/proxy-config.public-api.json
MCP Registry namespace: xyz.actiongate.api/actiongate
Bring Your Own API
Start with the hosted proxy-config guide, copy the example JSON, then replace the upstream URLs, schemas, prices, and forwarded headers with your own API contract.
curl https://api.actiongate.xyz/examples/proxy-config.public-api.json -o proxy-config.json
Then read the operator guide:
https://api.actiongate.xyz/docs/proxy-config-guide.md
Quickstart
curl -X POST https://api.actiongate.xyz/v1/risk-score
-H "content-type: application/json"
-d '{"actor":{"actor_id":"treasury-bot"},"action":{"action_type":"transfer","network":"base","asset_symbol":"USDC","amount":"2500"}}'
npm install @actiongate/sdk
import { ActionGateClient } from "@actiongate/sdk";
const client = new ActionGateClient({ baseUrl: "https://api.actiongate.xyz" }); const result = await client.policyGate({ actor: { actor_id: "agent_ops_02" }, action: { action_type: "transfer", network: "base", asset_symbol: "USDC", amount: "150000" }, policy: { policy_id: "treasury_default_v1" } });
Install Surfaces
npm install @actiongate/sdk pip install actiongate-sdk
{ "mcpServers": { "actiongate": { "url": "https://api.actiongate.xyz/mcp" } } }
npm install -g actiongate-mcp
Client Configs
Use these exact snippets to connect ActionGate's remote MCP server in popular agent clients.
Claude Code
claude mcp add --transport http actiongate --scope project https://api.actiongate.xyz/mcp
VS Code
{ "servers": { "actiongate": { "type": "http", "url": "https://api.actiongate.xyz/mcp" } } }
Save that as .vscode/mcp.json.
Windsurf
{ "mcpServers": { "actiongate": { "serverUrl": "https://api.actiongate.xyz/mcp" } } }
Save that as ~/.codeium/windsurf/mcp_config.json.
Cursor
Save that as .cursor/mcp.json for a project-scoped setup or ~/.cursor/mcp.json for a global setup.
Free Tier
Every agent gets 50 total calls per day across tool-specific buckets: 20 risk score calls, 20 simulate calls, and 10 policy gate calls for free each day. No wallet, no signup — just connect and call. When you hit the limit you will receive a 402 response with x402 payment requirements. Follow the guide below to upgrade to paid calls.
How to Pay with x402
x402 is an open protocol for HTTP-native micropayments. When a tool call requires payment, ActionGate returns an HTTP 402 with payment requirements in the response headers. Your agent signs a USDC payment on Base and resends the request with the payment proof attached.
What you need
1. A wallet with USDC on Base (Coinbase Smart Wallet, MetaMask, or any EVM wallet). 2. The @x402/core package (or any x402-compatible client).
TypeScript example
import { paymentMiddleware } from "@x402/core";
// Wrap any HTTP client with x402 payment middleware. // When a 402 is received, the middleware automatically // signs a USDC payment and retries the request. const client = paymentMiddleware(fetch, { walletPrivateKey: process.env.WALLET_PRIVATE_KEY, network: "base", });
// Now calls that exceed the free tier will auto-pay: const res = await client("https://api.actiongate.xyz/v1/risk-score", { method: "POST", headers: { "content-type": "application/json" }, body: JSON.stringify({"actor":{"actor_id":"treasury-bot"},"action":{"action_type":"transfer","network":"base","asset_symbol":"USDC","amount":"2500"}}), }); // Paid response includes a settlement receipt.
MCP with payment
For MCP clients that support x402 natively (like the actiongate-mcp stdio package), set PAYTO_ADDRESS and your wallet key in the environment. The MCP transport handles payment negotiation automatically.
{ "mcpServers": { "actiongate": { "command": "npx", "args": ["actiongate-mcp"], "env": { "PAYTO_ADDRESS": "0xYourWalletAddress", "WALLET_PRIVATE_KEY": "0xYourPrivateKey", "ACTIONGATE_BASE_URL": "https://api.actiongate.xyz" } } } }
Flow summary
1. Agent calls a tool (free tier or paid). 2. If free quota remains, the response is returned immediately — no payment needed. 3. If quota is exhausted, ActionGate returns HTTP 402 with x402 payment requirements. 4. Your x402 client signs a USDC micropayment on Base and resends the request with a PAYMENT-SIGNATURE header. 5. ActionGate verifies and settles the payment, then returns the tool result with a settlement receipt.
Launch Proof
ActionGate advertises paid discovery over x402 headers and returns signed receipts on successful calls.
HTTP/2 402 PAYMENT-REQUIRED:
curl -X POST https://api.actiongate.xyz/v1/risk-score
-H "PAYMENT-SIGNATURE: "
-H "content-type: application/json"
-d '{"actor":{"actor_id":"treasury-bot"},"action":{"action_type":"transfer","network":"base","asset_symbol":"USDC","amount":"2500"}}'
HTTP/2 200 PAYMENT-RESPONSE: {"request_id":"rq_demo_risk","score":18,"severity":"low","confidence":0.81}
Troubleshooting
I connected the MCP server but calls fail with a payment error. That usually means the free tier is exhausted or your x402 wallet is not configured. Use the free tier first, or add PAYTO_ADDRESS plus your wallet credentials for the stdio package.
I received an HTTP 402 response. That is expected once free calls are used up. Retry with an x402-compatible client so it can attach a PAYMENT-SIGNATURE header automatically.
The remote MCP endpoint works in one client but not another. Make sure the client is using Streamable HTTP against https://api.actiongate.xyz/mcp and accepts both JSON and event-stream responses during MCP negotiation.
I need help debugging an integration. Start with https://api.actiongate.xyz/support, then include the request ID from the ActionGate response when you contact support.
Related Servers
FPL MCP Server
MCP server for Fantasy Premier League analysis and strategy. This server provides AI assistants with powerful tools, resources, and prompts to help you dominate your FPL mini-leagues with data-driven insights
Manifold Markets
Interact with Manifold Markets prediction markets, including market creation, trading, and liquidity management.
Google Analytics 4 MCP
Connect GA4 to Claude or ChatGPT via Two Minute Reports MCP. Track New Users, Sessions, and Signups to improve website performance.
LLM Brand Monitor MCP Server
MCP server for LLM Brand Monitor — track how AI models mention your brand. Requires an API key (LBM_API_KEY) from llmbrandmonitor.com.
Ontheia (MCP-Client)
Self-hosted, open-source AI agent platform with native MCP support. Connect agents to any MCP server, run multi-agent workflows, and keep all data on your own infrastructure. GDPR by design.
Windows Screenshots
A Model Context Protocol (MCP) server that provides screenshot capture functionality on Windows systems.
IcoGenie MCP
MCP server for AI-powered SVG icon generation. Generate production-ready icons from text descriptions. Supports single icons, bundles, style customization, and regeneration.
Time MCP Server
Provides current time and timezone conversion capabilities using IANA timezone names, with automatic system timezone detection.
Nanoleaf MCP Server
A server for controlling Nanoleaf smart lights using the Model Context Protocol.
Trayd
Trade Robinhood with natural language in Claude Code