letta-client 0.1.68__py3-none-any.whl → 0.1.70__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of letta-client might be problematic. Click here for more details.

letta_client/__init__.py CHANGED
@@ -5,6 +5,7 @@ from .types import (
5
5
  ActionParametersModel,
6
6
  ActionResponseModel,
7
7
  AgentEnvironmentVariable,
8
+ AgentSchema,
8
9
  AgentState,
9
10
  AgentStateToolRulesItem,
10
11
  AgentType,
@@ -73,6 +74,7 @@ from .types import (
73
74
  ConflictErrorBody,
74
75
  ContextWindowOverview,
75
76
  ContinueToolRule,
77
+ CoreMemoryBlockSchema,
76
78
  CreateBlock,
77
79
  DynamicManager,
78
80
  E2BSandboxConfig,
@@ -116,7 +118,6 @@ from .types import (
116
118
  LlmConfig,
117
119
  LlmConfigModelEndpointType,
118
120
  LocalSandboxConfig,
119
- LocalServerConfig,
120
121
  ManagerType,
121
122
  McpServerType,
122
123
  McpTool,
@@ -126,6 +127,7 @@ from .types import (
126
127
  MessageCreateContent,
127
128
  MessageCreateRole,
128
129
  MessageRole,
130
+ MessageSchema,
129
131
  NotFoundErrorBody,
130
132
  NotFoundErrorBodyMessage,
131
133
  OpenaiTypesChatChatCompletionMessageToolCallParamFunction,
@@ -133,6 +135,8 @@ from .types import (
133
135
  OpenaiTypesChatCompletionCreateParamsFunction,
134
136
  Organization,
135
137
  OrganizationCreate,
138
+ ParameterProperties,
139
+ ParametersSchema,
136
140
  Passage,
137
141
  PipRequirement,
138
142
  Provider,
@@ -153,10 +157,12 @@ from .types import (
153
157
  SandboxType,
154
158
  Source,
155
159
  SseServerConfig,
160
+ StdioServerConfig,
156
161
  Step,
157
162
  SupervisorManager,
158
163
  SystemMessage,
159
164
  SystemMessageContent,
165
+ TagSchema,
160
166
  TerminalToolRule,
161
167
  TextContent,
162
168
  Tool,
@@ -165,10 +171,14 @@ from .types import (
165
171
  ToolCallMessage,
166
172
  ToolCallMessageToolCall,
167
173
  ToolCreate,
174
+ ToolEnvVarSchema,
175
+ ToolJsonSchema,
168
176
  ToolReturn,
169
177
  ToolReturnMessage,
170
178
  ToolReturnMessageStatus,
171
179
  ToolReturnStatus,
180
+ ToolRuleSchema,
181
+ ToolSchema,
172
182
  ToolType,
173
183
  UpdateAssistantMessage,
174
184
  UpdateAssistantMessageContent,
@@ -593,7 +603,12 @@ from .templates import (
593
603
  TemplatesCreateAgentsResponseAgentsItemUpdatedAt,
594
604
  TemplatesCreateAgentsResponseAgentsItemUpdatedAtItem,
595
605
  )
596
- from .tools import ListMcpServersResponseValue
606
+ from .tools import (
607
+ AddMcpServerRequest,
608
+ AddMcpServerResponseItem,
609
+ DeleteMcpServerResponseItem,
610
+ ListMcpServersResponseValue,
611
+ )
597
612
  from .version import __version__
598
613
  from .voice import CreateVoiceChatCompletionsRequest
599
614
 
@@ -601,7 +616,10 @@ __all__ = [
601
616
  "ActionModel",
602
617
  "ActionParametersModel",
603
618
  "ActionResponseModel",
619
+ "AddMcpServerRequest",
620
+ "AddMcpServerResponseItem",
604
621
  "AgentEnvironmentVariable",
622
+ "AgentSchema",
605
623
  "AgentState",
606
624
  "AgentStateToolRulesItem",
607
625
  "AgentType",
@@ -863,9 +881,11 @@ __all__ = [
863
881
  "ConflictErrorBody",
864
882
  "ContextWindowOverview",
865
883
  "ContinueToolRule",
884
+ "CoreMemoryBlockSchema",
866
885
  "CreateAgentRequestToolRulesItem",
867
886
  "CreateBlock",
868
887
  "CreateVoiceChatCompletionsRequest",
888
+ "DeleteMcpServerResponseItem",
869
889
  "DynamicManager",
870
890
  "E2BSandboxConfig",
871
891
  "EmbeddingConfig",
@@ -912,7 +932,6 @@ __all__ = [
912
932
  "LlmConfig",
913
933
  "LlmConfigModelEndpointType",
914
934
  "LocalSandboxConfig",
915
- "LocalServerConfig",
916
935
  "ManagerType",
917
936
  "McpServerType",
918
937
  "McpTool",
@@ -922,6 +941,7 @@ __all__ = [
922
941
  "MessageCreateContent",
923
942
  "MessageCreateRole",
924
943
  "MessageRole",
944
+ "MessageSchema",
925
945
  "NotFoundError",
926
946
  "NotFoundErrorBody",
927
947
  "NotFoundErrorBodyMessage",
@@ -930,6 +950,8 @@ __all__ = [
930
950
  "OpenaiTypesChatCompletionCreateParamsFunction",
931
951
  "Organization",
932
952
  "OrganizationCreate",
953
+ "ParameterProperties",
954
+ "ParametersSchema",
933
955
  "Passage",
934
956
  "PipRequirement",
935
957
  "Provider",
@@ -950,10 +972,12 @@ __all__ = [
950
972
  "SandboxType",
951
973
  "Source",
952
974
  "SseServerConfig",
975
+ "StdioServerConfig",
953
976
  "Step",
954
977
  "SupervisorManager",
955
978
  "SystemMessage",
956
979
  "SystemMessageContent",
980
+ "TagSchema",
957
981
  "TemplatesCreateAgentsResponse",
958
982
  "TemplatesCreateAgentsResponseAgentsItem",
959
983
  "TemplatesCreateAgentsResponseAgentsItemAgentType",
@@ -1148,10 +1172,14 @@ __all__ = [
1148
1172
  "ToolCallMessage",
1149
1173
  "ToolCallMessageToolCall",
1150
1174
  "ToolCreate",
1175
+ "ToolEnvVarSchema",
1176
+ "ToolJsonSchema",
1151
1177
  "ToolReturn",
1152
1178
  "ToolReturnMessage",
1153
1179
  "ToolReturnMessageStatus",
1154
1180
  "ToolReturnStatus",
1181
+ "ToolRuleSchema",
1182
+ "ToolSchema",
1155
1183
  "ToolType",
1156
1184
  "UnprocessableEntityError",
1157
1185
  "UpdateAgentToolRulesItem",
@@ -25,6 +25,7 @@ from ..types.llm_config import LlmConfig
25
25
  from ..types.embedding_config import EmbeddingConfig
26
26
  from ..types.message_create import MessageCreate
27
27
  from ..core.serialization import convert_and_respect_annotation_metadata
28
+ from ..types.agent_schema import AgentSchema
28
29
  from ..core.jsonable_encoder import jsonable_encoder
29
30
  from .. import core
30
31
  from .types.update_agent_tool_rules_item import UpdateAgentToolRulesItem
@@ -422,11 +423,11 @@ class AgentsClient:
422
423
  raise ApiError(status_code=_response.status_code, body=_response.text)
423
424
  raise ApiError(status_code=_response.status_code, body=_response_json)
424
425
 
425
- def download_agent_serialized(
426
+ def export_agent_serialized(
426
427
  self, agent_id: str, *, request_options: typing.Optional[RequestOptions] = None
427
- ) -> typing.Optional[typing.Any]:
428
+ ) -> AgentSchema:
428
429
  """
429
- Download the serialized JSON representation of an agent.
430
+ Export the serialized JSON representation of an agent.
430
431
 
431
432
  Parameters
432
433
  ----------
@@ -437,7 +438,7 @@ class AgentsClient:
437
438
 
438
439
  Returns
439
440
  -------
440
- typing.Optional[typing.Any]
441
+ AgentSchema
441
442
  Successful Response
442
443
 
443
444
  Examples
@@ -447,21 +448,21 @@ class AgentsClient:
447
448
  client = Letta(
448
449
  token="YOUR_TOKEN",
449
450
  )
450
- client.agents.download_agent_serialized(
451
+ client.agents.export_agent_serialized(
451
452
  agent_id="agent_id",
452
453
  )
453
454
  """
454
455
  _response = self._client_wrapper.httpx_client.request(
455
- f"v1/agents/{jsonable_encoder(agent_id)}/download",
456
+ f"v1/agents/{jsonable_encoder(agent_id)}/export",
456
457
  method="GET",
457
458
  request_options=request_options,
458
459
  )
459
460
  try:
460
461
  if 200 <= _response.status_code < 300:
461
462
  return typing.cast(
462
- typing.Optional[typing.Any],
463
+ AgentSchema,
463
464
  construct_type(
464
- type_=typing.Optional[typing.Any], # type: ignore
465
+ type_=AgentSchema, # type: ignore
465
466
  object_=_response.json(),
466
467
  ),
467
468
  )
@@ -480,7 +481,7 @@ class AgentsClient:
480
481
  raise ApiError(status_code=_response.status_code, body=_response.text)
481
482
  raise ApiError(status_code=_response.status_code, body=_response_json)
482
483
 
483
- def upload_agent_serialized(
484
+ def import_agent_serialized(
484
485
  self,
485
486
  *,
486
487
  file: core.File,
@@ -490,7 +491,7 @@ class AgentsClient:
490
491
  request_options: typing.Optional[RequestOptions] = None,
491
492
  ) -> AgentState:
492
493
  """
493
- Upload a serialized agent JSON file and recreate the agent in the system.
494
+ Import a serialized agent file and recreate the agent in the system.
494
495
 
495
496
  Parameters
496
497
  ----------
@@ -521,10 +522,10 @@ class AgentsClient:
521
522
  client = Letta(
522
523
  token="YOUR_TOKEN",
523
524
  )
524
- client.agents.upload_agent_serialized()
525
+ client.agents.import_agent_serialized()
525
526
  """
526
527
  _response = self._client_wrapper.httpx_client.request(
527
- "v1/agents/upload",
528
+ "v1/agents/import",
528
529
  method="POST",
529
530
  params={
530
531
  "append_copy_suffix": append_copy_suffix,
@@ -1514,11 +1515,11 @@ class AsyncAgentsClient:
1514
1515
  raise ApiError(status_code=_response.status_code, body=_response.text)
1515
1516
  raise ApiError(status_code=_response.status_code, body=_response_json)
1516
1517
 
1517
- async def download_agent_serialized(
1518
+ async def export_agent_serialized(
1518
1519
  self, agent_id: str, *, request_options: typing.Optional[RequestOptions] = None
1519
- ) -> typing.Optional[typing.Any]:
1520
+ ) -> AgentSchema:
1520
1521
  """
1521
- Download the serialized JSON representation of an agent.
1522
+ Export the serialized JSON representation of an agent.
1522
1523
 
1523
1524
  Parameters
1524
1525
  ----------
@@ -1529,7 +1530,7 @@ class AsyncAgentsClient:
1529
1530
 
1530
1531
  Returns
1531
1532
  -------
1532
- typing.Optional[typing.Any]
1533
+ AgentSchema
1533
1534
  Successful Response
1534
1535
 
1535
1536
  Examples
@@ -1544,7 +1545,7 @@ class AsyncAgentsClient:
1544
1545
 
1545
1546
 
1546
1547
  async def main() -> None:
1547
- await client.agents.download_agent_serialized(
1548
+ await client.agents.export_agent_serialized(
1548
1549
  agent_id="agent_id",
1549
1550
  )
1550
1551
 
@@ -1552,16 +1553,16 @@ class AsyncAgentsClient:
1552
1553
  asyncio.run(main())
1553
1554
  """
1554
1555
  _response = await self._client_wrapper.httpx_client.request(
1555
- f"v1/agents/{jsonable_encoder(agent_id)}/download",
1556
+ f"v1/agents/{jsonable_encoder(agent_id)}/export",
1556
1557
  method="GET",
1557
1558
  request_options=request_options,
1558
1559
  )
1559
1560
  try:
1560
1561
  if 200 <= _response.status_code < 300:
1561
1562
  return typing.cast(
1562
- typing.Optional[typing.Any],
1563
+ AgentSchema,
1563
1564
  construct_type(
1564
- type_=typing.Optional[typing.Any], # type: ignore
1565
+ type_=AgentSchema, # type: ignore
1565
1566
  object_=_response.json(),
1566
1567
  ),
1567
1568
  )
@@ -1580,7 +1581,7 @@ class AsyncAgentsClient:
1580
1581
  raise ApiError(status_code=_response.status_code, body=_response.text)
1581
1582
  raise ApiError(status_code=_response.status_code, body=_response_json)
1582
1583
 
1583
- async def upload_agent_serialized(
1584
+ async def import_agent_serialized(
1584
1585
  self,
1585
1586
  *,
1586
1587
  file: core.File,
@@ -1590,7 +1591,7 @@ class AsyncAgentsClient:
1590
1591
  request_options: typing.Optional[RequestOptions] = None,
1591
1592
  ) -> AgentState:
1592
1593
  """
1593
- Upload a serialized agent JSON file and recreate the agent in the system.
1594
+ Import a serialized agent file and recreate the agent in the system.
1594
1595
 
1595
1596
  Parameters
1596
1597
  ----------
@@ -1626,13 +1627,13 @@ class AsyncAgentsClient:
1626
1627
 
1627
1628
 
1628
1629
  async def main() -> None:
1629
- await client.agents.upload_agent_serialized()
1630
+ await client.agents.import_agent_serialized()
1630
1631
 
1631
1632
 
1632
1633
  asyncio.run(main())
1633
1634
  """
1634
1635
  _response = await self._client_wrapper.httpx_client.request(
1635
- "v1/agents/upload",
1636
+ "v1/agents/import",
1636
1637
  method="POST",
1637
1638
  params={
1638
1639
  "append_copy_suffix": append_copy_suffix,
@@ -16,7 +16,7 @@ class BaseClientWrapper:
16
16
  headers: typing.Dict[str, str] = {
17
17
  "X-Fern-Language": "Python",
18
18
  "X-Fern-SDK-Name": "letta-client",
19
- "X-Fern-SDK-Version": "0.1.68",
19
+ "X-Fern-SDK-Version": "0.1.70",
20
20
  }
21
21
  if self.token is not None:
22
22
  headers["Authorization"] = f"Bearer {self.token}"
@@ -1,5 +1,15 @@
1
1
  # This file was auto-generated by Fern from our API Definition.
2
2
 
3
- from .types import ListMcpServersResponseValue
3
+ from .types import (
4
+ AddMcpServerRequest,
5
+ AddMcpServerResponseItem,
6
+ DeleteMcpServerResponseItem,
7
+ ListMcpServersResponseValue,
8
+ )
4
9
 
5
- __all__ = ["ListMcpServersResponseValue"]
10
+ __all__ = [
11
+ "AddMcpServerRequest",
12
+ "AddMcpServerResponseItem",
13
+ "DeleteMcpServerResponseItem",
14
+ "ListMcpServersResponseValue",
15
+ ]
@@ -14,7 +14,11 @@ from ..types.tool_return_message import ToolReturnMessage
14
14
  from ..types.app_model import AppModel
15
15
  from ..types.action_model import ActionModel
16
16
  from .types.list_mcp_servers_response_value import ListMcpServersResponseValue
17
+ from .types.add_mcp_server_request import AddMcpServerRequest
18
+ from .types.add_mcp_server_response_item import AddMcpServerResponseItem
19
+ from ..core.serialization import convert_and_respect_annotation_metadata
17
20
  from ..types.mcp_tool import McpTool
21
+ from .types.delete_mcp_server_response_item import DeleteMcpServerResponseItem
18
22
  from ..core.client_wrapper import AsyncClientWrapper
19
23
 
20
24
  # this is used as the default value for optional parameters
@@ -872,6 +876,72 @@ class ToolsClient:
872
876
  raise ApiError(status_code=_response.status_code, body=_response.text)
873
877
  raise ApiError(status_code=_response.status_code, body=_response_json)
874
878
 
879
+ def add_mcp_server(
880
+ self, *, request: AddMcpServerRequest, request_options: typing.Optional[RequestOptions] = None
881
+ ) -> typing.List[AddMcpServerResponseItem]:
882
+ """
883
+ Add a new MCP server to the Letta MCP server config
884
+
885
+ Parameters
886
+ ----------
887
+ request : AddMcpServerRequest
888
+
889
+ request_options : typing.Optional[RequestOptions]
890
+ Request-specific configuration.
891
+
892
+ Returns
893
+ -------
894
+ typing.List[AddMcpServerResponseItem]
895
+ Successful Response
896
+
897
+ Examples
898
+ --------
899
+ from letta_client import Letta, StdioServerConfig
900
+
901
+ client = Letta(
902
+ token="YOUR_TOKEN",
903
+ )
904
+ client.tools.add_mcp_server(
905
+ request=StdioServerConfig(
906
+ server_name="server_name",
907
+ command="command",
908
+ args=["args"],
909
+ ),
910
+ )
911
+ """
912
+ _response = self._client_wrapper.httpx_client.request(
913
+ "v1/tools/mcp/servers",
914
+ method="PUT",
915
+ json=convert_and_respect_annotation_metadata(
916
+ object_=request, annotation=AddMcpServerRequest, direction="write"
917
+ ),
918
+ request_options=request_options,
919
+ omit=OMIT,
920
+ )
921
+ try:
922
+ if 200 <= _response.status_code < 300:
923
+ return typing.cast(
924
+ typing.List[AddMcpServerResponseItem],
925
+ construct_type(
926
+ type_=typing.List[AddMcpServerResponseItem], # type: ignore
927
+ object_=_response.json(),
928
+ ),
929
+ )
930
+ if _response.status_code == 422:
931
+ raise UnprocessableEntityError(
932
+ typing.cast(
933
+ HttpValidationError,
934
+ construct_type(
935
+ type_=HttpValidationError, # type: ignore
936
+ object_=_response.json(),
937
+ ),
938
+ )
939
+ )
940
+ _response_json = _response.json()
941
+ except JSONDecodeError:
942
+ raise ApiError(status_code=_response.status_code, body=_response.text)
943
+ raise ApiError(status_code=_response.status_code, body=_response_json)
944
+
875
945
  def list_mcp_tools_by_server(
876
946
  self, mcp_server_name: str, *, request_options: typing.Optional[RequestOptions] = None
877
947
  ) -> typing.List[McpTool]:
@@ -934,7 +1004,7 @@ class ToolsClient:
934
1004
  self, mcp_server_name: str, mcp_tool_name: str, *, request_options: typing.Optional[RequestOptions] = None
935
1005
  ) -> Tool:
936
1006
  """
937
- Add a new MCP tool by server + tool name
1007
+ Register a new MCP tool as a Letta server by MCP server + tool name
938
1008
 
939
1009
  Parameters
940
1010
  ----------
@@ -991,6 +1061,64 @@ class ToolsClient:
991
1061
  raise ApiError(status_code=_response.status_code, body=_response.text)
992
1062
  raise ApiError(status_code=_response.status_code, body=_response_json)
993
1063
 
1064
+ def delete_mcp_server(
1065
+ self, mcp_server_name: str, *, request_options: typing.Optional[RequestOptions] = None
1066
+ ) -> typing.List[DeleteMcpServerResponseItem]:
1067
+ """
1068
+ Add a new MCP server to the Letta MCP server config
1069
+
1070
+ Parameters
1071
+ ----------
1072
+ mcp_server_name : str
1073
+
1074
+ request_options : typing.Optional[RequestOptions]
1075
+ Request-specific configuration.
1076
+
1077
+ Returns
1078
+ -------
1079
+ typing.List[DeleteMcpServerResponseItem]
1080
+ Successful Response
1081
+
1082
+ Examples
1083
+ --------
1084
+ from letta_client import Letta
1085
+
1086
+ client = Letta(
1087
+ token="YOUR_TOKEN",
1088
+ )
1089
+ client.tools.delete_mcp_server(
1090
+ mcp_server_name="mcp_server_name",
1091
+ )
1092
+ """
1093
+ _response = self._client_wrapper.httpx_client.request(
1094
+ f"v1/tools/mcp/servers/{jsonable_encoder(mcp_server_name)}",
1095
+ method="DELETE",
1096
+ request_options=request_options,
1097
+ )
1098
+ try:
1099
+ if 200 <= _response.status_code < 300:
1100
+ return typing.cast(
1101
+ typing.List[DeleteMcpServerResponseItem],
1102
+ construct_type(
1103
+ type_=typing.List[DeleteMcpServerResponseItem], # type: ignore
1104
+ object_=_response.json(),
1105
+ ),
1106
+ )
1107
+ if _response.status_code == 422:
1108
+ raise UnprocessableEntityError(
1109
+ typing.cast(
1110
+ HttpValidationError,
1111
+ construct_type(
1112
+ type_=HttpValidationError, # type: ignore
1113
+ object_=_response.json(),
1114
+ ),
1115
+ )
1116
+ )
1117
+ _response_json = _response.json()
1118
+ except JSONDecodeError:
1119
+ raise ApiError(status_code=_response.status_code, body=_response.text)
1120
+ raise ApiError(status_code=_response.status_code, body=_response_json)
1121
+
994
1122
 
995
1123
  class AsyncToolsClient:
996
1124
  def __init__(self, *, client_wrapper: AsyncClientWrapper):
@@ -1941,6 +2069,80 @@ class AsyncToolsClient:
1941
2069
  raise ApiError(status_code=_response.status_code, body=_response.text)
1942
2070
  raise ApiError(status_code=_response.status_code, body=_response_json)
1943
2071
 
2072
+ async def add_mcp_server(
2073
+ self, *, request: AddMcpServerRequest, request_options: typing.Optional[RequestOptions] = None
2074
+ ) -> typing.List[AddMcpServerResponseItem]:
2075
+ """
2076
+ Add a new MCP server to the Letta MCP server config
2077
+
2078
+ Parameters
2079
+ ----------
2080
+ request : AddMcpServerRequest
2081
+
2082
+ request_options : typing.Optional[RequestOptions]
2083
+ Request-specific configuration.
2084
+
2085
+ Returns
2086
+ -------
2087
+ typing.List[AddMcpServerResponseItem]
2088
+ Successful Response
2089
+
2090
+ Examples
2091
+ --------
2092
+ import asyncio
2093
+
2094
+ from letta_client import AsyncLetta, StdioServerConfig
2095
+
2096
+ client = AsyncLetta(
2097
+ token="YOUR_TOKEN",
2098
+ )
2099
+
2100
+
2101
+ async def main() -> None:
2102
+ await client.tools.add_mcp_server(
2103
+ request=StdioServerConfig(
2104
+ server_name="server_name",
2105
+ command="command",
2106
+ args=["args"],
2107
+ ),
2108
+ )
2109
+
2110
+
2111
+ asyncio.run(main())
2112
+ """
2113
+ _response = await self._client_wrapper.httpx_client.request(
2114
+ "v1/tools/mcp/servers",
2115
+ method="PUT",
2116
+ json=convert_and_respect_annotation_metadata(
2117
+ object_=request, annotation=AddMcpServerRequest, direction="write"
2118
+ ),
2119
+ request_options=request_options,
2120
+ omit=OMIT,
2121
+ )
2122
+ try:
2123
+ if 200 <= _response.status_code < 300:
2124
+ return typing.cast(
2125
+ typing.List[AddMcpServerResponseItem],
2126
+ construct_type(
2127
+ type_=typing.List[AddMcpServerResponseItem], # type: ignore
2128
+ object_=_response.json(),
2129
+ ),
2130
+ )
2131
+ if _response.status_code == 422:
2132
+ raise UnprocessableEntityError(
2133
+ typing.cast(
2134
+ HttpValidationError,
2135
+ construct_type(
2136
+ type_=HttpValidationError, # type: ignore
2137
+ object_=_response.json(),
2138
+ ),
2139
+ )
2140
+ )
2141
+ _response_json = _response.json()
2142
+ except JSONDecodeError:
2143
+ raise ApiError(status_code=_response.status_code, body=_response.text)
2144
+ raise ApiError(status_code=_response.status_code, body=_response_json)
2145
+
1944
2146
  async def list_mcp_tools_by_server(
1945
2147
  self, mcp_server_name: str, *, request_options: typing.Optional[RequestOptions] = None
1946
2148
  ) -> typing.List[McpTool]:
@@ -2011,7 +2213,7 @@ class AsyncToolsClient:
2011
2213
  self, mcp_server_name: str, mcp_tool_name: str, *, request_options: typing.Optional[RequestOptions] = None
2012
2214
  ) -> Tool:
2013
2215
  """
2014
- Add a new MCP tool by server + tool name
2216
+ Register a new MCP tool as a Letta server by MCP server + tool name
2015
2217
 
2016
2218
  Parameters
2017
2219
  ----------
@@ -2075,3 +2277,69 @@ class AsyncToolsClient:
2075
2277
  except JSONDecodeError:
2076
2278
  raise ApiError(status_code=_response.status_code, body=_response.text)
2077
2279
  raise ApiError(status_code=_response.status_code, body=_response_json)
2280
+
2281
+ async def delete_mcp_server(
2282
+ self, mcp_server_name: str, *, request_options: typing.Optional[RequestOptions] = None
2283
+ ) -> typing.List[DeleteMcpServerResponseItem]:
2284
+ """
2285
+ Add a new MCP server to the Letta MCP server config
2286
+
2287
+ Parameters
2288
+ ----------
2289
+ mcp_server_name : str
2290
+
2291
+ request_options : typing.Optional[RequestOptions]
2292
+ Request-specific configuration.
2293
+
2294
+ Returns
2295
+ -------
2296
+ typing.List[DeleteMcpServerResponseItem]
2297
+ Successful Response
2298
+
2299
+ Examples
2300
+ --------
2301
+ import asyncio
2302
+
2303
+ from letta_client import AsyncLetta
2304
+
2305
+ client = AsyncLetta(
2306
+ token="YOUR_TOKEN",
2307
+ )
2308
+
2309
+
2310
+ async def main() -> None:
2311
+ await client.tools.delete_mcp_server(
2312
+ mcp_server_name="mcp_server_name",
2313
+ )
2314
+
2315
+
2316
+ asyncio.run(main())
2317
+ """
2318
+ _response = await self._client_wrapper.httpx_client.request(
2319
+ f"v1/tools/mcp/servers/{jsonable_encoder(mcp_server_name)}",
2320
+ method="DELETE",
2321
+ request_options=request_options,
2322
+ )
2323
+ try:
2324
+ if 200 <= _response.status_code < 300:
2325
+ return typing.cast(
2326
+ typing.List[DeleteMcpServerResponseItem],
2327
+ construct_type(
2328
+ type_=typing.List[DeleteMcpServerResponseItem], # type: ignore
2329
+ object_=_response.json(),
2330
+ ),
2331
+ )
2332
+ if _response.status_code == 422:
2333
+ raise UnprocessableEntityError(
2334
+ typing.cast(
2335
+ HttpValidationError,
2336
+ construct_type(
2337
+ type_=HttpValidationError, # type: ignore
2338
+ object_=_response.json(),
2339
+ ),
2340
+ )
2341
+ )
2342
+ _response_json = _response.json()
2343
+ except JSONDecodeError:
2344
+ raise ApiError(status_code=_response.status_code, body=_response.text)
2345
+ raise ApiError(status_code=_response.status_code, body=_response_json)
@@ -1,5 +1,13 @@
1
1
  # This file was auto-generated by Fern from our API Definition.
2
2
 
3
+ from .add_mcp_server_request import AddMcpServerRequest
4
+ from .add_mcp_server_response_item import AddMcpServerResponseItem
5
+ from .delete_mcp_server_response_item import DeleteMcpServerResponseItem
3
6
  from .list_mcp_servers_response_value import ListMcpServersResponseValue
4
7
 
5
- __all__ = ["ListMcpServersResponseValue"]
8
+ __all__ = [
9
+ "AddMcpServerRequest",
10
+ "AddMcpServerResponseItem",
11
+ "DeleteMcpServerResponseItem",
12
+ "ListMcpServersResponseValue",
13
+ ]
@@ -0,0 +1,7 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+ from ...types.stdio_server_config import StdioServerConfig
5
+ from ...types.sse_server_config import SseServerConfig
6
+
7
+ AddMcpServerRequest = typing.Union[StdioServerConfig, SseServerConfig]
@@ -0,0 +1,7 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+ from ...types.stdio_server_config import StdioServerConfig
5
+ from ...types.sse_server_config import SseServerConfig
6
+
7
+ AddMcpServerResponseItem = typing.Union[StdioServerConfig, SseServerConfig]
@@ -0,0 +1,7 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+ from ...types.stdio_server_config import StdioServerConfig
5
+ from ...types.sse_server_config import SseServerConfig
6
+
7
+ DeleteMcpServerResponseItem = typing.Union[StdioServerConfig, SseServerConfig]
@@ -2,6 +2,6 @@
2
2
 
3
3
  import typing
4
4
  from ...types.sse_server_config import SseServerConfig
5
- from ...types.local_server_config import LocalServerConfig
5
+ from ...types.stdio_server_config import StdioServerConfig
6
6
 
7
- ListMcpServersResponseValue = typing.Union[SseServerConfig, LocalServerConfig]
7
+ ListMcpServersResponseValue = typing.Union[SseServerConfig, StdioServerConfig]
@@ -4,6 +4,7 @@ from .action_model import ActionModel
4
4
  from .action_parameters_model import ActionParametersModel
5
5
  from .action_response_model import ActionResponseModel
6
6
  from .agent_environment_variable import AgentEnvironmentVariable
7
+ from .agent_schema import AgentSchema
7
8
  from .agent_state import AgentState
8
9
  from .agent_state_tool_rules_item import AgentStateToolRulesItem
9
10
  from .agent_type import AgentType
@@ -72,6 +73,7 @@ from .conditional_tool_rule import ConditionalToolRule
72
73
  from .conflict_error_body import ConflictErrorBody
73
74
  from .context_window_overview import ContextWindowOverview
74
75
  from .continue_tool_rule import ContinueToolRule
76
+ from .core_memory_block_schema import CoreMemoryBlockSchema
75
77
  from .create_block import CreateBlock
76
78
  from .dynamic_manager import DynamicManager
77
79
  from .e_2_b_sandbox_config import E2BSandboxConfig
@@ -115,7 +117,6 @@ from .letta_usage_statistics import LettaUsageStatistics
115
117
  from .llm_config import LlmConfig
116
118
  from .llm_config_model_endpoint_type import LlmConfigModelEndpointType
117
119
  from .local_sandbox_config import LocalSandboxConfig
118
- from .local_server_config import LocalServerConfig
119
120
  from .manager_type import ManagerType
120
121
  from .mcp_server_type import McpServerType
121
122
  from .mcp_tool import McpTool
@@ -125,6 +126,7 @@ from .message_create import MessageCreate
125
126
  from .message_create_content import MessageCreateContent
126
127
  from .message_create_role import MessageCreateRole
127
128
  from .message_role import MessageRole
129
+ from .message_schema import MessageSchema
128
130
  from .not_found_error_body import NotFoundErrorBody
129
131
  from .not_found_error_body_message import NotFoundErrorBodyMessage
130
132
  from .openai_types_chat_chat_completion_message_tool_call_param_function import (
@@ -136,6 +138,8 @@ from .openai_types_chat_chat_completion_named_tool_choice_param_function import
136
138
  from .openai_types_chat_completion_create_params_function import OpenaiTypesChatCompletionCreateParamsFunction
137
139
  from .organization import Organization
138
140
  from .organization_create import OrganizationCreate
141
+ from .parameter_properties import ParameterProperties
142
+ from .parameters_schema import ParametersSchema
139
143
  from .passage import Passage
140
144
  from .pip_requirement import PipRequirement
141
145
  from .provider import Provider
@@ -156,10 +160,12 @@ from .sandbox_environment_variable_update import SandboxEnvironmentVariableUpdat
156
160
  from .sandbox_type import SandboxType
157
161
  from .source import Source
158
162
  from .sse_server_config import SseServerConfig
163
+ from .stdio_server_config import StdioServerConfig
159
164
  from .step import Step
160
165
  from .supervisor_manager import SupervisorManager
161
166
  from .system_message import SystemMessage
162
167
  from .system_message_content import SystemMessageContent
168
+ from .tag_schema import TagSchema
163
169
  from .terminal_tool_rule import TerminalToolRule
164
170
  from .text_content import TextContent
165
171
  from .tool import Tool
@@ -168,10 +174,14 @@ from .tool_call_delta import ToolCallDelta
168
174
  from .tool_call_message import ToolCallMessage
169
175
  from .tool_call_message_tool_call import ToolCallMessageToolCall
170
176
  from .tool_create import ToolCreate
177
+ from .tool_env_var_schema import ToolEnvVarSchema
178
+ from .tool_json_schema import ToolJsonSchema
171
179
  from .tool_return import ToolReturn
172
180
  from .tool_return_message import ToolReturnMessage
173
181
  from .tool_return_message_status import ToolReturnMessageStatus
174
182
  from .tool_return_status import ToolReturnStatus
183
+ from .tool_rule_schema import ToolRuleSchema
184
+ from .tool_schema import ToolSchema
175
185
  from .tool_type import ToolType
176
186
  from .update_assistant_message import UpdateAssistantMessage
177
187
  from .update_assistant_message_content import UpdateAssistantMessageContent
@@ -198,6 +208,7 @@ __all__ = [
198
208
  "ActionParametersModel",
199
209
  "ActionResponseModel",
200
210
  "AgentEnvironmentVariable",
211
+ "AgentSchema",
201
212
  "AgentState",
202
213
  "AgentStateToolRulesItem",
203
214
  "AgentType",
@@ -266,6 +277,7 @@ __all__ = [
266
277
  "ConflictErrorBody",
267
278
  "ContextWindowOverview",
268
279
  "ContinueToolRule",
280
+ "CoreMemoryBlockSchema",
269
281
  "CreateBlock",
270
282
  "DynamicManager",
271
283
  "E2BSandboxConfig",
@@ -309,7 +321,6 @@ __all__ = [
309
321
  "LlmConfig",
310
322
  "LlmConfigModelEndpointType",
311
323
  "LocalSandboxConfig",
312
- "LocalServerConfig",
313
324
  "ManagerType",
314
325
  "McpServerType",
315
326
  "McpTool",
@@ -319,6 +330,7 @@ __all__ = [
319
330
  "MessageCreateContent",
320
331
  "MessageCreateRole",
321
332
  "MessageRole",
333
+ "MessageSchema",
322
334
  "NotFoundErrorBody",
323
335
  "NotFoundErrorBodyMessage",
324
336
  "OpenaiTypesChatChatCompletionMessageToolCallParamFunction",
@@ -326,6 +338,8 @@ __all__ = [
326
338
  "OpenaiTypesChatCompletionCreateParamsFunction",
327
339
  "Organization",
328
340
  "OrganizationCreate",
341
+ "ParameterProperties",
342
+ "ParametersSchema",
329
343
  "Passage",
330
344
  "PipRequirement",
331
345
  "Provider",
@@ -346,10 +360,12 @@ __all__ = [
346
360
  "SandboxType",
347
361
  "Source",
348
362
  "SseServerConfig",
363
+ "StdioServerConfig",
349
364
  "Step",
350
365
  "SupervisorManager",
351
366
  "SystemMessage",
352
367
  "SystemMessageContent",
368
+ "TagSchema",
353
369
  "TerminalToolRule",
354
370
  "TextContent",
355
371
  "Tool",
@@ -358,10 +374,14 @@ __all__ = [
358
374
  "ToolCallMessage",
359
375
  "ToolCallMessageToolCall",
360
376
  "ToolCreate",
377
+ "ToolEnvVarSchema",
378
+ "ToolJsonSchema",
361
379
  "ToolReturn",
362
380
  "ToolReturnMessage",
363
381
  "ToolReturnMessageStatus",
364
382
  "ToolReturnStatus",
383
+ "ToolRuleSchema",
384
+ "ToolSchema",
365
385
  "ToolType",
366
386
  "UpdateAssistantMessage",
367
387
  "UpdateAssistantMessageContent",
@@ -0,0 +1,51 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ from ..core.unchecked_base_model import UncheckedBaseModel
4
+ import typing
5
+ from .core_memory_block_schema import CoreMemoryBlockSchema
6
+ from .embedding_config import EmbeddingConfig
7
+ from .llm_config import LlmConfig
8
+ from .message_schema import MessageSchema
9
+ import typing_extensions
10
+ from ..core.serialization import FieldMetadata
11
+ from .tag_schema import TagSchema
12
+ from .tool_env_var_schema import ToolEnvVarSchema
13
+ from .tool_rule_schema import ToolRuleSchema
14
+ from .tool_schema import ToolSchema
15
+ from ..core.pydantic_utilities import IS_PYDANTIC_V2
16
+ import pydantic
17
+
18
+
19
+ class AgentSchema(UncheckedBaseModel):
20
+ agent_type: str
21
+ core_memory: typing.List[CoreMemoryBlockSchema]
22
+ created_at: str
23
+ description: str
24
+ embedding_config: EmbeddingConfig
25
+ groups: typing.List[typing.Optional[typing.Any]]
26
+ identities: typing.List[typing.Optional[typing.Any]]
27
+ is_deleted: bool
28
+ llm_config: LlmConfig
29
+ message_buffer_autoclear: bool
30
+ messages: typing.List[MessageSchema]
31
+ metadata: typing_extensions.Annotated[
32
+ typing.Dict[str, typing.Optional[typing.Any]], FieldMetadata(alias="metadata_")
33
+ ]
34
+ multi_agent_group: typing.Optional[typing.Any] = None
35
+ name: str
36
+ system: str
37
+ tags: typing.List[TagSchema]
38
+ tool_exec_environment_variables: typing.List[ToolEnvVarSchema]
39
+ tool_rules: typing.List[ToolRuleSchema]
40
+ tools: typing.List[ToolSchema]
41
+ updated_at: str
42
+ version: str
43
+
44
+ if IS_PYDANTIC_V2:
45
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
46
+ else:
47
+
48
+ class Config:
49
+ frozen = True
50
+ smart_union = True
51
+ extra = pydantic.Extra.allow
@@ -0,0 +1,33 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ from ..core.unchecked_base_model import UncheckedBaseModel
4
+ import typing
5
+ import typing_extensions
6
+ from ..core.serialization import FieldMetadata
7
+ from ..core.pydantic_utilities import IS_PYDANTIC_V2
8
+ import pydantic
9
+
10
+
11
+ class CoreMemoryBlockSchema(UncheckedBaseModel):
12
+ created_at: str
13
+ description: typing.Optional[str] = None
14
+ identities: typing.List[typing.Optional[typing.Any]]
15
+ is_deleted: bool
16
+ is_template: bool
17
+ label: str
18
+ limit: int
19
+ metadata: typing_extensions.Annotated[
20
+ typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]], FieldMetadata(alias="metadata_")
21
+ ] = None
22
+ template_name: typing.Optional[str] = None
23
+ updated_at: str
24
+ value: str
25
+
26
+ if IS_PYDANTIC_V2:
27
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
28
+ else:
29
+
30
+ class Config:
31
+ frozen = True
32
+ smart_union = True
33
+ extra = pydantic.Extra.allow
@@ -2,4 +2,4 @@
2
2
 
3
3
  import typing
4
4
 
5
- McpServerType = typing.Union[typing.Literal["sse", "local"], typing.Any]
5
+ McpServerType = typing.Union[typing.Literal["sse", "stdio"], typing.Any]
@@ -0,0 +1,29 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ from ..core.unchecked_base_model import UncheckedBaseModel
4
+ import typing
5
+ from ..core.pydantic_utilities import IS_PYDANTIC_V2
6
+ import pydantic
7
+
8
+
9
+ class MessageSchema(UncheckedBaseModel):
10
+ created_at: str
11
+ group_id: typing.Optional[str] = None
12
+ in_context: bool
13
+ model: typing.Optional[str] = None
14
+ name: typing.Optional[str] = None
15
+ role: str
16
+ text: str
17
+ tool_call_id: typing.Optional[str] = None
18
+ tool_calls: typing.List[typing.Optional[typing.Any]]
19
+ tool_returns: typing.List[typing.Optional[typing.Any]]
20
+ updated_at: str
21
+
22
+ if IS_PYDANTIC_V2:
23
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
24
+ else:
25
+
26
+ class Config:
27
+ frozen = True
28
+ smart_union = True
29
+ extra = pydantic.Extra.allow
@@ -0,0 +1,20 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ from ..core.unchecked_base_model import UncheckedBaseModel
4
+ import typing
5
+ from ..core.pydantic_utilities import IS_PYDANTIC_V2
6
+ import pydantic
7
+
8
+
9
+ class ParameterProperties(UncheckedBaseModel):
10
+ type: str
11
+ description: typing.Optional[str] = None
12
+
13
+ if IS_PYDANTIC_V2:
14
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
15
+ else:
16
+
17
+ class Config:
18
+ frozen = True
19
+ smart_union = True
20
+ extra = pydantic.Extra.allow
@@ -0,0 +1,22 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ from ..core.unchecked_base_model import UncheckedBaseModel
4
+ import typing
5
+ from .parameter_properties import ParameterProperties
6
+ from ..core.pydantic_utilities import IS_PYDANTIC_V2
7
+ import pydantic
8
+
9
+
10
+ class ParametersSchema(UncheckedBaseModel):
11
+ type: typing.Optional[str] = None
12
+ properties: typing.Dict[str, ParameterProperties]
13
+ required: typing.Optional[typing.List[str]] = None
14
+
15
+ if IS_PYDANTIC_V2:
16
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
17
+ else:
18
+
19
+ class Config:
20
+ frozen = True
21
+ smart_union = True
22
+ extra = pydantic.Extra.allow
@@ -7,7 +7,7 @@ from .mcp_server_type import McpServerType
7
7
  from ..core.pydantic_utilities import IS_PYDANTIC_V2
8
8
 
9
9
 
10
- class LocalServerConfig(UncheckedBaseModel):
10
+ class StdioServerConfig(UncheckedBaseModel):
11
11
  server_name: str = pydantic.Field()
12
12
  """
13
13
  The name of the server
@@ -24,6 +24,11 @@ class LocalServerConfig(UncheckedBaseModel):
24
24
  The arguments to pass to the command
25
25
  """
26
26
 
27
+ env: typing.Optional[typing.Dict[str, typing.Optional[str]]] = pydantic.Field(default=None)
28
+ """
29
+ Environment variables to set
30
+ """
31
+
27
32
  if IS_PYDANTIC_V2:
28
33
  model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
29
34
  else:
@@ -0,0 +1,19 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ from ..core.unchecked_base_model import UncheckedBaseModel
4
+ from ..core.pydantic_utilities import IS_PYDANTIC_V2
5
+ import typing
6
+ import pydantic
7
+
8
+
9
+ class TagSchema(UncheckedBaseModel):
10
+ tag: str
11
+
12
+ if IS_PYDANTIC_V2:
13
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
14
+ else:
15
+
16
+ class Config:
17
+ frozen = True
18
+ smart_union = True
19
+ extra = pydantic.Extra.allow
@@ -0,0 +1,24 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ from ..core.unchecked_base_model import UncheckedBaseModel
4
+ import typing
5
+ from ..core.pydantic_utilities import IS_PYDANTIC_V2
6
+ import pydantic
7
+
8
+
9
+ class ToolEnvVarSchema(UncheckedBaseModel):
10
+ created_at: str
11
+ description: typing.Optional[str] = None
12
+ is_deleted: bool
13
+ key: str
14
+ updated_at: str
15
+ value: str
16
+
17
+ if IS_PYDANTIC_V2:
18
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
19
+ else:
20
+
21
+ class Config:
22
+ frozen = True
23
+ smart_union = True
24
+ extra = pydantic.Extra.allow
@@ -0,0 +1,24 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ from ..core.unchecked_base_model import UncheckedBaseModel
4
+ from .parameters_schema import ParametersSchema
5
+ import typing
6
+ from ..core.pydantic_utilities import IS_PYDANTIC_V2
7
+ import pydantic
8
+
9
+
10
+ class ToolJsonSchema(UncheckedBaseModel):
11
+ name: str
12
+ description: str
13
+ parameters: ParametersSchema
14
+ type: typing.Optional[str] = None
15
+ required: typing.Optional[typing.List[str]] = None
16
+
17
+ if IS_PYDANTIC_V2:
18
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
19
+ else:
20
+
21
+ class Config:
22
+ frozen = True
23
+ smart_union = True
24
+ extra = pydantic.Extra.allow
@@ -0,0 +1,20 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ from ..core.unchecked_base_model import UncheckedBaseModel
4
+ from ..core.pydantic_utilities import IS_PYDANTIC_V2
5
+ import typing
6
+ import pydantic
7
+
8
+
9
+ class ToolRuleSchema(UncheckedBaseModel):
10
+ tool_name: str
11
+ type: str
12
+
13
+ if IS_PYDANTIC_V2:
14
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
15
+ else:
16
+
17
+ class Config:
18
+ frozen = True
19
+ smart_union = True
20
+ extra = pydantic.Extra.allow
@@ -0,0 +1,31 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ from ..core.unchecked_base_model import UncheckedBaseModel
4
+ import typing
5
+ from .tool_json_schema import ToolJsonSchema
6
+ from ..core.pydantic_utilities import IS_PYDANTIC_V2
7
+ import pydantic
8
+
9
+
10
+ class ToolSchema(UncheckedBaseModel):
11
+ args_json_schema: typing.Optional[typing.Any] = None
12
+ created_at: str
13
+ description: str
14
+ is_deleted: bool
15
+ json_schema: ToolJsonSchema
16
+ name: str
17
+ return_char_limit: int
18
+ source_code: typing.Optional[str] = None
19
+ source_type: str
20
+ tags: typing.List[str]
21
+ tool_type: str
22
+ updated_at: str
23
+
24
+ if IS_PYDANTIC_V2:
25
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
26
+ else:
27
+
28
+ class Config:
29
+ frozen = True
30
+ smart_union = True
31
+ extra = pydantic.Extra.allow
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: letta-client
3
- Version: 0.1.68
3
+ Version: 0.1.70
4
4
  Summary:
5
5
  Requires-Python: >=3.8,<4.0
6
6
  Classifier: Intended Audience :: Developers
@@ -1,8 +1,8 @@
1
- letta_client/__init__.py,sha256=I_RHb0CWzUnMjrx22uxHAArBtKwLe1KJZKEhX7byUFc,63350
1
+ letta_client/__init__.py,sha256=z0xhs3OI6QvwwA3zmsYmnhfPfvRTvGJ3UqVdEAhu4lc,63967
2
2
  letta_client/agents/__init__.py,sha256=HMLlMwIDoMSMsE99OMGYmDQbdZcYWScYF2L1bW_2zKA,25036
3
3
  letta_client/agents/blocks/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
4
4
  letta_client/agents/blocks/client.py,sha256=u5zvutxoH_DqfSLWhRtNSRBC9_ezQDx682cxkxDz3JA,23822
5
- letta_client/agents/client.py,sha256=GaTQF74VZFDiwk41_51aKxE3XrmZ3qEan28PMW6_8r8,84805
5
+ letta_client/agents/client.py,sha256=RCq2N7aO8gk_-dVwt5tP4ppKgiZ_i7hy4rPASyx2f5o,84696
6
6
  letta_client/agents/context/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
7
7
  letta_client/agents/context/client.py,sha256=GKKvoG4N_K8Biz9yDjeIHpFG0C8Cwc7tHmEX3pTL_9U,4815
8
8
  letta_client/agents/core_memory/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
@@ -228,7 +228,7 @@ letta_client/blocks/client.py,sha256=LE9dsHaBxFLC3G035f0VpNDG7XKWRK8y9OXpeFCMvUw
228
228
  letta_client/client.py,sha256=xdSrD4IkWokZHujowd1r7zESBoVgKGNvo6RqgZ3f0Fg,12808
229
229
  letta_client/core/__init__.py,sha256=OKbX2aCZXgHCDUsCouqv-OiX32xA6eFFCKIUH9M5Vzk,1591
230
230
  letta_client/core/api_error.py,sha256=RE8LELok2QCjABadECTvtDp7qejA1VmINCh6TbqPwSE,426
231
- letta_client/core/client_wrapper.py,sha256=KqE3E4bY3ST81pw9uY7wqojiHMuma6TVSSljQYVw6h0,1997
231
+ letta_client/core/client_wrapper.py,sha256=uXelTu3YeqatjFoXGj1r-hO9jpxEJio3bejiqYRj00s,1997
232
232
  letta_client/core/datetime_utils.py,sha256=nBys2IsYrhPdszxGKCNRPSOCwa-5DWOHG95FB8G9PKo,1047
233
233
  letta_client/core/file.py,sha256=d4NNbX8XvXP32z8KpK2Xovv33nFfruIrpz0QWxlgpZk,2663
234
234
  letta_client/core/http_client.py,sha256=Z77OIxIbL4OAB2IDqjRq_sYa5yNYAWfmdhdCSSvh6Y4,19552
@@ -459,15 +459,19 @@ letta_client/templates/types/templates_create_agents_response_agents_item_tools_
459
459
  letta_client/templates/types/templates_create_agents_response_agents_item_tools_item_tool_type.py,sha256=41qFb26ocOiXdzlnoef44J-fpZ1f9PUQFbBPwsoz6Ms,384
460
460
  letta_client/templates/types/templates_create_agents_response_agents_item_updated_at.py,sha256=Md7WfCTT1_AGvyd24EeWzUibPvnrun9rhyxqCLeAURg,439
461
461
  letta_client/templates/types/templates_create_agents_response_agents_item_updated_at_item.py,sha256=T3rYnv5m_cBAEPBnEjUkkHJLYtFZfXNMbb7a9FrIwKY,175
462
- letta_client/tools/__init__.py,sha256=mmzyALdCQKWki9BHa7_ihwxScL6HZiVaExsoYOu0n8U,155
463
- letta_client/tools/client.py,sha256=l83rlCZyUnFf-lB_BADzqyd3TPkdNujtYk4Kv2ECvIU,67693
464
- letta_client/tools/types/__init__.py,sha256=QAP4LY1LD9mKJqniez5WlK3k2-oeCoY3pcqA5G4zlNs,181
465
- letta_client/tools/types/list_mcp_servers_response_value.py,sha256=HVcUi2UhYbnT8xdJ-A2wGSQmak3v-J9mllHO8MT-VW8,273
466
- letta_client/types/__init__.py,sha256=Tl4TFbL6kx57fF98DHQQqOuNfJpbJR6uxBQp_Xy6yn8,17291
462
+ letta_client/tools/__init__.py,sha256=XsuAkxHDA-Z98gLNNW_fiEwFP3fP4XQipflrK2bHl8k,353
463
+ letta_client/tools/client.py,sha256=m_GRTYbqESVr21FuQ3WtpRcShqDPt8nupQu06aIJCLY,76942
464
+ letta_client/tools/types/__init__.py,sha256=R11LYBi6lxkud_DRyaHFUHtlnbfnEI93-SEo7FL4tzs,478
465
+ letta_client/tools/types/add_mcp_server_request.py,sha256=EieZjfOT95sjkpxXdqy7glpxF4J4J3fm6tlaHFnYk84,265
466
+ letta_client/tools/types/add_mcp_server_response_item.py,sha256=pb3A4IoP7Qpen0UDDniXrASYEJZWnYnnrZThtPkvZt4,270
467
+ letta_client/tools/types/delete_mcp_server_response_item.py,sha256=hKc4uehqcubO8BzpgMlvk2jJAjHXOWRM_zmWsCz_vZE,273
468
+ letta_client/tools/types/list_mcp_servers_response_value.py,sha256=AIoXu4bO8QNSU7zjL1jj0Rg4313wVtPaTt13W0aevLQ,273
469
+ letta_client/types/__init__.py,sha256=a1DEK3g5GnoJhHxV4Kxjj07gDYmjlYut0x9dyt1cyY4,17966
467
470
  letta_client/types/action_model.py,sha256=y1e2XMv3skFaNJIBdYoBKgiORzGh05aOVvu-qVR9uHg,1240
468
471
  letta_client/types/action_parameters_model.py,sha256=LgKf5aPZG3-OHGxFdXiSokIDgce8c02xPYIAY05VgW8,828
469
472
  letta_client/types/action_response_model.py,sha256=yq2Fd9UU8j7vvtE3VqXUoRRvDzWcfJPj_95ynGdeHCs,824
470
473
  letta_client/types/agent_environment_variable.py,sha256=vutZLcR0yETltgOZ7E_o9kR4vOdBxybVL9lzXSux75w,1698
474
+ letta_client/types/agent_schema.py,sha256=qo2okN6LjB65jpN-RmFYemi50aWV4DOOaWyB_Qz7z8Y,1786
471
475
  letta_client/types/agent_state.py,sha256=hogE7T9E56HzOycCGuv-jmPVsmcA3w7sGsoMnWMW3IY,5196
472
476
  letta_client/types/agent_state_tool_rules_item.py,sha256=qWQIVi8G-ulUjHJqkUDOZQdSN7aajyOxwg3Y7rBBrOs,448
473
477
  letta_client/types/agent_type.py,sha256=BvztKbFTW_Acvc3QPIvzK7JGwSLie1V407byu-VZHz0,195
@@ -536,6 +540,7 @@ letta_client/types/conditional_tool_rule.py,sha256=R0nzgjpqedSPUWdBQuv-doiIgYTAZ
536
540
  letta_client/types/conflict_error_body.py,sha256=Mena-q1jti6nv_7-xrp6sDb_5MXNKPGobHrhpnz9kpY,787
537
541
  letta_client/types/context_window_overview.py,sha256=9pwiObSxu-SFyQ1pxSTlQiRatVAyFgqa6t0_qrrsGfU,2815
538
542
  letta_client/types/continue_tool_rule.py,sha256=AIKTGsQrJdSNsMCqdSqMqjKS7s610vDO8taVEbSJ6Yc,867
543
+ letta_client/types/core_memory_block_schema.py,sha256=FAKcmH4B8EiJ6vltX6-dVstVzgznYUU4sOPUVnlFBOY,1062
539
544
  letta_client/types/create_block.py,sha256=V57mbqUkh5c-HcDxmIiFVr3tNfoqx-WJ1GRQZPobbxI,1277
540
545
  letta_client/types/dynamic_manager.py,sha256=5DRNqtUnjeTwOe5mkNB-SXItqLOfEX0avSrwsrJt1Aw,853
541
546
  letta_client/types/e_2_b_sandbox_config.py,sha256=w3R4QpPjeie5aKw8sb_eKhl78J0k5vLCcATNS3Qaeyw,957
@@ -579,9 +584,8 @@ letta_client/types/letta_usage_statistics.py,sha256=0BHM3ArfwH6WVJNHYja7LI2k3BZ3
579
584
  letta_client/types/llm_config.py,sha256=B-LJpzPB5RNSPG-cag65yTIWc0mbD7iKg77N6ejPL64,3045
580
585
  letta_client/types/llm_config_model_endpoint_type.py,sha256=HOSM5kIZDCNAVCWmASvAk52K819plqGlD66yKQ1xFkI,620
581
586
  letta_client/types/local_sandbox_config.py,sha256=jfe7akG_YrJJ8csLaLdev04Zg1x-PTN0XCAL4KifaZI,1387
582
- letta_client/types/local_server_config.py,sha256=0tkHCooFWb0ciwCoUPkBbUiDnaFRvL8wiJc_ncM17Eg,945
583
587
  letta_client/types/manager_type.py,sha256=hV271989JpEhJQH02MzLpJ34EsbGnyMlckbz2TXBc-E,184
584
- letta_client/types/mcp_server_type.py,sha256=WiUotkvET2eFvM0OKpYkxXmSGA1_Id3sBy4nd2DEJ3E,153
588
+ letta_client/types/mcp_server_type.py,sha256=Hv45mKMPzmey2UVjwrTAvWXP1sDd13UwAtvtogBloLo,153
585
589
  letta_client/types/mcp_tool.py,sha256=_GSTb0k8l-IUEflRkQ6-v45UnbTcA4Nv1N8sgmExJQ0,912
586
590
  letta_client/types/memory.py,sha256=KD5MkDQB-vbRPT9f_-yFBWY1WUW_NWxYEI0IiflG6P8,1035
587
591
  letta_client/types/message.py,sha256=dOue5njUr5YaxdGIsyBv1JZk_230v5XZXAgCYFtbz3U,3595
@@ -589,6 +593,7 @@ letta_client/types/message_create.py,sha256=x80xQYxC3IUHs7PKCqHfeJkHRh02dx0oOc0P
589
593
  letta_client/types/message_create_content.py,sha256=N3W7IzbUk2RqEbL88noLCu4Bmbli5-yq35d0nfscGl8,185
590
594
  letta_client/types/message_create_role.py,sha256=atjQEZ8iT4gTAmrFTFnRaM66f0MGsgfGq6hpx1Q-i44,159
591
595
  letta_client/types/message_role.py,sha256=HKatrA1jt02oTObExloTY3rW8Urzn37kBTg0Z6MbwkQ,186
596
+ letta_client/types/message_schema.py,sha256=wnfvzbABcNlsmNNGTAaizPPbbPIQ7lxzRalTavl_TFw,914
592
597
  letta_client/types/not_found_error_body.py,sha256=_1esSlUdkBx6CRs6aAIJrxzh3VZKEG0xzeLbxebBuy0,615
593
598
  letta_client/types/not_found_error_body_message.py,sha256=Kc9xrVghgDATdPAGpTPnzyKe6ds5q8Vr6zcBU5lLcH4,309
594
599
  letta_client/types/openai_types_chat_chat_completion_message_tool_call_param_function.py,sha256=glG5tG6g2uxP4R5jwsChkf3F0sb208uEbR-25dnrTiM,621
@@ -596,6 +601,8 @@ letta_client/types/openai_types_chat_chat_completion_named_tool_choice_param_fun
596
601
  letta_client/types/openai_types_chat_completion_create_params_function.py,sha256=oTjYqRv8z6SMSdFgTl4W9oI-QUQxz8Unf4yn90sByss,721
597
602
  letta_client/types/organization.py,sha256=vSXwqYTpxGZgpMTv8rw5jzklZnUYjS6yBTkEFNPNSrU,927
598
603
  letta_client/types/organization_create.py,sha256=xlF1FgDRa7zpv49kVGWYchcSEUjPEsjF5_m2xHWb9VM,661
604
+ letta_client/types/parameter_properties.py,sha256=KVQGp_csoiNzyf9XsL083fwlX_a2Tc8GsCKyWB323C8,609
605
+ letta_client/types/parameters_schema.py,sha256=ptXcwjuaCwqRhfizeiWAsu3pqT87Jcj_P3YaEkL4asM,748
599
606
  letta_client/types/passage.py,sha256=1OM19TyVCQEL1P3BC58hmzWfawZM4vejiKr0P11dOUk,3034
600
607
  letta_client/types/pip_requirement.py,sha256=Hmh7VpJhdSfFkafh6QwAehCp0MQUBXv1YAoYP-2wV2M,773
601
608
  letta_client/types/provider.py,sha256=RvdE9dzGFJ4hcmyvk2xeO7RNpxQvXhB_S9DNy8t_z-E,1053
@@ -616,10 +623,12 @@ letta_client/types/sandbox_environment_variable_update.py,sha256=JMkX6nzvcBNEemj
616
623
  letta_client/types/sandbox_type.py,sha256=XSWmX3JIFFrDPQ4i89E8LauXY8kjmJEtaz6e_JheGm4,151
617
624
  letta_client/types/source.py,sha256=7tLptZ4AZrvRPF6NqToM4Vf9i7TosS2_Ydks4zfvZx4,2239
618
625
  letta_client/types/sse_server_config.py,sha256=b-h5FLm5MELZ5A9bwZt-02Zx_f3UbfKAQS--yHQVOQU,844
626
+ letta_client/types/stdio_server_config.py,sha256=dEQ7bguiLikGemLxYZJ3JCmmEQgAMsSPO_P52oHZSl0,1091
619
627
  letta_client/types/step.py,sha256=XE98vMiU34dgUxLPvmJLdp9iWFPjg6E2Pb8xNSURMMg,2988
620
628
  letta_client/types/supervisor_manager.py,sha256=VdR1ySp4k43apxM8Bb5uNoBvADsvz8oMEEtDy2F5K6M,676
621
629
  letta_client/types/system_message.py,sha256=E7ExEVt5Y1p3g-fq1t--Zxr0148v_PRs8DIfsSDcXzE,1281
622
630
  letta_client/types/system_message_content.py,sha256=fePw_p7NZclJLdnZWCG392knGx2XemMrtWexZqoyYkA,238
631
+ letta_client/types/tag_schema.py,sha256=FEszKlRD2FqezKlX99OLqTqf46dONlcGPo1m43osdNo,553
623
632
  letta_client/types/terminal_tool_rule.py,sha256=82a7AnohOqCFBSOt7OwsKeh7gHgq8KTlgojxlm3t76E,863
624
633
  letta_client/types/text_content.py,sha256=Z8UL4Sqqq2qClKU_nCgR9XFCj3dwYyhZMmvnnz1F0AE,670
625
634
  letta_client/types/tool.py,sha256=xXKWpxfzUtw7OjLcjnil6GeFiVrFvk9gtaYHWUM-7AU,2510
@@ -628,10 +637,14 @@ letta_client/types/tool_call_delta.py,sha256=wGeZwJ9pwYHD5-f4Unf5-vJqefK40eHw9i0
628
637
  letta_client/types/tool_call_message.py,sha256=vc-Bv_H1eNLAIJqyCI4glj964h87iosTLKFgxWpA2wM,1090
629
638
  letta_client/types/tool_call_message_tool_call.py,sha256=twtq5-vZIeh1nShqm8iTCN9YFtY7LUIL-bFYuUfhF1o,219
630
639
  letta_client/types/tool_create.py,sha256=VSMd23Kkd77SPbLv2oRHEzXqR2Eexc0ervjxXYLHiqc,1522
640
+ letta_client/types/tool_env_var_schema.py,sha256=TgH1mM9rkfY3ci__at0tZDJpn7G6G92tzussSoviZ7Y,681
641
+ letta_client/types/tool_json_schema.py,sha256=EgCxNOxeoF4y_-BDLAp6z_qcxTc87w_uSuZdjZpn3Gk,754
631
642
  letta_client/types/tool_return.py,sha256=f-6zaRo8Bwl0i0Q0rHl8vKOfzymFHN_tVRoC2lMWksI,984
632
643
  letta_client/types/tool_return_message.py,sha256=MeCDV12wej629vX9opp7htj0fXE02Ord5fvp68X2vpU,1585
633
644
  letta_client/types/tool_return_message_status.py,sha256=FvFOMaG9mnmgnHi2UBQVQQMtHFabbWnQnHTxGUDgVl0,167
634
645
  letta_client/types/tool_return_status.py,sha256=TQjwYprn5F_jU9kIbrtiyk7Gw2SjcmFFZLjFbGDpBM0,160
646
+ letta_client/types/tool_rule_schema.py,sha256=cuOWIHHG63nG-EVYz4qV9psQ8MH0ujmLGjHiPVV-3Kk,578
647
+ letta_client/types/tool_schema.py,sha256=WNDalV7aeaEzJH5TND5TvZ48zTAqwZ-8MEAzYbgvjW0,910
635
648
  letta_client/types/tool_type.py,sha256=v6DX7qGAbg9t4HZTa9GBuzehNDCW3NkD6Zi3Z1teEKI,336
636
649
  letta_client/types/update_assistant_message.py,sha256=D-51o8uXk3X_2Fb2zJ4KoMeRxPiDWaCb3ugRfjBMCTI,878
637
650
  letta_client/types/update_assistant_message_content.py,sha256=rh3DP_SpxyBNnf0EDtoaKmPIPV-cXRSFju33NbHgeF0,247
@@ -657,6 +670,6 @@ letta_client/voice/__init__.py,sha256=ZrZEuXIukVGhsfM-i0dIFfqjeSOBMPeEgDva7Vvnip
657
670
  letta_client/voice/client.py,sha256=O38dLq__WTwLPlFTtvw1hgqaPYK9alds_ft12Bnp5fs,6475
658
671
  letta_client/voice/types/__init__.py,sha256=hBLJcrom99DkDxxsVRU2ni8kPx6SsCy8gtAJvNOz26w,199
659
672
  letta_client/voice/types/create_voice_chat_completions_request.py,sha256=K4__83rXRCshfdobyAmH-5fUDJQ_PeSQetTUeC4Abk0,381
660
- letta_client-0.1.68.dist-info/METADATA,sha256=9FqiCGG04rFG6MWvyX6j2W054dUj-NpEyEwcWN_gs5c,4942
661
- letta_client-0.1.68.dist-info/WHEEL,sha256=Zb28QaM1gQi8f4VCBhsUklF61CTlNYfs9YAZn-TOGFk,88
662
- letta_client-0.1.68.dist-info/RECORD,,
673
+ letta_client-0.1.70.dist-info/METADATA,sha256=ps10hxkh5MC80-Pu9sjm4US1CBQXL7OdOkzz_S2mRmA,4942
674
+ letta_client-0.1.70.dist-info/WHEEL,sha256=Zb28QaM1gQi8f4VCBhsUklF61CTlNYfs9YAZn-TOGFk,88
675
+ letta_client-0.1.70.dist-info/RECORD,,