Notem
By Wael Mansour
Overview
Notem connects ChatGPT to the notes you stored in your Notem account. You can use it to: • Search your notes by keywords or meaning and filter results by date or tag • Read the full contents of a saved note • Retrieve text from saved voice-note transcriptions • Create new notes • Add content to or update existing notes • Add or remove tags • Delete notes Your Notem account can contain saved text, links, screenshots, voice-note transcriptions, project notes, code snippets, research, feedback, and other information you previously captured. Example requests: • “Find my notes about next video's inspiration.” • “What notes did I save last Tuesday?” • “Find the beta-user feedback I saved.” • “Save this plan as a new note tagged roadmap.” • “Add this decision to my existing pricing note.” A Notem account is required. When you connect Notem, ChatGPT can access the notes available to your authenticated Notem account.
Tools
create_note
ChatGPTparent_id to continue an existing thread instead of starting a new note — threads are flat, so continuing a continuation continues the thread it belongs to. Pass a client_id uuid you generate to make the call idempotent: retrying with the same client_id returns the note the first attempt created rather than a duplicate.delete_note
ChatGPTget_note
ChatGPTthread: the continuations appended to it, oldest first. label identifies it, user_text is user-authored, and source is the single canonical home for imported context. source.image_available tells you whether get_note_asset can fetch its preview. Body images appear as ![photo]; retrieve bytes with get_note_asset. A note with has_photos=true cannot be rewritten whole, so patch it with replace_in_note or append_to_note.get_note_asset
ChatGPTlist_recent_notes
ChatGPTuser_text is only text deliberately written by the user; imported page or social-post copy is source metadata. label names the note even when it has no title — use it when showing a note to a human. updated_at is what you pass back as if_updated_at when you write.list_tags
ChatGPTreplace_in_note
ChatGPTfind is literal text, not a regex or a pattern. Ticking a checkbox is find "- [ ] Buy milk", replace "- [x] Buy milk". If the text appears more than once the call is rejected rather than guessing — add surrounding text or pass all=true. Prefer this over update_note for any edit smaller than the whole note.search_notes
ChatGPTmatched field says which one answered, so a relaxed or semantic result is never mistaken for an exact one. Pin the strategy with mode="keyword" (every word must appear; never widens), "semantic" (meaning only) or "hybrid" (both, fused). Source, date, photo and thread filters compose with the text query and tags. Filter by tag with tags, which is the right tool for a request like "my #bug notes". An empty result carries hints: what the collection actually contains and which query to try next — read them instead of guessing another wording. Bodies are omitted unless you pass full=true; complete imported source metadata is omitted with them. Compact notes come back as { id, label, user_text, tags, source, root_id, parent_id, is_thread_head, thread_count, updated_at, … }. user_text is only text deliberately written by the user; imported page or social-post copy is source metadata. label names the note even when it has no title — use it when showing a note to a human. updated_at is what you pass back as if_updated_at when you write.tag_note
ChatGPTuntag_note
ChatGPTupdate_note
ChatGPTclear (passing "" is not enough). For anything short of a full rewrite use replace_in_note — it cannot mangle the text it is not touching. Rewriting the body of a note that embeds a photo is refused, because MCP only ever showed you ![photo].Capabilities
Example Prompts
Click any prompt to copy it.






