From c623398b3ff7f736bb59e40e71e60f7bda0e44ad Mon Sep 17 00:00:00 2001
From: "fern-api[bot]" <115122769+fern-api[bot]@users.noreply.github.com>
Date: Sun, 18 Oct 2026 19:44:34 +0000
Subject: [PATCH 1/3] [fern-generated] Update SDK
Generated by Fern
CLI Version: unknown
Generators:
- fernapi/fern-python-sdk: 4.25.5
---
reference.md | 8 ++++----
src/zep_cloud/core/client_wrapper.py | 4 ++--
src/zep_cloud/graph/client.py | 8 ++++----
src/zep_cloud/graph/episode/client.py | 4 ++--
src/zep_cloud/graph/episode/raw_client.py | 4 ++--
src/zep_cloud/graph/node/client.py | 4 ++--
src/zep_cloud/graph/node/raw_client.py | 4 ++--
src/zep_cloud/graph/raw_client.py | 8 ++++----
src/zep_cloud/types/comparison_operator.py | 2 +-
src/zep_cloud/types/entity_node.py | 12 ++++++------
src/zep_cloud/types/episode_metadata_filter.py | 5 ++++-
src/zep_cloud/types/search_filters.py | 14 +++++++++++++-
12 files changed, 46 insertions(+), 31 deletions(-)
diff --git a/reference.md b/reference.md
index dd4dc508..4d6decab 100644
--- a/reference.md
+++ b/reference.md
@@ -3191,7 +3191,7 @@ authenticated project. Optional `search` matches `graph_id`, `name`, and
Default `pageSize` is 50 (range 1–100). To list users, use
`user.list_ordered` instead. See the
[graph directory guide](/graph-directory) for pagination, relevance
-ordering, and Memory MCP exposure.
+ordering, and Context MCP exposure.
@@ -3504,7 +3504,7 @@ Valid values: none, 7_days, 30_days, 90_days. Default: none
**search_filters:** `typing.Optional[SearchFilters]`
Filters which edges/nodes participate in pattern detection.
-Reuses the same filter format as /graph/search.
+Reuses the same filter format as the `graph.search` SDK method.
@@ -7548,7 +7548,7 @@ client.graph.episode.update(
-
-Deprecated. Use edge and node listing with `filters.episode_uuids` instead. Returns nodes and edges mentioned in an episode, subject to an internal cap; responses reduced by that cap set the Zep-Truncated header.
+Deprecated. Use the edge list SDK methods `graph.edge.get_by_graph_id` or `graph.edge.get_by_user_id`, or the node list SDK methods `graph.node.get_by_graph_id` or `graph.node.get_by_user_id`, with the `filters.episode_uuids` filter. Returns nodes and edges mentioned in an episode, subject to an internal cap; responses reduced by that cap set the Zep-Truncated header.
@@ -7879,7 +7879,7 @@ Deprecated: prefer Cursor, the opaque cursor returned via the Zep-Next-Cursor re
-
-Deprecated. Use edge listing with `filters.connected_node_uuids`, or the neighbors endpoint (`POST /graph/node/{node_uuid}/neighbors`), instead. Returns all edges for a node, subject to an internal cap; responses reduced by that cap set the Zep-Truncated header.
+Deprecated. Use the edge list SDK methods `graph.edge.get_by_graph_id` or `graph.edge.get_by_user_id` with the `filters.connected_node_uuids` filter, or use the `graph.node.get_neighbors` SDK method. Returns all edges for a node, subject to an internal cap; responses reduced by that cap set the Zep-Truncated header.
diff --git a/src/zep_cloud/core/client_wrapper.py b/src/zep_cloud/core/client_wrapper.py
index a4c5cee4..5a850022 100644
--- a/src/zep_cloud/core/client_wrapper.py
+++ b/src/zep_cloud/core/client_wrapper.py
@@ -22,10 +22,10 @@ def __init__(
def get_headers(self) -> typing.Dict[str, str]:
headers: typing.Dict[str, str] = {
- "User-Agent": "zep-cloud/3.30.0",
+ "User-Agent": "zep-cloud/3.30.1",
"X-Fern-Language": "Python",
"X-Fern-SDK-Name": "zep-cloud",
- "X-Fern-SDK-Version": "3.30.0",
+ "X-Fern-SDK-Version": "3.30.1",
**(self.get_custom_headers() or {}),
}
headers["Authorization"] = f"Api-Key {self.api_key}"
diff --git a/src/zep_cloud/graph/client.py b/src/zep_cloud/graph/client.py
index 2d518b2b..8ce4a60a 100644
--- a/src/zep_cloud/graph/client.py
+++ b/src/zep_cloud/graph/client.py
@@ -739,7 +739,7 @@ def list_all(
Default `pageSize` is 50 (range 1–100). To list users, use
`user.list_ordered` instead. See the
[graph directory guide](/graph-directory) for pagination, relevance
- ordering, and Memory MCP exposure.
+ ordering, and Context MCP exposure.
Parameters
----------
@@ -894,7 +894,7 @@ def detect_patterns(
search_filters : typing.Optional[SearchFilters]
Filters which edges/nodes participate in pattern detection.
- Reuses the same filter format as /graph/search.
+ Reuses the same filter format as the `graph.search` SDK method.
seeds : typing.Optional[PatternSeeds]
Seed selection. If omitted, analyzes the entire graph. Mutually exclusive with query.
@@ -2046,7 +2046,7 @@ async def list_all(
Default `pageSize` is 50 (range 1–100). To list users, use
`user.list_ordered` instead. See the
[graph directory guide](/graph-directory) for pagination, relevance
- ordering, and Memory MCP exposure.
+ ordering, and Context MCP exposure.
Parameters
----------
@@ -2217,7 +2217,7 @@ async def detect_patterns(
search_filters : typing.Optional[SearchFilters]
Filters which edges/nodes participate in pattern detection.
- Reuses the same filter format as /graph/search.
+ Reuses the same filter format as the `graph.search` SDK method.
seeds : typing.Optional[PatternSeeds]
Seed selection. If omitted, analyzes the entire graph. Mutually exclusive with query.
diff --git a/src/zep_cloud/graph/episode/client.py b/src/zep_cloud/graph/episode/client.py
index cee42952..ca121ebf 100644
--- a/src/zep_cloud/graph/episode/client.py
+++ b/src/zep_cloud/graph/episode/client.py
@@ -369,7 +369,7 @@ def get_nodes_and_edges(
self, uuid_: str, *, request_options: typing.Optional[RequestOptions] = None
) -> EpisodeMentions:
"""
- Deprecated. Use edge and node listing with `filters.episode_uuids` instead. Returns nodes and edges mentioned in an episode, subject to an internal cap; responses reduced by that cap set the Zep-Truncated header.
+ Deprecated. Use the edge list SDK methods `graph.edge.get_by_graph_id` or `graph.edge.get_by_user_id`, or the node list SDK methods `graph.node.get_by_graph_id` or `graph.node.get_by_user_id`, with the `filters.episode_uuids` filter. Returns nodes and edges mentioned in an episode, subject to an internal cap; responses reduced by that cap set the Zep-Truncated header.
Parameters
----------
@@ -809,7 +809,7 @@ async def get_nodes_and_edges(
self, uuid_: str, *, request_options: typing.Optional[RequestOptions] = None
) -> EpisodeMentions:
"""
- Deprecated. Use edge and node listing with `filters.episode_uuids` instead. Returns nodes and edges mentioned in an episode, subject to an internal cap; responses reduced by that cap set the Zep-Truncated header.
+ Deprecated. Use the edge list SDK methods `graph.edge.get_by_graph_id` or `graph.edge.get_by_user_id`, or the node list SDK methods `graph.node.get_by_graph_id` or `graph.node.get_by_user_id`, with the `filters.episode_uuids` filter. Returns nodes and edges mentioned in an episode, subject to an internal cap; responses reduced by that cap set the Zep-Truncated header.
Parameters
----------
diff --git a/src/zep_cloud/graph/episode/raw_client.py b/src/zep_cloud/graph/episode/raw_client.py
index 1ae6fd2c..7ba38efb 100644
--- a/src/zep_cloud/graph/episode/raw_client.py
+++ b/src/zep_cloud/graph/episode/raw_client.py
@@ -641,7 +641,7 @@ def get_nodes_and_edges(
self, uuid_: str, *, request_options: typing.Optional[RequestOptions] = None
) -> HttpResponse[EpisodeMentions]:
"""
- Deprecated. Use edge and node listing with `filters.episode_uuids` instead. Returns nodes and edges mentioned in an episode, subject to an internal cap; responses reduced by that cap set the Zep-Truncated header.
+ Deprecated. Use the edge list SDK methods `graph.edge.get_by_graph_id` or `graph.edge.get_by_user_id`, or the node list SDK methods `graph.node.get_by_graph_id` or `graph.node.get_by_user_id`, with the `filters.episode_uuids` filter. Returns nodes and edges mentioned in an episode, subject to an internal cap; responses reduced by that cap set the Zep-Truncated header.
Parameters
----------
@@ -1321,7 +1321,7 @@ async def get_nodes_and_edges(
self, uuid_: str, *, request_options: typing.Optional[RequestOptions] = None
) -> AsyncHttpResponse[EpisodeMentions]:
"""
- Deprecated. Use edge and node listing with `filters.episode_uuids` instead. Returns nodes and edges mentioned in an episode, subject to an internal cap; responses reduced by that cap set the Zep-Truncated header.
+ Deprecated. Use the edge list SDK methods `graph.edge.get_by_graph_id` or `graph.edge.get_by_user_id`, or the node list SDK methods `graph.node.get_by_graph_id` or `graph.node.get_by_user_id`, with the `filters.episode_uuids` filter. Returns nodes and edges mentioned in an episode, subject to an internal cap; responses reduced by that cap set the Zep-Truncated header.
Parameters
----------
diff --git a/src/zep_cloud/graph/node/client.py b/src/zep_cloud/graph/node/client.py
index 01b44826..aebaee23 100644
--- a/src/zep_cloud/graph/node/client.py
+++ b/src/zep_cloud/graph/node/client.py
@@ -185,7 +185,7 @@ def get_edges(
self, node_uuid: str, *, request_options: typing.Optional[RequestOptions] = None
) -> typing.List[EntityEdge]:
"""
- Deprecated. Use edge listing with `filters.connected_node_uuids`, or the neighbors endpoint (`POST /graph/node/{node_uuid}/neighbors`), instead. Returns all edges for a node, subject to an internal cap; responses reduced by that cap set the Zep-Truncated header.
+ Deprecated. Use the edge list SDK methods `graph.edge.get_by_graph_id` or `graph.edge.get_by_user_id` with the `filters.connected_node_uuids` filter, or use the `graph.node.get_neighbors` SDK method. Returns all edges for a node, subject to an internal cap; responses reduced by that cap set the Zep-Truncated header.
Parameters
----------
@@ -628,7 +628,7 @@ async def get_edges(
self, node_uuid: str, *, request_options: typing.Optional[RequestOptions] = None
) -> typing.List[EntityEdge]:
"""
- Deprecated. Use edge listing with `filters.connected_node_uuids`, or the neighbors endpoint (`POST /graph/node/{node_uuid}/neighbors`), instead. Returns all edges for a node, subject to an internal cap; responses reduced by that cap set the Zep-Truncated header.
+ Deprecated. Use the edge list SDK methods `graph.edge.get_by_graph_id` or `graph.edge.get_by_user_id` with the `filters.connected_node_uuids` filter, or use the `graph.node.get_neighbors` SDK method. Returns all edges for a node, subject to an internal cap; responses reduced by that cap set the Zep-Truncated header.
Parameters
----------
diff --git a/src/zep_cloud/graph/node/raw_client.py b/src/zep_cloud/graph/node/raw_client.py
index 30cf724d..ce7b2ad1 100644
--- a/src/zep_cloud/graph/node/raw_client.py
+++ b/src/zep_cloud/graph/node/raw_client.py
@@ -251,7 +251,7 @@ def get_edges(
self, node_uuid: str, *, request_options: typing.Optional[RequestOptions] = None
) -> HttpResponse[typing.List[EntityEdge]]:
"""
- Deprecated. Use edge listing with `filters.connected_node_uuids`, or the neighbors endpoint (`POST /graph/node/{node_uuid}/neighbors`), instead. Returns all edges for a node, subject to an internal cap; responses reduced by that cap set the Zep-Truncated header.
+ Deprecated. Use the edge list SDK methods `graph.edge.get_by_graph_id` or `graph.edge.get_by_user_id` with the `filters.connected_node_uuids` filter, or use the `graph.node.get_neighbors` SDK method. Returns all edges for a node, subject to an internal cap; responses reduced by that cap set the Zep-Truncated header.
Parameters
----------
@@ -986,7 +986,7 @@ async def get_edges(
self, node_uuid: str, *, request_options: typing.Optional[RequestOptions] = None
) -> AsyncHttpResponse[typing.List[EntityEdge]]:
"""
- Deprecated. Use edge listing with `filters.connected_node_uuids`, or the neighbors endpoint (`POST /graph/node/{node_uuid}/neighbors`), instead. Returns all edges for a node, subject to an internal cap; responses reduced by that cap set the Zep-Truncated header.
+ Deprecated. Use the edge list SDK methods `graph.edge.get_by_graph_id` or `graph.edge.get_by_user_id` with the `filters.connected_node_uuids` filter, or use the `graph.node.get_neighbors` SDK method. Returns all edges for a node, subject to an internal cap; responses reduced by that cap set the Zep-Truncated header.
Parameters
----------
diff --git a/src/zep_cloud/graph/raw_client.py b/src/zep_cloud/graph/raw_client.py
index 221611e7..d7e86ebc 100644
--- a/src/zep_cloud/graph/raw_client.py
+++ b/src/zep_cloud/graph/raw_client.py
@@ -1185,7 +1185,7 @@ def list_all(
Default `pageSize` is 50 (range 1–100). To list users, use
`user.list_ordered` instead. See the
[graph directory guide](/graph-directory) for pagination, relevance
- ordering, and Memory MCP exposure.
+ ordering, and Context MCP exposure.
Parameters
----------
@@ -1405,7 +1405,7 @@ def detect_patterns(
search_filters : typing.Optional[SearchFilters]
Filters which edges/nodes participate in pattern detection.
- Reuses the same filter format as /graph/search.
+ Reuses the same filter format as the `graph.search` SDK method.
seeds : typing.Optional[PatternSeeds]
Seed selection. If omitted, analyzes the entire graph. Mutually exclusive with query.
@@ -3236,7 +3236,7 @@ async def list_all(
Default `pageSize` is 50 (range 1–100). To list users, use
`user.list_ordered` instead. See the
[graph directory guide](/graph-directory) for pagination, relevance
- ordering, and Memory MCP exposure.
+ ordering, and Context MCP exposure.
Parameters
----------
@@ -3456,7 +3456,7 @@ async def detect_patterns(
search_filters : typing.Optional[SearchFilters]
Filters which edges/nodes participate in pattern detection.
- Reuses the same filter format as /graph/search.
+ Reuses the same filter format as the `graph.search` SDK method.
seeds : typing.Optional[PatternSeeds]
Seed selection. If omitted, analyzes the entire graph. Mutually exclusive with query.
diff --git a/src/zep_cloud/types/comparison_operator.py b/src/zep_cloud/types/comparison_operator.py
index 8e1df62e..1c565dfd 100644
--- a/src/zep_cloud/types/comparison_operator.py
+++ b/src/zep_cloud/types/comparison_operator.py
@@ -3,5 +3,5 @@
import typing
ComparisonOperator = typing.Union[
- typing.Literal["=", "<>", ">", "<", ">=", "<=", "IS NULL", "is_null", "IS NOT NULL", "CONTAINS"], typing.Any
+ typing.Literal["=", "<>", ">", "<", ">=", "<=", "IS NULL", "is_null", "IS NOT NULL", "CONTAINS", "IN"], typing.Any
]
diff --git a/src/zep_cloud/types/entity_node.py b/src/zep_cloud/types/entity_node.py
index 488e0d37..ace625c4 100644
--- a/src/zep_cloud/types/entity_node.py
+++ b/src/zep_cloud/types/entity_node.py
@@ -29,16 +29,16 @@ class EntityNode(UniversalBaseModel):
episodes: typing.Optional[typing.List[str]] = pydantic.Field(default=None)
"""
The UUIDs of the live episodes that mention this node, newest first. The
- list is complete when `episodes_truncated` is false. The list is empty
- when the node has more than 100 source episodes; list episodes with the
- `mentioned_node_uuids` filter to read them.
+ list is complete when `episodes_truncated` is false. The list holds the
+ newest 100 when the node has more than 100 source episodes; list
+ episodes with the `mentioned_node_uuids` filter to read them all.
"""
episodes_truncated: typing.Optional[bool] = pydantic.Field(default=None)
"""
- True when the node has more than 100 source episodes, so `episodes` is
- empty, or when provenance is unavailable. False means `episodes` is the
- complete set.
+ True when the node has more than 100 source episodes, so `episodes` holds
+ only the newest 100, or when provenance is unavailable. False means
+ `episodes` is the complete set.
"""
labels: typing.Optional[typing.List[str]] = pydantic.Field(default=None)
diff --git a/src/zep_cloud/types/episode_metadata_filter.py b/src/zep_cloud/types/episode_metadata_filter.py
index db3c39e6..b19da6d6 100644
--- a/src/zep_cloud/types/episode_metadata_filter.py
+++ b/src/zep_cloud/types/episode_metadata_filter.py
@@ -10,7 +10,10 @@
class EpisodeMetadataFilter(UniversalBaseModel):
comparison_operator: ComparisonOperator = pydantic.Field()
"""
- Comparison operator: =, <>, >, <, >=, <=, IS NULL, IS NOT NULL, IN, CONTAINS
+ Comparison operator: =, <>, >, <, >=, <=, IS NULL, IS NOT NULL, CONTAINS, IN.
+ CONTAINS is a case-sensitive substring match on the stored value.
+ IN takes an array of up to 100 values and matches when the stored value equals one of them exactly.
+ v3 API: CONTAINS takes one comma-separated string and matches one of its items; IN is not accepted.
"""
property_name: str = pydantic.Field()
diff --git a/src/zep_cloud/types/search_filters.py b/src/zep_cloud/types/search_filters.py
index 50954d04..4a1c6f16 100644
--- a/src/zep_cloud/types/search_filters.py
+++ b/src/zep_cloud/types/search_filters.py
@@ -18,6 +18,14 @@ class SearchFilters(UniversalBaseModel):
requests whose result type contains no edges. Max 256 entries.
"""
+ content_policy_violated: typing.Optional[bool] = pydantic.Field(default=None)
+ """
+ Exact match on the complete content policy violation state of an
+ episode. Supported on the episodes scope while the project includes
+ flagged episodes. Zep applies it at hydration; it never reaches the
+ graph service.
+ """
+
created_at: typing.Optional[typing.List[typing.List[DateFilter]]] = pydantic.Field(default=None)
"""
2D array of date filters for the created_at field.
@@ -86,7 +94,11 @@ class SearchFilters(UniversalBaseModel):
property_filters: typing.Optional[typing.List[PropertyFilter]] = pydantic.Field(default=None)
"""
- List of property filters to apply to nodes and edges
+ List of property filters. Each filter compares one attribute value.
+ On a node search and on a node list, the filters match node attributes.
+ On an edge search and on an edge list, the filters match edge attributes
+ only. To get the edges of nodes that match a node attribute, first get
+ the matching nodes, then send their UUIDs in connected_node_uuids.
"""
source_node_uuids: typing.Optional[typing.List[str]] = pydantic.Field(default=None)
From 287ccaac36037e93160de2d93b87eda9a07d74f5 Mon Sep 17 00:00:00 2001
From: "fern-api[bot]" <115122769+fern-api[bot]@users.noreply.github.com>
Date: Sun, 18 Oct 2026 19:44:35 +0000
Subject: [PATCH 2/3] [fern-replay] advance lockfile
---
.fern/replay.lock | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/.fern/replay.lock b/.fern/replay.lock
index 158dc985..a79c93c0 100644
--- a/.fern/replay.lock
+++ b/.fern/replay.lock
@@ -36,5 +36,11 @@ generations:
cli_version: unknown
generator_versions:
fernapi/fern-python-sdk: 4.25.5
-current_generation: 01282ecde6f53105beb07e91cdfba1119005cdab
+ - commit_sha: 45c1cacbf594b3ed1185756a9b93272b8330c687
+ tree_hash: 8ddcff543bfc1374ad77db2255409f5f566062df
+ timestamp: 2026-10-18T19:44:32.089Z
+ cli_version: unknown
+ generator_versions:
+ fernapi/fern-python-sdk: 4.25.5
+current_generation: 45c1cacbf594b3ed1185756a9b93272b8330c687
patches: []
From 8ad929979a00a5776648d022389e627ecf16c311 Mon Sep 17 00:00:00 2001
From: "zep-sdk-release-bot[bot]"
Date: Sun, 18 Oct 2026 19:44:43 +0000
Subject: [PATCH 3/3] chore: bump SDK version to 3.30.1
---
pyproject.toml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/pyproject.toml b/pyproject.toml
index 2f42898c..814efd20 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -1,10 +1,10 @@
[project]
name = "zep-cloud"
-version = "3.30.0"
+version = "3.30.1"
[tool.poetry]
name = "zep-cloud"
-version = "3.30.0"
+version = "3.30.1"
description = ""
readme = "README.md"
authors = []