diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 75e8a66..4336a6c 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "3.14.0" + ".": "3.15.0" } \ No newline at end of file diff --git a/.stats.yml b/.stats.yml index f131276..82af974 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 26 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/supermemory--inc%2Fsupermemory-new-00c63196a0d368b4f32efcf1bbd2d594fdc8a42a0c0a58a8e316a3ab03ac10a6.yml -openapi_spec_hash: 012afff66351582e55dfd692397f2a23 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/supermemory--inc%2Fsupermemory-new-b1d58ccf9003b376f42b961813f18a80e7de4872ed328a846645a7b2a0c68551.yml +openapi_spec_hash: 4750dcce77e6b76b240f058d9ecd06ad config_hash: a69d5c502ffbfb11a2c8ec61ca5823e9 diff --git a/CHANGELOG.md b/CHANGELOG.md index b714bf1..4169bf9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,18 @@ # Changelog +## 3.15.0 (2026-01-09) + +Full Changelog: [v3.14.0...v3.15.0](https://github.com/supermemoryai/python-sdk/compare/v3.14.0...v3.15.0) + +### Features + +* **api:** api update ([8df190c](https://github.com/supermemoryai/python-sdk/commit/8df190ce72d0340f459ec64e3a8463025e33c3af)) + + +### Documentation + +* prominently feature MCP server setup in root SDK readmes ([a1b1bbe](https://github.com/supermemoryai/python-sdk/commit/a1b1bbe66bff136314597e68504a404e2dea68ba)) + ## 3.14.0 (2026-01-05) Full Changelog: [v3.13.0...v3.14.0](https://github.com/supermemoryai/python-sdk/compare/v3.13.0...v3.14.0) diff --git a/README.md b/README.md index f634745..c0ca30a 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,15 @@ and offers both synchronous and asynchronous clients powered by [httpx](https:// It is generated with [Stainless](https://www.stainless.com/). +## MCP Server + +Use the Supermemory MCP Server to enable AI assistants to interact with this API, allowing them to explore endpoints, make test requests, and use documentation to help integrate this SDK into your application. + +[![Add to Cursor](https://cursor.com/deeplink/mcp-install-dark.svg)](https://cursor.com/en-US/install-mcp?name=supermemory-mcp&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsInN1cGVybWVtb3J5LW1jcCJdfQ) +[![Install in VS Code](https://img.shields.io/badge/_-Add_to_VS_Code-blue?style=for-the-badge&logo=data:image/svg%2bxml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9Im5vbmUiIHZpZXdCb3g9IjAgMCA0MCA0MCI+PHBhdGggZmlsbD0iI0VFRSIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMzAuMjM1IDM5Ljg4NGEyLjQ5MSAyLjQ5MSAwIDAgMS0xLjc4MS0uNzNMMTIuNyAyNC43OGwtMy40NiAyLjYyNC0zLjQwNiAyLjU4MmExLjY2NSAxLjY2NSAwIDAgMS0xLjA4Mi4zMzggMS42NjQgMS42NjQgMCAwIDEtMS4wNDYtLjQzMWwtMi4yLTJhMS42NjYgMS42NjYgMCAwIDEgMC0yLjQ2M0w3LjQ1OCAyMCA0LjY3IDE3LjQ1MyAxLjUwNyAxNC41N2ExLjY2NSAxLjY2NSAwIDAgMSAwLTIuNDYzbDIuMi0yYTEuNjY1IDEuNjY1IDAgMCAxIDIuMTMtLjA5N2w2Ljg2MyA1LjIwOUwyOC40NTIuODQ0YTIuNDg4IDIuNDg4IDAgMCAxIDEuODQxLS43MjljLjM1MS4wMDkuNjk5LjA5MSAxLjAxOS4yNDVsOC4yMzYgMy45NjFhMi41IDIuNSAwIDAgMSAxLjQxNSAyLjI1M3YuMDk5LS4wNDVWMzMuMzd2LS4wNDUuMDk1YTIuNTAxIDIuNTAxIDAgMCAxLTEuNDE2IDIuMjU3bC04LjIzNSAzLjk2MWEyLjQ5MiAyLjQ5MiAwIDAgMS0xLjA3Ny4yNDZabS43MTYtMjguOTQ3LTExLjk0OCA5LjA2MiAxMS45NTIgOS4wNjUtLjAwNC0xOC4xMjdaIi8+PC9zdmc+)](https://vscode.stainless.com/mcp/%7B%22name%22%3A%22supermemory-mcp%22%2C%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22supermemory-mcp%22%5D%7D) + +> Note: You may need to set environment variables in your MCP client. + ## Documentation The REST API documentation can be found on [docs.supermemory.ai](https://docs.supermemory.ai). The full API of this library can be found in [api.md](api.md). diff --git a/pyproject.toml b/pyproject.toml index 7b2a15e..79ed1f0 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "supermemory" -version = "3.14.0" +version = "3.15.0" description = "The official Python library for the supermemory API" dynamic = ["readme"] license = "Apache-2.0" diff --git a/src/supermemory/_client.py b/src/supermemory/_client.py index cd4b45e..3b78597 100644 --- a/src/supermemory/_client.py +++ b/src/supermemory/_client.py @@ -294,6 +294,7 @@ def profile( self, *, container_tag: str, + threshold: float, q: str | Omit = omit, # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. # The extra values given here take precedence over values defined on the client or passed to this method. @@ -309,6 +310,9 @@ def profile( container_tag: Tag to filter the profile by. This can be an ID for your user, a project ID, or any other identifier you wish to use to filter memories. + threshold: Threshold for search results. Only results with a score above this threshold + will be included. + q: Optional search query to include search results in the response extra_headers: Send extra headers @@ -324,6 +328,7 @@ def profile( body=maybe_transform( { "container_tag": container_tag, + "threshold": threshold, "q": q, }, client_profile_params.ClientProfileParams, @@ -592,6 +597,7 @@ async def profile( self, *, container_tag: str, + threshold: float, q: str | Omit = omit, # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. # The extra values given here take precedence over values defined on the client or passed to this method. @@ -607,6 +613,9 @@ async def profile( container_tag: Tag to filter the profile by. This can be an ID for your user, a project ID, or any other identifier you wish to use to filter memories. + threshold: Threshold for search results. Only results with a score above this threshold + will be included. + q: Optional search query to include search results in the response extra_headers: Send extra headers @@ -622,6 +631,7 @@ async def profile( body=await async_maybe_transform( { "container_tag": container_tag, + "threshold": threshold, "q": q, }, client_profile_params.ClientProfileParams, diff --git a/src/supermemory/_version.py b/src/supermemory/_version.py index 1ea189c..29ebf0e 100644 --- a/src/supermemory/_version.py +++ b/src/supermemory/_version.py @@ -1,4 +1,4 @@ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. __title__ = "supermemory" -__version__ = "3.14.0" # x-release-please-version +__version__ = "3.15.0" # x-release-please-version diff --git a/src/supermemory/types/client_profile_params.py b/src/supermemory/types/client_profile_params.py index 428b62a..bc5c059 100644 --- a/src/supermemory/types/client_profile_params.py +++ b/src/supermemory/types/client_profile_params.py @@ -17,5 +17,11 @@ class ClientProfileParams(TypedDict, total=False): to use to filter memories. """ + threshold: Required[float] + """Threshold for search results. + + Only results with a score above this threshold will be included. + """ + q: str """Optional search query to include search results in the response""" diff --git a/tests/api_resources/test_client.py b/tests/api_resources/test_client.py index 37b1c63..f543d15 100644 --- a/tests/api_resources/test_client.py +++ b/tests/api_resources/test_client.py @@ -68,6 +68,7 @@ def test_streaming_response_add(self, client: Supermemory) -> None: def test_method_profile(self, client: Supermemory) -> None: client_ = client.profile( container_tag="containerTag", + threshold=0, ) assert_matches_type(ProfileResponse, client_, path=["response"]) @@ -76,6 +77,7 @@ def test_method_profile(self, client: Supermemory) -> None: def test_method_profile_with_all_params(self, client: Supermemory) -> None: client_ = client.profile( container_tag="containerTag", + threshold=0, q="q", ) assert_matches_type(ProfileResponse, client_, path=["response"]) @@ -85,6 +87,7 @@ def test_method_profile_with_all_params(self, client: Supermemory) -> None: def test_raw_response_profile(self, client: Supermemory) -> None: response = client.with_raw_response.profile( container_tag="containerTag", + threshold=0, ) assert response.is_closed is True @@ -97,6 +100,7 @@ def test_raw_response_profile(self, client: Supermemory) -> None: def test_streaming_response_profile(self, client: Supermemory) -> None: with client.with_streaming_response.profile( container_tag="containerTag", + threshold=0, ) as response: assert not response.is_closed assert response.http_request.headers.get("X-Stainless-Lang") == "python" @@ -163,6 +167,7 @@ async def test_streaming_response_add(self, async_client: AsyncSupermemory) -> N async def test_method_profile(self, async_client: AsyncSupermemory) -> None: client = await async_client.profile( container_tag="containerTag", + threshold=0, ) assert_matches_type(ProfileResponse, client, path=["response"]) @@ -171,6 +176,7 @@ async def test_method_profile(self, async_client: AsyncSupermemory) -> None: async def test_method_profile_with_all_params(self, async_client: AsyncSupermemory) -> None: client = await async_client.profile( container_tag="containerTag", + threshold=0, q="q", ) assert_matches_type(ProfileResponse, client, path=["response"]) @@ -180,6 +186,7 @@ async def test_method_profile_with_all_params(self, async_client: AsyncSupermemo async def test_raw_response_profile(self, async_client: AsyncSupermemory) -> None: response = await async_client.with_raw_response.profile( container_tag="containerTag", + threshold=0, ) assert response.is_closed is True @@ -192,6 +199,7 @@ async def test_raw_response_profile(self, async_client: AsyncSupermemory) -> Non async def test_streaming_response_profile(self, async_client: AsyncSupermemory) -> None: async with async_client.with_streaming_response.profile( container_tag="containerTag", + threshold=0, ) as response: assert not response.is_closed assert response.http_request.headers.get("X-Stainless-Lang") == "python"