[
  {
    "type": "function",
    "function": {
      "name": "ImpressTools.save",
      "description": "Save current presentation",
      "parameters": {
        "type": "object",
        "properties": {},
        "required": []
      }
    }
  },
  {
    "type": "function",
    "function": {
      "name": "ImpressTools.go_to_slide",
      "description": "Navigate to specific slide",
      "parameters": {
        "type": "object",
        "properties": {
          "slide_index": {
            "type": "integer",
            "description": "Slide index (1-based)"
          }
        },
        "required": ["slide_index"]
      }
    }
  },
  {
    "type": "function",
    "function": {
      "name": "ImpressTools.get_slide_count",
      "description": "Get total slide count",
      "parameters": {
        "type": "object",
        "properties": {},
        "required": []
      }
    }
  },
  {
    "type": "function",
    "function": {
      "name": "ImpressTools.duplicate_slide",
      "description": "Duplicate slide and place at end",
      "parameters": {
        "type": "object",
        "properties": {
          "slide_index": {
            "type": "integer",
            "description": "Slide index to duplicate (1-based)"
          }
        },
        "required": ["slide_index"]
      }
    }
  },
  {
    "type": "function",
    "function": {
      "name": "ImpressTools.set_slide_font",
      "description": "Set font for all text in slide",
      "parameters": {
        "type": "object",
        "properties": {
          "slide_index": {
            "type": "integer",
            "description": "Slide index (1-based)"
          },
          "font_name": {
            "type": "string",
            "description": "Font name (e.g., 'Arial', 'Times New Roman')"
          }
        },
        "required": ["slide_index", "font_name"]
      }
    }
  },
  {
    "type": "function",
    "function": {
      "name": "ImpressTools.write_text",
      "description": "Write text to textbox",
      "parameters": {
        "type": "object",
        "properties": {
          "content": {
            "type": "string",
            "description": "Text content"
          },
          "page_index": {
            "type": "integer",
            "description": "Slide index (1-based)"
          },
          "box_index": {
            "type": "integer",
            "description": "Textbox index (0-based)"
          },
          "bold": {
            "type": "boolean",
            "description": "Bold text (default: false)"
          },
          "italic": {
            "type": "boolean",
            "description": "Italic text (default: false)"
          },
          "size": {
            "type": "integer",
            "description": "Font size"
          },
          "append": {
            "type": "boolean",
            "description": "Append to existing text (default: false)"
          }
        },
        "required": ["content", "page_index", "box_index"]
      }
    }
  },
  {
    "type": "function",
    "function": {
      "name": "ImpressTools.set_style",
      "description": "Set text style for textbox",
      "parameters": {
        "type": "object",
        "properties": {
          "slide_index": {
            "type": "integer",
            "description": "Slide index (1-based)"
          },
          "box_index": {
            "type": "integer",
            "description": "Textbox index (0-based)"
          },
          "bold": {
            "type": "boolean",
            "description": "Bold text"
          },
          "italic": {
            "type": "boolean",
            "description": "Italic text"
          },
          "underline": {
            "type": "boolean",
            "description": "Underline text"
          }
        },
        "required": ["slide_index", "box_index"]
      }
    }
  },
  {
    "type": "function",
    "function": {
      "name": "ImpressTools.configure_auto_save",
      "description": "Configure auto-save settings",
      "parameters": {
        "type": "object",
        "properties": {
          "enabled": {
            "type": "boolean",
            "description": "Enable auto-save"
          },
          "interval_minutes": {
            "type": "number",
            "description": "Auto-save interval in minutes (min: 1)"
          }
        },
        "required": ["enabled", "interval_minutes"]
      }
    }
  },
  {
    "type": "function",
    "function": {
      "name": "ImpressTools.set_background_color",
      "description": "Set textbox background color",
      "parameters": {
        "type": "object",
        "properties": {
          "slide_index": {
            "type": "integer",
            "description": "Slide index (1-based)"
          },
          "box_index": {
            "type": "integer",
            "description": "Textbox index (0-based)"
          },
          "color": {
            "type": "string",
            "description": "Color name or hex code"
          }
        },
        "required": ["slide_index", "box_index", "color"]
      }
    }
  },
  {
    "type": "function",
    "function": {
      "name": "ImpressTools.set_text_color",
      "description": "Set text color for textbox",
      "parameters": {
        "type": "object",
        "properties": {
          "slide_index": {
            "type": "integer",
            "description": "Slide index (1-based)"
          },
          "box_index": {
            "type": "integer",
            "description": "Textbox index (0-based)"
          },
          "color": {
            "type": "string",
            "description": "Color name or hex code"
          }
        },
        "required": ["slide_index", "box_index", "color"]
      }
    }
  },
  {
    "type": "function",
    "function": {
      "name": "ImpressTools.delete_content",
      "description": "Delete textbox from slide",
      "parameters": {
        "type": "object",
        "properties": {
          "slide_index": {
            "type": "integer",
            "description": "Slide index (1-based)"
          },
          "box_index": {
            "type": "integer",
            "description": "Textbox index (0-based)"
          }
        },
        "required": ["slide_index", "box_index"]
      }
    }
  },
  {
    "type": "function",
    "function": {
      "name": "ImpressTools.set_slide_orientation",
      "description": "Set slide orientation",
      "parameters": {
        "type": "object",
        "properties": {
          "orientation": {
            "type": "string",
            "description": "Slide orientation",
            "enum": ["portrait", "landscape"]
          }
        },
        "required": ["orientation"]
      }
    }
  },
  {
    "type": "function",
    "function": {
      "name": "ImpressTools.position_box",
      "description": "Position textbox or image on slide",
      "parameters": {
        "type": "object",
        "properties": {
          "slide_index": {
            "type": "integer",
            "description": "Slide index (1-based)"
          },
          "box_index": {
            "type": "integer",
            "description": "Box index (0-based)"
          },
          "position": {
            "type": "string",
            "description": "Position on slide",
            "enum": ["left", "right", "center", "top", "bottom", "top-left", "top-right", "bottom-left", "bottom-right"]
          }
        },
        "required": ["slide_index", "box_index", "position"]
      }
    }
  },
  {
    "type": "function",
    "function": {
      "name": "ImpressTools.insert_file",
      "description": "Insert video or audio file",
      "parameters": {
        "type": "object",
        "properties": {
          "file_path": {
            "type": "string",
            "description": "File path"
          },
          "slide_index": {
            "type": "integer",
            "description": "Slide index (1-based)"
          },
          "position": {
            "type": "object",
            "description": "Position coordinates",
            "properties": {
              "x": {
                "type": "number",
                "description": "X position (% of slide width)"
              },
              "y": {
                "type": "number",
                "description": "Y position (% of slide height)"
              }
            }
          },
          "size": {
            "type": "object",
            "description": "Size dimensions",
            "properties": {
              "width": {
                "type": "number",
                "description": "Width (% of slide width)"
              },
              "height": {
                "type": "number",
                "description": "Height (% of slide height)"
              }
            }
          },
          "autoplay": {
            "type": "boolean",
            "description": "Auto-play media"
          }
        },
        "required": ["file_path"]
      }
    }
  },
  {
    "type": "function",
    "function": {
      "name": "ImpressTools.set_slide_background",
      "description": "Set slide background color or image",
      "parameters": {
        "type": "object",
        "properties": {
          "slide_index": {
            "type": "integer",
            "description": "Slide index (1-based). If not provided, applies to all slides"
          },
          "color": {
            "type": "string",
            "description": "Background color"
          },
          "image_path": {
            "type": "string",
            "description": "Background image path (overrides color)"
          }
        },
        "required": []
      }
    }
  },
  {
    "type": "function",
    "function": {
      "name": "ImpressTools.save_as",
      "description": "Save document to specified location",
      "parameters": {
        "type": "object",
        "properties": {
          "file_path": {
            "type": "string",
            "description": "File save path with filename and extension"
          },
          "overwrite": {
            "type": "boolean",
            "description": "Overwrite existing file (default: false)"
          }
        },
        "required": ["file_path"]
      }
    }
  },
  {
    "type": "function",
    "function": {
      "name": "ImpressTools.insert_image",
      "description": "Insert image to slide",
      "parameters": {
        "type": "object",
        "properties": {
          "slide_index": {
            "type": "integer",
            "description": "Slide index (1-based)"
          },
          "image_path": {
            "type": "string",
            "description": "Image file path"
          },
          "width": {
            "type": "number",
            "description": "Image width in cm"
          },
          "height": {
            "type": "number",
            "description": "Image height in cm"
          },
          "position": {
            "type": "object",
            "description": "Position coordinates",
            "properties": {
              "x": {
                "type": "number",
                "description": "X position (% of slide width)"
              },
              "y": {
                "type": "number",
                "description": "Y position (% of slide height)"
              }
            }
          }
        },
        "required": ["slide_index", "image_path"]
      }
    }
  },
  {
    "type": "function",
    "function": {
      "name": "ImpressTools.configure_display_settings",
      "description": "Configure presentation display settings",
      "parameters": {
        "type": "object",
        "properties": {
          "use_presenter_view": {
            "type": "boolean",
            "description": "Use presenter view"
          },
          "primary_monitor_only": {
            "type": "boolean",
            "description": "Use primary monitor only"
          },
          "monitor_for_presentation": {
            "type": "integer",
            "description": "Monitor number for presentation"
          }
        },
        "required": []
      }
    }
  },
  {
    "type": "function",
    "function": {
      "name": "ImpressTools.set_slide_number_color",
      "description": "Set slide number color",
      "parameters": {
        "type": "object",
        "properties": {
          "color": {
            "type": "string",
            "description": "Color name or hex code"
          }
        },
        "required": ["color"]
      }
    }
  },
  {
    "type": "function",
    "function": {
      "name": "ImpressTools.set_text_strikethrough",
      "description": "Apply strikethrough formatting to text",
      "parameters": {
        "type": "object",
        "properties": {
          "slide_index": {
            "type": "integer",
            "description": "Slide index (1-based)"
          },
          "box_index": {
            "type": "integer",
            "description": "Textbox index (0-based)"
          },
          "line_numbers": {
            "type": "array",
            "items": {
              "type": "integer"
            },
            "description": "Line numbers for strikethrough (1-based)"
          },
          "apply": {
            "type": "boolean",
            "description": "Apply or remove strikethrough"
          }
        },
        "required": ["slide_index", "box_index", "line_numbers", "apply"]
      }
    }
  },
  {
    "type": "function",
    "function": {
      "name": "ImpressTools.set_textbox_alignment",
      "description": "Set text alignment for textbox",
      "parameters": {
        "type": "object",
        "properties": {
          "slide_index": {
            "type": "integer",
            "description": "Slide index (1-based)"
          },
          "box_index": {
            "type": "integer",
            "description": "Textbox index (0-based)"
          },
          "alignment": {
            "type": "string",
            "description": "Text alignment",
            "enum": ["left", "center", "right", "justify"]
          }
        },
        "required": ["slide_index", "box_index", "alignment"]
      }
    }
  },
  {
    "type": "function",
    "function": {
      "name": "ImpressTools.export_to_image",
      "description": "Export presentation or slide to image",
      "parameters": {
        "type": "object",
        "properties": {
          "file_path": {
            "type": "string",
            "description": "Image save path with filename and extension"
          },
          "format": {
            "type": "string",
            "description": "Image format",
            "enum": ["png", "jpeg", "jpg", "gif", "bmp", "tiff"]
          },
          "slide_index": {
            "type": "integer",
            "description": "Specific slide index (1-based). If not provided, exports all slides"
          }
        },
        "required": ["file_path", "format"]
      }
    }
  }
]
