Skip to main content
Glama
omd-local

omd-mcp

by omd-local

OMD.EXE // PUBLIC BETA 0.3.0b2

OMD.EXE

A local AI context inbox for Markdown, Obsidian, and agents.

Turn documents, web pages, screenshots, audio, folders, and selected public URLs into traceable Markdown that stays in folders you control.

CI Python 3.10+ License: MIT Local first

Live demo · Install · Walkthrough · Documentation · Report an issue

Walkthrough

Related MCP server: Markitdown MCP Server

How conversion stays recoverable

Core conversion never depends on AI. Optional model work is isolated, so a missing model or failed call leaves the raw Markdown intact.

Quick start

brew install omd-local/omd/omd
omd doctor
omd-ui

Choose Markdown file for a normal export or Capture to vault note for an Obsidian folder. An Obsidian vault is just a local folder; OMD does not require an Obsidian plugin or account.

For quick personal thoughts and exact highlights, open Inbox / review. The screen follows three steps: save the text, review the unchanged original, then choose Create note in Notes or Mark as not needed. Creating a note makes a traceable derivative under Notes/; either choice leaves the original under Inbox/. Saving and reviewing do not call AI.

The custom Homebrew tap includes the project organisation in the command. omd-local is the project owner, not a personal account. The beta installs the CLI, MCP server, local browser UI, common document converters, and yt-dlp. Large transcription and local-model tools remain optional.

Manual install

git clone https://github.com/omd-local/markdown-everything.git omd
cd omd
pip install -e '.[all]'
omd doctor

Python 3.10 or newer is required. A minimal pip install -e . registers omd and omd-mcp; the all extra adds the UI, MarkItDown, and Python yt-dlp.

Optional local model

OMD never downloads Ollama models automatically. Install and start Ollama, then run the model install command in Terminal. OMD recommends a conservative instruct model from the machine's total memory; this is a 16 GB example:

ollama pull qwen3:4b-instruct

Keep the UI host at http://localhost:11434 for fully local model calls. Core conversion still works when Ollama is absent or stopped.

Optional AI draft for one Inbox item

Inbox review can optionally ask local Ollama to draft a takeaway, quote exact evidence, and suggest tags. It reads the Inbox original by default. You may instead explicitly select one read-only Markdown file from the unified vault source list; OMD then uses only that file and can add its vault-relative [[wikilink]] to the derived note. It never opens a URL or reads an unselected file. Results without exact evidence are rejected, and the draft is not included in a note unless you choose it.

You can instead send the selected text directly to the OpenAI API, Anthropic API, or DeepSeek API using your own developer API key. Cloud providers show a one-request preview and consent action with the exact provider, model, destination, content size, and current policy link. This is never required for capture or conversion; OMD does not use consumer ChatGPT/Claude login sessions, route through OpenRouter, or silently fall back to another provider. UI credentials use macOS Keychain when available or remain session-only. OMD checks a conservative request budget before reading the credential or contacting the provider; an oversized Inbox item is left unchanged and must be split rather than being silently truncated.

Optional transcription and OCR

# Apple Silicon speech-to-text for audio, podcasts, and supported videos
brew install pipx
pipx install mlx-whisper

# Text recognition inside screenshots and article images
brew install tesseract tesseract-lang

OCR means optical character recognition: it reads visible text from an image. English uses eng; mixed Chinese and English can use chi_sim+eng. mlx-whisper is Apple-Silicon only and is intentionally excluded from the base install because its model stack is large.

  • Documents: PDF, DOCX, PPTX, XLSX, HTML, CSV, JSON, XML, EPUB, and ZIP use MarkItDown.

  • Images: PNG, JPG, WEBP, TIFF, and BMP use Tesseract OCR.

  • Audio: MP3, WAV, M4A, FLAC, and OGG use local Whisper when installed.

  • Web: articles, WeChat, and public webpages use a source adapter or web conversion.

  • Public posts: Reddit, X, Bluesky, Mastodon, Threads, Hacker News, and Telegram use bounded public adapters.

  • Media: Apple Podcasts, YouTube, TikTok, and Bilibili preserve metadata and use local transcription when available.

  • Local batches: folders and saved one-item-per-line lists route each item independently.

OMD does not bypass paywalls, login gates, captchas, access controls, or platform restrictions. Public posts can be deleted, private, quarantined, region-blocked, or rate-limited; a URL that opens in your signed-in browser may still reject an anonymous converter.

Douyin and Xiaohongshu / Rednote

These advanced local-only routes normally need separate Netscape cookies.txt exports. Export cookies only from an account and content you are authorised to use, then select the matching file in the UI:

  • Douyin cookies: export while signed in to douyin.com.

  • Xiaohongshu cookies: export while signed in to xiaohongshu.com.

  • Do not reuse one platform's cookie file for the other platform.

  • Cookies are disabled in the hosted demo and should never be committed.

Use Inspect source / cookies before starting. OMD warns when the current source list contains one of these platforms but its matching cookie file is missing.

Direct Markdown

omd report.pdf -o report.md
omd screenshot.png -o screenshot.md --lang eng
omd bilingual.png -o bilingual.md --lang chi_sim+eng

Obsidian-compatible vault capture

omd capture report.pdf --vault ~/Obsidian/AI-Memory --tags research,pdf
omd capture "https://example.com/article" --vault ~/Obsidian/AI-Memory

Capture writes a readable note under Sources/<source type>/, updates Index/OMD Captures.md, and keeps hashes, route diagnostics, model errors, and other debug metadata in the adjacent .omd.json sidecar.

Optional local AI sections

omd report.pdf -o report.md --polish-md --polish-md-keep-raw
omd capture report.pdf --vault ~/Obsidian/AI-Memory --memory-cards

--polish-md cleans parser/OCR noise. --memory-cards adds a summary, useful tags, [[links]], and evidence-oriented cards above the preserved ## Full Content. Review all generated content before relying on it.

Read the Obsidian guide and memory cards guide. The optional provider boundary is documented in the privacy model.

# Inspect routing, tools, cookies, and local readiness without converting
omd inspect "<url-or-file>" --with-readiness

# Convert a folder or reusable one-item-per-line list
omd batch sources.txt -o out/
omd capture ~/Downloads/sources/ --vault ~/Obsidian/AI-Memory --batch

# Quiet deterministic output for agent-facing runs
omd --agent-safe report.pdf -o report.md

# Read-only vault-aware note enrichment proposal
omd enrich-note Inbox/example.md --vault ~/Obsidian/AI-Memory --json-events
omd enrich-note --request-json - --json-events < request.json
omd capabilities --json

enrich-note returns a validated proposal on stdout and never edits the vault. The complete v1 stdin/response/event contract is documented in the enrich-note contract. Obsidian plugin authors should also follow the plugin integration guide for capability negotiation, subprocess isolation, response validation, and the hash-checked Vault API write boundary.

omd-mcp exposes four tools:

  • convert_to_markdown(uri, output?, output_format?, lang?, reel_options?)

  • inspect_source(uri, include_readiness?, cookies?, cookies_from_browser?)

  • capture_to_vault(uri, vault, lang?, tags?)

  • list_supported_formats()

Minimal MCP configuration:

{
  "mcpServers": {
    "omd": {
      "command": "omd-mcp"
    }
  }
}

Treat converted Markdown as untrusted input. MCP restricts local paths and private-network URLs by default; use narrow OMD_MCP_ALLOWED_ROOTS only for folders you intend the client to access.

Symptom

What to check

markitdown missing

Reinstall the Homebrew package or pip install -e '.[all]'.

OCR language unavailable

Install tesseract-lang; use eng or chi_sim+eng.

Local model warning

Start Ollama and run the displayed ollama pull <model> command. Raw Markdown is retained.

Web or Reddit HTTP 403

The source rejected automated access. Save an authorised copy as HTML or PDF and convert the local file.

Douyin / Xiaohongshu warning

Export a fresh platform-specific cookie file and select it in the matching UI field.

Partial failure in a multi-file run

Open the output folder; successful items and partial raw outputs are retained when safe.

Run omd doctor for local capability checks. For a reproducible report, include a non-sensitive sample, the warning text, and --verbose output. Verbose logs are shown in the process log and are not added to the user-facing Markdown note.

git clone https://github.com/omd-local/markdown-everything.git omd
cd omd
pip install -e '.[all,test,audit]'
make smoke
make test

OMD builds on Microsoft MarkItDown, yt-dlp, f2, MLX Whisper, Ollama, and Tesseract.

Issues and focused pull requests are welcome. Read SECURITY.md before reporting a vulnerability. OMD is released under the MIT License.

Local-first, with explicit boundaries

Personal note use only. OMD is designed for personal research, note-taking, and AI-assisted knowledge workflows. It is not a legal, compliance, evidentiary, or archival system. Output may omit, reorder, or reformat source content. You are responsible for ensuring you have the right to access, process, and store each source. OMD does not bypass paywalls, access controls, or platform restrictions. Review AI-generated summaries, tags, Evidence, and [[links]] before relying on them.

Local-first does not mean every URL workflow is offline: URLs contact their source platform, and explicitly configured remote model endpoints receive the content sent to them. Keep private material in the local app with loopback Ollama. See the privacy model and security policy.

Documentation

Read this

When you need it

Examples

Copy-ready conversion, capture, inspect, batch, and polish commands

Obsidian vault capture

Folder layout, sidecars, indexes, and repeated captures

Memory cards guide

Local model setup and generated note sections

enrich-note contract v1

Proposal-only CLI/stdin integration, limits, errors, and trust boundary

Obsidian plugin integration

Safe capability negotiation, managed subprocess use, and apply ownership

OMD Home Phase 2 gap plan

Remaining capability, validator, review/apply, and deployment gates

Obsidian plugin UX acceptance (中文)

Additional acceptance tasks for proposal review, apply, conflicts, and cancellation

Privacy model

What stays local and when network access is used

Positioning

Product scope and what OMD is not

Changelog

Release history and current beta changes

LOCAL SOURCES -> TRACEABLE MARKDOWN -> CONTEXT YOU CONTROL

Star this repository · Open the demo · Report a bug · MIT License

Available Tools

5 tools
capture_to_vaultB

Capture one source into an Obsidian-compatible local vault as Markdown plus an .omd.json manifest. Uses conservative agent defaults: path allowlist checks, no cookie/browser auth flags, no generated memory cards, and untrusted source labeling.

ParametersJSON Schema
NameRequiredDescriptionDefault
uriYesURL, share blob, or allowed local file path to capture.
langNoTesseract language(s) for image OCR; use chi_sim+eng for Chinese + English.eng
tagsNoOptional user tags added to the capture note.
vaultYesAllowed local vault directory to write into.

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden and does add real value: path allowlist checks, no cookie/browser auth flags, no generated memory cards, and untrusted source labeling. It still omits what happens on a blocked path, whether existing files are overwritten, and what failure looks like, so the safety profile is only partially disclosed.

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?

Two tight sentences with the deliverable front-loaded and the default stance second. Dense but every clause carries information; no filler.

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?

No output schema exists, so the description usefully names the two artifacts it writes, which covers the return-value gap. However, for a write tool with no annotations it does not address overwrite behavior, permission requirements, or error handling, leaving a mutation with meaningful unresolved questions.

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%, so every parameter is already documented in the schema, making 3 the baseline. The description adds no format or syntax detail for uri, vault, lang, or tags beyond what the schema provides, so it neither compensates nor detracts.

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?

States a specific verb (capture) and resource (one source) plus the exact outputs produced: Markdown plus an .omd.json manifest in an Obsidian-compatible local vault. It does not name or contrast itself with siblings like convert_to_markdown or inspect_source, so an agent must infer the boundary between capturing and merely converting.

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?

There is no explicit when-to-use guidance and no comparison against convert_to_markdown or inspect_source, which are the obvious alternatives for the same kind of source. 'Capture one source' weakly implies single-source scope, but nothing tells the agent when this tool is the right pick versus its siblings.

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

convert_to_markdownB

Ingest a user-selected URL, file path, or directory into untrusted Markdown for local AI context workflows. Core routes include PDF/DOCX/PPTX/XLSX/HTML/CSV/ZIP via markitdown, PNG/JPG/JPEG via OCR, audio via local transcription, generic web pages, and directories as batches. Advanced public/local-only routes include social posts, WeChat articles, XHS/Douyin, reels, and podcasts when their source access requirements are met.

ParametersJSON Schema
NameRequiredDescriptionDefault
uriYesURL, absolute file path, or directory path
langNoTesseract language(s) for image OCR (default eng; Chinese + English example: chi_sim+eng).eng
outputNoOptional output .md/.Rmd path. If omitted, returns content inline.
reel_optionsNoExtra args forwarded to reel_to_markdown.py for video URLs (safe conversion flags only, e.g. ['--polish', '--ocr']).
output_formatNoOutput format: Markdown (.md) or RMarkdown (.Rmd). Defaults to md; explicit .md/.Rmd output paths are inferred when omitted.md

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 carries the full behavioral burden. It does add useful context — output is 'untrusted Markdown', directories become batches, and advanced routes have access requirements — but it omits permissions/auth needs, failure modes, rate limits, and side effects for a tool that touches local files and network sources.

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

Conciseness3/5

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

The purpose is front-loaded in the first sentence, which is good, but the two following sentences are dense, enumerative run-ons of format acronyms that are hard to parse and partially redundant with the schema.

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?

With no output schema, the description must cover returns, and it does state that content is returned inline when 'output' is omitted. Still, for a tool touching many file types and network routes with no annotations, the disclosure of behavior and failure conditions is thinner than ideal.

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%, so the baseline is 3. The route list loosely maps to parameters (OCR/PNG-JPG to lang, reels to reel_options, output formats), but it adds no syntax or format detail beyond what the schema already documents.

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?

Clear specific verb+resource: ingest a URL/file path/directory and convert it into Markdown, with the supported input families enumerated. It does not explicitly distinguish itself from siblings like inspect_source or list_supported_formats, though its conversion scope is evident from the route 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?

It frames the use case ('for local AI context workflows') and notes that advanced routes are 'public/local-only ... when their source access requirements are met', implying prerequisites. However, there is no explicit when-to-use-this vs an alternative, and no guidance on choosing between this and sibling tools.

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

inspect_sourceA

Inspect how OMD would route a URL, share blob, file path, or directory without converting it. Optionally includes local readiness from doctor checks.

ParametersJSON Schema
NameRequiredDescriptionDefault
uriYesURL, share blob, absolute file path, or directory path
cookiesNoOptional cookies.txt path to include in readiness.
include_readinessNoInclude local missing-tool/cookie readiness metadata.
cookies_from_browserNoOptional browser cookie source to include in readiness context.

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden and does disclose the key non-destructive trait ('without converting it') plus that readiness metadata can be included. However, it says nothing about permissions/auth needs, whether the inspection has any side effects, or what the routing output contains, so the side-effect profile is only partially covered.

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?

Two tightly written sentences: the core routing behavior is front-loaded and the optional readiness capability is appended. No filler or redundancy.

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?

No output schema exists, so the description must sketch the return; it does so at a high level (routing decision, optional local readiness from doctor checks). Combined with fully documented parameters, this is nearly complete, though the shape/contents of a routing result remain underspecified.

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%, so the schema already documents all four parameters, giving a baseline of 3. The description restates the accepted uri forms and the readiness concept but adds no format, constraint, or interaction detail beyond the schema.

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?

Specific verb (inspect) plus resource (how OMD routes a URL/share blob/file path/directory), and it explicitly contrasts with the sibling convert_to_markdown via 'without converting it'. Clear enough to distinguish from conversion tools, though its relation to the other siblings is left implicit.

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?

Usage is only implied: use this to preview routing instead of converting. There is no explicit when-to-use statement, no prerequisites, and no mention of when an agent should prefer this over convert_to_markdown beyond the single contrast phrase.

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

list_supported_formatsB

List the input forms convert_to_markdown can route.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden, but it does convey that this is a pure enumeration with no parameters and, by the verb 'List', no mutation. It says nothing about return shape (identifiers, MIME types, count) or that it is safe/read-only, which for a discovery tool is a modest but real gap.

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?

A single short sentence with the resource named first and the relevant sibling cited; nothing is padded or redundant.

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?

With no output schema and no annotations, the description should ideally indicate the return format (e.g., a list of format names or MIME types). It establishes the tool's role but leaves the agent guessing at the response shape.

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 tool takes zero parameters, so per the baseline the schema cannot be improved on and the description need not document any inputs. No parameter meaning is required.

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 gives a specific verb ('List') and a specific resource ('the input forms convert_to_markdown can route'), and it explicitly ties itself to the sibling convert_to_markdown. It is unambiguous what the tool returns, though the term 'input forms' could be tightened (MIME types vs. extensions).

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?

There is no explicit when-to-use statement, no prerequisites, and no comparison to alternatives such as inspect_source. Usage is only implied by the reference to convert_to_markdown, which the agent must infer means 'call this to discover routeable formats before converting'.

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

search_memoryA

Search Markdown notes under an allowed local vault root. Returns relative paths, deterministic lexical scores, and bounded untrusted evidence snippets.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryYesLocal lexical search query.
vaultYesAllowed local vault directory to search.

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does useful work: it discloses that results are relative paths, deterministic lexical scores, and bounded untrusted evidence snippets. It does not cover permissions beyond the 'allowed vault root' constraint, failure modes, or pagination behavior.

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?

Two tightly written sentences with the scope constraint front-loaded and zero redundant restatement of the tool name.

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 three-parameter read tool with no annotations and no output schema, the description covers return shape and scope adequately; the only real gap is the undocumented limit parameter and error/permission behavior.

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 67% (query and vault documented, limit undescribed). The description reinforces the vault constraint ('allowed local vault root') and the lexical nature of query, but adds nothing about the limit parameter or score/path formats beyond the schema. 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?

States a specific verb (Search) and resource (Markdown notes) bounded by scope (under an allowed local vault root), which is unambiguous and clearly distinct from convert/inspect/capture/list siblings that do not search note 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?

There is no when-to-use or when-not-to-use guidance, no prerequisites, and no routing to or away from siblings such as inspect_source. Usage is only inferable from the verb itself.

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. 5 tool updatesv0.1.0
    • First observedcapture_to_vault
    • First observedconvert_to_markdown
    • First observedinspect_source
    • First observedlist_supported_formats
    • First observedsearch_memory

TDQS

A3.7/5.0

Scored across 5 tools

Disambiguation4/5

Most tools have clearly distinct purposes: convert, inspect, capture, search, and list formats. However, convert_to_markdown and capture_to_vault both convert a source to Markdown, which could cause slight confusion on when to use which, though descriptions differentiate by output destination and defaults.

Naming Consistency5/5

All tools follow a consistent snake_case verb_noun pattern (convert_to_markdown, inspect_source, capture_to_vault, search_memory, list_supported_formats). No deviations in case or style.

Tool Count5/5

Five tools cover the core operations: conversion, inspection, vault capture, search, and format listing. This is well-scoped for a markdown ingestion and vault tool without redundancy.

Completeness4/5

The surface covers ingestion, inspection, vault capture, and search, but lacks a way to retrieve full note content (search returns only bounded snippets) and no note update/delete operations. These are minor gaps for its stated purpose.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers