append_to_note
ChatGPTAdd text to the end of a note. Existing text is kept. If the note does not exist it is created with a # <name> title line first. Use for logs, journals and running lists. Set position to start to insert at the top (after any frontmatter) instead. To change existing text use edit_note. To replace the whole note use write_note.
create_folder
ChatGPTCreate an explicit empty folder in the personal knowledge base. Use to scaffold folder structure before placing notes. Idempotent: calling with an existing folder name succeeds without creating duplicates.
create_note
ChatGPTCreate a new note with automatic folder placement. If suggested_folder is omitted, the note is placed automatically. Never overwrites: fails if a note already exists at the resulting path.
delete_attachment
ChatGPTPermanently delete a single attachment (image, PDF, or other binary file) by path; the stored file is removed and cannot be restored. Syncs the delete to all connected Obsidian devices. Deleting a path with no attachment succeeds and reports deleted: false. For notes use delete_note; to remove a whole folder use delete_folder.
delete_folder
ChatGPTDelete a folder. Empty-only by default: if the folder contains notes or attachments, the call is refused and reports the counts. Pass recursive: true to delete the folder and everything under it. Syncs to all connected devices.
delete_note
ChatGPTPermanently delete one note by path; the deletion syncs to all connected Obsidian devices. Deleting a path that holds no note succeeds and reports deleted: false. To remove a whole folder use delete_folder. To move a note instead use rename_note. For an image, PDF, or other binary file use delete_attachment.
edit_note
ChatGPTChange part of an existing note. mode replace_text finds exact text and replaces it (first occurrence by default); mode replace_section replaces everything under one heading; mode insert_section adds content under a heading, at the start or end of that section, keeping what is there. Fails without writing if the text or heading is not found, or if expected_replacements does not match. To add text at the top or bottom of the note use append_to_note. To rewrite the whole note use write_note.
get_attachment_upload_target
ChatGPTGet the endpoint and this account's limits for uploading an attachment (image, PDF, audio, video). Returns a URL to POST the file to yourself using the credential already authorizing this connection; the bytes do not pass through this tool. Call before uploading to learn the size cap and which file types the plan allows.
get_notes
ChatGPTRetrieve the full content of multiple notes in one call (1-20 paths). Also reads a single note: pass one path. Use to inventory a folder (list_folder then get_notes) or to read a batch of search results without N round-trips. Missing paths are reported inline. To save tokens on long notes, pass outline: true for the heading list only, or section with one path to read just that heading's section. Pass include_links: true to also get, per note, the notes linking to it, the notes it links to, and its links that point at no existing note.
list_fields
ChatGPTList every frontmatter field used in the vault: its name, value kinds (string, boolean, number, date), how many notes carry it, whether notes hold a list of values, the number or date range, and the most used values with counts. Call this before filtering search_notes by frontmatter: pass a field's name as the key of a search_notes fields filter, with one of its values (exact match) or a bound inside its range.
list_folder
ChatGPTList the notes, attachments, and subfolders directly inside one folder. Pass an empty string for the vault root. Set recursive: true to list every descendant folder (with note counts) instead of just the direct ones. To see every folder in the vault with counts call list_folder with recursive: true on the root. To find notes by content use search_notes.
list_tags
ChatGPTList all tags in the personal knowledge base with document counts. Use to explore what topics exist in the vault.
list_vaults
ChatGPTList your vaults with their IDs, names and slugs. Call this first when you own more than one vault: every other vault-scoped tool needs a vault_id (a name or ID from this list) to know which vault to act on. search_notes without one searches all vaults.
move_attachment
ChatGPTMove or rename a single attachment (image, PDF, or other binary file) to a new path. Syncs to all connected Obsidian devices. The file's content is unchanged; only its path moves.
rename_folder
ChatGPTRename or move a folder, including every note, attachment and subfolder inside it. All affected notes are reindexed and synced. To move a single note use rename_note.
rename_note
ChatGPTRename or move one note to a new path; the change syncs to all Obsidian devices and links pointing at it are rewritten in the background. Fails if a note already exists at the new path. To move a whole folder use rename_folder. To move an image or PDF use move_attachment.
restore_deleted
ChatGPTUndo a delete_note, delete_folder or delete_attachment call: pass the delete_op_id it returned and everything that call removed comes back at its old path, while still in trash. An item whose path is now taken by another file, or whose trash window has passed, is skipped and listed. Safe to repeat: a second call restores nothing more. Refused if restoring would pass a plan limit.
search_notes
ChatGPTSearch your personal knowledge base. Finds relevant notes using semantic search. Searches across ALL your vaults by default; pass vault_id to limit to one. Omit query to list the most recently updated notes instead. Pass similar_to with a note path, instead of query, to find notes like that one. Use when the user asks about their notes, vault, knowledge, or memory.
send_feedback
ChatGPTSend feedback to the Engram team: a bug, an idea, something confusing, something that works well, or a capability Engram lacks. Use it when the user asks to send feedback, or on your own when an Engram tool failed, gave a poor result, or could not do what was needed. Never include note content, note titles, file paths or personal data: describe the problem in general terms.
suggest_folder
ChatGPTFind the best existing folder for a new note based on a description of its content. Call before create_note when the right folder is unclear.
write_note
ChatGPTReplace a note's entire content, or create the note if it does not exist. Saves, indexes for search, and syncs to Obsidian. Overwrites whatever the note held. To add text without touching existing content use append_to_note. To change one passage, or one heading's section, use edit_note. To create a note with no risk of overwriting an existing one use create_note; create_note takes a title and picks the folder, not a path.