Part 1 — Using Mnemo
Get started
Create an account
- Open the app and choose Get started / Sign up.
- Enter your name, email, and a password (at least 8 characters).
- If the app asks you to verify your email, check your inbox and follow the link before continuing.
- Create a workspace, or join one you’ve been invited to.
Already have an account? Use Log in. Forgot your password? Use Forgot password? on the login screen (sends a reset email when outbound email is configured).
You can change your password and optionally enable two-factor authentication under Settings → Profile (details in Part 2). When 2FA is on, login asks for a code from your authenticator app after the password.
Workspaces
A workspace is your team’s shared home for pages, whiteboards, and databases.
- New workspace — pick a name; Mnemo creates a short URL slug for you.
- Join a team — an admin can add your email. If you already have an account, the workspace appears under Shared with you in the workspace switcher (refresh if it was already open). If you’re new, they’ll share an invite link — sign up with that email, then accept.
Mnemo remembers the last page you had open and brings you back next time.
Around the workspace
Everything lives in the sidebar, top to bottom:
| Area | What it’s for |
|---|---|
| Header | Mnemo logo, the Search icon (⌘K / Ctrl+K), and the collapse control |
| Workspace switcher | Switch spaces, New workspace, and Invite (admin/owner) |
| Favorites | Pages you’ve starred. Collapses automatically past 8, and shows the first 10 with a Show all toggle |
| Filter strip | A Filter box plus three icon controls — filter by type, filter by tag, and Collapse all — then + to add an object |
| Object tree | Your pages, databases, and whiteboards, nested. This is the sidebar’s scroll region, so long trees never push the rest of the sidebar off screen |
| Account menu | Bottom row, under your name: Settings, Trash, Feedback (when configured), a light/dark toggle, and Sign out |
| Notifications | The bell beside the account menu — workspace adds, comments/replies, and @ mentions (badge when unread) |
Search is a header icon rather than a second input box, so it isn’t confused with the tree filter. Both ⌘K / Ctrl+K and the icon open the same command palette.
On desktop, drag the right edge of the sidebar to resize it (240–480 px). Collapse it to an icon rail — logo, expand, search, notifications, and your avatar — when you need space. On smaller screens the sidebar opens as a menu from the top bar, which also carries its own search icon. Tree ⋯ and drag handles stay visible on touch devices.
After an upgrade you may see a What’s new dialog once — dismiss with Got it. If the app was redeployed while you were working, you may be asked to reload so the session stays in sync.
Pages
Create a page
- + at the right of the sidebar filter strip → choose Page, Database, or Whiteboard, then a starter (pages and databases have templates; whiteboards start blank)
- Empty workspace → Add
- ⌘K / Ctrl+K → New page, New database, New whiteboard, or one of the page templates (members and above)
- On a row: right‑click or ⋯ → Add sub-object (same type + starter flow, nested under that row), or slash Subpage /
[[create-as-child for a document under the current page
Title, icon, cover, and tags
- Title — click in the header, or rename from the sidebar
- Icon — click the smile/icon in the header. Choose from the Icons grid, tint with a Color, or pick a small set of Emoji. Recently used icons appear at the top; Remove icon clears your choice. Pages without a custom icon show a default for documents, databases, or whiteboards.
- Cover — from the header ⋯ menu (or Change cover on an existing cover): pick a gradient (Aurora, Mint, Dusk, Citrus, Ink) or remove it
- Tags — colored chips under the title on pages, databases, and whiteboards (see Tags)
- Favorite / Unfavorite — star from the header or sidebar
- Duplicate — from the header ⋯ menu or the sidebar row menu; copies the page (and database contents when relevant) as Copy of … under the same parent
Organize the tree
- Add sub-object to nest a page, database, or whiteboard under the current row
- Drag a row by its grip (or by the row itself) to move it. A line between two rows means drop as a sibling there; a highlighted row means drop inside it as a child
- Hover over a collapsed row for about a second while dragging and it springs open, so you can drop deeper without letting go
- Prefer a dialog? ⋯ or right‑click → Move under… opens a searchable list of every object you can see, each with its parent path, plus Top level (no parent). A page can’t be moved under itself or its own descendants, so those are hidden
- Use the chevron to collapse or expand branches (remembered in your browser); Collapse all in the filter strip closes everything at once
- Branches load as you open them, so a large workspace doesn’t pay for pages you never expand
- Breadcrumbs show where you are
Viewers see the tree without drag handles or row menus.
Filter the tree
The Filter box above the tree searches the whole workspace by title, not just the branches you have expanded. Results render as a flat list, each with its parent path underneath, so you can see where a match lives.
- The funnel icon filters by type — Pages, Databases, Whiteboards — and you can pick more than one
- The tag icon filters by workspace tag. Selected tags also appear as chips under the strip (a closed menu would otherwise hide what you picked); click a chip to drop that tag
- Tags match with any, the same way the command palette treats them
- ↓ from the box moves into the results, ↑↓ walks them, Enter opens the top hit, Esc clears the filter
- Up to 50 results show at a time; past that you get a “n more matches — keep typing to narrow” line
Filtering only matches titles. For body text, use the command palette (see Find things).
Trash
- Move to trash from the page header ⋯ menu, or from a sidebar row’s ⋯ / right-click menu
- Open Trash from the account menu at the bottom of the sidebar (or ⌘K → Go to Trash) to Restore
- Admins/owners can Delete a single item forever, or Empty trash to permanently remove everything in Trash (uploaded files for those pages are removed too). Live pages nested under a trashed parent stay in the workspace.
Comments
Open Comments from the control in the top-right (keeps that corner clear of Live/presence). The panel floats over the page. A badge shows new comments since you last looked.
- Reply on a comment to nest one level of replies under that thread
- Resolve / Unresolve a top-level thread (author or admin); resolved threads collapse until you expand them
- Type
@in a comment to mention someone (they get a notification, and email when available) - Page creators get a notification when someone comments; reply authors get notified on replies
- Select text in the editor → Comment in the formatting bar to quote that selection
- The thread updates for teammates on the page without a full reload
Backlinks
Under the editor, Linked from lists other pages that link here with page-link chips.
Tags
Workspace tags are flat labels shared across pages, databases, and whiteboards. They are not nested folders and do not sync with database multi-select properties.
Owners manage the tag catalog under Settings → Tags (see Tags (owners)). Admins and members can still assign existing tags on pages they can edit.
Assign on a page
Under the title, use the chip row: add tags from the picker, or remove a chip with its ×. The workspace owner can also create a new tag from the picker (type a name, pick a color, Create or press Enter).
Filter by tag in the sidebar
Tags are part of the sidebar filter strip rather than a separate browse list. Click the tag icon above the tree, tick one or more tags, and the tree becomes a flat list of matching objects. Each tag shows how many objects carry it. Selected tags echo as chips below the strip so you can see and remove them while the menu is closed. Private pages you can’t view stay hidden.
Find by tag
In the command palette (⌘K / Ctrl+K), use tag chips alongside type filters. With tags selected and an empty query, you browse pages that have any of those tags. API and MCP search accept the same tag ids.
Writing and editing
The editor tip says it well: type / for commands, @ for people, or [[ for page links. While a wiki query is open ([[… before the closing ]]), typing / (for example in a date like 2026/08/04) does not open the slash menu. The menu also stays closed for a / in a folder path — when there is text immediately before the slash, or when the caret is in the middle of a path like /home/user or src/lib. A standalone / at the start of a line or after a space still opens the menu, and you can type /heading to filter.
When the top-right shows Live (beside Comments), your edits sync with teammates in real time.
Paste markdown from ChatGPT or a text editor and it becomes headings, lists, code blocks, and the rest — not literal # heading. File → Import Markdown is still how you load a whole .md file (Replace or Append).
Live collaboration
Live status sits in the upper-right next to Comments on documents, whiteboards, and databases.
| Status | Meaning |
|---|---|
| Live | Connected — changes sync with teammates |
| Connecting… | Still connecting |
| Connection lost | Sync dropped; on documents/whiteboards you can keep typing on the open page and tap Retry when you’re back online |
| Auth error | Sign-in issue — try Retry after logging in again |
Documents and whiteboards use full collaborative editing. You’ll see presence avatars of who’s on the page, and on documents colored carets where others are typing. When an API or MCP tool appends to a document you already have open, new paragraphs usually appear the same way — no refresh — as long as sync is connected (see API and MCP).
Databases use a lighter live sync: row updates appear quickly for everyone on the list (including rows and columns created by agents or the API), and a soft lock shows who is editing a specific cell. Viewing the database alone does not show page-style presence avatars. If database sync drops, use Retry when you’re back online.
Mnemo is not a full offline app. If sync drops on a page you already have open, you can keep working and retry. Opening other pages, search, and most of the UI still need a connection.
Version history
On documents and whiteboards, open History from the page header ⋯ menu (when you can edit). You’ll see up to 20 recent versions.
Versions save automatically after you pause editing for about 30 seconds (including if you leave the page). Long continuous editing still gets a checkpoint at least every 10 minutes. Changes made through the API or MCP also create a version.
To restore: pick a version → confirm. Mnemo saves your current content first, then reloads that version. A Current badge marks the newest version that matches what’s on the page right now. If you’ve edited since the last save, History notes that none of the rows match yet.
| Label | Meaning |
|---|---|
| Autosave | Saved after you paused editing, or on the long-edit checkpoint |
| API | Created when content was added through an external tool or API |
| Before restore | Safety copy taken right before you restored an older version |
Database pages don’t use this history — their data lives in the database itself.
Document outline
If the page has Heading 1–3 blocks, Outline appears in the page header ⋯ menu (no empty button when there are no headings). Use it to jump to a section.
Formatting bar
Select text for Bold, Italic, Underline, Strike, inline code, smaller / larger text, Heading (toggles Heading 2), bullet list, to-do, Link, and Comment. Inside a callout you get a Color row with the five callout colors. Inside a table you can add / delete columns and rows, toggle the header row, or delete the table.
Hover a top-level block and a drag handle appears in the left gutter; drag from that handle to reorder. While dragging, the block fades in place and a same-width preview follows the pointer, with a drop line showing where it will land. Nested blocks (list items, table cells) move with their parent rather than on their own.
Beyond ⌘B / ⌘I, the usual editor chords work: ⌘U underline, ⌘E inline code, ⌘⇧S strikethrough, ⌘⌥1–3 headings, ⌘⌥0 paragraph, ⌘⇧8 / ⌘⇧7 / ⌘⇧9 bullet / numbered / to-do list, ⌘⇧B quote, ⌘⌥C code block, and Tab / ⇧Tab to move between table cells. Use Ctrl in place of ⌘ on Windows and Linux.
Slash menu (/)
Type / at the start of a line (or after a space), then filter by typing. ↑↓ and Enter insert; Esc dismisses.
| Group | Commands |
|---|---|
| Basic | Text, Heading 1, Heading 2, Heading 3 |
| Lists | Bullet list, Numbered list, To-do list |
| Media | Image, File, YouTube / Loom (URL dialog — no browser prompt). Only YouTube and Loom become iframes; other HTTPS URLs show as an external link chip. |
| Wiki | Page link, Subpage |
| Blocks | Table, Quote, Code block (language + lock + copy), Mermaid, Database view, Database query, Toggle, Divider, and five callouts — Callout · Info / Success / Warning / Alert / Note |
Callouts are five separate commands rather than one command plus a color picker, so typing /warn lands on the one you want. You can still recolor an existing callout from the formatting bar.
Page templates
From sidebar + → Page or the command palette, start from Meeting notes, Project brief, Weekly update, or a blank page.
Mentions and page links
| Type | How | Result |
|---|---|---|
| People | @ then a name | Mention + notification for that teammate |
| Pages | [[ then a title | Inline page link with a type-accurate icon (or create a new subpage) |
@ only lists people in the current workspace — not pages, and not yourself. Click a mention to select it; it inherits surrounding text size and can take bold/italic/size from the formatting bar (same as page links).
[[ searches pages, databases, and whiteboards. Pick an existing item to link it, or choose Create to make a child page under the current page. Closing with ]] also commits the link (brackets are not part of the title). Links inherit the surrounding text size and can take bold/italic from the formatting bar.
Rename a linked page and the links to it follow — existing page links pick up the new title, icon, and type without you touching the pages that reference it.
Code blocks
Slash Code block inserts a fenced block with a language picker and Copy. Use the lock control to freeze the code so you don’t edit it by accident; unlock to change it again. Language and copy still work while locked.
Images and files
- Paste, drag-and-drop, or use slash Image / File
- Images up to 5 MB (JPEG, PNG, GIF, WebP) render inline on the page
- Other files up to 25 MB: PDF, plain text, Markdown, CSV, JSON, zip, and common Word/Excel types. These insert as a download chip with the filename and size.
- SVG is accepted but always served as a download, never as trusted inline artwork. Use PNG or WebP for images you want to see on the page.
- Click an image for a lightbox (Esc to close). Images are resizable on the page.
- On a public share link, images and files on that page open for anyone with the link.
- Uploads count toward workspace storage (see Storage and plan).
Import/Export (single page)
Open Import/Export on the editor toolbar:
- Export Markdown — download the page as Markdown (page links as
[[title|id]], Mermaid as fencedmermaidblocks, mentions as@Name) - Export PDF — opens the print dialog (choose Save as PDF)
- Import Markdown — load a
.mdfile and Replace or Append (round-trips callouts, toggles, Mermaid, and[[title|id]]page links). Pasting markdown in the editor uses the same conversion; use this menu when you have a whole file.
For a full workspace archive you can restore later, use Backup and restore in Settings — not this menu.
Whiteboards
Whiteboards are collaborative drawing boards — freehand, shapes, text, and arrows. They sync live like documents (same Live status, presence photos, and History) and follow your light/dark theme. The board page uses a compact header so the canvas gets more vertical space.
When to use what
| Use | When |
|---|---|
| Page | Long-form notes, structured writing, embeds |
| Whiteboard | Sketching, brainstorming, flowcharts — spatial thinking |
| Database | Rows and properties you sort, filter, and group |
Use the full whiteboard page to draw. In-note board previews and starter scenes are not offered yet — link to a board with Page link / [[ when you need a pointer from a note.
- Create blank from the sidebar or command palette
- Viewers and public share links are view only
- Search finds whiteboards by title (drawing strokes are not searched)
- Workspace backup includes each board’s drawing scene and collaborative state
This is a shared sketch board, not a handwriting or OCR notebook.
Databases
Create a database from the sidebar + and pick a starter. Each one seeds properties, a sample row or two, and saved views:
| Starter | You get |
|---|---|
| Blank | Name, Status (To Do / In Progress / Done), Date — one table view |
| Tasks | Task, Status, Priority (Low / Medium / High), Due — a Board view (default) and a Table view |
| CRM / Contacts | Name, Stage (Lead / Qualified / Won / Lost), Company, Email, Last contact — All contacts (table, grouped by Stage) and Pipeline (board) |
| Content calendar | Title, Status (Idea / Draft / Scheduled / Published), Channel (Blog / Social / Email), Publish date — Calendar (default) and By status |
New database from the command palette skips the starter picker and gives you a blank one.
When to use what
| Use | When |
|---|---|
| Database page | Source of truth — edit like a shared list (sort, filter, group, live updates with teammates) |
| Database view (slash embed) | Interactive window of a saved view inside a note |
| Database query (slash block) | Read-only answer in a note — configure via a form (database + filters/sort), no SQL |
Views
| View | Notes |
|---|---|
| Table | Spreadsheet-style rows and columns — click a column header to sort, use its filter control for a quick filter. Column headers stay opaque as you scroll. |
| Kanban | Needs a Select property — choose which one drives columns with Board by. Multi-select won’t work here. |
| Gallery | Card grid |
| Calendar | Only offered once the database has a Date property; pick which one to plot with Date field |
Group by (toolbar) applies to the table view and works on select, multi-select, and checkbox properties.
There are two rows of controls: your saved views, and the layout tabs. Saved views remember filters, sort, group-by, board property, and layout — use Save view to update the current one or New view to branch off. Members can rename a view, set it as the default, or delete it (not the last one). Viewers can switch views and layouts but can’t change them, and neither can anyone on a public link.
Large views scroll efficiently; the footer may show Showing n of m when more rows exist than are loaded on screen. Very large filtered sorts may show only the first chunk — narrow filters if you need a smaller set.
Working with data
- Add, rename, reorder, and resize columns
- Property types: text, number, select, multi-select, date, checkbox, relation (to another database), plus read-only lookup, rollup, and formula. There are no dedicated URL, email, person, or file types — the CRM starter’s Email column is plain text.
- Lookup — pull a value through a relation (for example, related Contact → Email)
- Rollup — aggregate related rows: Count, Count values, Sum, Average, Min, Max, Checked, Unchecked, Show unique
- Formula — a same-row expression. Reference other columns with
prop("Name"), and useif,empty,length,abs,round, the comparisons (==,!=,>,>=,<,<=),and/or/not, and arithmetic (+also joins text). Results refresh when you reload or close the row dialog. - Filters — the toolbar builder matches all or any of your conditions, with operators for contains / does not contain, equals / does not equal, is empty / is not empty, and the numeric and date comparisons. Column headers offer a one-off filter (dates add is between). Save the view to keep them.
- Live — teammates’ row edits appear quickly; a soft lock shows who is editing a cell
- CSV — Import CSV maps each column in your file to a property (or skips it); Export CSV downloads the rows currently in view, with your filters and sort applied
- In documents — slash Database view for an interactive embed; slash Database query for a read-only filtered table configured with a popout form
- Click the title (or a card title) to open the row detail dialog. Edits stay local until you Save. Closing with unsaved changes asks whether to Save, Discard, or Keep editing.
Database layouts use the full width of the workspace. Databases don’t use document History or Outline; they do show live sync and cell presence on the database page.
A database page has its own public share link, and it’s read-only like any other. A Database view or Database query inside a shared document can render for public visitors when that database is workspace-visible. Restricted or private databases stay hidden on someone else’s share link unless you publish the database page itself.
Find things
Command palette
Press ⌘K (Mac) or Ctrl+K (Windows/Linux), or click the search icon in the sidebar header.
- Actions for members and above: New page, the three page templates (Meeting notes, Project brief, Weekly update), New database, New whiteboard, and Invite teammate for admins. Everyone gets Notifications, Go to Trash, and Go to Settings.
- New items are created at the workspace root (nest later with Move under…, drag-to-nest, Subpage, or
[[) - Empty query: actions + recent pages
- While typing: matching actions, then pages by title and body text (ranked full-text search, with substring fallback)
- Opening a page result scrolls to the first matching body text when the query appears in the document (no highlight). Title-only hits stay at the top.
- Type chips (All types / Pages / Databases / Whiteboards) filter results and recents; your choice is remembered
- Tag chips filter by workspace tag (OR); empty query + tags browses within that set; choices are remembered
- ↑↓ moves the highlight (list scrolls to keep it visible) · Enter runs · Esc closes
- Whiteboards match by title (drawing strokes are not searched); databases match by title (row/cell values are not searched)
Keyboard shortcuts
| Shortcut | Action |
|---|---|
| ⌘K / Ctrl+K | Command palette |
| / | Slash command menu |
| @ | Mention a person |
| [[ | Link a page |
| ↑↓ · Enter · Esc | Navigate menus |
| Esc | Close lightbox / dismiss menus |
| ⌘B / Ctrl+B | Bold |
| ⌘I / Ctrl+I | Italic |
The rest of the editor chords are listed under Formatting bar.
Teamwork and sharing
Who can open a page
On a document, whiteboard, or database (page creator or workspace admin):
- Share — primary header action for a public read-only link
- Access — in the header ⋯ menu: who in the workspace can open the page
| Access | Meaning |
|---|---|
| Same as parent | Follow the nearest parent (defaults to the whole workspace) |
| Everyone in workspace | All members can open it (viewers stay read-only) |
| Only me | Just you and workspace admins |
| Specific people | Admins plus the people you pick |
Children default to Same as parent, so a private folder keeps subpages private until you change them.
Share creates a public read-only link — anyone with the URL can view without logging in. Revoke anytime. Attachments on a shared page work with that link.
Invite teammates
Admins and owners can add people from the workspace switcher or Settings → Workspace (open a workspace → Access):
- Enter their email and choose a role.
- If they already have an account — they’re added right away (they may also get an email).
- If they don’t — you get a shareable invite link (and an email when available). They sign up with that email and accept. If email is configured but the send fails, the UI tells you and still offers the copy-link fallback.
Roles
| Role | Typical access |
|---|---|
| Owner | Full control, including deleting the workspace and managing the tag catalog |
| Admin | Manage members and settings; permanent delete in trash; download workspace backups |
| Member | Create and edit pages, whiteboards, and databases; create API/MCP tokens |
| Viewer | Read and comment (including @ mentions); cannot edit content, create/move pages, share links, or upload files |
Workspace role controls edit vs read. Page access controls who can open a page at all — including databases on that page. Teammates without access won’t see private pages or databases in search or relations.
Part 2 — Settings and integrations
Settings overview
Open Settings from the account menu at the bottom of the sidebar (or ⌘K → Go to Settings). Tabs:
| Tab | Who | What |
|---|---|---|
| Profile | Everyone | Name, photo, password, two-factor authentication |
| Appearance | Everyone | Light / Dark / System |
| Workspace | Everyone (actions vary by role) | List of your workspaces, General/Access dialogs, Backup / Restore, Import from Notion |
| Tags | Owner (tab hidden for everyone else) | Workspace tag catalog |
| API & MCP | Tab visible to everyone; token tools need Member+ | Personal access tokens, usage meter, and recent machine activity |
| Storage | Everyone (plan actions admin+) | Usage, Free/Pro quotas, and plan for the active workspace |
Older bookmarks that used ?tab=billing open the Storage tab.
Profile
- Display name and photo
- Email is fixed (the address you signed up with)
- Change password — set a new password while signed in
- Forgot password? on the login screen when you need a reset email
- Two-factor authentication (TOTP) — scan the QR code with Google Authenticator, Authy, 1Password, or similar. During setup, save the backup codes (shown once; each code works once). Download them if offered. When 2FA is on, login asks for an authenticator code after your password.
Appearance
Choose Light, Dark, or System. The account menu in the sidebar has a quick light/dark toggle; come here when you want to follow your operating system instead.
Workspace settings
Settings → Workspace lists every workspace you belong to. Open one to manage it. Opening a workspace here does not switch the active workspace in the sidebar — use the workspace switcher for that.
Each workspace dialog has:
- General — rename, edit the URL slug (when allowed), and (owner) permanently delete the workspace
- Access — members and invites (admin/owner)
Delete workspace
Only the owner can permanently delete a workspace (danger zone under General). Delete applies only to the workspace that is active in the sidebar switcher — switch to that workspace first, then delete it. Opening another workspace from the Settings list does not make it active, so delete there will fail until you switch.
Backup and restore
On Settings → Workspace, below the workspace list, use Backup / Restore.
Download a backup
- Choose a workspace you administer (admin or owner).
- Click Download backup.
- Save the zip archive (
mnemo-workspace-backup-v2format).
Backups are meant to be restorable. They keep page formatting, whiteboards, databases and views, files, comments, and access settings.
Two things can go wrong, and they behave differently:
- Too much attachment data — the export stops with an error and you get no zip at all, rather than a quietly truncated archive. Your host controls the budget.
- A file couldn’t be read from storage — you still get a zip, but the app warns that it is incomplete and says how many attachments were left out. Don’t rely on that backup until you know what’s missing.
Restore a backup
- Choose a backup zip.
- Enter a name for the new workspace.
- Restore.
Restore always creates a new workspace you own. It never overwrites an existing workspace. You become the owner of the restored space; teammates are not copied as members — invite them again if needed.
Day-to-day single-page Markdown/PDF export stays in the editor Import/Export menu. Use Backup / Restore when you want a full workspace archive.
Import from Notion
On Settings → Workspace, below Backup / Restore, use Import from Notion (admin or owner on the active workspace).
- In Notion, export as HTML and include files (not the Markdown export).
- Upload that zip in Mnemo.
- Choose a parent (workspace root, or an existing page).
- Leave Wrap in a folder page on if you want everything nested under “Imported from Notion” (you can rename the folder).
- Import. You’ll get a short report: pages created, databases created, rows imported, and anything skipped.
The import lands in this workspace. It does not create a new workspace (that’s Restore).
What comes through:
- Nested pages from the HTML folder tree
- Notion CSV databases as Mnemo databases (text, number, select, date, checkbox when the columns are obvious; otherwise text)
- Images and files referenced by those pages, within storage quota
What does not:
- Live sync or a Notion login
- Toggles, callouts, and relation columns at full fidelity
- Database row pages as extra tree pages (those rows are imported as database rows)
Caps match workspace backup (page count, zip size). Oversized or unsupported files are skipped and listed in the report.
Tags (owners)
Open Settings → Tags to create, rename, recolor, or delete tags (workspace owner only). Deleting a tag removes it from every page that used it.
Everyone who can edit a page can still assign tags from the chip row under the title. See Tags in Part 1.
Storage and plan
Settings → Storage applies to the workspace that is active in the sidebar.
- See how much attachment storage the workspace is using versus its limit
- Default quotas: Free about 1 GiB, Pro about 50 GiB (hosts may configure different numbers)
- When you hit the limit, new uploads fail until you free space or upgrade
Plan / checkout UI may appear for admins when billing is configured. Pro pricing hasn’t been announced yet — every feature is available on both plans. Storage quotas and the Free API/MCP call cap apply on each.
API and MCP
Members and above can connect Cursor, Claude, or similar tools with a personal access token.
API & MCP usage: Free workspaces get 200 successful API and MCP calls per month (UTC calendar month), shared across REST /api/v1 and MCP for all tokens in the workspace. Only calls that succeed count — errors and failed tool runs do not. Pro is unlimited. Hosts can override the Free allowance with MCP_QUOTA_FREE_CALLS_PER_MONTH. A usage meter on Settings → API & MCP shows how much of the Free allowance you’ve used. When the limit is reached, both surfaces return an error asking you to upgrade.
Create a token
- Open Settings → API & MCP
- Name the token
- Optionally turn on Limit to specific pages / databases — pick page subtrees and/or databases (recommended for agents)
- Set access:
- Limits off (unrestricted workspace): one Read only checkbox — off by default, which means write
- Limits on: each page or database you add has its own Read only checkbox — off by default, which means write. New adds default to write.
- Create the token and copy the
mnemo_…secret immediately — it’s shown only once - Paste it into your tool
Tokens are Bearer secrets for:
- REST:
$APP_URL/api/v1/… - MCP (Streamable HTTP):
$APP_URL/api/mcp
The token list has Edit (pencil). It opens the same grant editor. Save updates the name and grants only — it does not re-show or rotate the secret. Revoke is unchanged.
Write is the default. Check Read only to store a read-only token or grant. The server derives scopes from those grants, so the UI and the stored scope cannot disagree. Read access still follows your page permissions, then any resource limits on the token. Write also requires a Member (or higher) role. Limited tokens must create new pages under a write-granted parent. Creating or updating database rows needs a write grant on that database (or a write-granted parent page). A token that only has read on the database is refused — not “database not found.” Existing tokens are not silently upgraded. Older keys that stored database access as read stay read until you edit and save (or create a new token).
If a page is already open in the editor when an external tool appends or replaces its content, the markdown usually appears live (same sync channel as collaborative editing). Plain paragraphs still work; headings, lists, and callouts land in the live editor. If sync is down, refresh once to pick up the change. Each append or replace is limited to 100,000 characters.
What agents can do
MCP exposes seventeen tools:
list_pages · get_page · search · create_page · create_subpage · update_page · archive_page · append_page_content · replace_page_content · list_databases · list_database_rows · create_database_property · create_database_row · update_database_row · delete_database_row · list_comments · create_comment
REST covers the same ground:
| Endpoint | Methods |
|---|---|
/api/v1/pages | GET, POST |
/api/v1/pages/{pageId} | GET, PATCH, DELETE |
/api/v1/pages/{pageId}/content | POST (append), PUT (replace) |
/api/v1/pages/{pageId}/comments | GET, POST |
/api/v1/databases | GET |
/api/v1/databases/{databaseId}/properties | POST |
/api/v1/databases/{databaseId}/rows | GET, POST |
/api/v1/databases/{databaseId}/rows/{rowId} | PATCH, DELETE |
/api/v1/search | GET |
Notes: search takes the same type and tag filters as the command palette; update_page / PATCH covers title and icon; archiving sends a page to trash rather than deleting it; create_subpage requires parentId; POST /api/v1/pages may include optional bodyMarkdown; GET page / get_page returns body (plaintext) and bodyMarkdown; content is markdown (plain paragraphs still work; headings, lists, and callouts land in the live editor); replace_page_content / PUT overwrites the body; comments include replies; create_database_property / POST /api/v1/databases/{databaseId}/properties adds a column (name, type, optional options as an array of names); types are text, number, select, multi_select, date, checkbox; for select and multi_select, pass option names (for example Todo, Doing, Done) — omit them and the column gets To Do / In Progress / Done, the same as adding a select in the UI; relation, lookup, rollup, and formula are not available on this tool; the write grant is the same as creating rows (write on that database or a write-granted parent page) — a read-only database grant is refused; a database can have 40 properties; duplicate names (case-insensitive) are rejected; title is reserved (the row title column is Name).
Working with agents
A few habits make agents more reliable:
- Prefer a database’s title (for example
Tasks) when a tool asks for a database id — long hex ids are easy to mistype. - Property fields and select options can use names, not only internal ids.
- Have the agent call list database rows (or the REST equivalent) before creating or updating rows so it sees the current schema and options.
- After adding a column, call list database rows again if the agent needs the new property id. If the database page is already open, the new column and row usually appear live — refresh only if sync is down.
- Set the row title (the first text column, usually Name) with
titleon create/update, orproperties.Name/properties.title— if the agent only sets select fields, the row stays Untitled. - Keep the target page open if you want to watch appends and replaces land live (see above).
Machine-oriented details: OpenAPI description at $APP_URL/api/v1/openapi.json (no token needed to read it).
Cursor example
Add to your Cursor MCP config (mcp.json):
{
"mcpServers": {
"mnemo": {
"url": "https://app.meetmnemo.com/api/mcp",
"headers": {
"Authorization": "Bearer mnemo_…"
}
}
}
}
Use your token secret in place of mnemo_….
Recent activity
The same settings page lists recent API and MCP calls. Admins see activity across the whole workspace; members see only their own. The token list itself is always personal — nobody, admin included, sees another person’s tokens. Revoke your own tokens anytime from this section.
Tips and gotchas
- After upgrades, skim What’s new, then Got it
- If you see Mnemo was updated — reload?, reload so the session matches the new build
- You may get invite and password emails (branded), or just a copyable invite link — both work
- Comments support one-level replies and resolve; deeper nesting and digests come later
- The sidebar filter searches titles across the whole workspace, including branches you haven’t expanded — reach for it before scrolling the tree
- Drag a row onto another to nest it; drop between rows to reorder. Move under… does the same thing from a searchable dialog when the two rows are far apart
- Settings, Trash, Feedback, theme, and Sign out all live in the account menu at the bottom of the sidebar
- Document blocks reorder with the gutter handle; use Duplicate in the page ⋯ menu to copy a page
- Lock a code block when you’re referencing a snippet you don’t want to nudge by accident
- Paste markdown into a document to get real blocks; use Import Markdown when you have a whole
.mdfile - Prefer Backup / Restore for full workspace archives; use editor Markdown/PDF for a single page
- Restored workspaces are new spaces you own — invite teammates again
- Storage quotas apply on every plan — about 1 GiB on Free, 50 GiB on Pro
- Free workspaces have a monthly API & MCP allowance (see Settings → API & MCP); Pro is unlimited. Failed calls don’t count
- Agent or API edits to an open page usually show up live — markdown appends, replaces, and new database columns included
- Database embeds on a public share link show when the database is workspace-visible; restricted databases stay private unless you share the database itself
- Import from Notion uses an HTML export zip under Settings → Workspace (not Markdown export, not live sync)
- Not a full offline app — retry sync on the open page if the connection drops
Send feedback
When Feedback appears in the account menu at the bottom of the sidebar, use it to send:
- a bug report
- a feature request
- or other notes
Include a short title and details. You can attach up to five screenshots or files, and the current page URL is included by default (untick it if you’d rather not). Submissions go to the Mnemo team as GitLab issues. If your host hasn’t configured that, the menu entry simply won’t be there.
Helpful to include:
- What you were trying to do
- What happened instead
- Whether you were alone or collaborating
Thanks for trying Mnemo — happy writing.