# BLUEPRINT: StackApps MCP Gateway [x402] # Version: 1.3.0 # URL: https://mcp.stackapps.app # Updated: 2026-07-04 ## IDENTITY name: StackApps MCP Gateway description: Unified x402 gateway for the StackApps tool suite. Pay per call in USDC on Base mainnet — no account required to start; first x402 payment may issue a temp API key (first payment only). Each member app (Imagcon today; StackBill, StackSlip, and others as they ship) contributes tools here. One server, one install, the full suite. category: developer-tools contact: support@stackapps.app ## SUMMARY tagline: One server. All StackApps tools. Pay per call in USDC. audience: AI agents and developers who need StackApps suite tools without creating an account. Requires an EVM wallet funded with USDC on Base mainnet (eip155:8453). capabilities: - create-pwa-icons-from-image: Upload image → full PWA icon set (27 files + manifest.json) — $0.10 USDC - create-splash-screens-from-image: Upload image → 16 iOS/iPad splash screens — $0.10 USDC - generate-pwa-icons: Text prompt → AI-generated PWA icon set — $0.295 USDC - generate-image: Text prompt → AI-generated source image (image_key + preview URL) — $0.195 USDC - generate-splash-screens: Text prompt → AI-generated 16 iOS/iPad splash screens — $0.295 USDC - get-wallet-profile: Look up temp vs permanent wallet profile — free - setup-wallet-profile: Activate permanent account from first-payment profile token — free ## AUTH provider: none payment: x402 — EVM wallet, USDC on Base mainnet (eip155:8453) note: No Firebase account or API key required to start. Each tool call settles independently on-chain via EIP-3009. The MCP server signs payment authorizations with the configured wallet and retries automatically — no user interaction needed per call. ## WALLET PROFILE note: On every first payment from a new wallet, Imagcon auto-creates a 60-day temporary account linked to that wallet address. No action required. headers-on-first-payment: - X-Imagcon-Token: profile token (tok_...) — stored in session only, never echoed in tool text - X-Imagcon-Profile-Setup: activate URL (non-secret) — first payment only - X-Imagcon-Api-Key: Imagcon API key — first payment only; unlocks all 14 imagcon-mcp tools surfaced-by: stackapps-suite-mcp appends a non-secret opt-in message to tool results on first payment only (when X-Imagcon-Profile-Setup is present). Secrets stay in session memory — never in chat logs. Example: "A 60-day temp account was created for your wallet. To keep it permanently (free), call setup_wallet_profile with the profile token from secure storage, or visit the activate URL. An Imagcon API key was issued — use imagcon-mcp with that key (store securely, not in chat)." activate-endpoint: POST https://imagcon.app/routes/x402/profile/activate body: { "profile_token": "tok_...", "wallet_address": "0x...", "name": "...", "terms_confirmed": true, "signature": "0x...", "message": "imagcon.app/profile/activate:tok_...:" } signature: EIP-191 personal_sign over the message, signed with the paying wallet key — stackapps-suite-mcp signs automatically; no agent input required. Server verifies the recovered address matches wallet_address (±300s window). terms: https://imagcon.app/terms-of-service note: stackapps-suite-mcp derives wallet_address from WALLET_PRIVATE_KEY automatically; agents pass name and terms_confirmed to setup_wallet_profile. profile_token defaults to the session token from the first paid call if omitted. paper-plan: If setup_wallet_profile is never called, the temp account auto-deletes after 60 days. Next payment from same wallet starts a fresh 60-day window. ## MCP server: stackapps-suite-mcp preferred-transport: stdio http-transport: discovery only — https://mcp.stackapps.app serves blueprint.txt; paid tools require local stdio with WALLET_PRIVATE_KEY. Do not use HTTP MCP on Cloud Run. install: claude mcp add stackapps-suite -- uvx stackapps-suite-mcp --wallet-key 0x... package: stackapps-suite-mcp on PyPI fallback-wheel: https://stackapps.app/downloads/stackapps_suite_mcp-0.1.5-py3-none-any.whl requirements: uv/uvx installed (https://docs.astral.sh/uv/). Python 3.11–3.12. EVM wallet private key. USDC on Base mainnet in that wallet. ### TRANSPORT (stdio) command: uvx stackapps-suite-mcp --wallet-key 0x... note: Runs as a local stdio process. Use WALLET_PRIVATE_KEY env var rather than passing the key on the command line. ### MCP TOOLS server: stackapps-suite-mcp create_pwa_icons_from_image | image_path, output_dir | Full PWA icon set (27 files + manifest.json) from PNG/JPEG/WebP ($0.10 USDC) | source: imagcon.app create_splash_screens_from_image | image_path, background_color, output_dir | 16 iOS/iPad splash screens from PNG/JPEG/WebP ($0.10 USDC) | source: imagcon.app generate_pwa_icons | description, output_dir | AI-generate PWA icon set from text prompt ($0.295 USDC) | source: imagcon.app generate_image | description | AI-generate source image, returns image_key + preview_url ($0.195 USDC) | source: imagcon.app generate_splash_screens | description, background_color, output_dir | AI-generate 16 iOS/iPad splash screens ($0.295 USDC) | source: imagcon.app get_wallet_profile | (none) | Look up temp vs permanent wallet profile (free) | source: imagcon.app setup_wallet_profile | name, terms_confirmed, profile_token, company_name, tax_id | Activate permanent account from first-payment profile token (free) | source: imagcon.app ### PAYMENTS network: Base mainnet (eip155:8453) asset: USDC mechanism: x402 (HTTP 402 / EIP-3009) flow: Each tool call makes an HTTP request to the source app's x402 endpoint. The server receives a 402 challenge, signs a payment authorization with the configured wallet, and retries. Settlement is on-chain; funds go directly to the source app's wallet. StackApps takes no cut. prices: - $0.10 USDC: create_pwa_icons_from_image, create_splash_screens_from_image - $0.195 USDC: generate_image - $0.295 USDC: generate_pwa_icons, generate_splash_screens - free: get_wallet_profile, setup_wallet_profile (no x402 charge) client-safety: The server refuses to sign any payment challenge that does not pay the StackApps suite wallet, or that exceeds the per-call cap ($0.50 USDC by default; override with STACKAPPS_MAX_USD_PER_CALL). A compromised or spoofed endpoint cannot redirect or inflate payments. ### REQUIRED-SECRETS - WALLET_PRIVATE_KEY: description: EVM wallet private key for signing x402 payment authorizations format: 0x-prefixed hex string (64 hex chars after 0x) funding: Wallet must hold USDC on Base mainnet. storage: shell: export WALLET_PRIVATE_KEY=0x... in ~/.zshrc or ~/.bashrc claude-code: pass via --wallet-key argument in claude mcp add command warning: never commit the raw key to git; never set on Cloud Run - IMAGCON_PROFILE_TOKEN: description: Optional override for X-Imagcon-Token header on subsequent x402 calls format: tok_... string from Imagcon first-payment response note: Normally stored in session memory automatically after first paid call ### CLIENT-CONFIGS #### Claude Code (CLI) claude mcp add stackapps-suite -- uvx stackapps-suite-mcp --wallet-key 0x... #### Claude Code / Cursor / Windsurf / Cline (JSON) { "mcpServers": { "stackapps-suite": { "command": "uvx", "args": ["stackapps-suite-mcp", "--wallet-key", "0x..."] } } } ## ACCESS preferred: mcp ## CAPABILITY: create-pwa-icons-from-image description: Generate a full PWA icon set from an existing local image file. Produces 27 files covering all required PWA, iOS, Android, Windows tile, and Safari pinned-tab sizes, plus manifest.json, packaged as a ZIP and extracted to output_dir. No AI generation — source image is uploaded directly. Powered by Imagcon (imagcon.app). input: - name: image_path type: string required: true description: Absolute path to a PNG, JPEG, or WebP file on the local machine. - name: output_dir type: string required: false default: ./public/icons description: Directory where the ZIP is extracted. Relative paths resolve against the MCP server process directory. output: - type: file description: ZIP extracted to output_dir. Contains icons/ subdirectory and manifest.json. auth-required: false payment: $0.10 USDC per call (Base mainnet, x402) source: imagcon.app/routes/x402/icons-from-image ### MCP tool: create_pwa_icons_from_image ## CAPABILITY: create-splash-screens-from-image description: Generate 16 iOS and iPad launch splash screens from an existing local image file. Covers all current iPhone and iPad canvas sizes. Output is a ZIP of flat PNG files extracted to output_dir. No AI generation — source image is uploaded directly. Powered by Imagcon (imagcon.app). input: - name: image_path type: string required: true description: Absolute path to a PNG, JPEG, or WebP file on the local machine. - name: background_color type: string required: false default: "#ffffff" description: Hex color string for the splash screen background (e.g. #1a1a2e). - name: output_dir type: string required: false default: ./public/splash description: Directory where the ZIP is extracted. output: - type: file description: ZIP extracted to output_dir. Contains 16 flat PNG splash screens. auth-required: false payment: $0.10 USDC per call (Base mainnet, x402) source: imagcon.app/routes/x402/splash-from-image ### MCP tool: create_splash_screens_from_image ## CAPABILITY: generate-pwa-icons description: AI-generate a complete PWA icon set from a text description of your app. Imagcon generates a source image from the prompt, then produces all 27 PWA icon sizes plus manifest.json, packaged as a ZIP extracted to output_dir. Powered by Imagcon (imagcon.app). input: - name: description type: string required: true description: Text description of the app — used as the AI image generation prompt. Be specific about colors, style, and subject matter. - name: output_dir type: string required: false default: ./public/icons description: Directory where the ZIP is extracted. output: - type: file description: ZIP extracted to output_dir. Contains AI-generated source image, icons/ subdirectory, and manifest.json. auth-required: false payment: $0.295 USDC per call (Base mainnet, x402) source: imagcon.app/routes/x402/generate-pwa-icons ### MCP tool: generate_pwa_icons ## CAPABILITY: generate-image description: AI-generate a source image from a text description. Returns image_key and a preview URL. Use this when you want to review the generated image before committing to a full icon set generation. Powered by Imagcon (imagcon.app). input: - name: description type: string required: true description: Text description used as the AI image generation prompt. output: - type: json description: image_key (string) and preview_url (string). The image_key can be passed to Imagcon's create_icons_from_key tool (via imagcon-mcp) to generate the full icon set without regenerating the image. auth-required: false payment: $0.195 USDC per call (Base mainnet, x402) source: imagcon.app/routes/x402/generate-image ### MCP tool: generate_image ## CAPABILITY: generate-splash-screens description: AI-generate 16 iOS and iPad launch splash screens from a text description of your app. Imagcon generates a source image from the prompt, then produces all splash screen canvas sizes, packaged as a ZIP extracted to output_dir. Powered by Imagcon (imagcon.app). input: - name: description type: string required: true description: Text description used as the AI image generation prompt. - name: background_color type: string required: false default: "#ffffff" description: Hex color string for the splash screen background. - name: output_dir type: string required: false default: ./public/splash description: Directory where the ZIP is extracted. output: - type: file description: ZIP extracted to output_dir. Contains AI-generated source image and 16 flat PNG splash screens. auth-required: false payment: $0.295 USDC per call (Base mainnet, x402) source: imagcon.app/routes/x402/generate-splash-screens ### MCP tool: generate_splash_screens ## CAPABILITY: get-wallet-profile description: Look up the Imagcon wallet profile for the configured wallet address. Use before prompting the user to activate — shows temp vs permanent status. input: [] output: - type: string description: Profile status and optional display name. auth-required: false payment: free (no x402 charge) source: imagcon.app/routes/x402/profile/{wallet} ### MCP tool: get_wallet_profile ## CAPABILITY: setup-wallet-profile description: Activate a permanent Imagcon account linked to your wallet. Call this after the first x402 payment. profile_token is stored in session memory after the first paid call; pass explicitly from secure storage if needed. Permanent accounts keep payment history indefinitely. Without activation the temp account auto-deletes after 60 days (paper plan). input: - name: name type: string required: true description: Display name for the profile (person or business name). - name: terms_confirmed type: boolean required: true description: Must be true only after the human has read https://imagcon.app/terms-of-service and agreed. - name: profile_token type: string required: false description: tok_... token from first x402 payment. Defaults to session token if omitted. - name: wallet_address type: string required: true description: Derived from WALLET_PRIVATE_KEY by stackapps-suite-mcp (not an agent input). - name: company_name type: string required: false description: Optional business name. - name: tax_id type: string required: false description: Optional tax ID / VAT number. output: - type: string description: Confirmation message with account status. auth-required: false payment: free (no x402 charge) source: imagcon.app/routes/x402/profile/activate ### MCP tool: setup_wallet_profile ## SUITE note: This gateway grows as member apps ship x402 endpoints. Each new capability will appear in ## MCP TOOLS above and as a ## CAPABILITY block below. The install command and server URL do not change — agents with stackapps-suite-mcp already installed receive new tools automatically on next connect. members: - imagcon.app — PWA icons, splash screens, AI image generation (live) - stackbill.app — invoicing (planned) - stackslip.app — packing slips (planned)