{
  "protocolVersion": "0.3.0",
  "name": "Fanzava Merchant Agent",
  "description": "Sells Fanzava plans and passes: branded tipping, bracket and prediction competition hubs. Quotes a cart for any plan or pass in the public catalogue. Carts are currently UNSIGNED: no merchant signing key is configured, so a cart is a quote, not a guarantee. Payment is completed by the buyer at the hosted checkout URL on the cart. Fanzava accepts no payment credentials from an agent.",
  "url": "https://www.fanzava.com/api/a2a",
  "preferredTransport": "JSONRPC",
  "provider": {
    "organization": "RYSI Labs Pty Ltd",
    "url": "https://www.fanzava.com"
  },
  "version": "1.0.0",
  "documentationUrl": "https://www.fanzava.com/pricing",
  "iconUrl": "https://www.fanzava.com/favicon.svg",
  "defaultInputModes": [
    "application/json",
    "text/plain"
  ],
  "defaultOutputModes": [
    "application/json"
  ],
  "capabilities": {
    "streaming": false,
    "pushNotifications": false,
    "stateTransitionHistory": false,
    "extensions": [
      {
        "uri": "https://github.com/google-agentic-commerce/AP2/tree/v0.1.0",
        "description": "Agent Payments Protocol (AP2) v0.1.0. Fanzava acts as merchant: accepts an IntentMandate and returns a CartMandate. Cart signing is not currently configured, so merchant_authorization is null.",
        "required": true,
        "params": {
          "roles": [
            "merchant"
          ],
          "mandates": {
            "accepts": [
              "ap2.mandates.IntentMandate"
            ],
            "emits": [
              "ap2.mandates.CartMandate"
            ],
            "rejects": [
              "ap2.mandates.PaymentMandate"
            ]
          },
          "flows": [
            "human-present"
          ],
          "currencies": [
            "AUD"
          ],
          "jurisdictions": [
            "AU"
          ],
          "paymentMethods": [
            "https://fanzava.com/payment-method/hosted-checkout"
          ],
          "cartSignature": null,
          "cartTtlSeconds": 900,
          "refundable": false,
          "merchant": {
            "id": "fanzava",
            "name": "Fanzava",
            "legalName": "RYSI Labs Pty Ltd",
            "abn": "99 692 790 435",
            "website": "https://www.fanzava.com",
            "termsUrl": "https://www.fanzava.com/legal/terms",
            "privacyUrl": "https://www.fanzava.com/legal/privacy"
          }
        }
      },
      {
        "uri": "https://github.com/google-agentic-commerce/ap2/v1",
        "description": "Same AP2 support, under the URI used by the AP2 reference implementation. Activating either URI activates AP2.",
        "required": false,
        "params": {
          "roles": [
            "merchant"
          ]
        }
      }
    ]
  },
  "skills": [
    {
      "id": "search_catalog",
      "name": "Search catalogue",
      "description": "Searches Fanzava plans and passes and returns the offers that fit, with AUD GST-inclusive prices and participant caps. Send a natural-language query, a participant headcount, or an IntentMandate.",
      "tags": [
        "merchant",
        "catalog",
        "search",
        "pricing",
        "ap2"
      ],
      "examples": [
        "Tipping hub for 180 staff, billed annually",
        "One-off AFL season pass for about 400 people",
        "Cheapest plan that removes the Fanzava watermark"
      ],
      "inputModes": [
        "application/json",
        "text/plain"
      ],
      "outputModes": [
        "application/json"
      ],
      "parameters": {
        "type": "object",
        "properties": {
          "catalog_search": {
            "type": "string",
            "description": "Natural-language description of what the buyer needs."
          }
        },
        "required": [
          "catalog_search"
        ]
      }
    },
    {
      "id": "create_cart",
      "name": "Create signed cart",
      "description": "Takes an ap2.mandates.IntentMandate (optionally pinning a SKU) and returns a ap2.mandates.CartMandate. merchant_authorization is null until a signing key is configured, so treat the price as a quote. The cart carries the checkout URL where the buyer completes payment.",
      "tags": [
        "merchant",
        "cart",
        "checkout",
        "ap2"
      ],
      "examples": [
        "Create a cart for plan:growth:annual"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "parameters": {
        "type": "object",
        "properties": {
          "sku": {
            "type": "string",
            "description": "Offer SKU, e.g. \"plan:growth:annual\" or \"pass:season:250\". Omit to have it resolved from the IntentMandate description."
          }
        },
        "required": []
      }
    }
  ],
  "securitySchemes": {},
  "security": [],
  "supportsAuthenticatedExtendedCard": false,
  "additionalInterfaces": [
    {
      "url": "https://www.fanzava.com/api/a2a",
      "transport": "JSONRPC"
    }
  ],
  "supportedInterfaces": [
    {
      "url": "https://www.fanzava.com/api/a2a",
      "protocolBinding": "JSONRPC",
      "protocolVersion": "0.3.0"
    }
  ]
}