From 27c08b439527ceddf314c61a8dcb2f840c861c1b Mon Sep 17 00:00:00 2001 From: Udit Marolia Date: Tue, 12 May 2026 14:38:31 -0700 Subject: [PATCH 1/2] refactor(telemetry): remove extension_name and tool_prefix params from call_extension_tool --- src/sap_cloud_sdk/core/telemetry/extensions.py | 17 +++++------------ tests/core/unit/telemetry/test_extensions.py | 6 +----- 2 files changed, 6 insertions(+), 17 deletions(-) diff --git a/src/sap_cloud_sdk/core/telemetry/extensions.py b/src/sap_cloud_sdk/core/telemetry/extensions.py index 495692a..44ec5a6 100644 --- a/src/sap_cloud_sdk/core/telemetry/extensions.py +++ b/src/sap_cloud_sdk/core/telemetry/extensions.py @@ -417,10 +417,8 @@ async def call_extension_tool( mcp_client: Any, tool_name: str, args: dict[str, Any], - extension_name: str, capability: str = "default", source_mapping: dict[str, Any] | None = None, - tool_prefix: str = "", ) -> Any: """Call an MCP tool with telemetry instrumentation. @@ -432,23 +430,18 @@ async def call_extension_tool( Args: mcp_client: The MCP client session connected to the tool's server. Must have an async ``call_tool(name, args)`` method. - tool_name: The raw MCP tool name (before any prefixing). + tool_name: The tool name used as the lookup key in *source_mapping* + and passed to ``mcp_client.call_tool()``. args: Dictionary of arguments to pass to the tool. - extension_name: Human-readable name of the extension. Used as - fallback when *source_mapping* does not contain the tool. capability: Extension capability ID (default: ``"default"``). - source_mapping: Optional mapping of prefixed tool names to source - info objects (from ``ext_impl.source.tools``). - tool_prefix: The tool prefix (e.g. ``"sap_mcp_servicenow_v1_"``). - Used to reconstruct the lookup key for *source_mapping*. + source_mapping: Optional mapping of tool names to source info + objects (from ``ext_impl.source.tools``). Returns: The tool's response from the MCP server. """ - lookup_key = tool_prefix + tool_name if tool_prefix else tool_name - resolved_name, resolved_id, resolved_version, resolved_url, resolved_solution_id = ( - resolve_source_info(lookup_key, source_mapping, extension_name) + resolve_source_info(tool_name, source_mapping, "unknown") ) attrs = build_extension_span_attributes( diff --git a/tests/core/unit/telemetry/test_extensions.py b/tests/core/unit/telemetry/test_extensions.py index 5fc6552..8ee8592 100644 --- a/tests/core/unit/telemetry/test_extensions.py +++ b/tests/core/unit/telemetry/test_extensions.py @@ -902,7 +902,6 @@ async def _run(): mcp_client=mock_client, tool_name="create_ticket", args={"title": "Bug"}, - extension_name="ServiceNow", ) assert result == "result-123" mock_client.call_tool.assert_awaited_once_with( @@ -921,7 +920,7 @@ class FakeSourceInfo: extension_id: str extension_version: str - mapping = {"prefix_tool1": FakeSourceInfo("Mapped Ext", "uuid-m", "7")} + mapping = {"tool1": FakeSourceInfo("Mapped Ext", "uuid-m", "7")} mock_client = AsyncMock() mock_client.call_tool.return_value = "ok" @@ -930,9 +929,7 @@ class FakeSourceInfo: mcp_client=mock_client, tool_name="tool1", args={}, - extension_name="Fallback", source_mapping=mapping, - tool_prefix="prefix_", ) assert result == "ok" @@ -949,7 +946,6 @@ async def _run(): mcp_client=mock_client, tool_name="t", args={}, - extension_name="E", ) count, _ = get_tool_call_metrics() assert count == 1 # Duration still recorded From 355d7e3ca4971010bdc3619b145f79ce44f4e5e9 Mon Sep 17 00:00:00 2001 From: Udit Marolia <55039593+mudit777@users.noreply.github.com> Date: Fri, 15 May 2026 10:49:18 -0700 Subject: [PATCH 2/2] feat: update version --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 4a9bd6f..c57ff76 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "sap-cloud-sdk" -version = "0.19.0" +version = "0.20.0" description = "SAP Cloud SDK for Python" readme = "README.md" license = "Apache-2.0"