{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "https://moltspay.com/schemas/services.json",
  "title": "MoltsPay Services Manifest",
  "description": "Configuration file for MoltsPay x402 service providers",
  "type": "object",
  "required": ["provider", "services"],
  "properties": {
    "provider": {
      "type": "object",
      "description": "Service provider information",
      "required": ["name", "wallet"],
      "properties": {
        "name": {
          "type": "string",
          "description": "Provider display name",
          "examples": ["Zen7 Video Generation"]
        },
        "description": {
          "type": "string",
          "description": "Provider description"
        },
        "wallet": {
          "type": "string",
          "pattern": "^0x[a-fA-F0-9]{40}$",
          "description": "EVM address to receive payments (Base, Polygon, BNB, etc.)"
        },
        "solana_wallet": {
          "type": "string",
          "pattern": "^[1-9A-HJ-NP-Za-km-z]{32,44}$",
          "description": "Solana address to receive payments (solana, solana_devnet)"
        },
        "chain": {
          "type": "string",
          "enum": ["base", "polygon", "base_sepolia", "tempo_moderato", "bnb", "bnb_testnet", "solana", "solana_devnet"],
          "default": "base",
          "description": "Single chain mode (use 'chains' for multi-chain)"
        },
        "chains": {
          "type": "array",
          "description": "Supported chains. EVM chains use 'wallet', Solana chains use 'solana_wallet'.",
          "items": {
            "type": "string",
            "enum": ["base", "polygon", "base_sepolia", "tempo_moderato", "bnb", "bnb_testnet", "solana", "solana_devnet"]
          },
          "examples": [
            ["base", "polygon", "solana_devnet"],
            ["base", "base_sepolia", "solana", "solana_devnet"]
          ]
        }
      }
    },
    "services": {
      "type": "array",
      "description": "List of available services",
      "minItems": 1,
      "items": {
        "type": "object",
        "required": ["id", "price", "currency"],
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9-]+$",
            "description": "Unique service identifier",
            "examples": ["text-to-video", "image-to-video"]
          },
          "name": { "type": "string", "description": "Human-readable service name" },
          "description": { "type": "string", "description": "Service description" },
          "function": {
            "type": "string",
            "pattern": "^[a-zA-Z][a-zA-Z0-9]*$",
            "description": "Function name exported from index.js"
          },
          "price": { "type": "number", "minimum": 0, "description": "Price in currency units" },
          "currency": { "type": "string", "enum": ["USDC", "USDT"], "default": "USDC" },
          "input": { "type": "object", "description": "Input parameters schema" },
          "output": { "type": "object", "description": "Output schema" }
        }
      }
    }
  },
  "examples": [
    {
      "provider": {
        "name": "Zen7 Video Generation",
        "wallet": "0xb8d6f2441e8f8dfB6288A74Cf73804cDd0484E0C",
        "solana_wallet": "CNbgcwV95JCguguA652kxwXPhS6EwoskeBPH45o8ow7K",
        "chains": ["base", "base_sepolia", "polygon", "solana_devnet"]
      },
      "services": [
        { "id": "text-to-video", "function": "textToVideo", "price": 0.99, "currency": "USDC" }
      ]
    }
  ]
}
