{
  "$comment": "B27 English — Custom functions metadata. NOTE: `id` MUST match the first argument of CustomFunctions.associate in functions.js EXACTLY (case-sensitive).",
  "functions": [
    {
      "id": "ADD",
      "name": "ADD",
      "description": "Adds two numbers and returns the result.",
      "helpUrl": "https://example.com/help/add",
      "parameters": [
        {
          "name": "first",
          "description": "First number",
          "type": "number",
          "dimensionality": "scalar"
        },
        {
          "name": "second",
          "description": "Second number",
          "type": "number",
          "dimensionality": "scalar"
        }
      ],
      "result": {
        "type": "number",
        "dimensionality": "scalar"
      }
    },
    {
      "id": "DISCOUNT",
      "name": "DISCOUNT",
      "description": "Apply a discount rate to a range of prices and return the discounted total.",
      "helpUrl": "https://example.com/help/discount",
      "parameters": [
        {
          "name": "prices",
          "description": "Array of original prices (e.g., a range A1:A10)",
          "type": "number",
          "dimensionality": "matrix"
        },
        {
          "name": "rate",
          "description": "Discount rate (0.1 = 10% off)",
          "type": "number",
          "dimensionality": "scalar"
        }
      ],
      "result": {
        "type": "number",
        "dimensionality": "scalar"
      }
    }
  ]
}