@@ -189,34 +189,53 @@ class UpdateMemoryTool(Mem0ToolBase):
189189 "properties" : {
190190 "memory_id" : {"type" : "string" },
191191 "text" : {"type" : "string" },
192- "metadata" : {"type" : "object" }
192+ "metadata" : {"type" : "object" },
193+ "user_id" : {"type" : "string" }
193194 },
194195 "required" : ["memory_id" ]
195196 }
196197
197- async def execute (self , memory_id : str , text : str = None , metadata : dict = None ) -> ToolResult :
198+ async def execute (self , memory_id : str , text : str = None , metadata : dict = None , ** kwargs ) -> ToolResult :
198199 if not text and not metadata :
199200 return ToolResult (error = "Provide text or metadata to update." )
200201
201202 client = self ._get_client ()
202203 if not client : return ToolResult (error = "Client not ready" )
203204
204- return await self ._safe_run (client .update , memory_id = memory_id , text = text , metadata = metadata )
205+ # Build params but exclude metadata to avoid conflict with explicit parameter
206+ params = self ._build_params (metadata = None , ** kwargs )
207+ # Merge explicit metadata with params metadata if both exist
208+ if metadata :
209+ if "metadata" in params :
210+ params ["metadata" ] = {** params ["metadata" ], ** metadata }
211+ else :
212+ params ["metadata" ] = metadata
213+
214+ # MemoryClient.update() only accepts memory_id, text, metadata
215+ # Remove unsupported parameters like user_id, collection, filters
216+ update_params = {k : v for k , v in params .items () if k in ("metadata" ,)}
217+
218+ return await self ._safe_run (client .update , memory_id = memory_id , text = text , ** update_params )
205219
206220
207221class DeleteMemoryTool (Mem0ToolBase ):
208222 name : str = "delete_memory"
209223 description : str = "Delete a stored memory by ID."
210224 parameters : dict = {
211225 "type" : "object" ,
212- "properties" : {"memory_id" : {"type" : "string" }},
226+ "properties" : {
227+ "memory_id" : {"type" : "string" },
228+ "user_id" : {"type" : "string" }
229+ },
213230 "required" : ["memory_id" ]
214231 }
215232
216- async def execute (self , memory_id : str ) -> ToolResult :
233+ async def execute (self , memory_id : str , ** kwargs ) -> ToolResult :
217234 client = self ._get_client ()
218235 if not client : return ToolResult (error = "Client not ready" )
219236
237+ # MemoryClient.delete() only accepts memory_id, not user_id or other params
238+ # So we don't pass any additional params to delete()
220239 return await self ._safe_run (client .delete , memory_id = memory_id )
221240
222241__all__ = [
0 commit comments