Summary
edit_note does not parse workspace-qualified permalinks when passed as the identifier parameter. Instead of routing to the correct workspace, it treats the full qualified permalink as a literal file path in the default (personal) workspace and creates a new note there.
Reproduction
- Create a note in an org workspace — returns permalink like
basic-memory-xxx/project/path/note-name
- Call
edit_note with that full permalink as the identifier:
edit_note(
identifier="basic-memory-xxx/project/path/note-name",
operation="append",
content="new content"
)
- Expected: Edits the existing note in the org workspace
- Actual: Creates a new note in the personal/default workspace at path
basic-memory-xxx/project/path/note-name.md
Workaround
Using project_id + a short (unqualified) identifier works correctly:
edit_note(
identifier="path/note-name",
project_id="<uuid>",
operation="append",
content="new content"
)
Context
This is the same class of bug as #799 (build_context workspace routing). read_note and delete_note correctly parse workspace-qualified permalinks, but edit_note does not.
Environment
- Production (verified 2025-05-08)
- Also likely affects development
Summary
edit_notedoes not parse workspace-qualified permalinks when passed as theidentifierparameter. Instead of routing to the correct workspace, it treats the full qualified permalink as a literal file path in the default (personal) workspace and creates a new note there.Reproduction
basic-memory-xxx/project/path/note-nameedit_notewith that full permalink as theidentifier:basic-memory-xxx/project/path/note-name.mdWorkaround
Using
project_id+ a short (unqualified) identifier works correctly:Context
This is the same class of bug as #799 (build_context workspace routing).
read_noteanddelete_notecorrectly parse workspace-qualified permalinks, butedit_notedoes not.Environment