Letta · Schema

AgentState

Representation of an agent's state. This is the state of the agent at a given time, and is persisted in the DB backend. The state has all the information needed to recreate a persisted agent.

AIAgentsStateful AgentsMemoryMemGPTContinual LearningMCPMulti-AgentRAGOpen Source

Properties

Name Type Description
created_by_id object The id of the user that made this object.
last_updated_by_id object The id of the user that made this object.
created_at object The timestamp when the object was created.
updated_at object The timestamp when the object was last updated.
id string The id of the agent. Assigned by the database.
name string The name of the agent.
tool_rules object The list of tool rules.
message_ids object The ids of the messages in the agent's in-context memory.
system string The system prompt used by the agent.
agent_type object
llm_config object
embedding_config object Deprecated: Use `embedding` field instead. The embedding configuration used by the agent.
model object The model handle used by the agent (format: provider/model-name).
embedding object The embedding model handle used by the agent (format: provider/model-name).
model_settings object The model settings used by the agent.
compaction_settings object The compaction settings configuration used for compaction.
response_format object The response format used by the agent
description object The description of the agent.
metadata object The metadata of the agent.
memory object
blocks array The memory blocks used by the agent.
tools array The tools used by the agent.
sources array Deprecated: Use `folders` field instead. The sources used by the agent.
tags array The tags associated with the agent.
tool_exec_environment_variables array Deprecated: use `secrets` field instead.
secrets array The environment variables for tool execution specific to this agent.
project_id object The id of the project the agent belongs to.
template_id object The id of the template the agent belongs to.
base_template_id object The base template id of the agent.
deployment_id object The id of the deployment.
entity_id object The id of the entity within the template.
identity_ids array Deprecated: Use `identities` field instead. The ids of the identities associated with this agent.
identities array The identities associated with this agent.
pending_approval object The latest approval request message pending for this agent, if any.
message_buffer_autoclear boolean If set to True, the agent will not remember previous messages (though the agent will still retain state via core memory blocks and archival/recall memory). Not recommended unless you have an advanced
enable_sleeptime object If set to True, memory management will move to a background agent thread.
multi_agent_group object Deprecated: Use `managed_group` field instead. The multi-agent group that this agent manages.
managed_group object The multi-agent group that this agent manages
last_run_completion object The timestamp when the agent last completed a run.
last_run_duration_ms object The duration in milliseconds of the agent's last run.
last_stop_reason object The stop reason from the agent's last run.
timezone object The timezone of the agent (IANA format).
max_files_open object Maximum number of files that can be open at once for this agent. Setting this too high may exceed the context window, which will break the agent.
per_file_view_window_char_limit object The per-file view window character limit for this agent. Setting this too high may exceed the context window, which will break the agent.
hidden object If set to True, the agent will be hidden.
View JSON Schema on GitHub

JSON Schema

letta-agent-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/letta/main/json-schema/letta-agent-schema.json",
  "title": "AgentState",
  "description": "Representation of an agent's state. This is the state of the agent at a given time, and is persisted in the DB backend. The state has all the information needed to recreate a persisted agent.",
  "properties": {
    "created_by_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Created By Id",
      "description": "The id of the user that made this object."
    },
    "last_updated_by_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Last Updated By Id",
      "description": "The id of the user that made this object."
    },
    "created_at": {
      "anyOf": [
        {
          "type": "string",
          "format": "date-time"
        },
        {
          "type": "null"
        }
      ],
      "title": "Created At",
      "description": "The timestamp when the object was created."
    },
    "updated_at": {
      "anyOf": [
        {
          "type": "string",
          "format": "date-time"
        },
        {
          "type": "null"
        }
      ],
      "title": "Updated At",
      "description": "The timestamp when the object was last updated."
    },
    "id": {
      "type": "string",
      "title": "Id",
      "description": "The id of the agent. Assigned by the database."
    },
    "name": {
      "type": "string",
      "title": "Name",
      "description": "The name of the agent."
    },
    "tool_rules": {
      "anyOf": [
        {
          "items": {
            "oneOf": [
              {
                "$ref": "#/$defs/ChildToolRule"
              },
              {
                "$ref": "#/$defs/InitToolRule"
              },
              {
                "$ref": "#/$defs/TerminalToolRule"
              },
              {
                "$ref": "#/$defs/ConditionalToolRule"
              },
              {
                "$ref": "#/$defs/ContinueToolRule"
              },
              {
                "$ref": "#/$defs/RequiredBeforeExitToolRule"
              },
              {
                "$ref": "#/$defs/MaxCountPerStepToolRule"
              },
              {
                "$ref": "#/$defs/ParentToolRule"
              },
              {
                "$ref": "#/$defs/RequiresApprovalToolRule"
              }
            ],
            "discriminator": {
              "propertyName": "type",
              "mapping": {
                "conditional": "#/components/schemas/ConditionalToolRule",
                "constrain_child_tools": "#/components/schemas/ChildToolRule",
                "continue_loop": "#/components/schemas/ContinueToolRule",
                "exit_loop": "#/components/schemas/TerminalToolRule",
                "max_count_per_step": "#/components/schemas/MaxCountPerStepToolRule",
                "parent_last_tool": "#/components/schemas/ParentToolRule",
                "required_before_exit": "#/components/schemas/RequiredBeforeExitToolRule",
                "requires_approval": "#/components/schemas/RequiresApprovalToolRule",
                "run_first": "#/components/schemas/InitToolRule"
              }
            }
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "title": "Tool Rules",
      "description": "The list of tool rules."
    },
    "message_ids": {
      "anyOf": [
        {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "title": "Message Ids",
      "description": "The ids of the messages in the agent's in-context memory."
    },
    "system": {
      "type": "string",
      "title": "System",
      "description": "The system prompt used by the agent."
    },
    "agent_type": {
      "$ref": "#/$defs/AgentType"
    },
    "llm_config": {
      "$ref": "#/$defs/LLMConfig"
    },
    "embedding_config": {
      "anyOf": [
        {
          "$ref": "#/$defs/EmbeddingConfig"
        },
        {
          "type": "null"
        }
      ],
      "description": "Deprecated: Use `embedding` field instead. The embedding configuration used by the agent.",
      "deprecated": true
    },
    "model": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Model",
      "description": "The model handle used by the agent (format: provider/model-name)."
    },
    "embedding": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Embedding",
      "description": "The embedding model handle used by the agent (format: provider/model-name)."
    },
    "model_settings": {
      "anyOf": [
        {
          "oneOf": [
            {
              "$ref": "#/$defs/OpenAIModelSettings"
            },
            {
              "$ref": "#/$defs/SGLangModelSettings"
            },
            {
              "$ref": "#/$defs/AnthropicModelSettings"
            },
            {
              "$ref": "#/$defs/GoogleAIModelSettings"
            },
            {
              "$ref": "#/$defs/GoogleVertexModelSettings"
            },
            {
              "$ref": "#/$defs/AzureModelSettings"
            },
            {
              "$ref": "#/$defs/XAIModelSettings"
            },
            {
              "$ref": "#/$defs/ZAIModelSettings"
            },
            {
              "$ref": "#/$defs/GroqModelSettings"
            },
            {
              "$ref": "#/$defs/DeepseekModelSettings"
            },
            {
              "$ref": "#/$defs/TogetherModelSettings"
            },
            {
              "$ref": "#/$defs/BedrockModelSettings"
            },
            {
              "$ref": "#/$defs/BasetenModelSettings"
            },
            {
              "$ref": "#/$defs/OpenRouterModelSettings"
            },
            {
              "$ref": "#/$defs/ChatGPTOAuthModelSettings"
            }
          ],
          "discriminator": {
            "propertyName": "provider_type",
            "mapping": {
              "anthropic": "#/components/schemas/AnthropicModelSettings",
              "azure": "#/components/schemas/AzureModelSettings",
              "baseten": "#/components/schemas/BasetenModelSettings",
              "bedrock": "#/components/schemas/BedrockModelSettings",
              "chatgpt_oauth": "#/components/schemas/ChatGPTOAuthModelSettings",
              "deepseek": "#/components/schemas/DeepseekModelSettings",
              "google_ai": "#/components/schemas/GoogleAIModelSettings",
              "google_vertex": "#/components/schemas/GoogleVertexModelSettings",
              "groq": "#/components/schemas/GroqModelSettings",
              "openai": "#/components/schemas/OpenAIModelSettings",
              "openrouter": "#/components/schemas/OpenRouterModelSettings",
              "sglang": "#/components/schemas/SGLangModelSettings",
              "together": "#/components/schemas/TogetherModelSettings",
              "xai": "#/components/schemas/XAIModelSettings",
              "zai": "#/components/schemas/ZAIModelSettings"
            }
          }
        },
        {
          "type": "null"
        }
      ],
      "title": "Model Settings",
      "description": "The model settings used by the agent."
    },
    "compaction_settings": {
      "anyOf": [
        {
          "$ref": "#/$defs/CompactionSettings-Output"
        },
        {
          "type": "null"
        }
      ],
      "description": "The compaction settings configuration used for compaction."
    },
    "response_format": {
      "anyOf": [
        {
          "oneOf": [
            {
              "$ref": "#/$defs/TextResponseFormat"
            },
            {
              "$ref": "#/$defs/JsonSchemaResponseFormat"
            },
            {
              "$ref": "#/$defs/JsonObjectResponseFormat"
            }
          ],
          "discriminator": {
            "propertyName": "type",
            "mapping": {
              "json_object": "#/components/schemas/JsonObjectResponseFormat",
              "json_schema": "#/components/schemas/JsonSchemaResponseFormat",
              "text": "#/components/schemas/TextResponseFormat"
            }
          }
        },
        {
          "type": "null"
        }
      ],
      "title": "Response Format",
      "description": "The response format used by the agent"
    },
    "description": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Description",
      "description": "The description of the agent."
    },
    "metadata": {
      "anyOf": [
        {
          "additionalProperties": true,
          "type": "object"
        },
        {
          "type": "null"
        }
      ],
      "title": "Metadata",
      "description": "The metadata of the agent."
    },
    "memory": {
      "$ref": "#/$defs/Memory"
    },
    "blocks": {
      "items": {
        "$ref": "#/$defs/Block"
      },
      "type": "array",
      "title": "Blocks",
      "description": "The memory blocks used by the agent."
    },
    "tools": {
      "items": {
        "$ref": "#/$defs/Tool"
      },
      "type": "array",
      "title": "Tools",
      "description": "The tools used by the agent."
    },
    "sources": {
      "items": {
        "$ref": "#/$defs/Source"
      },
      "type": "array",
      "title": "Sources",
      "description": "Deprecated: Use `folders` field instead. The sources used by the agent.",
      "deprecated": true
    },
    "tags": {
      "items": {
        "type": "string"
      },
      "type": "array",
      "title": "Tags",
      "description": "The tags associated with the agent."
    },
    "tool_exec_environment_variables": {
      "items": {
        "$ref": "#/$defs/AgentEnvironmentVariable"
      },
      "type": "array",
      "title": "Tool Exec Environment Variables",
      "description": "Deprecated: use `secrets` field instead.",
      "deprecated": true
    },
    "secrets": {
      "items": {
        "$ref": "#/$defs/AgentEnvironmentVariable"
      },
      "type": "array",
      "title": "Secrets",
      "description": "The environment variables for tool execution specific to this agent."
    },
    "project_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Project Id",
      "description": "The id of the project the agent belongs to."
    },
    "template_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Template Id",
      "description": "The id of the template the agent belongs to."
    },
    "base_template_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Base Template Id",
      "description": "The base template id of the agent."
    },
    "deployment_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Deployment Id",
      "description": "The id of the deployment."
    },
    "entity_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Entity Id",
      "description": "The id of the entity within the template."
    },
    "identity_ids": {
      "items": {
        "type": "string"
      },
      "type": "array",
      "title": "Identity Ids",
      "description": "Deprecated: Use `identities` field instead. The ids of the identities associated with this agent.",
      "default": [],
      "deprecated": true
    },
    "identities": {
      "items": {
        "$ref": "#/$defs/Identity"
      },
      "type": "array",
      "title": "Identities",
      "description": "The identities associated with this agent.",
      "default": []
    },
    "pending_approval": {
      "anyOf": [
        {
          "$ref": "#/$defs/ApprovalRequestMessage"
        },
        {
          "type": "null"
        }
      ],
      "description": "The latest approval request message pending for this agent, if any."
    },
    "message_buffer_autoclear": {
      "type": "boolean",
      "title": "Message Buffer Autoclear",
      "description": "If set to True, the agent will not remember previous messages (though the agent will still retain state via core memory blocks and archival/recall memory). Not recommended unless you have an advanced use case.",
      "default": false
    },
    "enable_sleeptime": {
      "anyOf": [
        {
          "type": "boolean"
        },
        {
          "type": "null"
        }
      ],
      "title": "Enable Sleeptime",
      "description": "If set to True, memory management will move to a background agent thread."
    },
    "multi_agent_group": {
      "anyOf": [
        {
          "$ref": "#/$defs/Group"
        },
        {
          "type": "null"
        }
      ],
      "description": "Deprecated: Use `managed_group` field instead. The multi-agent group that this agent manages.",
      "deprecated": true
    },
    "managed_group": {
      "anyOf": [
        {
          "$ref": "#/$defs/Group"
        },
        {
          "type": "null"
        }
      ],
      "description": "The multi-agent group that this agent manages"
    },
    "last_run_completion": {
      "anyOf": [
        {
          "type": "string",
          "format": "date-time"
        },
        {
          "type": "null"
        }
      ],
      "title": "Last Run Completion",
      "description": "The timestamp when the agent last completed a run."
    },
    "last_run_duration_ms": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Last Run Duration Ms",
      "description": "The duration in milliseconds of the agent's last run."
    },
    "last_stop_reason": {
      "anyOf": [
        {
          "$ref": "#/$defs/StopReasonType"
        },
        {
          "type": "null"
        }
      ],
      "description": "The stop reason from the agent's last run."
    },
    "timezone": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Timezone",
      "description": "The timezone of the agent (IANA format)."
    },
    "max_files_open": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Max Files Open",
      "description": "Maximum number of files that can be open at once for this agent. Setting this too high may exceed the context window, which will break the agent."
    },
    "per_file_view_window_char_limit": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Per File View Window Char Limit",
      "description": "The per-file view window character limit for this agent. Setting this too high may exceed the context window, which will break the agent."
    },
    "hidden": {
      "anyOf": [
        {
          "type": "boolean"
        },
        {
          "type": "null"
        }
      ],
      "title": "Hidden",
      "description": "If set to True, the agent will be hidden."
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "id",
    "name",
    "system",
    "agent_type",
    "llm_config",
    "memory",
    "blocks",
    "tools",
    "sources",
    "tags"
  ],
  "$defs": {
    "ChildToolRule": {
      "properties": {
        "tool_name": {
          "type": "string",
          "title": "Tool Name",
          "description": "The name of the tool. Must exist in the database for the user's organization."
        },
        "type": {
          "type": "string",
          "const": "constrain_child_tools",
          "title": "Type",
          "default": "constrain_child_tools"
        },
        "prompt_template": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Prompt Template",
          "description": "Optional template string (ignored)."
        },
        "children": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "title": "Children",
          "description": "The children tools that can be invoked."
        },
        "child_arg_nodes": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/ToolCallNode"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "title": "Child Arg Nodes",
          "description": "Optional list of typed child argument overrides. Each node must reference a child in 'children'."
        }
      },
      "additionalProperties": false,
      "type": "object",
      "required": [
        "tool_name",
        "children"
      ],
      "title": "ChildToolRule",
      "description": "A ToolRule represents a tool that can be invoked by the agent."
    },
    "ToolCallNode": {
      "properties": {
        "name": {
          "type": "string",
          "title": "Name",
          "description": "The name of the child tool to invoke next."
        },
        "args": {
          "anyOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "title": "Args",
          "description": "Optional prefilled arguments for this child tool. Keys must match the tool's parameter names and values must satisfy the tool's JSON schema. Supports partial prefill; non-overlapping parameters are left to the model."
        }
      },
      "type": "object",
      "required": [
        "name"
      ],
      "title": "ToolCallNode",
      "description": "Typed child override for prefilled arguments.\n\nWhen used in a ChildToolRule, if this child is selected next, its `args` will be\napplied as prefilled arguments (overriding overlapping LLM-provided values)."
    },
    "InitToolRule": {
      "properties": {
        "tool_name": {
          "type": "string",
          "title": "Tool Name",
          "description": "The name of the tool. Must exist in the database for the user's organization."
        },
        "type": {
          "type": "string",
          "const": "run_first",
          "title": "Type",
          "default": "run_first"
        },
        "prompt_template": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Prompt Template",
          "description": "Optional template string (ignored). Rendering uses fast built-in formatting for performance."
        },
        "args": {
          "anyOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "title": "Args",
          "description": "Optional prefilled arguments for this tool. When present, these values will override any LLM-provided arguments with the same keys during invocation. Keys must match the tool's parameter names and values must satisfy the tool's JSON schema. Supports partial prefill; non-overlapping parameters are left to the model."
        }
      },
      "additionalProperties": false,
      "type": "object",
      "required": [
        "tool_name"
      ],
      "title": "InitToolRule",
      "description": "Represents the initial tool rule configuration."
    },
    "TerminalToolRule": {
      "properties": {
        "tool_name": {
          "type": "string",
          "title": "Tool Name",
          "description": "The name of the tool. Must exist in the database for the user's organization."
        },
        "type": {
          "type": "string",
          "const": "exit_loop",
          "title": "Type",
          "default": "exit_loop"
        },
        "prompt_template": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Prompt Template",
          "description": "Optional template string (ignored)."
        }
      },
      "additionalProperties": false,
      "type": "object",
      "required": [
        "tool_name"
      ],
      "title": "TerminalToolRule",
      "description": "Represents a terminal tool rule configuration where if this tool gets called, it must end the agent loop."
    },
    "ConditionalToolRule": {
      "properties": {
        "tool_name": {
          "type": "string",
          "title": "Tool Name",
          "description": "The name of the tool. Must exist in the database for the user's organization."
        },
        "type": {
          "type": "string",
          "const": "conditional",
          "title": "Type",
          "default": "conditional"
        },
        "prompt_template": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Prompt Template",
          "description": "Optional template string (ignored)."
        },
        "default_child": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Default Child",
          "description": "The default child tool to be called. If None, any tool can be called."
        },
        "child_output_mapping": {
          "additionalProperties": {
            "type": "string"
          },
          "type": "object",
          "title": "Child Output Mapping",
          "description": "The output case to check for mapping"
        },
        "require_output_mapping": {
          "type": "boolean",
          "title": "Require Output Mapping",
          "description": "Whether to throw an error when output doesn't match any case",
          "default": false
        }
      },
      "additionalProperties": false,
      "type": "object",
      "required": [
        "tool_name",
        "child_output_mapping"
      ],
      "title": "ConditionalToolRule",
      "description": "A ToolRule that conditionally maps to different child tools based on the output."
    },
    "ContinueToolRule": {
      "properties": {
        "tool_name": {
          "type": "string",
          "title": "Tool Name",
          "description": "The name of the tool. Must exist in the database for the user's organization."
        },
        "type": {
          "type": "string",
          "const": "continue_loop",
          "title": "Type",
          "default": "continue_loop"
        },
        "prompt_template": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Prompt Template",
          "description": "Optional template string (ignored)."
        }
      },
      "additionalProperties": false,
      "type": "object",
      "required": [
        "tool_name"
      ],
      "title": "ContinueToolRule",
      "description": "Represents a tool rule configuration where if this tool gets called, it must continue the agent loop."
    },
    "RequiredBeforeExitToolRule": {
      "properties": {
        "tool_name": {
          "type": "string",
          "title": "Tool Name",
          "description": "The name of the tool. Must exist in the database for the user's organization."
        },
        "type": {
          "type": "string",
          "const": "required_before_exit",
          "title": "Type",
          "default": "required_before_exit"
        },
        "prompt_template": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Prompt Template",
          "description": "Optional template string (ignored)."
        }
      },
      "additionalProperties": false,
      "type": "object",
      "required": [
        "tool_name"
      ],
      "title": "RequiredBeforeExitToolRule",
      "description": "Represents a tool rule configuration where this tool must be called before the agent loop can exit."
    },
    "MaxCountPerStepToolRule": {
      "properties": {
        "tool_name": {
          "type": "string",
          "title": "Tool Name",
          "description": "The name of the tool. Must exist in the database for the user's organization."
        },
        "type": {
          "type": "string",
          "const": "max_count_per_step",
          "title": "Type",
          "default": "max_count_per_step"
        },
        "prompt_template": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Prompt Template",
          "description": "Optional template string (ignored)."
        },
        "max_count_limit": {
          "type": "integer",
          "title": "Max Count Limit",
          "description": "The max limit for the total number of times this tool can be invoked in a single step."
        }
      },
      "additionalProperties": false,
      "type": "object",
      "required": [
        "tool_name",
        "max_count_limit"
      ],
      "title": "MaxCountPerStepToolRule",
      "description": "Represents a tool rule configuration which constrains the total number of times this tool can be invoked in a single step."
    },
    "ParentToolRule": {
      "properties": {
        "tool_name": {
          "type": "string",
          "title": "Tool Name",
          "description": "The name of the tool. Must exist in the database for the user's organization."
        },
        "type": {
          "type": "string",
          "const": "parent_last_tool",
          "title": "Type",
          "default": "parent_last_tool"
        },
        "prompt_template": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Prompt Template",
          "description": "Optional template string (ignored)."
        },
        "children": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "title": "Children",
          "description": "The children tools that can be invoked."
        }
      },
      "additionalProperties": false,
      "type": "object",
      "required": [
        "tool_name",
        "children"
      ],
      "title": "ParentToolRule",
      "description": "A ToolRule that only allows a child tool to be called if the parent has been called."
    },
    "RequiresApprovalToolRule": {
      "properties": {
        "tool_name": {
          "type": "string",
          "title": "Tool Name",
          "description": "The name of the tool. Must exist in the database for the user's organization."
        },
        "type": {
          "type": "string",
          "const": "requires_approval",
          "title": "Type",
          "default": "requires_approval"
        },
        "prompt_template": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Prompt Template",
          "description": "Optional template string (ignored). Rendering uses fast built-in formatting for performance."
        }
      },
      "additionalProperties": false,
      "type": "object",
      "required": [
        "tool_name"
      ],
      "title": "RequiresApprovalToolRule",
      "description": "Represents a tool rule configuration which requires approval before the tool can be invoked."
    },
    "AgentType": {
      "type": "string",
      "enum": [
        "memgpt_agent",
        "memgpt_v2_agent",
        "letta_v1_agent",
        "react_agent",
        "workflow_agent",
        "split_thread_agent",
        "sleeptime_agent",
        "voice_convo_agent",
        "voice_sleeptime_agent"
      ],
      "title": "AgentType",
      "description": "Enum to represent the type of agent."
    },
    "LLMConfig": {
      "properties": {
        "model": {
          "type": "string",
          "title": "Model",
          "description": "LLM model name. "
        },
        "display_name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Display Name",
          "description": "A human-friendly display name for the model."
        },
        "model_endpoint_type": {
          "type": "string",
          "enum": [
            "openai",
            "anthropic",
            "google_ai",
            "google_vertex",
            "azure",
            "groq",
            "ollama",
            "webui",
            "webui-legacy",
            "lmstudio",
            "lmstudio-legacy",
            "lmstudio-chatcompletions",
            "llamacpp",
            "koboldcpp",
            "vllm",
            "hugging-face",
            "minimax",
            "mistral",
            "together",
            "bedrock",
            "deepseek",
            "xai",
            "zai",
            "zai_coding",
            "baseten",
            "fireworks",
            "openrouter",
            "chatgpt_oauth"
          ],
          "title": "Model Endpoint Type",
          "description": "The endpoint type for the model."
        },
        "model_endpoint": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Model Endpoint",
          "description": "The endpoint for the model."
        },
        "provider_name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Provider Name",
          "description": "The provider name for the model."
        },
        "provider_category": {
          "anyOf": [
            {
              "$ref": "#/$defs/ProviderCategory"
            },
            {
              "type": "null"
            }
          ],
          "description": "The provider category for the model."
        },
        "model_wrapper": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Model Wrapper",
          "description": "The wrapper for the model."
        },
        "context_window": {
          "type": "integer",
          "title": "Context Window",
          "description": "The context window size for the model."
        },
        "put_inner_thoughts_in_kwargs": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "title": "Put Inner Thoughts In Kwargs",
          "description": "Puts 'inner_thoughts' as a kwarg in the function call if this is set to True. This helps with function calling performance and also the generation of inner thoughts.",
          "default": false
        },
        "handle": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Handle",
          "description": "The handle for this config, in the format provider/model-name."
        },
        "temperature": {
          "type": "number",
          "title": "Temperature",
          "description": "The temperature to use when generating text with the model. A higher temperature will result in more random text.",
          "default": 1
        },
        "max_tokens": {
       

# --- truncated at 32 KB (121 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/letta/refs/heads/main/json-schema/letta-agent-schema.json