[
  {
    "type": "function",
    "function": {
      "name": "ImpressTools.save",
      "description": "Save the current presentation to its current location",
      "parameters": {
        "type": "object",
        "properties": {},
        "required": []
      }
    }
  },
  {
    "type": "function",
    "function": {
      "name": "ImpressTools.go_to_slide",
      "description": "Navigates to a specific slide in the presentation based on its index.",
      "parameters": {
        "type": "object",
        "properties": {
          "slide_index": {
            "type": "integer",
            "description": "The index of the slide to navigate to (1-based indexing)"
          }
        },
        "required": ["slide_index"]
      }
    }
  },
  {
    "type": "function",
    "function": {
      "name": "ImpressTools.get_slide_count",
      "description": "Gets the total number of slides in the current presentation.",
      "parameters": {
        "type": "object",
        "properties": {},
        "required": []
      }
    }
  },
  {
    "type": "function",
    "function": {
      "name": "ImpressTools.duplicate_slide",
      "description": "Creates a duplicate of a specific slide and places it at the end of the presentation.",
      "parameters": {
        "type": "object",
        "properties": {
          "slide_index": {
            "type": "integer",
            "description": "The index of the slide to duplicate (1-based indexing)"
          }
        },
        "required": ["slide_index"]
      }
    }
  },
  {
    "type": "function",
    "function": {
      "name": "ImpressTools.set_slide_font",
      "description": "Sets the font style for all text elements in a specific slide.",
      "parameters": {
        "type": "object",
        "properties": {
          "slide_index": {
            "type": "integer",
            "description": "The index of the slide to modify (1-based indexing)"
          },
          "font_name": {
            "type": "string",
            "description": "The name of the font to apply (e.g., 'Arial', 'Times New Roman', 'Calibri')"
          }
        },
        "required": ["slide_index", "font_name"]
      }
    }
  },
  {
    "type": "function",
    "function": {
      "name": "ImpressTools.write_text",
      "description": "writes text to a specific textbox on a slide",
      "parameters": {
        "type": "object",
        "properties": {
          "content": {
            "type": "string",
            "description": "The text content of the note to add"
          },
          "page_index": {
            "type": "integer",
            "description": "The index of the slide to add a note to (1-based indexing)"
          },
          "box_index": {
            "type": "integer",
            "description": "The index of the textbox to modify (0-based indexing)"
          },
          "bold": {
            "type": "boolean",
            "description": "Whether to make the text bold, default is false"
          },
          "italic": {
            "type": "boolean",
            "description": "Whether to make the text italic, default is false"
          },
          "size": {
            "type": "integer",
            "description": "The size of the text. If None, uses the box's current font size."
          },
          "append": {
            "type": "boolean",
            "description": "Whether to append the text, default is False. If you want to observe some formats(like a bullet at the beginning) or keep the original text, you should set up it."
          }
        },
        "required": ["content", "page_index", "box_index"]
      }
    }
  },
  {
    "type": "function",
    "function": {
      "name": "ImpressTools.set_style",
      "description": "Sets the style properties for the specified textbox on a slide.",
      "parameters": {
        "type": "object",
        "properties": {
          "slide_index": {
            "type": "integer",
            "description": "The index of the slide to modify (1-based indexing)"
          },
          "box_index": {
            "type": "integer",
            "description": "The index of the textbox to modify (0-based indexing)"
          },
          "bold": {
            "type": "boolean",
            "description": "Whether to make the title text bold"
          },
          "italic": {
            "type": "boolean",
            "description": "Whether to make the title text italic"
          },
          "underline": {
            "type": "boolean",
            "description": "Whether to underline the title text"
          }
        },
        "required": ["slide_index", "box_index"]
      }
    }
  },
  {
    "type": "function",
    "function": {
      "name": "ImpressTools.configure_auto_save",
      "description": "Enables or disables auto-save functionality for the current document and sets the auto-save interval.",
      "parameters": {
        "type": "object",
        "properties": {
          "enabled": {
            "type": "boolean",
            "description": "Whether to enable (true) or disable (false) auto-save"
          },
          "interval_minutes": {
            "type": "number",
            "description": "The interval in minutes between auto-saves (minimum 1 minute)"
          }
        },
        "required": ["enabled", "interval_minutes"]
      }
    }
  },
  {
    "type": "function",
    "function": {
      "name": "ImpressTools.set_background_color",
      "description": "Sets the background color for the specified textbox on a slide.",
      "parameters": {
        "type": "object",
        "properties": {
          "slide_index": {
            "type": "integer",
            "description": "The index of the slide containing the textbox (1-based indexing)"
          },
          "box_index": {
            "type": "integer",
            "description": "The index of the textbox to modify (0-based indexing)"
          },
          "color": {
            "type": "string",
            "description": "The color to apply to the textbox (e.g., 'red', 'green', 'blue', 'yellow', or hex color code)"
          }
        },
        "required": ["slide_index", "box_index", "color"]
      }
    }
  },
  {
    "type": "function",
    "function": {
      "name": "ImpressTools.set_text_color",
      "description": "Sets the text color for the specified textbox on a slide.",
      "parameters": {
        "type": "object",
        "properties": {
          "slide_index": {
            "type": "integer",
            "description": "The index of the slide to modify (1-based indexing)"
          },
          "box_index": {
            "type": "integer",
            "description": "The index of the textbox to modify (0-based indexing)"
          },
          "color": {
            "type": "string",
            "description": "The color to apply to the title text (e.g., 'red', 'green', 'blue', 'black', or hex color code)"
          }
        },
        "required": ["slide_index", "box_index", "color"]
      }
    }
  },
  {
    "type": "function",
    "function": {
      "name": "ImpressTools.delete_content",
      "description": "Deletes the specified textbox from a slide.",
      "parameters": {
        "type": "object",
        "properties": {
          "slide_index": {
            "type": "integer",
            "description": "The index of the slide to modify (1-based indexing)"
          },
          "box_index": {
            "type": "integer",
            "description": "The index of the textbox to modify (0-based indexing)"
          }
        },
        "required": ["slide_index", "box_index"]
      }
    }
  },
  {
    "type": "function",
    "function": {
      "name": "ImpressTools.set_slide_orientation",
      "description": "Changes the orientation of slides in the presentation between portrait (upright) and landscape (sideways).",
      "parameters": {
        "type": "object",
        "properties": {
          "orientation": {
            "type": "string",
            "description": "The desired orientation for the slides",
            "enum": ["portrait", "landscape"]
          }
        },
        "required": ["orientation"]
      }
    }
  },
  {
    "type": "function",
    "function": {
      "name": "ImpressTools.position_box",
      "description": "Positions a textbox or image on a slide at a specific location or predefined position.",
      "parameters": {
        "type": "object",
        "properties": {
          "slide_index": {
            "type": "integer",
            "description": "The index of the slide containing the box (1-based indexing)"
          },
          "box_index": {
            "type": "integer",
            "description": "The index of the box to position (0-based indexing)"
          },
          "position": {
            "type": "string",
            "description": "Predefined position on the slide (left, right, center, top, bottom)",
            "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": "Inserts a video or audio file into the current or specified slide in the presentation.",
      "parameters": {
        "type": "object",
        "properties": {
          "file_path": {
            "type": "string",
            "description": "The full path to the file to be inserted"
          },
          "slide_index": {
            "type": "integer",
            "description": "The index of the slide to insert the file into (1-based indexing). If not provided, inserts into the current slide."
          },
          "position": {
            "type": "object",
            "description": "The position coordinates for the file",
            "properties": {
              "x": {
                "type": "number",
                "description": "The x-coordinate (horizontal position) as a percentage of slide width"
              },
              "y": {
                "type": "number",
                "description": "The y-coordinate (vertical position) as a percentage of slide height"
              }
            }
          },
          "size": {
            "type": "object",
            "description": "The size dimensions for the file",
            "properties": {
              "width": {
                "type": "number",
                "description": "The width as a percentage of slide width"
              },
              "height": {
                "type": "number",
                "description": "The height as a percentage of slide height"
              }
            }
          },
          "autoplay": {
            "type": "boolean",
            "description": "Whether the video or audio should automatically play when the slide is shown"
          }
        },
        "required": ["file_path"]
      }
    }
  },
  {
    "type": "function",
    "function": {
      "name": "ImpressTools.set_slide_background",
      "description": "Sets the background color or image for a specific slide or all slides.",
      "parameters": {
        "type": "object",
        "properties": {
          "slide_index": {
            "type": "integer",
            "description": "The index of the slide to modify (1-based indexing). If not provided, applies to all slides."
          },
          "color": {
            "type": "string",
            "description": "The background color to apply (e.g., 'red', 'green', 'blue', or hex color code)"
          },
          "image_path": {
            "type": "string",
            "description": "Path to an image file to use as background. If provided, overrides color."
          }
        },
        "required": []
      }
    }
  },
  {
    "type": "function",
    "function": {
      "name": "ImpressTools.save_as",
      "description": "Saves the current document to a specified location with a given filename.",
      "parameters": {
        "type": "object",
        "properties": {
          "file_path": {
            "type": "string",
            "description": "The full path where the file should be saved, including the filename and extension"
          },
          "overwrite": {
            "type": "boolean",
            "description": "Whether to overwrite the file if it already exists (default: false)"
          }
        },
        "required": ["file_path"]
      }
    }
  },
  {
    "type": "function",
    "function": {
      "name": "ImpressTools.insert_image",
      "description": "Inserts an image to a specific slide in the presentation.",
      "parameters": {
        "type": "object",
        "properties": {
          "slide_index": {
            "type": "integer",
            "description": "The index of the slide to add the image to (1-based indexing)"
          },
          "image_path": {
            "type": "string",
            "description": "The full path to the image file to be added"
          },
          "width": {
            "type": "number",
            "description": "The width of the image in centimeters"
          },
          "height": {
            "type": "number",
            "description": "The height of the image in centimeters"
          },
          "position": {
            "type": "object",
            "description": "The position coordinates for the image",
            "properties": {
              "x": {
                "type": "number",
                "description": "The x-coordinate (horizontal position) as a percentage of slide width"
              },
              "y": {
                "type": "number",
                "description": "The y-coordinate (vertical position) as a percentage of slide height"
              }
            }
          }
        },
        "required": ["slide_index", "image_path"]
      }
    }
  },
  {
    "type": "function",
    "function": {
      "name": "ImpressTools.configure_display_settings",
      "description": "Configures the display settings for LibreOffice Impress presentations, including monitor usage and presenter view options.",
      "parameters": {
        "type": "object",
        "properties": {
          "use_presenter_view": {
            "type": "boolean",
            "description": "Whether to use presenter view (showing current and next slide on one screen). Set to false to disable presenter view."
          },
          "primary_monitor_only": {
            "type": "boolean",
            "description": "Whether to use only the primary monitor for the presentation. Set to true to use only one screen."
          },
          "monitor_for_presentation": {
            "type": "integer",
            "description": "Specify which monitor to use for the presentation (1 for primary monitor, 2 for secondary monitor, etc.)"
          }
        },
        "required": []
      }
    }
  },
  {
    "type": "function",
    "function": {
      "name": "ImpressTools.set_slide_number_color",
      "description": "Sets the color of the slide number in the presentation.",
      "parameters": {
        "type": "object",
        "properties": {
          "color": {
            "type": "string",
            "description": "The color to apply to slide numbers (e.g., 'red', 'green', 'blue', 'black', or hex color code)"
          }
        },
        "required": ["color"]
      }
    }
  },
  {
    "type": "function",
    "function": {
      "name": "ImpressTools.set_text_strikethrough",
      "description": "Applies or removes strike-through formatting to specific text content in a slide.",
      "parameters": {
        "type": "object",
        "properties": {
          "slide_index": {
            "type": "integer",
            "description": "The index of the slide containing the text (1-based indexing)"
          },
          "box_index": {
            "type": "integer",
            "description": "The index of the textbox containing the text (0-based indexing)"
          },
          "line_numbers": {
            "type": "array",
            "items": {
              "type": "integer"
            },
            "description": "The line numbers to apply strike-through formatting to (1-based indexing)"
          },
          "apply": {
            "type": "boolean",
            "description": "Whether to apply (true) or remove (false) strike-through formatting"
          }
        },
        "required": ["slide_index", "box_index", "line_numbers", "apply"]
      }
    }
  },
  {
    "type": "function",
    "function": {
      "name": "ImpressTools.set_textbox_alignment",
      "description": "Sets the text alignment for the specified textbox on a slide.",
      "parameters": {
        "type": "object",
        "properties": {
          "slide_index": {
            "type": "integer",
            "description": "The index of the slide to modify (1-based indexing)"
          },
          "box_index": {
            "type": "integer",
            "description": "The index of the textbox to modify (0-based indexing)"
          },
          "alignment": {
            "type": "string",
            "description": "The text alignment to apply to the title",
            "enum": ["left", "center", "right", "justify"]
          }
        },
        "required": ["slide_index", "box_index", "alignment"]
      }
    }
  },
  {
    "type": "function",
    "function": {
      "name": "ImpressTools.export_to_image",
      "description": "Exports the current presentation or a specific slide to an image file format (PNG, JPEG, etc.).",
      "parameters": {
        "type": "object",
        "properties": {
          "file_path": {
            "type": "string",
            "description": "The full path where the image file should be saved, including the filename and extension"
          },
          "format": {
            "type": "string",
            "description": "The image format to export to (e.g., 'png', 'jpeg', 'gif')",
            "enum": ["png", "jpeg", "jpg", "gif", "bmp", "tiff"]
          },
          "slide_index": {
            "type": "integer",
            "description": "The index of the specific slide to export (1-based indexing). If not provided, exports the entire presentation as a series of images."
          }
        },
        "required": ["file_path", "format"]
      }
    }
  }
]
