joplin-mcp
一个基于FastMCP的模型上下文协议(MCP)服务器,用于Joplin笔记应用程序,使AI助手能够通过标准化接口与Joplin笔记、笔记本和标签进行交互。它提供了24个优化工具,包括笔记管理、笔记本管理、标签管理和文件导入等功能。
MCP 服务配置
复制以下 JSON 到 OPClaw 或其他 MCP 客户端的配置文件中即可使用
{
"mcpServers": {
"joplin": {
"transport": "http",
"url": "http://localhost:8000/mcp"
}
}
}
该服务需要配置环境变量:JOPLIN_TOKEN
可用工具 (17 个)
该服务在 MCP 协议中暴露的工具,AI 可按需调用
ping_joplin
Test connection to Joplin server. Verifies connectivity to the Joplin application. Use to troubleshoot connection issues. Returns: str: Connection status information.
该工具无需必填参数,直接调用即可
get_note 7 个参数 需填 1 项
Retrieve a note with smart content display and sequential reading support. Smart behavior: Short notes show full content, long notes show TOC only. Sequential reading: Extract specific line ranges for progressive consumption. Args: note_id: Note identifier section: Extract specific section (heading text, slug, or number) start_line: Start line for sequential reading (1-based, line numbers) line_count: Number of lines to extract (default: 50 if start_line specified) toc_only: Show only TOC and metadata force_full: Force full content even for long notes metadata_only: Show only metadata without content Examples: get_note("id") - Smart display (full if short, TOC if long) get_note("id", section="1") - Get first section get_note("id", start_line=1) - Start sequential reading from line 1 (50 lines) get_note("id", start_line=51, line_count=30) - Continue reading from line 51 (30 lines) get_note("id", toc_only=True) - TOC only get_note("id", force_full=True) - Force full content
必填参数:note_id
get_links 1 个参数 需填 1 项
Extract all links to other notes from a given note and find backlinks from other notes. Scans the note's content for links in the format [text](:/noteId) or [text](:/noteId#section-slug) and searches for backlinks (other notes that link to this note). Returns link text, target/source note info, section slugs (if present), and line context. Returns: str: Formatted list of outgoing links and backlinks with titles, IDs, section slugs, and line context. Link formats: - [link text](:/targetNoteId) - Link to note - [link text](:/targetNoteId#section-slug) - Link to specific section in note
必填参数:note_id
create_note 6 个参数 需填 2 项
Create a new note in a specified notebook in Joplin. Creates a new note with the specified title, content, and properties. Uses notebook name for easier identification instead of requiring notebook IDs. Notebook can be specified by name or path: - "Work" - matches notebook named "Work" (must be unique) - "Projects/Work" - matches "Work" notebook inside "Projects" Returns: str: Success message with the created note's title and unique ID. Examples: - create_note("Shopping List", "Personal Notes", "- Milk - Eggs", True, False) - Create uncompleted todo - create_note("Meeting Notes", "Work Projects", "# Meeting with Client") - Create regular note - create_note("Task", "Work", "", True, False, "2024-12-31T17:00:00") - Create todo with due date - create_note("Task", "Project A/tasks", "body") - Create note in "tasks" sub-notebook under "Project A"
必填参数:title、notebook_name
update_note 6 个参数 需填 1 项
Update note properties (title, body, todo status, due date). Replaces the entire body. Use this for metadata changes or full body replacement. For targeted text edits (fix a word, append a line) use edit_note instead — it doesn't require reading first. Returns: str: Success message confirming the note was updated. Examples: - update_note("note123", title="New Title") - Update only the title - update_note("note123", body="New content", is_todo=True) - Update content and convert to todo - update_note("note123", todo_due="2024-12-31T17:00:00") - Set due date - update_note("note123", todo_due=0) - Clear due date
必填参数:note_id
edit_note 5 个参数 需填 2 项
Precision-edit a note's body without reading or replacing the full content. Preferred over update_note for targeted text changes — no get_note round-trip needed. Use update_note instead when changing metadata (title, todo status, due date) or replacing the entire body. Modes: - Replace: provide old_string and new_string to replace text in the note body. - Delete: provide old_string and set new_string to '' to remove text. - Append: set position='end' (old_string must be None) to append new_string. - Prepend: set position='beginning' (old_string must be None) to prepend new_string. Args: note_id: Note identifier new_string: Replacement or insertion text (use '' to delete matches) old_string: Text to find (None for positional insert) replace_all: Replace all occurrences when True (default: first unique match) position: 'beginning' or 'end' (only when old_string is None) Examples: edit_note("id", new_string="colour", old_string="color") - Replace unique match edit_note("id", new_string="colour", old_string="color", replace_all=True) - Replace all edit_note("id", new_string="", old_string="delete me") - Delete text edit_note("id", new_string="appended text", position="end") - Append edit_note("id", new_string="prepended text", position="beginning") - Prepend
必填参数:note_id、new_string
find_notes 7 个参数 需填 1 项
Find notes by searching titles and content. Use "*" to list all notes. Query syntax: "exact phrase", title:word, body:word, -exclude, word1 OR word2 Examples: - find_notes("*") - List all notes - find_notes("meeting") - Find notes containing "meeting" - find_notes("*", task=True) - List all tasks - find_notes("*", limit=20, offset=20) - Page 2 TIP: Use find_notes_with_tag() or find_notes_in_notebook() for filtered searches.
必填参数:query
find_in_note 7 个参数 需填 2 项
Search for a regex pattern inside a specific note and return paginated matches. Multiline mode is enabled by default so anchors like ``^``/``$`` operate per line, matching the common expectations for checklist-style searches.
必填参数:note_id、pattern
find_notes_with_tag 7 个参数 需填 1 项
Find all notes that have a specific tag, with pagination support. MAIN FUNCTION FOR TAG SEARCHES! Use this when you want to find all notes tagged with a specific tag name. Returns: str: List of all notes with the specified tag, with pagination information. Examples: - find_notes_with_tag("time-slip") - Find all notes tagged with "time-slip" - find_notes_with_tag("work", limit=10, offset=10) - Find notes tagged with "work" (page 2) - find_notes_with_tag("work", task=True) - Find only tasks tagged with "work" - find_notes_with_tag("important", task=True, completed=False) - Find only uncompleted tasks tagged with "important"
必填参数:tag_name
find_notes_in_notebook 7 个参数 需填 1 项
Find all notes in a specific notebook, with pagination support. MAIN FUNCTION FOR NOTEBOOK SEARCHES! Use this when you want to find all notes in a specific notebook. Notebook can be specified by name or path: - "Work" - matches notebook named "Work" (must be unique) - "Projects/Work" - matches "Work" notebook inside "Projects" Returns: str: List of all notes in the specified notebook, with pagination information. Examples: - find_notes_in_notebook("Work Projects") - Find all notes in "Work Projects" - find_notes_in_notebook("Personal Notes", limit=10, offset=10) - Find notes in "Personal Notes" (page 2) - find_notes_in_notebook("Personal Notes", task=True) - Find only tasks in "Personal Notes" - find_notes_in_notebook("Projects", task=True, completed=False) - Find only uncompleted tasks in "Projects" - find_notes_in_notebook("Project A/tasks") - Find notes in "tasks" sub-notebook under "Project A"
必填参数:notebook_name
list_notebooks
List all notebooks/folders in your Joplin instance. Retrieves and displays all notebooks (folders) in your Joplin application. Returns: str: Formatted list of all notebooks including title, unique ID, parent notebook (if sub-notebook), and creation date.
该工具无需必填参数,直接调用即可
create_notebook 2 个参数 需填 1 项
Create a new notebook (folder) in Joplin to organize your notes. Creates a new notebook that can be used to organize and contain notes. You can create top-level notebooks or sub-notebooks within existing notebooks. Returns: str: Success message containing the created notebook's title and unique ID. Examples: - create_notebook("Work Projects") - Create a top-level notebook - create_notebook("2024 Projects", "work_notebook_id") - Create a sub-notebook
必填参数:title
list_tags
List all tags in your Joplin instance with note counts. Retrieves and displays all tags that exist in your Joplin application. Tags are labels that can be applied to notes for categorization and organization. Returns: str: Formatted list of all tags including title, unique ID, number of notes tagged with it, and creation date.
该工具无需必填参数,直接调用即可
create_tag 1 个参数 需填 1 项
Create a new tag. Creates a new tag that can be applied to notes for categorization and organization. Returns: str: Success message with the created tag's title and unique ID. Examples: - create_tag("work") - Create a new tag named "work" - create_tag("important") - Create a new tag named "important"
必填参数:title
get_tags_by_note 1 个参数 需填 1 项
Get all tags for a specific note. Retrieves all tags that are currently applied to a specific note. Returns: str: Formatted list of tags applied to the note with title, ID, and creation date.
必填参数:note_id
tag_note 2 个参数 需填 2 项
Add a tag to a note for categorization and organization. Applies an existing tag to a specific note using the note's unique ID and the tag's name. Uses note ID for precise targeting and tag name for intuitive selection. Returns: str: Success message confirming the tag was added to the note. Examples: - tag_note("a1b2c3d4e5f6...", "Important") - Add 'Important' tag to specific note - tag_note("note_id_123", "Work") - Add 'Work' tag to the note Note: The note must exist (by ID) and the tag must exist (by name). A note can have multiple tags.
必填参数:note_id、tag_name
untag_note 2 个参数 需填 2 项
Remove a tag from a note. Removes an existing tag from a specific note using the note's unique ID and the tag's name. Returns: str: Success message confirming the tag was removed from the note. Examples: - untag_note("a1b2c3d4e5f6...", "Important") - Remove 'Important' tag from specific note - untag_note("note_id_123", "Work") - Remove 'Work' tag from the note Note: Both the note (by ID) and tag (by name) must exist in Joplin.
必填参数:note_id、tag_name
服务介绍
Joplin MCP Server
A FastMCP-based Model Context Protocol (MCP) server for Joplin note-taking application via its Python API joppy, enabling AI assistants to interact with your Joplin notes, notebooks, and tags through a standardized interface.
Table of Contents
- What You Can Do
- Quick Start
- Supported Clients
- Example Usage
- Tool Permissions
- Advanced Configuration
- Project Structure
- Testing
- Complete Tool Reference
- Changelog
What You Can Do
This MCP server provides 24 optimized tools for comprehensive Joplin integration:
Note Management
- Find & Search:
find_notes,find_notes_with_tag,find_notes_in_notebook,get_all_notes - CRUD Operations:
get_note,get_links,create_note,update_note,edit_note,delete_note
Notebook Management
- Organize:
list_notebooks,create_notebook,update_notebook,delete_notebook
Tag Management
- Categorize:
list_tags,create_tag,update_tag,delete_tag,get_tags_by_note - Link:
tag_note,untag_note
Import
- File Import:
import_from_file- Import Markdown, HTML, CSV, TXT, JEX files and directories
System
- Health:
ping_joplin
Quick Start
- Open Joplin Desktop → Tools → Options → Web Clipper
- Enable the Web Clipper service
- Copy the Authorization token
- Set up your preferred client below
Supported Clients
Any MCP-compatible client should work. Below are the ones with documented setup instructions.
Claude Desktop
Run the automated installer:
# Install and configure everything automatically (pip)
pip install joplin-mcp
joplin-mcp-install
# Or use zero-install with uvx (recommended if you have uv)
uvx --from joplin-mcp joplin-mcp-install
# Optional: pin a specific version/range for stability
uvx --from joplin-mcp==0.4.1 joplin-mcp-install
uvx --from 'joplin-mcp>=0.4,<0.5' joplin-mcp-install
This script will:
- Configure your Joplin API token
- Set tool permissions (Create/Update/Delete)
- Set up Claude Desktop automatically
- Test the connection
After setup, restart Claude Desktop and you're ready to go!
"List my notebooks" or "Create a note about today's meeting"
Claude Code
Install the orchestration plugin for smarter tool usage (edit vs update, long-note reading, bulk tagging):
/plugin marketplace add alondmnt/joplin-mcp
/plugin install joplin-mcp
You'll be prompted for your Joplin API token on first use. The skill is invoked automatically when working with Joplin tools, or manually with /joplin.
Jan AI
-
Install Jan AI from https://jan.ai
-
Add MCP Server in Jan's interface:
- Open Jan AI
- Go to Settings → Extensions → Model Context Protocol
- Click Add MCP Server
- Configure:
- Name:
joplin - Command:
uvx --from joplin-mcp joplin-mcp-server(requiresuvinstalled) - Environment Variables:
JOPLIN_TOKEN:your_joplin_api_token_here
- Name:
- Enable the server
-
Start chatting with access to your Joplin notes!
Automated Setup (Alternative)
# Install and configure Jan AI automatically (if Jan is already installed)
pip install joplin-mcp
joplin-mcp-install
This will detect and configure Jan AI automatically, just like Claude Desktop.
"Show me my recent notes" or "Create a project planning note"
OllMCP (Local Ollama Models)
Auto-discovery (if you set up Claude Desktop first)
# Install ollmcp
pip install ollmcp
# Run with auto-discovery (requires existing Claude Desktop config)
ollmcp --auto-discovery --model qwen3:4b
Manual setup (works independently)
# Install ollmcp
pip install ollmcp
# Set environment variable
export JOPLIN_TOKEN="your_joplin_api_token_here"
# Run with manual server configuration (requires uv installed)
ollmcp --server "joplin:uvx --from joplin-mcp joplin-mcp-server" --model qwen3:4b
Example Usage
Once configured, you can ask your AI assistant:
- "List all my notebooks" - See your Joplin organization
- "Find notes about Python programming" - Search your knowledge base
- "Create a meeting note for today's standup" - Quick note creation
- "Tag my recent AI notes as 'important'" - Organize with tags
- "Show me my todos" - Find task items with
find_notes(task=True)
Tool Permissions
The setup script offers 4 permission levels:
- Read (always enabled): Browse and search your notes safely
- Write (optional): Create new notes, notebooks, and tags
- Update (optional): Modify existing content
- Delete (optional): Remove content permanently
Choose the level that matches your comfort and use case.
Advanced Configuration
Alternative Installation Methods
Method 1: Traditional pip install
If you don't have uvx or prefer to customize MCP settings:
# Install the package
pip install joplin-mcp
# Run the setup script
joplin-mcp-install
This method provides the same functionality as uvx joplin-mcp-install but requires a local Python environment.
Method 2: Development Installation
For developers or users who want the latest features:
macOS/Linux:
git clone https://github.com/alondmnt/joplin-mcp.git
cd joplin-mcp
./install.sh
Windows:
git clone https://github.com/alondmnt/joplin-mcp.git
cd joplin-mcp
install.bat
Manual Configuration
If you prefer manual setup or the script doesn't work:
Note on
uvx:uvxruns Python applications without permanently installing them (requiresuv:pip install uv). It can read and write user configuration files (e.g., Claude/Jan configs), souvx --from joplin-mcp joplin-mcp-installworks for setup just like a pip install.
Version pinning (optional): For long‑lived client configs or CI, you can pin or range-constrain the version for reproducibility, e.g.
uvx --from joplin-mcp==0.4.1 joplin-mcp-installoruvx --from 'joplin-mcp>=0.4,<0.5' joplin-mcp-install.
1. Create Configuration File
Create joplin-mcp.json in your project directory:
{
"token": "your_api_token_here",
"host": "localhost",
"port": 41184,
"timeout": 30,
"verify_ssl": false
}
2. Claude Desktop Configuration
Add to your claude_desktop_config.json:
Option A: Using uvx (Zero-install)
{
"mcpServers": {
"joplin": {
"command": "uvx",
"args": ["--from", "joplin-mcp", "joplin-mcp-server"],
"env": {
"JOPLIN_TOKEN": "your_token_here"
}
}
}
}
Requires uv installed: pip install uv
Option B: Using installed package
{
"mcpServers": {
"joplin": {
"command": "joplin-mcp-server",
"env": {
"JOPLIN_TOKEN": "your_token_here"
}
}
}
}
3. OllMCP Manual Configuration
Option A: Using uvx (Zero-install)
# Set environment variable
export JOPLIN_TOKEN="your_token_here"
# Run with manual server configuration
ollmcp --server "joplin:uvx --from joplin-mcp joplin-mcp-server" --model qwen3:4b
Requires uv installed: pip install uv
Option B: Using installed package
# Set environment variable
export JOPLIN_TOKEN="your_token_here"
# Run with manual server configuration
ollmcp --server "joplin:joplin-mcp-server" --model qwen3:4b
4. More Client Configuration Examples
For additional client configurations including different transport options (HTTP, SSE, Streamable HTTP), see client-config.json.example.
This file includes configurations for:
- STDIO transport (default, most compatible)
- HTTP transport (basic HTTP server mode)
- SSE transport (recommended for gemini-cli and OpenAI clients)
- Streamable HTTP transport (advanced web clients)
- HTTP-compat transport (bridges modern
/mcpJSON-RPC with legacy/sse//messagesclients)
Tool Permission Configuration
Fine-tune which operations the AI can perform by editing your config:
{
"tools": {
"create_note": true,
"update_note": true,
"delete_note": false,
"create_notebook": true,
"delete_notebook": false,
"create_tag": true,
"update_tag": false,
"delete_tag": false,
"import_from_file": true,
"get_all_notes": false,
"update_notebook": false,
"update_tag": false
}
}
Environment Variables
Alternative to JSON configuration:
# Connection settings
export JOPLIN_TOKEN="your_api_token_here"
export JOPLIN_HOST="localhost"
export JOPLIN_PORT="41184"
export JOPLIN_TIMEOUT="30"
Per-Tool Env Vars
Every tool can be toggled individually via JOPLIN_TOOL_<NAME>=true|false. These take precedence over config file settings.
| Env var | Default |
|---|---|
JOPLIN_TOOL_FIND_NOTES |
true |
JOPLIN_TOOL_FIND_NOTES_WITH_TAG |
true |
JOPLIN_TOOL_FIND_NOTES_IN_NOTEBOOK |
true |
JOPLIN_TOOL_FIND_IN_NOTE |
true |
JOPLIN_TOOL_GET_ALL_NOTES |
false |
JOPLIN_TOOL_GET_NOTE |
true |
JOPLIN_TOOL_GET_LINKS |
true |
JOPLIN_TOOL_CREATE_NOTE |
true |
JOPLIN_TOOL_UPDATE_NOTE |
true |
JOPLIN_TOOL_EDIT_NOTE |
true |
JOPLIN_TOOL_DELETE_NOTE |
false |
JOPLIN_TOOL_LIST_NOTEBOOKS |
true |
JOPLIN_TOOL_CREATE_NOTEBOOK |
true |
JOPLIN_TOOL_UPDATE_NOTEBOOK |
false |
JOPLIN_TOOL_DELETE_NOTEBOOK |
false |
JOPLIN_TOOL_LIST_TAGS |
true |
JOPLIN_TOOL_CREATE_TAG |
true |
JOPLIN_TOOL_UPDATE_TAG |
false |
JOPLIN_TOOL_DELETE_TAG |
false |
JOPLIN_TOOL_GET_TAGS_BY_NOTE |
true |
JOPLIN_TOOL_TAG_NOTE |
true |
JOPLIN_TOOL_UNTAG_NOTE |
true |
JOPLIN_TOOL_PING_JOPLIN |
true |
JOPLIN_TOOL_IMPORT_FROM_FILE |
false |
HTTP Transport Support
The server supports both STDIO and HTTP transports:
# STDIO (default)
joplin-mcp-server --config ~/.joplin-mcp.json
# HTTP transport (development, from repo)
PYTHONPATH=src python -m joplin_mcp.server --transport http --port 8000 --config ./joplin-mcp.json
# Opt-in HTTP compatibility bundle (modern + legacy SSE endpoints)
PYTHONPATH=src python -m joplin_mcp.server --transport http-compat --port 8000 --config ./joplin-mcp.json
# or keep --transport http and export MCP_HTTP_COMPAT=1/true to toggle the same behavior.
HTTP client config
Note: Claude Desktop currently uses STDIO transport and does not consume HTTP/SSE configs directly. The following example applies to clients that support network transports.
{
"mcpServers": {
"joplin": {
"transport": "http",
"url": "http://localhost:8000/mcp"
}
}
}
Configuration Reference
Basic Settings
| Option | Default | Description |
|---|---|---|
token |
required | Joplin API authentication token |
host |
localhost |
Joplin server hostname |
port |
41184 |
Joplin Web Clipper port |
timeout |
30 |
Request timeout in seconds |
verify_ssl |
false |
SSL certificate verification |
Tool Permissions
| Option | Default | Description |
|---|---|---|
tools.create_note |
true |
Allow creating new notes |
tools.update_note |
true |
Allow modifying existing notes |
tools.delete_note |
false |
Allow deleting notes (disabled by default — destructive) |
tools.create_notebook |
true |
Allow creating new notebooks |
tools.update_notebook |
false |
Allow modifying notebook titles |
tools.delete_notebook |
false |
Allow deleting notebooks (disabled by default — destructive) |
tools.create_tag |
true |
Allow creating new tags |
tools.update_tag |
false |
Allow modifying tag titles |
tools.delete_tag |
false |
Allow deleting tags (disabled by default — destructive) |
tools.tag_note |
true |
Allow adding tags to notes |
tools.untag_note |
true |
Allow removing tags from notes |
tools.find_notes |
true |
Allow text search across notes (with task filtering) |
tools.find_notes_with_tag |
true |
Allow finding notes by tag (with task filtering) |
tools.find_notes_in_notebook |
true |
Allow finding notes by notebook (with task filtering) |
tools.get_all_notes |
false |
Allow getting all notes (disabled by default - can fill context window) |
tools.get_note |
true |
Allow getting specific notes |
tools.get_links |
true |
Allow extracting links to other notes |
tools.list_notebooks |
true |
Allow listing all notebooks |
tools.list_tags |
true |
Allow listing all tags |
tools.get_tags_by_note |
true |
Allow getting tags for specific notes |
tools.ping_joplin |
true |
Allow testing server connectivity |
tools.import_from_file |
false |
Allow importing files/directories (MD, HTML, CSV, TXT, JEX) |
Content Exposure (Privacy Settings)
| Option | Default | Description |
|---|---|---|
content_exposure.search_results |
"preview" |
Content visibility in search results: "none", "preview", "full" |
content_exposure.individual_notes |
"full" |
Content visibility for individual notes: "none", "preview", "full" |
content_exposure.listings |
"none" |
Content visibility in note listings: "none", "preview", "full" |
content_exposure.max_preview_length |
300 |
Maximum length of content previews (characters) |
Docker
Run the MCP server in a container. Default transport is HTTP for broad compatibility; switch via environment variables.
Build
docker build -t joplin-mcp .
Run (HTTP default)
docker run --rm \
-p 8000:8000 \
-e JOPLIN_TOKEN=your_api_token \
joplin-mcp
With mounted config
docker run --rm \
-p 8000:8000 \
-v $PWD/joplin-mcp.json:/config/joplin-mcp.json:ro \
joplin-mcp
Choose transport
- SSE (streaming):
-e MCP_TRANSPORT=sse - Streamable HTTP:
-e MCP_TRANSPORT=streamable-http - STDIO (no port):
-e MCP_TRANSPORT=stdio
Example (SSE):
docker run --rm \
-p 8000:8000 \
-e JOPLIN_TOKEN=your_api_token \
-e MCP_TRANSPORT=sse \
joplin-mcp
The container listens on 0.0.0.0:8000 by default. If exposing publicly, place behind a reverse proxy and terminate TLS there. For SSE, ensure proxy keep-alives and buffering are configured appropriately.
Project Structure
src/joplin_mcp/- Main package directoryfastmcp_server.py- Server implementation with 24 tools and Pydantic validation typesconfig.py- Configuration managementserver.py- Server entrypoint (module and CLI)ui_integration.py- UI integration utilities
docs/- Documentation (troubleshooting, privacy controls, enhancement proposals)tests/- Test suite
Testing
Test your connection:
# For pip install
joplin-mcp-server --config ~/.joplin-mcp.json
# For development (from repo)
PYTHONPATH=src python -m joplin_mcp.server --config ./joplin-mcp.json
You should see:
Starting Joplin FastMCP Server...
Successfully connected to Joplin!
Found X notebooks, Y notes, Z tags
FastMCP server starting...
Available tools: 24 tools ready
Complete Tool Reference
| Tool | Permission | Description |
|---|---|---|
| Finding Notes | ||
find_notes |
Read | Full-text search across all notes (supports task filtering) |
find_notes_with_tag |
Read | Find notes with specific tag (supports task filtering) |
find_notes_in_notebook |
Read | Find notes in specific notebook (supports task filtering) |
get_all_notes |
Read | Get all notes, most recent first (disabled by default) |
get_note |
Read | Get specific note by ID |
find_in_note |
Read | Regex search within a single note (paginated matches & context, multiline anchors on by default) |
get_links |
Read | Extract links to other notes from a note |
| Managing Notes | ||
create_note |
Write | Create new notes |
update_note |
Update | Modify existing notes |
edit_note |
Update | Precision edit note content (find/replace, append, prepend) |
delete_note |
Delete | Remove notes |
| Managing Notebooks | ||
list_notebooks |
Read | Browse all notebooks |
create_notebook |
Write | Create new notebooks |
update_notebook |
Update | Modify notebook titles |
delete_notebook |
Delete | Remove notebooks |
| Managing Tags | ||
list_tags |
Read | View all available tags |
create_tag |
Write | Create new tags |
update_tag |
Update | Modify tag titles |
delete_tag |
Delete | Remove tags |
get_tags_by_note |
Read | List tags on specific note |
| Tag-Note Relationships | ||
tag_note |
Update | Add tags to notes |
untag_note |
Update | Remove tags from notes |
| Import Tools | ||
import_from_file |
Write | Import files/directories (MD, HTML, CSV, TXT, JEX) |
| System Tools | ||
ping_joplin |
Read | Test connectivity |