# x402 MCP Server Configuration # Server HOST=0.0.0.0 PORT=8402 UPGRADE_URL=http://localhost:8402/upgrade # Public origin for seller resource URLs (updated by scripts/stack_up.sh when tunneling) PUBLIC_BASE_URL=http://localhost:8402 # Commerce (MCP tool quota — separate from on-chain x402 payments) FREE_TIER_MONTHLY_QUOTA=500 FREE_TIER_RATE_LIMIT_PER_MIN=10 # Redis (optional — in-memory if unset) # REDIS_URL=redis://localhost:6379/0 # Dashboard seller wizard POST routes. Off by default: this server has no auth, # and scripts/stack_up.sh can expose it publicly through a tunnel. DASHBOARD_ACTIONS=false # Extra CORS origins — comma-separated EXACT origins, e.g. # CORS_EXTRA_ORIGINS=https://my-demo.trycloudflare.com # Leave empty unless you are actively demoing through a tunnel. CORS_EXTRA_ORIGINS= # Trust x-forwarded-host when building the public resource URL advertised in # the 402 challenge. Enable ONLY behind a proxy you control. TRUST_FORWARDED_HOST=false # Hot buyer (pay_and_fetch only) — 0x + 64 hex chars. NEVER put an address here. EVM_PRIVATE_KEY= SVM_PRIVATE_KEY= # Cold receive (seller payTo) — sole live cashier for this storefront X402_PAY_TO_ADDRESS=0x8A897D546c22d726b45Fa25F0EBB56207E63fF4e # Testnet (x402.org) OR CDP facilitator (required for Bazaar indexing) X402_FACILITATOR_URL=https://x402.org/facilitator X402_DEFAULT_NETWORK=eip155:84532 X402_DEFAULT_PRICE=$0.01 # CDP facilitator (production — future/alternate x402 rail) # X402_FACILITATOR_URL=https://api.cdp.coinbase.com/platform/v2/x402 # CDP_API_KEY_ID= # CDP_API_KEY_SECRET= # Stripe fiat payment rail (primary for card/bank checkout) STRIPE_SECRET_KEY= STRIPE_WEBHOOK_SECRET= STRIPE_PUBLISHABLE_KEY= # Mission-control dashboard (default read-only) DASHBOARD_ACTIONS=false # Listed-product persistence (survives restarts; empty string disables) SWARM_PRODUCTS_FILE=ledger/products.json # MailRail transactional agent messaging & alert dispatch rail # Providers: mock (default), resend, smtp, webhook # Live HTTP dispatch runs only when MAILRAIL_ENABLED=true AND provider is # resend or webhook. mock/file/smtp still write ledger/mailrail.jsonl. # Set FROM + ADMIN in every environment so city alerts and generic # settlement receipts share one operator mailbox (receipts use ADMIN only). MAILRAIL_ENABLED=false MAILRAIL_PROVIDER=mock MAILRAIL_FROM_ADDRESS=agents@localhost MAILRAIL_ADMIN_RECIPIENT=ops@localhost # MAILRAIL_API_KEY=re_your_api_key_here # MAILRAIL_SMTP_URL=smtps://user:pass@smtp.example.com:465 # SMTP is doctor-configured only; send_agent_mail does not dispatch SMTP. # MAILRAIL_WEBHOOK_URL=https://discord.com/api/webhooks/...