Skip to main content
Glama

Inkra MCP Server

Swift Platform License MCP juergenkoller-software/inkra-mcp MCP server

Drive a native macOS Markdown editor from Claude, Cursor, or any MCP client.

This is the official Model Context Protocol bridge for Inkra — a native macOS Markdown editor (SwiftUI + AppKit, not Electron) with live KaTeX/Mermaid preview and a built-in AI assistant.

You need the Inkra app installed and running. This MCP server is a stdio→HTTP bridge — Inkra owns the document state, undo stack, syntax highlighting, and rendering. Get Inkra at store.juergenkoller.software/apps/inkra.


What you can do

"Claude, open ~/Notes/2026-thesis.md, find every heading that contains 'TODO', add a checkbox after it, and save."

"Cursor, list all files in the current folder, bookmark the H2 'Methodology', and switch to Focus Mode."

The MCP server exposes 18 tools across these categories:

Category

Tools

Document content

document_get_content, document_set_content, document_insert, document_replace, document_search

Document lifecycle

document_open, document_create, document_save

Navigation

outline_get, bookmarks_list, bookmark_add, bookmark_remove

Folder / files

folder_open, folder_list_files

Metadata

frontmatter_get (YAML front-matter parser)

View

theme_set (standard / sepia / night), view_mode_set (focus / wide)

State

window_info

Every tool operates on the currently open document in the Inkra app — so AI agents see exactly what you see, edits show up live with syntax highlighting and preview, and undo/redo work in the app's normal undo stack.


Related MCP server: Nemeton MCP

Installation

Prerequisites

  1. macOS 14 (Sonoma) or later

  2. Inkra app installed and runningget it here (free during beta, available on Mac App Store and direct download)

  3. Swift 5.9+ (Xcode 15+) if building from source

Build from source

git clone https://github.com/juergenkoller-software/inkra-mcp.git
cd inkra-mcp
swift build -c release
# Binary: .build/release/InkraMCP

Pre-built binary

See Releases.


Configuration

Claude Desktop

{
  "mcpServers": {
    "inkra": {
      "command": "/path/to/InkraMCP",
      "env": {
        "INKRA_PORT": "22300",
        "INKRA_TOKEN": "your-token-here"
      }
    }
  }
}

Get INKRA_TOKEN from Inkra → Settings → API & Integrations.

Claude Code

claude mcp add inkra /path/to/InkraMCP \
  --env INKRA_PORT=22300 \
  --env INKRA_TOKEN=your-token-here

Cursor / other MCP clients

Same pattern — stdio MCP server, two env vars.


How it works

┌────────────────┐  JSON-RPC stdio   ┌────────────────┐  HTTP+Bearer   ┌────────────────┐
│  Claude/Cursor │ ───────────────►  │  InkraMCP      │ ─────────────► │  Inkra.app     │
│  (MCP client)  │ ◄───────────────  │   (this repo)  │ ◄───────────── │  (port 22300)  │
└────────────────┘                   └────────────────┘                └────────────────┘

The bridge forwards JSON-RPC over stdio to Inkra's local HTTP MCP endpoint. The app handles document state (NSTextView with TextKit 2), AST-based syntax highlighting, KaTeX/Mermaid live preview, undo/redo, session restore, and exports.


Environment variables

Variable

Default

Description

INKRA_PORT

22300

Port of Inkra's local HTTP server

INKRA_TOKEN

(none)

Bearer token from Inkra Settings (required)


About Inkra

Inkra is a native macOS Markdown editor — not an Electron app. Highlights:

  • Native — SwiftUI + AppKit, real macOS performance

  • Live preview — KaTeX formulas, Mermaid diagrams, code highlighting rendered in real time via WKWebView

  • Focus mode + wide mode — distraction-free writing

  • Built-in AI assistant — Claude, OpenAI, Ollama, or Inkra KI (dedicated endpoint, no API key needed)

  • Export — HTML and PDF with full layout, formulas, diagrams, code blocks

  • Session restore — folder, file, cursor, scroll position

  • MCP server (this repo) + REST API with Swagger UI

  • 23 EU language localizations

  • Available on Mac App Store + direct download

Get Inkra at store.juergenkoller.software


License

MIT — see LICENSE. Bridge open source; Inkra app is commercial.

Issues & support

Built by Juergen Koller Software GmbH.

Available Tools

18 tools
bookmark_addB

Adds a bookmark at a specific position in the text

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName of the bookmark
offsetYesCharacter position in the text

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description bears full responsibility for behavioral disclosure. It only states the basic action but omits important behaviors such as whether it overwrites existing bookmarks with the same name, requires a valid offset within document length, or has any side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence of 9 words with no unnecessary content. It is front-loaded and efficiently communicates the core action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and no annotations, the description lacks completeness. It does not address return values, error conditions, or behavioral nuances (e.g., duplicate name handling), which are important for a simple but potentially ambiguous tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with clear descriptions for both parameters (name and offset). The tool description adds no new information beyond what the schema already provides, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Adds' and the resource 'a bookmark at a specific position in the text', which distinguishes it from sibling tools like bookmark_remove and bookmarks_list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use (when adding a bookmark at a position) but provides no explicit guidance on when not to use, prerequisites (e.g., document must be open), or alternatives beyond sibling names.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

bookmark_removeB

Removes a bookmark by its ID

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesUUID of the bookmark

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, and the description only states the action. It does not disclose side effects, permissions required, or whether the operation is reversible. For a destructive operation, more transparency is needed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence with no wasted words. It is appropriately sized for a simple tool, though it could include brief usage guidance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the low complexity (1 param, no output schema), the description is minimal but fails to explain the outcome of the removal (e.g., confirmation, success status). It lacks completeness for an agent to verify success.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the description adds no extra meaning beyond 'by its ID'. The parameter is well-documented in the schema, so the description does not need to compensate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('removes') and the resource ('a bookmark by its ID'). It is specific and distinguishes from sibling tools like bookmark_add and bookmarks_list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives (e.g., bookmark_add, bookmarks_list). The agent has no context for decision-making.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

bookmarks_listB

Returns all bookmarks of the current document

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description bears full responsibility for behavioral disclosure. It only states it returns bookmarks, but fails to mention that it is a read-only operation, any potential side effects, or the format of the returned data. This is insufficient for an agent to understand the tool's behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence that is front-loaded and contains minimal waste. However, it may be too brief to be fully informative.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the lack of annotations and output schema, the description is incomplete. It does not define what constitutes a bookmark, mention return format (e.g., list of names, IDs), or address edge cases like an empty document. This undermines confident usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are no parameters, and schema coverage is 100%. Per guidelines, the baseline for 0 parameters is 4. The description does not need to add parameter information.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it returns all bookmarks of the current document. It uses a specific verb 'returns' and resource 'bookmarks', and implicitly differentiates from sibling tools like bookmark_add and bookmark_remove. However, it could be more explicit about the scope of 'current document'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It does not mention any prerequisites, conditions for use, or when not to use it, which is a significant gap.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

document_createB

Creates a new document with optional content

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNoFile path to save to
contentNoInitial content

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so the description must cover behavioral traits. It only states creation without specifying consequences like overwriting, permissions, or error handling. This is insufficient for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no wasted words. While very brief, it is appropriately concise for a simple tool, though it omits important details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and no annotations, the description should explain return value, side effects, and path/overwrite behavior. It lacks these, making it incomplete for a creation tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema covers both parameters with descriptions. The tool description adds no additional meaning beyond what the schema already provides, earning the baseline score for high coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('creates') and resource ('document'), clearly distinguishing it from siblings like document_get_content or document_insert. It also mentions optional content, adding clarity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives like document_insert or document_replace. Siblings exist but no context for selection is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

document_get_contentA

Returns the full text content of the document

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full responsibility for behavioral disclosure. It only states output but not side effects, error conditions, or prerequisites (e.g., whether the document must be open). The description is minimal and lacks transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that efficiently conveys the core action without wasted words. It is as concise as possible for the purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no parameters, no output schema, and no annotations, the description could be more informative about prerequisites or behavior. It is adequate for a simple retrieval tool but leaves unanswered questions about context (e.g., whether the document must be open).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are no parameters, so the schema covers everything. The description adds no parameter-related information but is not required to. According to the rule for 0 parameters, baseline is 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Returns') and the object ('full text content of the document'), making the tool's purpose unambiguous. It distinguishes from siblings like document_search, which returns search results rather than full text.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives (e.g., document_search), nor any prerequisites or limitations. This leaves the agent without context to choose appropriately.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

document_insertB

Inserts text at a position (line/column, 0-based)

ParametersJSON Schema
NameRequiredDescriptionDefault
lineYesLine number (0-based)
textYesText to insert
columnYesColumn number (0-based)

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description must carry the full burden. It only states the insertion point but does not mention whether existing text shifts, what happens on invalid line/column values, or if any permissions are required. This lacks important behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, one sentence with the action upfront. No wasted words, but could include more detail without losing conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with 3 parameters and no output schema, the description is adequate but missing behavioral details like shift behavior, error handling, or prerequisites like document being open.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions already explaining the parameters. The description adds '0-based' which is already in the schema. Minimal extra value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb (inserts), resource (text), and position (at a line/column, 0-based). It distinguishes from siblings like document_replace which replaces text, and document_set_content which sets entire content.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not explicitly state when to use this tool versus alternatives like document_replace or document_set_content. The purpose is implied by the action name, but no direct guidance is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

document_openC

Opens a file in the editor (absolute path)

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesAbsolute file path

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description fails to disclose behavioral traits like side effects on the editor state, whether it closes other files, or if it requires the file to exist. The brief description does not cover these important aspects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, very concise. It could be considered too brief, but it is not verbose. It earns its place by stating the core functionality without extra words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and limited contextual signals, the description does not adequately inform the agent about return values, error conditions, or how this tool fits among many siblings. The agent may misunderstand when to use it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the description adds no additional meaning beyond what the schema already provides (e.g., 'path' is described as 'Absolute file path'). Baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Opens a file') and resource ('in the editor'), with a hint about the parameter type ('absolute path'). It distinguishes from siblings like 'folder_open' and 'document_create', although it could be more explicit about the editor context.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives such as 'document_get_content' or 'document_set_content'. The description lacks context about prerequisites or scenarios where this tool is appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

document_replaceB

Finds and replaces text in the document

ParametersJSON Schema
NameRequiredDescriptionDefault
regexNoInterpret pattern as regex
patternYesSearch text or regex
replacementYesReplacement text

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must fully disclose behavioral traits. It only states 'Finds and replaces text' but fails to mention important details like whether replacement is global or per occurrence, case-sensitivity, in-place modification, or expected side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that directly states the tool's purpose. It is concise and avoids extraneous words, though it could include more operational context without becoming verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the absence of an output schema and the mutation nature of the tool, the description lacks important details such as scope (entire document or selection), return value (e.g., number of replacements), and handling of edge cases. It does not differentiate from document_set_content effectively.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already describes all three parameters with 100% coverage (pattern, replacement, regex). The description adds no additional meaning beyond what the schema provides, so it meets the baseline but does not enhance understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Finds and replaces text in the document' clearly identifies the action (find and replace) and the resource (document), differentiating it from siblings like document_search (which only finds) and document_insert (which inserts without replacement).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not provide explicit guidance on when to use this tool vs alternatives such as document_search or document_set_content. It implicitly suggests usage for text replacement but lacks exclusions or context about scope (e.g., single occurrence vs all occurrences).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

document_saveA

Saves the current document

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, and the description does not disclose behavioral traits like whether the operation is destructive, requires authentication, or how it handles conflicts.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise with no wasted words, effectively communicating the core purpose in a single sentence.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with no parameters and no output schema, the description is minimally adequate, but lacks context on behavior or scope (e.g., where it saves). Could be improved.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with zero parameters, so the description does not need to add parameter meaning. Baseline of 4 is appropriate as no value is missing.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Saves the current document' clearly specifies the verb (saves) and resource (current document), distinguishing it from siblings like document_create or document_open.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives, such as whether the document must be open or saved elsewhere first. No context about prerequisites or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

document_set_contentC

Replaces the full text content of the document

ParametersJSON Schema
NameRequiredDescriptionDefault
contentYesNew document content

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Without annotations, the description must fully convey behavioral traits. It states that content is replaced, implying a destructive operation, but does not mention whether prior content is lost, if the change is unsaved, or if any permissions are required.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no wasted words, front-loading the core action. It could include slightly more detail without harming conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the low complexity (one parameter, no output schema), the description is minimally adequate. It explains the action but does not cover return values or side effects like auto-saving, which might be implied by sibling tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% with 'New document content' for the only parameter. The description adds no additional meaning beyond the schema, so a baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'Replaces' and identifies the resource as 'full text content of the document', clearly indicating the action. However, it does not distinguish from the sibling tool 'document_replace', which could imply a similar operation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like document_insert or document_replace. The description lacks context for appropriate usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

folder_list_filesB

Lists files in the opened folder

ParametersJSON Schema
NameRequiredDescriptionDefault
globNoFilter, e.g. *.md

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description bears full responsibility for behavioral disclosure. It only says 'Lists files in the opened folder' without revealing details such as recursion, file type inclusion, hidden files, or output format. This lack of context reduces transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no wasted words. However, while concise, it could be more informative without sacrificing brevity. It is front-loaded with purpose but lacks necessary detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has one optional parameter and no output schema, the description should explain the output format (e.g., list of filenames or paths) and clarify the 'opened folder' state. Without these, an agent might misuse the tool or misunderstand results.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% coverage with a single parameter 'glob' described as 'Filter, e.g. *.md'. The description adds no new meaning beyond the schema: it implies filtering is optional, but that is already clear. Baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists files in the opened folder. It uses a specific verb ('lists') and resource ('files in the opened folder'), distinguishing it from sibling tools like folder_open or document_get_content.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is for listing files in the currently opened folder, but it does not provide explicit guidance on when to use it versus alternatives (e.g., folder_open to change the folder, or document_search to find content). No exclusions or prerequisites are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

folder_openB

Opens a folder in the sidebar

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesAbsolute folder path

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must fully disclose behavioral traits. It only says 'opens a folder' without detailing effects, such as whether it changes UI state, requires existing paths, or has side effects. This is insufficient for an agent to understand the tool's behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no fluff, making it concise. However, it may be too brief given the complexity of the tool's effect, but for a simple action, it earns a high score.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the lack of annotations, no output schema, and the presence of many sibling tools, the description is insufficiently complete. It does not explain what 'opening' entails, whether it requires the folder to exist, or how it affects subsequent tool calls. The description should provide more context for safe and correct use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already provides full coverage for the single required parameter 'path' with a description. The tool description adds no additional meaning beyond the schema, which is adequate. However, it does not compensate for missing context like path format or validation rules.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('opens a folder') and the target ('in the sidebar'), which is a specific verb+resource combination. It distinguishes from sibling tools like folder_list_files or document_open, which have different purposes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. There is no mention of use cases, prerequisites, or exclusions. For instance, it doesn't differentiate from folder_list_files which also deals with folders but lists contents rather than opening.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

frontmatter_getA

Returns the YAML frontmatter of the document

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided. Description only states it returns frontmatter, missing details like read-only nature, required document state, or error conditions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, front-loaded, no extraneous words. Perfectly concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adequate for a simple tool with no parameters, but could mention that the document must be open or that returned data is parsed JSON. Lacks detail on output format.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters, schema coverage is 100%. Baseline score of 4 applies as description adds no parameter info but none needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'Returns' and resource 'YAML frontmatter of the document' clearly defining its function. It distinguishes itself from sibling tools like 'document_get_content' which return full content.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives such as 'document_get_content' or 'outline_get'. Implied usage but no explicit context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

outline_getA

Returns the heading structure of the document

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the burden. It states the behavior (returns heading structure) but does not disclose if it is read-only, requires a document to be open, or any side effects. It is minimally transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence with no wasted words. Front-loaded and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and low complexity (no parameters), the description adequately states the tool's functionality. However, it does not clarify scope (e.g., current document), which siblings like document_open imply.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are 0 parameters with 100% schema coverage. The description adds no parameter info, but with no parameters, it is adequate. Baseline for 0 params is 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Returns the heading structure of the document' uses a specific verb ('returns') and resource ('heading structure'), making the purpose clear. It distinguishes from siblings like document_get_content by focusing on headings, though not explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives (e.g., when to choose outline_get over document_get_content). No exclusions or context provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

theme_setA

Switches the theme (standard, sepia, night)

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesTheme ID

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description only reveals that the tool performs a mutation (switches theme) and lists valid values. It does not disclose side effects, persistence, or scope of the change, which is adequate but not comprehensive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence that immediately states the action and lists options, with no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with one parameter and no output schema, the description covers the core functionality and valid values, though it omits any mention of return behavior or confirmation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema describes 'id' as 'Theme ID', but the description adds concrete valid values (standard, sepia, night), providing meaningful context beyond the schema alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states that the tool switches the theme and lists the three specific options (standard, sepia, night), making its purpose unambiguous and distinguishing it from sibling tools like view_mode_set.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives such as view_mode_set, nor any context for prerequisites or expected use cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

view_mode_setC

Controls Focus Mode and Wide Mode

ParametersJSON Schema
NameRequiredDescriptionDefault
wideNoWide Mode
focusNoFocus Mode

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden for behavioral disclosure. It only says 'Controls', not whether it toggles, sets, or requires a document to be open. The agent cannot discern side effects or required permissions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single phrase with no wasted words. However, it may be too brief, sacrificing clarity for conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simplicity of the tool (two booleans, no output), the description is incomplete. It fails to explain the overall effect, prerequisites, or any behavior beyond stating the modes are controlled.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% with each parameter labeled. The description adds no extra meaning beyond the parameter names; it does not explain what Wide or Focus Mode do, so value added is minimal.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it controls Focus Mode and Wide Mode, identifying the verb and resource. However, it does not differentiate from sibling tools like `theme_set`, which also controls a mode. The purpose is clear but lacks specificity about what these modes affect.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. There is no mention of prerequisites, context, or exclusions, leaving the agent to infer usage entirely.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

window_infoB

Returns the current app state

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so the description carries full burden. It states the tool 'Returns' data, implying a read operation without side effects, but gives no details on the nature of the returned data (e.g., if it's instantaneous, if it requires permissions, or what format). Minimal transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, front-loaded with the main action. It is concise and contains no filler, but could benefit from a bit more context without losing brevity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no parameters, no output schema, and no annotations, the description is the sole source of information. 'Current app state' is too vague to fully understand what the agent will receive. More details on the structure of the returned state are needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are no parameters, making schema coverage complete. The description adds no parameter details (none needed). Baseline for 0 params is 4; the description adequately handles this by not adding extraneous info.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'Returns' and identifies the resource as 'current app state'. While it's clear, it could be more precise about what constitutes 'app state' (e.g., window dimensions, focus). No sibling tools overlap, so no confusion.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool vs alternatives. Although there are no similar sibling tools, the absence of any usage context (e.g., 'Use when you need to know the active window or screen size') reduces clarity for the agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 18 tool updatesv1.0.0
    • First observedbookmark_add
    • First observedbookmark_remove
    • First observedbookmarks_list
    • First observeddocument_create
    • First observeddocument_get_content
    • First observeddocument_insert
    • First observeddocument_open
    • First observeddocument_replace
    • First observeddocument_save
    • First observeddocument_search
    • First observeddocument_set_content
    • First observedfolder_list_files
    • First observedfolder_open
    • First observedfrontmatter_get
    • First observedoutline_get
    • First observedtheme_set
    • First observedview_mode_set
    • First observedwindow_info

TDQS

A3.6/5.0

Scored across 18 tools

Disambiguation5/5

Each tool addresses a distinct operation: bookmarks, documents, folders, frontmatter, outline, theme, view mode, and window info. There is no ambiguity or overlap between tools.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern in snake_case (e.g., bookmark_add, document_create, folder_open). The convention is uniform across the entire set.

Tool Count5/5

18 tools is a reasonable number for a text editor MCP server. It covers file, document, bookmark, folder, and UI operations without being excessive or sparse.

Completeness4/5

The server covers core editing operations (create, open, save, insert, replace, search, set/get content), bookmarks, frontmatter, outline, and UI settings. Minor omissions like undo/redo or deletion are absent but do not severely hinder usability.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    F
    maintenance
    MCP server for AI Diagram Maker — generate software engineering diagrams from natural language, code, ASCII diagram, images, or Mermaid. Inline diagram rendering using MCP apps UI and diagram URL in responses. Works with Cursor, Claude Desktop, Claude Code, and any MCP-compatible AI.
    5
    22 npm
    8
    MIT
  • A
    license
    C
    quality
    C
    maintenance
    MCP bridge for Nemeton — control native macOS virtual machines (Apple Virtualization.framework) from Claude Desktop, Claude Code, or any MCP client. 50+ tools across VM lifecycle, snapshots, console, files, networking, and host metrics. Bridge open-source (MIT), Nemeton app is commercial.
    49
    1
    MIT
  • A
    license
    B
    quality
    D
    maintenance
    MCP bridge for PDF Content Search — full-text PDF search with Apple Vision OCR across thousands of documents in under a second from Claude, Cursor, or any MCP client. Advanced filters (date, category, sender, amount), wildcards, boolean operators. Bridge open-source (MIT), PDF Content Search app is commercial with free iOS+Android companion scanner apps.
    84
    1
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    MCP server for FreezeText — OCR anything on your Mac screen from Claude, Cursor, or any MCP client. Freeze the screen and extract text via Apple Vision (videos, popups, protected PDFs), OCR a region or a base64 image, and manage a searchable capture history. 12 tools. Bridge open-source (MIT), FreezeText app is free.
    12
    1
    MIT