{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://www.agentscore.com/schemas/payment-handlers/mpp.json",
  "title": "AgentScore MPP payment handler config (com.agentscore.payment.mpp) v1",
  "description": "Schema for the `config` object of a `com.agentscore.payment.mpp` payment handler binding inside a UCP profile's `payment_handlers`. Describes how a merchant accepts payments via the Machine Payments Protocol (MPP, mpp.dev). MPP is a multi-chain protocol covering Tempo USDC, Solana USDC via `solana/charge`, Stellar, Lightning, etc. The merchant's `networks` array enumerates which networks it accepts; per-network extras (e.g. EVM `chain_id`) ride alongside. Shape mirrors `x402.json` so consumers parse both handlers the same way. The wrapper fields are defined by UCP itself; this schema validates only the config payload.",
  "type": "object",
  "properties": {
    "networks": {
      "type": "array",
      "minItems": 1,
      "description": "List of MPP networks the merchant accepts. One entry per network. Same shape as x402.config.networks.",
      "items": {
        "type": "object",
        "properties": {
          "network": {
            "type": "string",
            "description": "MPP network identifier. Tempo: `tempo-mainnet` / `tempo-testnet`. Solana via `solana/charge`: `mpp-solana-mainnet` / `mpp-solana-devnet`."
          },
          "chain_id": {
            "type": "integer",
            "description": "Optional. Numeric chain id for EVM-style chains (e.g. 4217 for Tempo mainnet, 42431 for Tempo testnet). Omit for non-EVM networks."
          },
          "recipient": {
            "type": "string",
            "description": "Optional. Merchant's static settlement address on this network (EVM hex, Solana base58 ATA, etc.). When present, agents MAY cross-check the 402 challenge's `pay_to` against this declared address as MITM protection. Omit if the merchant uses per-order recipients (e.g. Stripe-backed deposit addresses) — the authoritative recipient still ships in the 402 body."
          }
        },
        "required": ["network"],
        "additionalProperties": true
      }
    }
  },
  "required": ["networks"],
  "additionalProperties": true
}
