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 +2 -0
- letta_client/core/client_wrapper.py +1 -1
- letta_client/tools/__init__.py +2 -0
- letta_client/tools/client.py +143 -0
- letta_client/tools/types/__init__.py +2 -0
- letta_client/tools/types/test_mcp_server_request.py +8 -0
- {letta_client-0.1.175.dist-info → letta_client-0.1.176.dist-info}/METADATA +1 -1
- {letta_client-0.1.175.dist-info → letta_client-0.1.176.dist-info}/RECORD +9 -8
- {letta_client-0.1.175.dist-info → letta_client-0.1.176.dist-info}/WHEEL +0 -0
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.
|
|
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}"
|
letta_client/tools/__init__.py
CHANGED
|
@@ -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
|
]
|
letta_client/tools/client.py
CHANGED
|
@@ -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,4 +1,4 @@
|
|
|
1
|
-
letta_client/__init__.py,sha256=
|
|
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=
|
|
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=
|
|
153
|
-
letta_client/tools/client.py,sha256=
|
|
154
|
-
letta_client/tools/types/__init__.py,sha256
|
|
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.
|
|
415
|
-
letta_client-0.1.
|
|
416
|
-
letta_client-0.1.
|
|
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,,
|
|
File without changes
|