From fb1e03c39ad78d5a76bb8465540882414b8c1078 Mon Sep 17 00:00:00 2001 From: Twisha Bansal <58483338+twishabansal@users.noreply.github.com> Date: Wed, 10 Dec 2025 13:23:41 +0530 Subject: [PATCH 1/7] feat(toolbox-core): Allow specifying protocol in sync client --- packages/toolbox-core/src/toolbox_core/sync_client.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/toolbox-core/src/toolbox_core/sync_client.py b/packages/toolbox-core/src/toolbox_core/sync_client.py index c32ad54ad..e424de576 100644 --- a/packages/toolbox-core/src/toolbox_core/sync_client.py +++ b/packages/toolbox-core/src/toolbox_core/sync_client.py @@ -20,6 +20,7 @@ from deprecated import deprecated from .client import ToolboxClient +from .protocol import Protocol from .sync_tool import ToolboxSyncTool @@ -40,6 +41,7 @@ def __init__( client_headers: Optional[ Mapping[str, Union[Callable[[], str], Callable[[], Awaitable[str]], str]] ] = None, + protocol: Protocol, ): """ Initializes the ToolboxSyncClient. @@ -58,7 +60,7 @@ def __init__( self.__class__.__loop = loop async def create_client(): - return ToolboxClient(url, client_headers=client_headers) + return ToolboxClient(url, client_headers=client_headers, protocol) self.__async_client = run_coroutine_threadsafe( create_client(), self.__class__.__loop From abf1dd7f2191037da9d97f55111ed142f172d6f1 Mon Sep 17 00:00:00 2001 From: Twisha Bansal <58483338+twishabansal@users.noreply.github.com> Date: Wed, 10 Dec 2025 13:24:14 +0530 Subject: [PATCH 2/7] Update sync_client.py --- packages/toolbox-core/src/toolbox_core/sync_client.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/toolbox-core/src/toolbox_core/sync_client.py b/packages/toolbox-core/src/toolbox_core/sync_client.py index e424de576..4826fc05c 100644 --- a/packages/toolbox-core/src/toolbox_core/sync_client.py +++ b/packages/toolbox-core/src/toolbox_core/sync_client.py @@ -41,7 +41,7 @@ def __init__( client_headers: Optional[ Mapping[str, Union[Callable[[], str], Callable[[], Awaitable[str]], str]] ] = None, - protocol: Protocol, + protocol: Protocol = Protocol.MCP, ): """ Initializes the ToolboxSyncClient. @@ -60,7 +60,7 @@ def __init__( self.__class__.__loop = loop async def create_client(): - return ToolboxClient(url, client_headers=client_headers, protocol) + return ToolboxClient(url, client_headers=client_headers, protocol=protocol) self.__async_client = run_coroutine_threadsafe( create_client(), self.__class__.__loop From 10c1b1393477e186522b2bdc289f80b37e8145b1 Mon Sep 17 00:00:00 2001 From: Twisha Bansal Date: Wed, 10 Dec 2025 13:33:06 +0530 Subject: [PATCH 3/7] feat(toolbox-langchain): add protocol toggle to langchain clients --- .../toolbox-langchain/src/toolbox_langchain/async_client.py | 4 +++- packages/toolbox-langchain/src/toolbox_langchain/client.py | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/packages/toolbox-langchain/src/toolbox_langchain/async_client.py b/packages/toolbox-langchain/src/toolbox_langchain/async_client.py index f622b65f0..d94d25b2a 100644 --- a/packages/toolbox-langchain/src/toolbox_langchain/async_client.py +++ b/packages/toolbox-langchain/src/toolbox_langchain/async_client.py @@ -17,6 +17,7 @@ from aiohttp import ClientSession from toolbox_core.client import ToolboxClient as ToolboxCoreClient +from toolbox_core.protocol import Protocol from .async_tools import AsyncToolboxTool @@ -33,6 +34,7 @@ def __init__( client_headers: Optional[ Mapping[str, Union[Callable[[], str], Callable[[], Awaitable[str]], str]] ] = None, + protocol: Protocol = Protocol.MCP, ): """ Initializes the AsyncToolboxClient for the Toolbox service at the given URL. @@ -42,7 +44,7 @@ def __init__( session: An HTTP client session. """ self.__core_client = ToolboxCoreClient( - url=url, session=session, client_headers=client_headers + url=url, session=session, client_headers=client_headers, protocol=protocol ) async def aload_tool( diff --git a/packages/toolbox-langchain/src/toolbox_langchain/client.py b/packages/toolbox-langchain/src/toolbox_langchain/client.py index e8c87b241..cec81504b 100644 --- a/packages/toolbox-langchain/src/toolbox_langchain/client.py +++ b/packages/toolbox-langchain/src/toolbox_langchain/client.py @@ -17,6 +17,7 @@ from warnings import warn from toolbox_core.sync_client import ToolboxSyncClient as ToolboxCoreSyncClient +from toolbox_core.protocol import Protocol from .tools import ToolboxTool @@ -29,6 +30,7 @@ def __init__( client_headers: Optional[ Mapping[str, Union[Callable[[], str], Callable[[], Awaitable[str]], str]] ] = None, + protocol: Protocol = Protocol.MCP, ) -> None: """ Initializes the ToolboxClient for the Toolbox service at the given URL. @@ -37,7 +39,7 @@ def __init__( url: The base URL of the Toolbox service. """ self.__core_client = ToolboxCoreSyncClient( - url=url, client_headers=client_headers + url=url, client_headers=client_headers, protocol=protocol ) async def aload_tool( From 709c31570f517e1e0b5b00a62168c32d61357815 Mon Sep 17 00:00:00 2001 From: Twisha Bansal Date: Wed, 10 Dec 2025 13:42:00 +0530 Subject: [PATCH 4/7] lint --- packages/toolbox-langchain/src/toolbox_langchain/client.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/toolbox-langchain/src/toolbox_langchain/client.py b/packages/toolbox-langchain/src/toolbox_langchain/client.py index cec81504b..a93d1ec6d 100644 --- a/packages/toolbox-langchain/src/toolbox_langchain/client.py +++ b/packages/toolbox-langchain/src/toolbox_langchain/client.py @@ -16,8 +16,8 @@ from typing import Any, Awaitable, Callable, Mapping, Optional, Union from warnings import warn -from toolbox_core.sync_client import ToolboxSyncClient as ToolboxCoreSyncClient from toolbox_core.protocol import Protocol +from toolbox_core.sync_client import ToolboxSyncClient as ToolboxCoreSyncClient from .tools import ToolboxTool From 700ebea22c02b08b984127930104d91fb3dcf8aa Mon Sep 17 00:00:00 2001 From: Twisha Bansal Date: Wed, 10 Dec 2025 13:46:15 +0530 Subject: [PATCH 5/7] fix tests --- packages/toolbox-langchain/tests/test_async_client.py | 5 ++++- packages/toolbox-langchain/tests/test_client.py | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/packages/toolbox-langchain/tests/test_async_client.py b/packages/toolbox-langchain/tests/test_async_client.py index a0c9def58..04c9de1a7 100644 --- a/packages/toolbox-langchain/tests/test_async_client.py +++ b/packages/toolbox-langchain/tests/test_async_client.py @@ -348,5 +348,8 @@ async def test_init_with_client_headers( headers = {"X-Test-Header": "value"} AsyncToolboxClient(URL, session=mock_session, client_headers=headers) mock_core_client_constructor.assert_called_once_with( - url=URL, session=mock_session, client_headers=headers + url=URL, + session=mock_session, + client_headers=headers, + protocol=Protocol.MCP_v20250618, ) diff --git a/packages/toolbox-langchain/tests/test_client.py b/packages/toolbox-langchain/tests/test_client.py index da9dfcecf..dcd444073 100644 --- a/packages/toolbox-langchain/tests/test_client.py +++ b/packages/toolbox-langchain/tests/test_client.py @@ -490,7 +490,7 @@ def test_init_with_client_headers(self, mock_core_client_constructor): headers = {"X-Test-Header": "value"} ToolboxClient(URL, client_headers=headers) mock_core_client_constructor.assert_called_once_with( - url=URL, client_headers=headers + url=URL, client_headers=headers, protocol=Protocol.MCP_v20250618 ) @patch("toolbox_langchain.client.ToolboxCoreSyncClient") From 1243069cc47c0dfe162b3025e48cc12f986ac221 Mon Sep 17 00:00:00 2001 From: Twisha Bansal <58483338+twishabansal@users.noreply.github.com> Date: Wed, 10 Dec 2025 13:51:50 +0530 Subject: [PATCH 6/7] Update test_async_client.py --- packages/toolbox-langchain/tests/test_async_client.py | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/toolbox-langchain/tests/test_async_client.py b/packages/toolbox-langchain/tests/test_async_client.py index 04c9de1a7..ced88bbaa 100644 --- a/packages/toolbox-langchain/tests/test_async_client.py +++ b/packages/toolbox-langchain/tests/test_async_client.py @@ -19,6 +19,7 @@ from aiohttp import ClientSession from toolbox_core.client import ToolboxClient as ToolboxCoreClient from toolbox_core.protocol import ParameterSchema as CoreParameterSchema +from toolbox_core.protocol import Protocol from toolbox_core.tool import ToolboxTool as ToolboxCoreTool from toolbox_langchain.async_client import AsyncToolboxClient From 2884332c30b65d037585f35379164e46b60e7856 Mon Sep 17 00:00:00 2001 From: Twisha Bansal <58483338+twishabansal@users.noreply.github.com> Date: Wed, 10 Dec 2025 13:52:03 +0530 Subject: [PATCH 7/7] Update test_client.py --- packages/toolbox-langchain/tests/test_client.py | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/toolbox-langchain/tests/test_client.py b/packages/toolbox-langchain/tests/test_client.py index dcd444073..4ec8d52e2 100644 --- a/packages/toolbox-langchain/tests/test_client.py +++ b/packages/toolbox-langchain/tests/test_client.py @@ -17,6 +17,7 @@ import pytest from pydantic import BaseModel from toolbox_core.protocol import ParameterSchema as CoreParameterSchema +from toolbox_core.protocol import Protocol from toolbox_core.sync_tool import ToolboxSyncTool as ToolboxCoreSyncTool from toolbox_core.utils import params_to_pydantic_model