letta-client 0.1.175__py3-none-any.whl → 0.1.176__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
@@ -315,6 +315,7 @@ from .tools import (
315
315
  AddMcpServerResponseItem,
316
316
  DeleteMcpServerResponseItem,
317
317
  ListMcpServersResponseValue,
318
+ TestMcpServerRequest,
318
319
  UpdateMcpServerRequest,
319
320
  UpdateMcpServerResponse,
320
321
  )
@@ -562,6 +563,7 @@ __all__ = [
562
563
  "TemplatesListResponse",
563
564
  "TemplatesListResponseTemplatesItem",
564
565
  "TerminalToolRule",
566
+ "TestMcpServerRequest",
565
567
  "TextContent",
566
568
  "TextResponseFormat",
567
569
  "Tool",
@@ -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.175",
19
+ "X-Fern-SDK-Version": "0.1.176",
20
20
  }
21
21
  if self.token is not None:
22
22
  headers["Authorization"] = f"Bearer {self.token}"
@@ -5,6 +5,7 @@ from .types import (
5
5
  AddMcpServerResponseItem,
6
6
  DeleteMcpServerResponseItem,
7
7
  ListMcpServersResponseValue,
8
+ TestMcpServerRequest,
8
9
  UpdateMcpServerRequest,
9
10
  UpdateMcpServerResponse,
10
11
  )
@@ -14,6 +15,7 @@ __all__ = [
14
15
  "AddMcpServerResponseItem",
15
16
  "DeleteMcpServerResponseItem",
16
17
  "ListMcpServersResponseValue",
18
+ "TestMcpServerRequest",
17
19
  "UpdateMcpServerRequest",
18
20
  "UpdateMcpServerResponse",
19
21
  ]
@@ -22,6 +22,7 @@ from ..types.mcp_tool import McpTool
22
22
  from .types.delete_mcp_server_response_item import DeleteMcpServerResponseItem
23
23
  from .types.update_mcp_server_request import UpdateMcpServerRequest
24
24
  from .types.update_mcp_server_response import UpdateMcpServerResponse
25
+ from .types.test_mcp_server_request import TestMcpServerRequest
25
26
  from ..core.client_wrapper import AsyncClientWrapper
26
27
 
27
28
  # this is used as the default value for optional parameters
@@ -1299,6 +1300,73 @@ class ToolsClient:
1299
1300
  raise ApiError(status_code=_response.status_code, body=_response.text)
1300
1301
  raise ApiError(status_code=_response.status_code, body=_response_json)
1301
1302
 
1303
+ def test_mcp_server(
1304
+ self, *, request: TestMcpServerRequest, request_options: typing.Optional[RequestOptions] = None
1305
+ ) -> typing.List[McpTool]:
1306
+ """
1307
+ Test connection to an MCP server without adding it.
1308
+ Returns the list of available tools if successful.
1309
+
1310
+ Parameters
1311
+ ----------
1312
+ request : TestMcpServerRequest
1313
+
1314
+ request_options : typing.Optional[RequestOptions]
1315
+ Request-specific configuration.
1316
+
1317
+ Returns
1318
+ -------
1319
+ typing.List[McpTool]
1320
+ Successful Response
1321
+
1322
+ Examples
1323
+ --------
1324
+ from letta_client import Letta, StdioServerConfig
1325
+
1326
+ client = Letta(
1327
+ token="YOUR_TOKEN",
1328
+ )
1329
+ client.tools.test_mcp_server(
1330
+ request=StdioServerConfig(
1331
+ server_name="server_name",
1332
+ command="command",
1333
+ args=["args"],
1334
+ ),
1335
+ )
1336
+ """
1337
+ _response = self._client_wrapper.httpx_client.request(
1338
+ "v1/tools/mcp/servers/test",
1339
+ method="POST",
1340
+ json=convert_and_respect_annotation_metadata(
1341
+ object_=request, annotation=TestMcpServerRequest, direction="write"
1342
+ ),
1343
+ request_options=request_options,
1344
+ omit=OMIT,
1345
+ )
1346
+ try:
1347
+ if 200 <= _response.status_code < 300:
1348
+ return typing.cast(
1349
+ typing.List[McpTool],
1350
+ construct_type(
1351
+ type_=typing.List[McpTool], # type: ignore
1352
+ object_=_response.json(),
1353
+ ),
1354
+ )
1355
+ if _response.status_code == 422:
1356
+ raise UnprocessableEntityError(
1357
+ typing.cast(
1358
+ HttpValidationError,
1359
+ construct_type(
1360
+ type_=HttpValidationError, # type: ignore
1361
+ object_=_response.json(),
1362
+ ),
1363
+ )
1364
+ )
1365
+ _response_json = _response.json()
1366
+ except JSONDecodeError:
1367
+ raise ApiError(status_code=_response.status_code, body=_response.text)
1368
+ raise ApiError(status_code=_response.status_code, body=_response_json)
1369
+
1302
1370
 
1303
1371
  class AsyncToolsClient:
1304
1372
  def __init__(self, *, client_wrapper: AsyncClientWrapper):
@@ -2714,3 +2782,78 @@ class AsyncToolsClient:
2714
2782
  except JSONDecodeError:
2715
2783
  raise ApiError(status_code=_response.status_code, body=_response.text)
2716
2784
  raise ApiError(status_code=_response.status_code, body=_response_json)
2785
+
2786
+ async def test_mcp_server(
2787
+ self, *, request: TestMcpServerRequest, request_options: typing.Optional[RequestOptions] = None
2788
+ ) -> typing.List[McpTool]:
2789
+ """
2790
+ Test connection to an MCP server without adding it.
2791
+ Returns the list of available tools if successful.
2792
+
2793
+ Parameters
2794
+ ----------
2795
+ request : TestMcpServerRequest
2796
+
2797
+ request_options : typing.Optional[RequestOptions]
2798
+ Request-specific configuration.
2799
+
2800
+ Returns
2801
+ -------
2802
+ typing.List[McpTool]
2803
+ Successful Response
2804
+
2805
+ Examples
2806
+ --------
2807
+ import asyncio
2808
+
2809
+ from letta_client import AsyncLetta, StdioServerConfig
2810
+
2811
+ client = AsyncLetta(
2812
+ token="YOUR_TOKEN",
2813
+ )
2814
+
2815
+
2816
+ async def main() -> None:
2817
+ await client.tools.test_mcp_server(
2818
+ request=StdioServerConfig(
2819
+ server_name="server_name",
2820
+ command="command",
2821
+ args=["args"],
2822
+ ),
2823
+ )
2824
+
2825
+
2826
+ asyncio.run(main())
2827
+ """
2828
+ _response = await self._client_wrapper.httpx_client.request(
2829
+ "v1/tools/mcp/servers/test",
2830
+ method="POST",
2831
+ json=convert_and_respect_annotation_metadata(
2832
+ object_=request, annotation=TestMcpServerRequest, direction="write"
2833
+ ),
2834
+ request_options=request_options,
2835
+ omit=OMIT,
2836
+ )
2837
+ try:
2838
+ if 200 <= _response.status_code < 300:
2839
+ return typing.cast(
2840
+ typing.List[McpTool],
2841
+ construct_type(
2842
+ type_=typing.List[McpTool], # type: ignore
2843
+ object_=_response.json(),
2844
+ ),
2845
+ )
2846
+ if _response.status_code == 422:
2847
+ raise UnprocessableEntityError(
2848
+ typing.cast(
2849
+ HttpValidationError,
2850
+ construct_type(
2851
+ type_=HttpValidationError, # type: ignore
2852
+ object_=_response.json(),
2853
+ ),
2854
+ )
2855
+ )
2856
+ _response_json = _response.json()
2857
+ except JSONDecodeError:
2858
+ raise ApiError(status_code=_response.status_code, body=_response.text)
2859
+ raise ApiError(status_code=_response.status_code, body=_response_json)
@@ -4,6 +4,7 @@ from .add_mcp_server_request import AddMcpServerRequest
4
4
  from .add_mcp_server_response_item import AddMcpServerResponseItem
5
5
  from .delete_mcp_server_response_item import DeleteMcpServerResponseItem
6
6
  from .list_mcp_servers_response_value import ListMcpServersResponseValue
7
+ from .test_mcp_server_request import TestMcpServerRequest
7
8
  from .update_mcp_server_request import UpdateMcpServerRequest
8
9
  from .update_mcp_server_response import UpdateMcpServerResponse
9
10
 
@@ -12,6 +13,7 @@ __all__ = [
12
13
  "AddMcpServerResponseItem",
13
14
  "DeleteMcpServerResponseItem",
14
15
  "ListMcpServersResponseValue",
16
+ "TestMcpServerRequest",
15
17
  "UpdateMcpServerRequest",
16
18
  "UpdateMcpServerResponse",
17
19
  ]
@@ -0,0 +1,8 @@
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
+ from ...types.streamable_http_server_config import StreamableHttpServerConfig
7
+
8
+ TestMcpServerRequest = typing.Union[StdioServerConfig, SseServerConfig, StreamableHttpServerConfig]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: letta-client
3
- Version: 0.1.175
3
+ Version: 0.1.176
4
4
  Summary:
5
5
  Requires-Python: >=3.8,<4.0
6
6
  Classifier: Intended Audience :: Developers
@@ -1,4 +1,4 @@
1
- letta_client/__init__.py,sha256=ivW66MILcihii1Mco30utv086S2dwmeu1Os75Z9qckQ,17890
1
+ letta_client/__init__.py,sha256=5ksJv1VrUqmA-Eya6pQ21dOc-oBmgwYDjJAj5OmG4iM,17944
2
2
  letta_client/agents/__init__.py,sha256=c_9OiE6ofyiPcq9BP37qvo7h0SKmw34PKN3KMxuRja0,1780
3
3
  letta_client/agents/blocks/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
4
4
  letta_client/agents/blocks/client.py,sha256=ecE03lE5tP1AtCMFLT9FzdYyQMx_D7NI5m42b41pV40,24684
@@ -63,7 +63,7 @@ letta_client/client_side_access_tokens/types/client_side_access_tokens_create_re
63
63
  letta_client/client_side_access_tokens/types/client_side_access_tokens_create_response_policy_data_item_access_item.py,sha256=R-H25IpNp9feSrW8Yj3h9O3UTMVvFniQJElogKxLuoE,254
64
64
  letta_client/core/__init__.py,sha256=OKbX2aCZXgHCDUsCouqv-OiX32xA6eFFCKIUH9M5Vzk,1591
65
65
  letta_client/core/api_error.py,sha256=RE8LELok2QCjABadECTvtDp7qejA1VmINCh6TbqPwSE,426
66
- letta_client/core/client_wrapper.py,sha256=KNJ2nnmTu38KnBb5re4q4fLIunMQPqXVg0Ypxr_tvSQ,1998
66
+ letta_client/core/client_wrapper.py,sha256=Jjfwwxei7JQhFRb1BJZccCMPDCCka74ZXrD7yni-Mjo,1998
67
67
  letta_client/core/datetime_utils.py,sha256=nBys2IsYrhPdszxGKCNRPSOCwa-5DWOHG95FB8G9PKo,1047
68
68
  letta_client/core/file.py,sha256=d4NNbX8XvXP32z8KpK2Xovv33nFfruIrpz0QWxlgpZk,2663
69
69
  letta_client/core/http_client.py,sha256=Z77OIxIbL4OAB2IDqjRq_sYa5yNYAWfmdhdCSSvh6Y4,19552
@@ -149,13 +149,14 @@ letta_client/templates/client.py,sha256=EpPdvDbpYf57iPBVpDt8PPGkS2rmf4qCkzFnMpot
149
149
  letta_client/templates/types/__init__.py,sha256=dAr_dEh0BdwUxAcV1sJ9RM07Z8nCv4dCK6fmTltqQ6c,286
150
150
  letta_client/templates/types/templates_list_response.py,sha256=HYloMVzk086c6fFGRYZz-Ozc_Yylozp2aPpweHS5uXI,866
151
151
  letta_client/templates/types/templates_list_response_templates_item.py,sha256=yyJq8wEOb2XIg99uhRMKoy2qD2CbuvI_5FAspwYWnfI,593
152
- letta_client/tools/__init__.py,sha256=705bQppAvX_q8aqdY409SXUI7sR9HEECylIBjTv_9ZY,471
153
- letta_client/tools/client.py,sha256=NwTa6aSAHhX8pEHhixd1Ak6Xujr3FMdGNhkPwg99H4o,90825
154
- letta_client/tools/types/__init__.py,sha256=mpZgGjpS-lyEpdkAMVwL7BW3x3XOFyAgfCvmsjCp0Pw,665
152
+ letta_client/tools/__init__.py,sha256=kSIxsMdzxX6TlriU43BYesswM2yq_iPoF-6-p0LbJKI,525
153
+ letta_client/tools/client.py,sha256=TMtOTS6knTBj-jRF3SYOc1Y_ZP2nRbgio2JjYW84Ux8,95627
154
+ letta_client/tools/types/__init__.py,sha256=-U2DGiEFPko6D5VRQQRoiJeHDJqb2iZnrbtHSxhkL5w,751
155
155
  letta_client/tools/types/add_mcp_server_request.py,sha256=m3QdTmY2ZHQUWbxMTNsOhPnseWHVipsOTdSXuC7KHQI,371
156
156
  letta_client/tools/types/add_mcp_server_response_item.py,sha256=DNrB3LwstJzKrw_GRJ8tb3XCEJWfD16WzBoGrGY_ZQI,376
157
157
  letta_client/tools/types/delete_mcp_server_response_item.py,sha256=YLIBE7OD535NJAncGpzMDGaQRe1831DNKcj2UzS9e0c,379
158
158
  letta_client/tools/types/list_mcp_servers_response_value.py,sha256=Eyji5qB7FhowiogsAbpcU_aMyH9zClv9lUMmHOmNPYk,379
159
+ letta_client/tools/types/test_mcp_server_request.py,sha256=sLlOEZdmLfkHqHCkUjntGbr8_MkBhsqpMQ-HwdNOnq0,372
159
160
  letta_client/tools/types/update_mcp_server_request.py,sha256=SEMNYHB_mwJNSMHKO7keU0C_CMBktV7lfZUnACPe_fU,314
160
161
  letta_client/tools/types/update_mcp_server_response.py,sha256=muwHagaQBMwQI0of9EBCBtG9lD-jELFAevgTB2MjpFQ,375
161
162
  letta_client/types/__init__.py,sha256=gijUXzC79eFOCNbc2zQkM3GlhHTsXxcixcuNskoFIMw,22313
@@ -411,6 +412,6 @@ letta_client/types/web_search_options_user_location_approximate.py,sha256=Ywk01J
411
412
  letta_client/version.py,sha256=bttKLbIhO3UonCYQlqs600zzbQgfhCCMjeXR9WRzid4,79
412
413
  letta_client/voice/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
413
414
  letta_client/voice/client.py,sha256=EX79F2D5bieXNP8g1ZPw8xwAzqE1A3hshCHUSlTV1kw,5739
414
- letta_client-0.1.175.dist-info/METADATA,sha256=nH9P0Ggf4OZnTxWlvFR2hr9fto9Qod1gjbc3u8AvV5I,5093
415
- letta_client-0.1.175.dist-info/WHEEL,sha256=Zb28QaM1gQi8f4VCBhsUklF61CTlNYfs9YAZn-TOGFk,88
416
- letta_client-0.1.175.dist-info/RECORD,,
415
+ letta_client-0.1.176.dist-info/METADATA,sha256=K8WelLB5iCMO55JVxclmVYfEkv0Oe-6y-aGkO1tl0TM,5093
416
+ letta_client-0.1.176.dist-info/WHEEL,sha256=Zb28QaM1gQi8f4VCBhsUklF61CTlNYfs9YAZn-TOGFk,88
417
+ letta_client-0.1.176.dist-info/RECORD,,