[
{
  "type": "function",
  "function": {
    "name": "skill",
    "description": "Learn a specialized skill for the task needing specific knowledge.",
    "parameters": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of the skill, chosen from the list of available skills."
        }
      },
      "required": ["name"]
    }
  }
},
{
  "type": "function",
  "function": {
    "name": "search_wikipedia",
    "description": "Search the Wikipedia with given query. The `key` field in the response is the Wikipedia page name. Uses network.",
    "parameters": {
      "type": "object",
      "properties": {
        "query": {
          "type": "string",
          "description": "The search terms in the language matching the second parameter."
        },
        "language": {
          "type": "string",
          "description": "Language code matching the search query. For example, `en` for English or `pl` for Polish."
        }
      },
      "required": ["query", "language"]
    }
  }
},
{
  "type": "function",
  "function": {
    "name": "get_wikipedia",
    "description": "Retrieve the Wikipedia article on given subject. Uses network.",
    "parameters": {
      "type": "object",
      "properties": {
        "page": {
          "type": "string",
          "description": "The Wikipedia page name."
        },
        "language": {
          "type": "string",
          "description": "Language code."
        }
      },
      "required": ["page", "language"]
    }
  }
},
{
  "type": "function",
  "function": {
    "name": "get_dictionary",
    "description": "Retrieve description of a word from dictionary. Uses network.",
    "parameters": {
      "type": "object",
      "properties": {
        "word": {
          "type": "string",
          "description": "Word to describe."
        },
        "language": {
          "type": "string",
          "description": "Language code."
        }
      },
      "required": ["word", "language"]
    }
  }
},
{
  "type": "function",
  "function": {
    "name": "search_web",
    "description": "Search the web with given query. Uses network.",
    "parameters": {
      "type": "object",
      "properties": {
        "query": {
          "type": "string",
          "description": "Search query."
        }
      },
      "required": ["query"]
    }
  }
},
{
  "type": "function",
  "function": {
    "name": "get_webpage",
    "description": "Fetch contents of a web page at given URL. Uses network.",
    "parameters": {
      "type": "object",
      "properties": {
        "url": {
          "type": "string",
          "description": "Web page to download."
        }
      },
      "required": ["url"]
    }
  }
},
{
  "type": "function",
  "function": {
    "name": "user_manual",
    "description": "Search the Tracy Profiler user manual with given query.",
    "parameters": {
      "type": "object",
      "properties": {
        "query": {
          "type": "string",
          "description": "Verbose search query in English language."
        }
      },
      "required": ["query"]
    }
  }
},
{
  "type": "function",
  "function": {
    "name": "source_file",
    "description": "Retrieve the user program source file contents around given line.",
    "parameters": {
      "type": "object",
      "properties": {
        "file": {
          "type": "string",
          "description": "Path to the file."
        },
        "line": {
          "type": "integer",
          "description": "Target line number."
        },
        "context": {
          "type": "integer",
          "description": "How many lines to get after the target line. Default: 2."
        },
        "context_back": {
          "type": "integer",
          "description": "How many lines to get before the target line. Default: 2."
        }
      },
      "required": ["file", "line"]
    }
  }
},
{
  "type": "function",
  "function": {
    "name": "source_search",
    "description": "Search user program source files for given keyword.",
    "parameters": {
      "type": "object",
      "properties": {
        "query": {
          "type": "string",
          "description": "ECMAScript regex to search for."
        },
        "case_insensitive": {
          "type": "boolean",
          "description": "Case insensitive search."
        },
        "path": {
          "type": "string",
          "description": "File path ECMAScript regex."
        }
      },
      "required": ["query"]
    }
  }
},
{
  "type": "function",
  "function": {
    "name": "symbol_disasm",
    "description": "Get disassembly and profiling data for a symbol.",
    "parameters": {
      "type": "object",
      "properties": {
        "address": {
          "type": "string",
          "description": "Symbol address, for example `0x12345678`."
        }
      },
      "required": ["address"]
    }
  }
},
{
  "type": "function",
  "function": {
    "name": "symbol_parents",
    "description": "Get the top N entry call stacks for a given symbol address. Shows the call paths through which execution reached this function.",
    "parameters": {
      "type": "object",
      "properties": {
        "address": {
          "type": "string",
          "description": "Symbol address, for example `0x12345678`."
        },
        "limit": {
          "type": "integer",
          "description": "Maximum number of call stacks to return. Default: 10."
        }
      },
      "required": ["address"]
    }
  }
},
{
  "type": "function",
  "function": {
    "name": "sampling_stats",
    "description": "Get sampling statistics for functions, sorted by time spent in each.",
    "parameters": {
      "type": "object",
      "properties": {
        "query": {
          "type": "string",
          "description": "ECMAScript regex to search for."
        },
        "limit": {
          "type": "integer",
          "description": "Maximum number of entries to return. Default: 30."
        }
      },
      "required": []
    }
  }
}
]
