x402engine-mcp 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,108 @@
1
+ # x402engine-mcp
2
+
3
+ MCP server for [x402 Engine](https://x402engine.app) — giving AI agents access to 16 pay-per-call APIs via HTTP 402 micropayments.
4
+
5
+ Payments are made with USDC on Base, USDC on Solana, or USDm on MegaETH. Prices range from $0.001 to $0.12 per call.
6
+
7
+ ## Quick Start
8
+
9
+ ### Claude Desktop
10
+
11
+ Add to your `claude_desktop_config.json`:
12
+
13
+ ```json
14
+ {
15
+ "mcpServers": {
16
+ "x402engine": {
17
+ "command": "npx",
18
+ "args": ["-y", "x402engine-mcp"],
19
+ "env": {
20
+ "X402_DEV_BYPASS": "your-dev-bypass-secret"
21
+ }
22
+ }
23
+ }
24
+ }
25
+ ```
26
+
27
+ ### Claude Code
28
+
29
+ ```bash
30
+ claude mcp add x402engine -- npx -y x402engine-mcp
31
+ ```
32
+
33
+ ## Available Tools
34
+
35
+ ### Image Generation
36
+ | Tool | Price | Description |
37
+ |------|-------|-------------|
38
+ | `generate_image` | $0.015-$0.12 | AI image generation (fast/quality/text tiers) |
39
+
40
+ ### Code Execution
41
+ | Tool | Price | Description |
42
+ |------|-------|-------------|
43
+ | `execute_code` | $0.005 | Sandboxed code execution (Python, JS, Bash, R) |
44
+
45
+ ### Audio
46
+ | Tool | Price | Description |
47
+ |------|-------|-------------|
48
+ | `transcribe_audio` | $0.10 | Audio-to-text transcription (Deepgram Nova-3) |
49
+
50
+ ### Crypto & Market Data
51
+ | Tool | Price | Description |
52
+ |------|-------|-------------|
53
+ | `get_crypto_price` | $0.001 | Current crypto prices |
54
+ | `get_crypto_markets` | $0.002 | Top coins by market cap |
55
+ | `get_crypto_history` | $0.003 | Historical price charts |
56
+ | `get_trending_crypto` | $0.001 | Trending coins |
57
+ | `search_crypto` | $0.001 | Search for coins |
58
+
59
+ ### Blockchain & Wallet
60
+ | Tool | Price | Description |
61
+ |------|-------|-------------|
62
+ | `get_wallet_balances` | $0.005 | Token balances for any wallet |
63
+ | `get_wallet_transactions` | $0.005 | Transaction history |
64
+ | `get_wallet_pnl` | $0.01 | Profit & loss analysis |
65
+ | `get_token_prices` | $0.005 | DEX-derived token prices |
66
+ | `get_token_metadata` | $0.002 | Token metadata |
67
+
68
+ ### IPFS Storage
69
+ | Tool | Price | Description |
70
+ |------|-------|-------------|
71
+ | `pin_to_ipfs` | $0.01 | Pin JSON to IPFS |
72
+ | `get_from_ipfs` | $0.001 | Retrieve content from IPFS |
73
+
74
+ ### Discovery
75
+ | Tool | Price | Description |
76
+ |------|-------|-------------|
77
+ | `discover_services` | Free | List all services and pricing |
78
+
79
+ ## Environment Variables
80
+
81
+ | Variable | Required | Description |
82
+ |----------|----------|-------------|
83
+ | `X402_BASE_URL` | No | Gateway URL (default: `https://x402engine.app`) |
84
+ | `X402_DEV_BYPASS` | No | Dev bypass secret to skip payments |
85
+ | `X402_PAYMENT_HEADER` | No | Pre-signed payment header |
86
+
87
+ ## Payment Networks
88
+
89
+ - **Base** (EVM) — USDC, 6 decimals, ~2s confirmation
90
+ - **Solana** — USDC, 6 decimals, ~400ms confirmation
91
+ - **MegaETH** (EVM) — USDm, 18 decimals, ~10ms confirmation
92
+
93
+ ## How It Works
94
+
95
+ 1. Agent calls an MCP tool (e.g., `get_crypto_price`)
96
+ 2. MCP server makes HTTP request to x402engine.app
97
+ 3. Gateway returns `402 Payment Required` with pricing
98
+ 4. Agent pays with crypto via the x402 protocol
99
+ 5. Gateway verifies payment on-chain and returns data
100
+
101
+ For automatic payment handling, use [@x402/fetch](https://www.npmjs.com/package/@x402/fetch) in your agent code.
102
+
103
+ ## Links
104
+
105
+ - Gateway: [x402engine.app](https://x402engine.app)
106
+ - Discovery: [x402engine.app/.well-known/x402.json](https://x402engine.app/.well-known/x402.json)
107
+ - GitHub: [github.com/agentc22/x402engine-mcp](https://github.com/agentc22/x402engine-mcp)
108
+ - Protocol: [x402.org](https://x402.org)
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ export {};
package/dist/index.js ADDED
@@ -0,0 +1,302 @@
1
+ #!/usr/bin/env node
2
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
3
+ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
4
+ import { z } from "zod";
5
+ const BASE_URL = process.env.X402_BASE_URL || "https://x402engine.app";
6
+ const PAYMENT_HEADER = process.env.X402_PAYMENT_HEADER || "";
7
+ const DEV_BYPASS = process.env.X402_DEV_BYPASS || "";
8
+ async function callApi(method, path, params, body) {
9
+ let url = `${BASE_URL}${path}`;
10
+ // Build query string for GET
11
+ if (method === "GET" && params) {
12
+ const qs = new URLSearchParams();
13
+ for (const [k, v] of Object.entries(params)) {
14
+ if (v !== undefined && v !== null && v !== "") {
15
+ qs.set(k, String(v));
16
+ }
17
+ }
18
+ const qsStr = qs.toString();
19
+ if (qsStr)
20
+ url += `?${qsStr}`;
21
+ }
22
+ const headers = {
23
+ "Content-Type": "application/json",
24
+ };
25
+ if (PAYMENT_HEADER) {
26
+ headers["X-PAYMENT"] = PAYMENT_HEADER;
27
+ }
28
+ if (DEV_BYPASS) {
29
+ headers["X-DEV-BYPASS"] = DEV_BYPASS;
30
+ }
31
+ const init = { method, headers };
32
+ if (method === "POST" && body) {
33
+ init.body = JSON.stringify(body);
34
+ }
35
+ const res = await fetch(url, init);
36
+ if (res.status === 402) {
37
+ const paymentHeader = res.headers.get("PAYMENT-REQUIRED");
38
+ let paymentInfo = null;
39
+ if (paymentHeader) {
40
+ try {
41
+ paymentInfo = JSON.parse(Buffer.from(paymentHeader, "base64").toString());
42
+ }
43
+ catch {
44
+ paymentInfo = paymentHeader;
45
+ }
46
+ }
47
+ return {
48
+ status: 402,
49
+ paymentRequired: paymentInfo,
50
+ error: "Payment required. Set X402_PAYMENT_HEADER or X402_DEV_BYPASS env var, or use @x402/fetch to handle payments automatically.",
51
+ };
52
+ }
53
+ const data = await res.json().catch(() => ({ error: "Non-JSON response" }));
54
+ if (!res.ok) {
55
+ return { status: res.status, error: data.error || `HTTP ${res.status}` };
56
+ }
57
+ return { status: res.status, data };
58
+ }
59
+ function textResult(content) {
60
+ return {
61
+ content: [{ type: "text", text: typeof content === "string" ? content : JSON.stringify(content, null, 2) }],
62
+ };
63
+ }
64
+ // --- Server ---
65
+ const server = new McpServer({
66
+ name: "x402engine",
67
+ version: "1.0.0",
68
+ });
69
+ // ==================== DISCOVERY ====================
70
+ server.tool("discover_services", "List all available x402 Engine APIs with pricing, endpoints, and payment networks. Call this first to understand what's available.", {}, async () => {
71
+ const res = await callApi("GET", "/.well-known/x402.json");
72
+ if (res.error)
73
+ return textResult({ error: res.error });
74
+ return textResult(res.data);
75
+ });
76
+ // ==================== IMAGE GENERATION ====================
77
+ server.tool("generate_image", "Generate an image from a text prompt. Three quality tiers: 'fast' ($0.015, FLUX Schnell), 'quality' ($0.05, FLUX.2 Pro), 'text' ($0.12, Ideogram v3 for images with text). Returns image URL.", {
78
+ prompt: z.string().describe("Text description of the image to generate"),
79
+ tier: z.enum(["fast", "quality", "text"]).default("fast").describe("Quality tier: fast ($0.015), quality ($0.05), text ($0.12)"),
80
+ width: z.number().min(256).max(2048).default(1024).optional().describe("Image width in pixels"),
81
+ height: z.number().min(256).max(2048).default(1024).optional().describe("Image height in pixels"),
82
+ seed: z.number().optional().describe("Random seed for reproducibility"),
83
+ }, async ({ prompt, tier, width, height, seed }) => {
84
+ const body = { prompt };
85
+ if (width)
86
+ body.width = width;
87
+ if (height)
88
+ body.height = height;
89
+ if (seed !== undefined)
90
+ body.seed = seed;
91
+ const res = await callApi("POST", `/api/image/${tier}`, undefined, body);
92
+ if (res.error)
93
+ return textResult({ error: res.error, paymentRequired: res.paymentRequired });
94
+ return textResult(res.data);
95
+ });
96
+ // ==================== CODE EXECUTION ====================
97
+ server.tool("execute_code", "Execute code in a secure sandboxed environment (E2B). Supports Python, JavaScript, Bash, and R. $0.005 per execution.", {
98
+ code: z.string().describe("Code to execute"),
99
+ language: z.enum(["python", "javascript", "bash", "r"]).default("python").describe("Programming language"),
100
+ timeout: z.number().min(1).max(300).optional().describe("Execution timeout in seconds"),
101
+ }, async ({ code, language, timeout }) => {
102
+ const body = { code, language };
103
+ if (timeout)
104
+ body.timeout = timeout;
105
+ const res = await callApi("POST", "/api/code/run", undefined, body);
106
+ if (res.error)
107
+ return textResult({ error: res.error, paymentRequired: res.paymentRequired });
108
+ return textResult(res.data);
109
+ });
110
+ // ==================== AUDIO TRANSCRIPTION ====================
111
+ server.tool("transcribe_audio", "Transcribe audio to text using Deepgram Nova-3. Accepts a public URL to an audio file. $0.10 per transcription.", {
112
+ audio_url: z.string().url().describe("Public URL to audio file (mp3, wav, etc.)"),
113
+ language: z.string().optional().describe("Language code (e.g., 'en', 'es')"),
114
+ diarize: z.boolean().default(false).optional().describe("Enable speaker identification"),
115
+ punctuate: z.boolean().default(true).optional().describe("Add punctuation"),
116
+ }, async ({ audio_url, language, diarize, punctuate }) => {
117
+ const body = { audio_url };
118
+ if (language)
119
+ body.language = language;
120
+ if (diarize)
121
+ body.diarize = diarize;
122
+ if (punctuate !== undefined)
123
+ body.punctuate = punctuate;
124
+ const res = await callApi("POST", "/api/transcribe", undefined, body);
125
+ if (res.error)
126
+ return textResult({ error: res.error, paymentRequired: res.paymentRequired });
127
+ return textResult(res.data);
128
+ });
129
+ // ==================== CRYPTO PRICES ====================
130
+ server.tool("get_crypto_price", "Get current prices for cryptocurrencies. $0.001 per request.", {
131
+ ids: z.string().describe("Comma-separated coin IDs (e.g., 'bitcoin,ethereum,solana')"),
132
+ currencies: z.string().default("usd").optional().describe("Comma-separated fiat currencies (default: 'usd')"),
133
+ include_24h: z.boolean().default(true).optional().describe("Include 24h price change"),
134
+ include_mcap: z.boolean().default(false).optional().describe("Include market cap"),
135
+ }, async ({ ids, currencies, include_24h, include_mcap }) => {
136
+ const res = await callApi("GET", "/api/crypto/price", { ids, currencies, include_24h, include_mcap });
137
+ if (res.error)
138
+ return textResult({ error: res.error, paymentRequired: res.paymentRequired });
139
+ return textResult(res.data);
140
+ });
141
+ server.tool("get_crypto_markets", "Get top cryptocurrencies by market cap with detailed market data. $0.002 per request.", {
142
+ currency: z.string().default("usd").optional().describe("Fiat currency for prices"),
143
+ category: z.string().optional().describe("Filter by category"),
144
+ order: z.string().default("market_cap_desc").optional().describe("Sort order"),
145
+ limit: z.number().min(1).max(250).default(20).optional().describe("Number of results"),
146
+ page: z.number().min(1).default(1).optional().describe("Page number"),
147
+ }, async ({ currency, category, order, limit, page }) => {
148
+ const res = await callApi("GET", "/api/crypto/markets", { currency, category, order, limit, page });
149
+ if (res.error)
150
+ return textResult({ error: res.error, paymentRequired: res.paymentRequired });
151
+ return textResult(res.data);
152
+ });
153
+ server.tool("get_crypto_history", "Get historical price data for a cryptocurrency. $0.003 per request.", {
154
+ id: z.string().describe("Coin ID (e.g., 'bitcoin')"),
155
+ currency: z.string().default("usd").optional().describe("Fiat currency"),
156
+ days: z.union([z.number().min(1).max(365), z.literal("max")]).default(30).optional().describe("Number of days of history (or 'max')"),
157
+ }, async ({ id, currency, days }) => {
158
+ const res = await callApi("GET", "/api/crypto/history", { id, currency, days });
159
+ if (res.error)
160
+ return textResult({ error: res.error, paymentRequired: res.paymentRequired });
161
+ return textResult(res.data);
162
+ });
163
+ server.tool("get_trending_crypto", "Get trending cryptocurrencies. $0.001 per request.", {}, async () => {
164
+ const res = await callApi("GET", "/api/crypto/trending");
165
+ if (res.error)
166
+ return textResult({ error: res.error, paymentRequired: res.paymentRequired });
167
+ return textResult(res.data);
168
+ });
169
+ server.tool("search_crypto", "Search for a cryptocurrency by name or symbol. $0.001 per request.", {
170
+ q: z.string().describe("Search query (coin name or symbol)"),
171
+ }, async ({ q }) => {
172
+ const res = await callApi("GET", "/api/crypto/search", { q });
173
+ if (res.error)
174
+ return textResult({ error: res.error, paymentRequired: res.paymentRequired });
175
+ return textResult(res.data);
176
+ });
177
+ // ==================== BLOCKCHAIN / WALLET ====================
178
+ server.tool("get_wallet_balances", "Get token balances for a wallet address on any supported chain. $0.005 per request.", {
179
+ chain: z.string().describe("Blockchain name (e.g., 'ethereum', 'base', 'solana', 'arbitrum')"),
180
+ address: z.string().describe("Wallet address"),
181
+ }, async ({ chain, address }) => {
182
+ const res = await callApi("POST", "/api/wallet/balances", undefined, { chain, address });
183
+ if (res.error)
184
+ return textResult({ error: res.error, paymentRequired: res.paymentRequired });
185
+ return textResult(res.data);
186
+ });
187
+ server.tool("get_wallet_transactions", "Get transaction history for a wallet address. $0.005 per request.", {
188
+ chain: z.string().describe("Blockchain name"),
189
+ address: z.string().describe("Wallet address"),
190
+ }, async ({ chain, address }) => {
191
+ const res = await callApi("POST", "/api/wallet/transactions", undefined, { chain, address });
192
+ if (res.error)
193
+ return textResult({ error: res.error, paymentRequired: res.paymentRequired });
194
+ return textResult(res.data);
195
+ });
196
+ server.tool("get_wallet_pnl", "Get profit and loss analysis for a wallet's token trades. $0.01 per request.", {
197
+ chain: z.string().describe("Blockchain name"),
198
+ address: z.string().describe("Wallet address"),
199
+ min_liquidity: z.number().optional().describe("Minimum liquidity filter"),
200
+ min_volume_24h: z.number().optional().describe("Minimum 24h volume filter"),
201
+ }, async ({ chain, address, min_liquidity, min_volume_24h }) => {
202
+ const body = { chain, address };
203
+ if (min_liquidity)
204
+ body.min_liquidity = min_liquidity;
205
+ if (min_volume_24h)
206
+ body.min_volume_24h = min_volume_24h;
207
+ const res = await callApi("POST", "/api/wallet/pnl", undefined, body);
208
+ if (res.error)
209
+ return textResult({ error: res.error, paymentRequired: res.paymentRequired });
210
+ return textResult(res.data);
211
+ });
212
+ server.tool("get_token_prices", "Get DEX-derived prices for tokens by contract address. $0.005 per request.", {
213
+ tokens: z.array(z.object({
214
+ token_address: z.string().describe("Token contract address"),
215
+ chain: z.string().describe("Blockchain name"),
216
+ })).min(1).max(200).describe("Array of tokens to price"),
217
+ }, async ({ tokens }) => {
218
+ const res = await callApi("POST", "/api/token/prices", undefined, { tokens });
219
+ if (res.error)
220
+ return textResult({ error: res.error, paymentRequired: res.paymentRequired });
221
+ return textResult(res.data);
222
+ });
223
+ server.tool("get_token_metadata", "Get metadata for a token (name, symbol, decimals, etc.). $0.002 per request.", {
224
+ chain: z.string().optional().describe("Blockchain name (required with address)"),
225
+ address: z.string().optional().describe("Token contract address"),
226
+ slug: z.string().optional().describe("Token slug (alternative to chain+address)"),
227
+ id: z.string().optional().describe("Token ID (alternative to chain+address)"),
228
+ }, async ({ chain, address, slug, id }) => {
229
+ const params = {};
230
+ if (chain)
231
+ params.chain = chain;
232
+ if (address)
233
+ params.address = address;
234
+ if (slug)
235
+ params.slug = slug;
236
+ if (id)
237
+ params.id = id;
238
+ const res = await callApi("GET", "/api/token/metadata", params);
239
+ if (res.error)
240
+ return textResult({ error: res.error, paymentRequired: res.paymentRequired });
241
+ return textResult(res.data);
242
+ });
243
+ // ==================== IPFS ====================
244
+ server.tool("pin_to_ipfs", "Pin JSON data to IPFS via Pinata. Returns the IPFS CID. $0.01 per pin.", {
245
+ json: z.record(z.unknown()).describe("JSON object to pin to IPFS"),
246
+ name: z.string().optional().describe("Name for the pinned content"),
247
+ }, async ({ json, name }) => {
248
+ const body = { json };
249
+ if (name)
250
+ body.name = name;
251
+ const res = await callApi("POST", "/api/ipfs/pin", undefined, body);
252
+ if (res.error)
253
+ return textResult({ error: res.error, paymentRequired: res.paymentRequired });
254
+ return textResult(res.data);
255
+ });
256
+ server.tool("get_from_ipfs", "Retrieve content from IPFS by CID. $0.001 per request.", {
257
+ cid: z.string().describe("IPFS content identifier (CID)"),
258
+ }, async ({ cid }) => {
259
+ const res = await callApi("GET", "/api/ipfs/get", { cid });
260
+ if (res.error)
261
+ return textResult({ error: res.error, paymentRequired: res.paymentRequired });
262
+ return textResult(res.data);
263
+ });
264
+ // ==================== RESOURCES ====================
265
+ server.resource("services", "x402engine://services", async (uri) => ({
266
+ contents: [{
267
+ uri: uri.href,
268
+ mimeType: "application/json",
269
+ text: JSON.stringify({
270
+ gateway: BASE_URL,
271
+ services: [
272
+ { tool: "generate_image", price: "$0.015-$0.12", description: "AI image generation (3 tiers)" },
273
+ { tool: "execute_code", price: "$0.005", description: "Sandboxed code execution" },
274
+ { tool: "transcribe_audio", price: "$0.10", description: "Audio transcription" },
275
+ { tool: "get_crypto_price", price: "$0.001", description: "Crypto prices" },
276
+ { tool: "get_crypto_markets", price: "$0.002", description: "Market data" },
277
+ { tool: "get_crypto_history", price: "$0.003", description: "Historical prices" },
278
+ { tool: "get_trending_crypto", price: "$0.001", description: "Trending coins" },
279
+ { tool: "search_crypto", price: "$0.001", description: "Coin search" },
280
+ { tool: "get_wallet_balances", price: "$0.005", description: "Wallet balances" },
281
+ { tool: "get_wallet_transactions", price: "$0.005", description: "Transaction history" },
282
+ { tool: "get_wallet_pnl", price: "$0.01", description: "P&L analysis" },
283
+ { tool: "get_token_prices", price: "$0.005", description: "DEX token prices" },
284
+ { tool: "get_token_metadata", price: "$0.002", description: "Token metadata" },
285
+ { tool: "pin_to_ipfs", price: "$0.01", description: "Pin to IPFS" },
286
+ { tool: "get_from_ipfs", price: "$0.001", description: "Get from IPFS" },
287
+ ],
288
+ networks: ["Base (USDC)", "Solana (USDC)", "MegaETH (USDm)"],
289
+ docs: `${BASE_URL}/.well-known/x402.json`,
290
+ }, null, 2),
291
+ }],
292
+ }));
293
+ // --- Start ---
294
+ async function main() {
295
+ const transport = new StdioServerTransport();
296
+ await server.connect(transport);
297
+ }
298
+ main().catch((err) => {
299
+ console.error("Fatal:", err);
300
+ process.exit(1);
301
+ });
302
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,47 @@
1
+ {
2
+ "name": "x402engine-mcp",
3
+ "version": "1.0.0",
4
+ "type": "module",
5
+ "description": "MCP server for x402 Engine — pay-per-call AI APIs via HTTP 402 micropayments",
6
+ "main": "./dist/index.js",
7
+ "bin": {
8
+ "x402engine-mcp": "./dist/index.js"
9
+ },
10
+ "files": [
11
+ "dist",
12
+ "README.md",
13
+ "server.json"
14
+ ],
15
+ "scripts": {
16
+ "build": "tsc",
17
+ "start": "node dist/index.js",
18
+ "dev": "tsx src/index.ts",
19
+ "prepublishOnly": "npm run build"
20
+ },
21
+ "keywords": [
22
+ "mcp",
23
+ "model-context-protocol",
24
+ "x402",
25
+ "micropayments",
26
+ "ai-agents",
27
+ "crypto",
28
+ "usdc",
29
+ "api-gateway",
30
+ "pay-per-call"
31
+ ],
32
+ "author": "agentc22",
33
+ "license": "MIT",
34
+ "repository": {
35
+ "type": "git",
36
+ "url": "https://github.com/agentc22/x402engine-mcp"
37
+ },
38
+ "dependencies": {
39
+ "@modelcontextprotocol/sdk": "^1.12.1",
40
+ "zod": "^3.24.0"
41
+ },
42
+ "devDependencies": {
43
+ "@types/node": "^22.0.0",
44
+ "tsx": "^4.19.0",
45
+ "typescript": "^5.7.0"
46
+ }
47
+ }