The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the MCP Server listing page.
Give your AI agent a wallet and a marketplace.
@gatefare/mcpis a Model Context Protocol server that connects Claude Desktop, Cursor, or any MCP-compatible agent to the Gatefare catalog of paid HTTP APIs. Payments settle as USDC on Base via the open x402 standard — no SaaS keys, no subscriptions, no escrow. Non-custodial: signing happens locally; the private key never leaves your machine.

Claude Desktop — ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
Cursor — ~/.cursor/mcp.json or project-level .cursor/mcp.json:
Restart the client. The agent now has 5 read-only tools — discovery + safety. Try:
"Search Gatefare for weather APIs."
Add env to the same config:
Buyer tools (call_api, get_wallet_balance, estimate_cost) become available. The
WALLET_BUDGET_USD cap is a runtime safety net — for a hard cap, fund the wallet with
only what you're willing to spend.
"What's London's weather right now? Spend up to $0.001."
Get a PAT at gatefare.io/dashboard/tokens and add:
Publisher tools (register_api, list_my_apis, update_api, get_revenue,
distribute) appear.
"Publish my API at https://api.example.com/sentiment for $0.001 per call."
13 tools across 4 domains. Tools auto-register based on which env vars are set — the agent never sees a tool it can't use.
| Tool | Description |
|---|---|
gatefare.search_apis | Full-text search the catalog with filters (price, category, sort) |
gatefare.get_api | Full details for one API by slug or handle/urlName |
gatefare.list_categories | All categories with API counts |
gatefare.suggest | Autocomplete suggestions for a query string |
WALLET_PRIVATE_KEY| Tool | Description |
|---|---|
gatefare.call_api | Make a paid call. Handles 402 → sign → retry automatically |
gatefare.get_wallet_balance | USDC + ETH on Base, plus remaining runtime budget |
gatefare.estimate_cost | Project total cost for N planned calls |
GATEFARE_PAT| Tool | Description |
|---|---|
gatefare.register_api | Publish a new paid API |
gatefare.list_my_apis | Your published APIs with stats |
gatefare.update_api | Edit metadata, price, target URL |
gatefare.get_revenue | Revenue time series + totals |
gatefare.distribute | Trigger on-chain distribute() payout (destructive) |
| Tool | Description |
|---|---|
gatefare.report_abuse | Report a malicious / stolen API (DMCA, fraud, malware…) |
| Var | Default | Required for |
|---|---|---|
GATEFARE_BASE_URL | https://gatefare.io | — (override for self-hosted) |
WALLET_PRIVATE_KEY | — | Any buyer tool |
WALLET_BUDGET_USD | unlimited | Optional spend cap |
WALLET_NETWORK | eip155:8453 | eip155:84532 for Sepolia testnet |
GATEFARE_PAT | — | Any publisher tool |
LOG_LEVEL | info | debug for verbose stderr |
You: Find me a sub-$0.001 weather API and call it for "Tokyo".
Claude: Calling
gatefare.search_apiswithmax_price: 0.001…
Founddemo-weatherby @alice at $0.001/call.
Callinggatefare.call_apiwithslug: "demo-weather",query: {city: "Tokyo"}…
Tokyo is 22°C, partly cloudy. Paid 0.001 USDC. Receipt:settled-tx-0x9a…
See examples/ for runnable variants: Claude Desktop, Cursor, Python,
TypeScript, and a pure-discovery walkthrough.
If you want to pay for x402 APIs from a backend (no agent), use Coinbase's
official x402 SDKs — x402-python (PyPI), coinbase/x402/go, …/java, or
@x402/fetch. They handle the
payment flow; you don't need this MCP server.
If you want to browse the Gatefare catalog from any language, hit the
REST API directly: gatefare.io/api/catalog
(OpenAPI 3.1 spec).
Full breakdown of which tool fits which use case in
docs/integrations.md.
Tool results include isError: true and a structured body
{ error: <code>, message: <human>, details?: <any> }. Codes are stable —
agents can switch on them for retry / surfacing logic.
| Code | Meaning |
|---|---|
INVALID_INPUT | Input failed zod validation |
WALLET_NOT_CONFIGURED | Set WALLET_PRIVATE_KEY for buyer tools |
PAT_NOT_CONFIGURED | Set GATEFARE_PAT for publisher tools |
BUDGET_EXHAUSTED | Runtime budget cap hit |
INSUFFICIENT_BALANCE | Wallet doesn't have enough USDC |
PRICE_TOO_HIGH | Server's price exceeds your max_price |
API_NOT_FOUND | Slug doesn't exist or is suspended |
UPSTREAM_ERROR | Paid API returned non-2xx, or its 402 was malformed |
RATE_LIMITED | Gatefare rate-limited the request |
NETWORK_ERROR | Could not reach Gatefare |
GATEFARE_API_ERROR | Gatefare returned a 4xx / 5xx |
gatefare.call_api { slug: "demo-weather", … }.GET https://gatefare.io/p/demo-weather (no payment yet).accepts: [{network, payTo, maxAmountRequired, …}].transferWithAuthorization for that exact amount and recipient on the configured network.X-Payment header (base64-encoded JSON, x402 v2).The signature is single-use, time-bounded, and never leaves your machine for any
purpose other than this exact transfer to this exact payTo. The private key
is never logged.
Date.now()-based collisions.^[a-z0-9_-]+$ and URL-encoded;
no path traversal. targetUrl blocks file://, localhost, cloud
metadata IPs, .local, and .internal hosts at registration time.To use a local checkout in your client config:
Issues and PRs welcome. See CONTRIBUTING.md for the workflow, style guide, and how to add a new tool.
Gatefare ships three first-party packages. They share the same x402 protocol and the same backend, so a project can mix them as needed:
| Package | Where | When to use |
|---|---|---|
@gatefare/mcp (this one) | npm | Drop into Claude Desktop / Cursor / any MCP host to give the agent tools for catalog discovery + paid calls |
@gatefare/client | npm | TypeScript / JavaScript agents that pay APIs in code, outside MCP |
gatefare | PyPI | Python agents (LangChain, LlamaIndex, etc.) |
MIT © Gatefare