RemNote via remnote-cli
Use this skill when a user wants to read or manage RemNote content from the command line with remnote-cli.
If the user needs navigation across the whole knowledge base (for example: "where does this topic live in my notes?",
"start from top-level note tree", "map main note groups"), prefer remnote-kb-navigation when it is available and
customized for the current user, then return to this skill for general command policy and write gating. If
remnote-kb-navigation is not available (or still template/unconfigured), continue with this skill alone and ask for
skill customization when needed.
Example Conversation Triggers
- "Check if RemNote bridge is connected."
- "Search my RemNote for sprint notes."
- "Find notes tagged with this exact tag Rem ID in RemNote."
- "Read this RemNote by ID:
<rem-id>." - "Map the top-level structure of my whole RemNote knowledge base."
- "Create a RemNote note titled X with this content." (requires
confirm write) - "Append this to my journal in RemNote." (requires
confirm write)
Preconditions (required)
- RemNote Automation Bridge plugin is installed in RemNote.
- Plugin install path is one of:
- Marketplace install guide:
https://github.com/robert7/remnote-mcp-bridge/blob/main/docs/guides/install-plugin-via-marketplace-beginner.md - Local dev plugin guide:
https://github.com/robert7/remnote-mcp-bridge/blob/main/docs/guides/development-run-plugin-locally.md
- Marketplace install guide:
remnote-mcp-serveris installed on the same machine where OpenClaw runs; it provides theremnote-clicommand.- Preferred install:
npm install -g remnote-mcp-server
- Preferred install:
remnote-mcp-serveris running or reachable byREMNOTE_MCP_URL.- RemNote is open in browser/app (
https://www.remnote.com/). - The right-sidebar
MCPpanel is available for status inspection and manual reconnect when needed, but it is not required to already be open before commands work.
If any precondition is missing, stop and fix setup first.
Read-First Safety Policy
- Default to read-only flows:
status,search,search-by-tag,read,read-table. - Do not run mutating commands by default.
- For writes (
create,update,insert-children,replace-children,update-tags,journal), require the exact phraseconfirm writefrom the user in the same turn. - If
confirm writeis not present, ask for confirmation and do not execute writes.
Command Invocation Rule (critical)
- Run exactly one
remnote-clicommand per execution. - Invoke
remnote-clidirectly; do not chain shell commands. - Do not use
&&,|,;, subshells ((...)), command substitution ($()),xargs, orechopipelines. - WRONG:
remnote-cli status --text && echo '---' && remnote-cli search "topic" - RIGHT:
remnote-cli status --text - Reason: command chaining can trigger exec approvals and break automation flow.
Write Payload Rule (allowlist-friendly)
- For write commands, prefer file-based payload flags:
--content-file <path|->forcreate,insert-children,replace-children, andjournal
- Keep executed command strings short and predictable for OpenClaw allowlisting.
- Inline
--content/ positionaljournal [content]/ positionalcreate [title]are discouraged except for very short single-line text. - With markdown syntax input, all options must use flags to prevent misinterpretation of the content as command options.
-(stdin) is supported but discouraged by default in OpenClaw flows because command context can be less explicit.
Compatibility Check (mandatory before real work)
- Check MCP server and bridge connectivity:
remnote-cli status --text
- Read versions from
remnote-cli status --text:- active plugin version
- CLI version
version_warning(if present)- write-policy flags:
acceptWriteOperations,acceptReplaceOperation
- RemNote-open-first / server-starts-later is supported:
- the bridge should retry in the background
- the sidebar panel is optional and mainly useful for monitoring, manual reconnect, and wake-up triggers
- Enforce version rule: bridge plugin and
remnote-mcp-servermust be the same0.xminor line (prefer exact match). - If mismatch:
- Install matching server package version:
- Exact:
npm install -g remnote-mcp-server@<plugin-version> - Or same minor line (
0.<minor>.x) when exact is unavailable.
- Exact:
- Re-run:
remnote-cli --versionremnote-mcp-server --versionremnote-cli status --text
- Install matching server package version:
Core Commands
Health and Connectivity
remnote-cli status --textremnote-cli --mcp-url http://127.0.0.1:3005/mcp status --textfor non-default MCP server URLs
Read-Only Operations (default)
- Search notes:
remnote-cli search "query" - Search by exact tag Rem ID:
remnote-cli search-by-tag --tag-id <tag-rem-id> - Read note by Rem ID:
remnote-cli read <rem-id> - Read Advanced Table by title or Rem ID:
remnote-cli read-table --title "Projects"remnote-cli read-table --rem-id <table-rem-id>
- Optional text mode: add
--text
Output Mode and Traversal Strategy
- Use JSON output (default) for navigation, multi-step retrieval, and any flow that needs IDs for follow-up reads.
- Use
--textonly for plain human summarization of exactly one note when no further navigation is needed. - Exit code
2means the MCP server is unreachable or not running. - For structure traversal, start with shallow reads and high child limit:
remnote-cli read <rem-id> --depth 1 --child-limit 500
- Increase
--depth,--child-limit, or--max-content-lengthonly when the user actually needs more hierarchy or rendered content.
--include-content modes
--include-content markdown:- Returns readable rendered child content.
- Best for summarization/presentation.
- Markdown content does not provide child IDs required for further navigation.
--include-content structured:- Returns hierarchical
contentStructureddata including child rem IDs. - Best for navigation and deterministic ID-first traversal.
- Returns hierarchical
Mutating Operations (only after confirm write)
- Create (preferred):
remnote-cli create "Title" --content-file /tmp/body.md --text - Create under a parent or apply tags:
remnote-cli create "Title" --parent-id <rem-id> --tag-ids <tag-rem-id> --text
- Update title:
remnote-cli update <rem-id> --title "New Title" --text - Insert children (preferred for append-like child writes):
remnote-cli insert-children <parent-rem-id> --content-file /tmp/children.md --position last --textremnote-cli insert-children <parent-rem-id> --content-file /tmp/children.md --position before --sibling-rem-id <rem-id> --text
- Update tags by exact tag Rem ID:
remnote-cli update-tags <rem-id> --add-tag-ids <tag-rem-id> --remove-tag-ids <tag-rem-id> --text
- Replace direct children (destructive, only with explicit user intent):
remnote-cli replace-children <parent-rem-id> --content-file /tmp/replacement.md --text- Use an empty content file to clear all direct children.
- Journal:
remnote-cli journal "Finished task" --text - Journal (from file):
remnote-cli journal --content-file /tmp/entry.md --text - Journal without timestamp:
remnote-cli journal --content-file /tmp/entry.md --no-timestamp --text
- Journal with exact-ID tags:
remnote-cli journal --content-file /tmp/entry.md --tag-ids <tag-rem-id> --text
- Fallbacks (discouraged): inline flags for short single-line text only.
- Safety:
- Use
insert-childrenfor additive child writes andreplace-childrenonly for explicit replacement. - Run replace only when
acceptWriteOperations=trueandacceptReplaceOperation=truefromstatus. - Treat replace as destructive and require the user to clearly request replace semantics.
- Quote text values with spaces or special characters, and use explicit empty-value syntax like
--title=""to avoid argument shifting.
- Use
Failure Handling
When a bridge-backed operation fails (search, search-by-tag, read, read-table, create, update,
insert-children, replace-children, update-tags, journal, status), run this sequence in order:
- Check bridge status first:
remnote-cli status --text
- If
status --textfails with exit code2or says the MCP server is unreachable:- start
remnote-mcp-server - re-run
remnote-cli status --text
- start
- If
status --textshowsversion_warning:- align the
remnote-mcp-serverpackage version to the plugin0.xminor line - restart
remnote-mcp-server - re-run
remnote-cli status --text
- align the
- If the bridge is disconnected:
- use the browser tool to ensure
https://www.remnote.com/is open and reachable - re-run
remnote-cli status --text - if needed, wait and retry for up to 30 seconds because the bridge may still be in burst retry or standby retry
- use the browser tool to ensure
- If the browser tool is unavailable during recovery:
- do not stop
- use the OpenClaw-managed browser CLI against profile
openclawto try browser-side recovery:openclaw browser --browser-profile openclaw status- if the CLI is reachable, run:
openclaw browser --browser-profile openclaw stopopenclaw browser --browser-profile openclaw startopenclaw browser --browser-profile openclaw open https://www.remnote.com/
- after CLI-based browser recovery, re-run
remnote-cli status --text - then retry the original RemNote command if bridge connectivity is restored
- if the CLI reports browser disabled, bundled browser plugin missing/disabled, or another gateway-level browser unavailability state, report that specific browser/runtime condition instead of describing RemNote itself as broken
- If it is still disconnected:
- use the browser tool to open the right sidebar and click the
MCPicon if present - opening the panel is itself a wake-up trigger and may restart faster retries
- use the browser tool to open the right sidebar and click the
- Inspect the plugin panel state:
Connectedmeans retry the CLI commandConnectingmeans a connection attempt is in progress; wait briefly, then re-runremnote-cli status --textRetryingmeans the burst retry window is active; wait briefly or useReconnect NowWaiting for servermeans standby mode is active; useReconnect Nowor another wake-up trigger
- If the
MCPicon is missing, report that the plugin UI is not available in RemNote. - If the panel is visible but still not connected:
- capture the visible panel state, disconnect reason, and whether
Reconnect Nowhelped - report that context to the user before stopping
- capture the visible panel state, disconnect reason, and whether
- Only after the sequence above fails should you report the command failure as unresolved.
Operational Notes
- JSON output is default and preferred for automation.
--textis useful for quick human checks.- Reference command docs when unsure:
https://github.com/robert7/remnote-mcp-server/blob/main/docs/guides/remnote-cli-command-reference.md
