Skip to content

Commit 76a2a57

Browse files
claude[bot]jope-bm
andcommitted
fix: Add ISO datetime serialization to MCP schema models
Fixes MCP client schema validation failures for build_context tool by ensuring datetime fields are serialized as ISO format strings. MCP clients expect "date-time" format validation, which requires datetime objects to be serialized as ISO strings (e.g. "2023-12-08T10:30:00") rather than Python datetime objects. Changes: - Added ConfigDict with json_encoders to EntitySummary, RelationSummary, ObservationSummary, and MemoryMetadata models - Ensures datetime fields serialize as dt.isoformat() strings Resolves persistent schema validation issues reported in #263 Generated with [Claude Code](https://claude.ai/code) Co-authored-by: jope-bm <jope-bm@users.noreply.github.com>
1 parent f3d8d8d commit 76a2a57

1 file changed

Lines changed: 9 additions & 1 deletion

File tree

src/basic_memory/schemas/memory.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
from typing import List, Optional, Annotated, Sequence, Literal, Union
55

66
from annotated_types import MinLen, MaxLen
7-
from pydantic import BaseModel, Field, BeforeValidator, TypeAdapter
7+
from pydantic import BaseModel, Field, BeforeValidator, TypeAdapter, ConfigDict
88

99
from basic_memory.schemas.search import SearchItemType
1010

@@ -117,6 +117,8 @@ def memory_url_path(url: memory_url) -> str: # pyright: ignore
117117

118118
class EntitySummary(BaseModel):
119119
"""Simplified entity representation."""
120+
121+
model_config = ConfigDict(json_encoders={datetime: lambda dt: dt.isoformat()})
120122

121123
type: Literal["entity"] = "entity"
122124
permalink: Optional[str]
@@ -128,6 +130,8 @@ class EntitySummary(BaseModel):
128130

129131
class RelationSummary(BaseModel):
130132
"""Simplified relation representation."""
133+
134+
model_config = ConfigDict(json_encoders={datetime: lambda dt: dt.isoformat()})
131135

132136
type: Literal["relation"] = "relation"
133137
title: str
@@ -141,6 +145,8 @@ class RelationSummary(BaseModel):
141145

142146
class ObservationSummary(BaseModel):
143147
"""Simplified observation representation."""
148+
149+
model_config = ConfigDict(json_encoders={datetime: lambda dt: dt.isoformat()})
144150

145151
type: Literal["observation"] = "observation"
146152
title: str
@@ -153,6 +159,8 @@ class ObservationSummary(BaseModel):
153159

154160
class MemoryMetadata(BaseModel):
155161
"""Simplified response metadata."""
162+
163+
model_config = ConfigDict(json_encoders={datetime: lambda dt: dt.isoformat()})
156164

157165
uri: Optional[str] = None
158166
types: Optional[List[SearchItemType]] = None

0 commit comments

Comments
 (0)