[
  {
    "name": "buscar_productos",
    "description": "Busca pizzas, empanadas, pastas, postres o bebidas por nombre, categoría o sabor. Devuelve productos disponibles con precios por tamaño.",
    "input_schema": {
      "type": "object",
      "properties": {
        "termino": {
          "type": "string",
          "description": "Lo que el cliente busca, ej: 'muzza', 'fugazza', 'coca', 'empanada carne'"
        },
        "categoria": {
          "type": "string",
          "enum": ["pizza", "empanada", "pasta", "postre", "bebida", "combo", "cualquiera"],
          "description": "Filtro opcional por categoría. Default 'cualquiera'."
        }
      },
      "required": ["termino"]
    }
  },
  {
    "name": "ver_combos_activos",
    "description": "Devuelve los combos activos según la hora actual (algunos son solo de noche o fines de semana).",
    "input_schema": {
      "type": "object",
      "properties": {},
      "required": []
    }
  },
  {
    "name": "ver_extras_producto",
    "description": "Lista los ingredientes/adicionales que se pueden agregar a un producto (ej. doble queso para una pizza).",
    "input_schema": {
      "type": "object",
      "properties": {
        "id_producto": {"type": "integer"}
      },
      "required": ["id_producto"]
    }
  },
  {
    "name": "agregar_al_carrito",
    "description": "Agrega un item al carrito del cliente en curso (el carrito se mantiene en BD hasta que crea o cancela).",
    "input_schema": {
      "type": "object",
      "properties": {
        "id_producto":  {"type": "integer"},
        "id_tamanio":   {"type": "integer"},
        "cantidad":     {"type": "integer", "minimum": 1},
        "extras":       {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "id_ingrediente": {"type": "integer"}
            },
            "required": ["id_ingrediente"]
          },
          "description": "Lista opcional de ingredientes extras (id_ingrediente)"
        },
        "nota_item":    {"type": "string", "description": "Nota específica para este item, ej. 'sin cebolla', 'bien doradita'"}
      },
      "required": ["id_producto", "cantidad"]
    }
  },
  {
    "name": "ver_carrito",
    "description": "Devuelve el carrito actual del cliente: items, subtotal, envío estimado, total.",
    "input_schema": {"type": "object", "properties": {}, "required": []}
  },
  {
    "name": "quitar_del_carrito",
    "description": "Saca un item del carrito por su índice (0-based).",
    "input_schema": {
      "type": "object",
      "properties": {
        "indice_item": {"type": "integer"}
      },
      "required": ["indice_item"]
    }
  },
  {
    "name": "validar_zona_delivery",
    "description": "Valida una dirección, devuelve la zona, costo de envío y tiempo estimado. Si está fuera de zona devuelve error.",
    "input_schema": {
      "type": "object",
      "properties": {
        "direccion": {"type": "string"},
        "detalle":   {"type": "string", "description": "Piso, depto, referencias"}
      },
      "required": ["direccion"]
    }
  },
  {
    "name": "consultar_pedidos",
    "description": "Devuelve los últimos pedidos del cliente con su estado actual.",
    "input_schema": {
      "type": "object",
      "properties": {
        "incluir_finalizados": {"type": "boolean", "description": "Si incluir o no los entregados/cancelados. Default true."}
      },
      "required": []
    }
  },
  {
    "name": "generar_link_pago",
    "description": "Genera un link de pago MercadoPago para el total del carrito actual. Devuelve la URL del link.",
    "input_schema": {
      "type": "object",
      "properties": {
        "monto":      {"type": "number"},
        "descripcion":{"type": "string"}
      },
      "required": ["monto"]
    }
  },
  {
    "name": "crear_pedido",
    "description": "Crea el pedido en el sistema con los items del carrito. Llamar SOLO después de que el cliente confirmó con botón el resumen completo.",
    "input_schema": {
      "type": "object",
      "properties": {
        "id_tipo_entrega": {
          "type": "integer",
          "description": "1=Retiro local, 2=Delivery propio"
        },
        "id_direccion":    {
          "type": "integer",
          "description": "Si delivery, id de la dirección guardada o creada"
        },
        "id_forma_pago":   {
          "type": "integer",
          "description": "1=Efectivo, 2=Transferencia, 3=MercadoPago"
        },
        "cupon_codigo":    {"type": "string", "description": "Opcional"},
        "nota_cliente":    {"type": "string", "description": "Ej. 'tocá el timbre del piso 2'"}
      },
      "required": ["id_tipo_entrega", "id_forma_pago"]
    }
  },
  {
    "name": "mostrar_opciones",
    "description": "Envía un mensaje con botones interactivos vía template aprobado de WhatsApp.",
    "input_schema": {
      "type": "object",
      "properties": {
        "tipo": {
          "type": "string",
          "enum": ["menu_principal", "seleccion_2", "seleccion_3", "tipo_entrega", "forma_pago", "confirmacion", "si_no"]
        },
        "mensaje":  {"type": "string", "description": "Texto que acompaña los botones (va dentro del template)"},
        "opciones": {
          "type":  "array",
          "description": "Para seleccion_2/3: array de productos con titulo y precio para que el sistema arme el body multilínea y los slots de selección.",
          "items": {
            "type": "object",
            "properties": {
              "id_producto":  {"type": "integer"},
              "id_tamanio":   {"type": "integer"},
              "id_combo":     {"type": "integer"},
              "titulo":       {"type": "string"},
              "precio":       {"type": "number"},
              "categoria":    {"type": "string"}
            }
          }
        }
      },
      "required": ["tipo", "mensaje"]
    }
  }
]
