> ## Documentation Index
> Fetch the complete documentation index at: https://mintlify.com/iii-hq/sdk/llms.txt
> Use this file to discover all available pages before exploring further.

# FunctionInfo

> Type definition for function metadata

The `FunctionInfo` type contains metadata about a registered function in the III Engine.

## Type Definition

<Tabs>
  <Tab title="TypeScript">
    ```typescript theme={null}
    type FunctionInfo = {
      function_id: string
      description?: string
      request_format?: RegisterFunctionFormat
      response_format?: RegisterFunctionFormat
      metadata?: Record<string, unknown>
    }
    ```
  </Tab>

  <Tab title="Python">
    ```python theme={null}
    class FunctionInfo(BaseModel):
        function_id: str
        description: str | None = None
        request_format: RegisterFunctionFormat | None = None
        response_format: RegisterFunctionFormat | None = None
        metadata: dict[str, Any] | None = None
    ```
  </Tab>

  <Tab title="Rust">
    ```rust theme={null}
    pub struct FunctionInfo {
        pub function_id: String,
        pub description: Option<String>,
        pub request_format: Option<Value>,
        pub response_format: Option<Value>,
        pub metadata: Option<Value>,
    }
    ```
  </Tab>
</Tabs>

## Fields

<ResponseField name="function_id" type="string" required>
  The unique identifier (path) of the function. Use `::` for namespacing (e.g., `external::my_lambda`).
</ResponseField>

<ResponseField name="description" type="string">
  Human-readable description of what the function does.
</ResponseField>

<ResponseField name="request_format" type="RegisterFunctionFormat">
  Schema definition for the function's input parameters.
</ResponseField>

<ResponseField name="response_format" type="RegisterFunctionFormat">
  Schema definition for the function's return value.
</ResponseField>

<ResponseField name="metadata" type="object">
  Additional custom metadata associated with the function.
</ResponseField>

## Usage

`FunctionInfo` is returned by:

* `listFunctions()` - Get all registered functions
* `onFunctionsAvailable()` callback - Receive function list updates

<Tabs>
  <Tab title="TypeScript">
    ```typescript theme={null}
    const functions = await iii.listFunctions()

    functions.forEach((func: FunctionInfo) => {
      console.log(`Function: ${func.function_id}`)
      console.log(`Description: ${func.description}`)
    })
    ```
  </Tab>

  <Tab title="Python">
    ```python theme={null}
    functions = await iii.list_functions()

    for func in functions:
        print(f"Function: {func.function_id}")
        print(f"Description: {func.description}")
    ```
  </Tab>

  <Tab title="Rust">
    ```rust theme={null}
    let functions = iii.list_functions().await?;

    for func in functions {
        println!("Function: {}", func.function_id);
        if let Some(desc) = &func.description {
            println!("Description: {}", desc);
        }
    }
    ```
  </Tab>
</Tabs>

## Related Types

* [RegisterFunctionFormat](#) - Schema definition for parameters
* [Trigger Configuration](/api/types/trigger-config) - Configure triggers for functions
