Bulk forget
forget currently accepts a single memory ID. When cleaning up test data or archiving a batch of related memories, this requires N separate tool calls.
Proposed: Accept an array of IDs:
{"memory_ids": ["id1", "id2", "id3"]}
Keep the existing single-ID interface for backwards compatibility.
Negative concept filters
Recall currently supports positive concept filtering (concepts: ["retrieval"]), but there's no way to exclude concepts. When searching for retrieval-related memories, training results often surface because they share concepts.
Proposed: Add exclude_concepts parameter:
{"query": "retrieval ranking", "concepts": ["retrieval"], "exclude_concepts": ["training", "sweep"]}
Filter out any memory whose concepts overlap with the exclude list before ranking.
Why together
Both are MCP tool ergonomics improvements that touch internal/mcp/server.go handler logic and would be natural to ship in one PR.
Bulk forget
forgetcurrently accepts a single memory ID. When cleaning up test data or archiving a batch of related memories, this requires N separate tool calls.Proposed: Accept an array of IDs:
{"memory_ids": ["id1", "id2", "id3"]}Keep the existing single-ID interface for backwards compatibility.
Negative concept filters
Recall currently supports positive concept filtering (
concepts: ["retrieval"]), but there's no way to exclude concepts. When searching for retrieval-related memories, training results often surface because they share concepts.Proposed: Add
exclude_conceptsparameter:{"query": "retrieval ranking", "concepts": ["retrieval"], "exclude_concepts": ["training", "sweep"]}Filter out any memory whose concepts overlap with the exclude list before ranking.
Why together
Both are MCP tool ergonomics improvements that touch
internal/mcp/server.gohandler logic and would be natural to ship in one PR.