Skip to content
  • Auto
  • Light
  • Dark
DiscordForumGitHubSign up
View as Markdown
Copy Markdown

Open in Claude
Open in ChatGPT

Upsert Tool

tools.upsert(ToolUpsertParams**kwargs) -> Tool
put/v1/tools/

Create or update a tool

ParametersExpand Collapse
source_code: str

The source code of the function.

args_json_schema: Optional[Dict[str, object]]

The args JSON schema of the function.

default_requires_approval: Optional[bool]

Whether or not to require approval before executing this tool.

description: Optional[str]

The description of the tool.

enable_parallel_execution: Optional[bool]

If set to True, then this tool will potentially be executed concurrently with other tools. Default False.

json_schema: Optional[Dict[str, object]]

The JSON schema of the function (auto-generated from source_code if not provided)

npm_requirements: Optional[Iterable[NpmRequirementParam]]

Optional list of npm packages required by this tool.

name: str

Name of the npm package.

minLength1
version: Optional[str]

Optional version of the package, following semantic versioning.

pip_requirements: Optional[Iterable[PipRequirementParam]]

Optional list of pip packages required by this tool.

name: str

Name of the pip package.

minLength1
version: Optional[str]

Optional version of the package, following semantic versioning.

return_char_limit: Optional[int]

The maximum number of characters in the response.

maximum1000000
minimum1
source_type: Optional[str]

The source type of the function.

tags: Optional[SequenceNotStr[str]]

Metadata tags.

ReturnsExpand Collapse
class Tool:

Representation of a tool, which is a function that can be called by the agent.

id: str

The human-friendly ID of the Tool

args_json_schema: Optional[Dict[str, object]]

The args JSON schema of the function.

created_by_id: Optional[str]

The id of the user that made this Tool.

default_requires_approval: Optional[bool]

Default value for whether or not executing this tool requires approval.

description: Optional[str]

The description of the tool.

enable_parallel_execution: Optional[bool]

If set to True, then this tool will potentially be executed concurrently with other tools. Default False.

json_schema: Optional[Dict[str, object]]

The JSON schema of the function.

last_updated_by_id: Optional[str]

The id of the user that made this Tool.

metadata: Optional[Dict[str, object]]

A dictionary of additional metadata for the tool.

name: Optional[str]

The name of the function.

npm_requirements: Optional[List[NpmRequirement]]

Optional list of npm packages required by this tool.

name: str

Name of the npm package.

minLength1
version: Optional[str]

Optional version of the package, following semantic versioning.

pip_requirements: Optional[List[PipRequirement]]

Optional list of pip packages required by this tool.

name: str

Name of the pip package.

minLength1
version: Optional[str]

Optional version of the package, following semantic versioning.

return_char_limit: Optional[int]

The maximum number of characters in the response.

maximum1000000
minimum1
source_code: Optional[str]

The source code of the function.

source_type: Optional[str]

The type of the source code.

tags: Optional[List[str]]

Metadata tags.

tool_type: Optional[ToolType]

The type of the tool.

Accepts one of the following:
"custom"
"letta_core"
"letta_memory_core"
"letta_multi_agent_core"
"letta_sleeptime_core"
"letta_voice_sleeptime_core"
"letta_builtin"
"letta_files_core"
"external_langchain"
"external_composio"
"external_mcp"
Upsert Tool
from letta_client import Letta

client = Letta(
    api_key="My API Key",
)
tool = client.tools.upsert(
    source_code="source_code",
)
print(tool.id)
{
  "id": "tool-123e4567-e89b-12d3-a456-426614174000",
  "args_json_schema": {
    "foo": "bar"
  },
  "created_by_id": "created_by_id",
  "default_requires_approval": true,
  "description": "description",
  "enable_parallel_execution": true,
  "json_schema": {
    "foo": "bar"
  },
  "last_updated_by_id": "last_updated_by_id",
  "metadata_": {
    "foo": "bar"
  },
  "name": "name",
  "npm_requirements": [
    {
      "name": "x",
      "version": "version"
    }
  ],
  "pip_requirements": [
    {
      "name": "x",
      "version": "version"
    }
  ],
  "return_char_limit": 1,
  "source_code": "source_code",
  "source_type": "source_type",
  "tags": [
    "string"
  ],
  "tool_type": "custom"
}
Returns Examples
{
  "id": "tool-123e4567-e89b-12d3-a456-426614174000",
  "args_json_schema": {
    "foo": "bar"
  },
  "created_by_id": "created_by_id",
  "default_requires_approval": true,
  "description": "description",
  "enable_parallel_execution": true,
  "json_schema": {
    "foo": "bar"
  },
  "last_updated_by_id": "last_updated_by_id",
  "metadata_": {
    "foo": "bar"
  },
  "name": "name",
  "npm_requirements": [
    {
      "name": "x",
      "version": "version"
    }
  ],
  "pip_requirements": [
    {
      "name": "x",
      "version": "version"
    }
  ],
  "return_char_limit": 1,
  "source_code": "source_code",
  "source_type": "source_type",
  "tags": [
    "string"
  ],
  "tool_type": "custom"
}