Skip to main content
Glama

KSJ MCP Server

Knowledge Synthesis Journal v2.0 — AI companion

Current release: ksj-mcp v3.6.2 · built on MCP SDK v2.0.0

Turn your handwritten journal photos into a searchable, AI-powered knowledge base — privately, on your own machine.

Get the journal: Knowledge Synthesis Journal v2.0 on Amazon


Contents


Related MCP server: agrasandhany

What it does

The KSJ MCP server connects your knowledge — handwritten or digital — to an AI assistant via the Model Context Protocol (MCP) — an open standard for linking AI models to local tools and data.

Physical journal → knowledge base

Photograph a journal page, show it to your AI assistant, and it can:

  • Search across everything you've ever written

  • Find connections between ideas (shared tags, @ references)

  • Surface your open questions, key insights, and breakthroughs

  • Export your knowledge base as Markdown or JSON

How pages get in — two paths:

  1. Assistant vision (recommended). Share the photo in chat, let your assistant read the handwriting, confirm the transcription, and it stores the page with manual_capture. Modern AI vision is dramatically more accurate on handwriting than traditional OCR — this is the normal workflow.

  2. Local OCR (optional). upload_capture and bulk_upload run Tesseract on your machine. Fully offline, but Tesseract struggles badly with cursive handwriting — best for printed or very neat text.

Either way, a bad read is never permanent: correct_ocr replaces a stored capture's text and re-runs parsing, tags, and connections, while the original read is preserved.

AI research sessions → structured insights

Spend an hour going deep on a topic with an AI assistant and most of that thinking vanishes when the chat ends. extract_insights fixes that — paste or pipe a session transcript and the server extracts what matters:

  • Novel hypotheses and seed ideas

  • Unexpected connections between concepts

  • Open questions worth pursuing

  • Decisions made and action items

Each insight is confidence-scored (🟢 Seed / 🔴 Developing / 🟡 Strong) and shown to you for review before anything is written to the database. Approved entries are stored alongside your journal captures with full tag support, so AI-extracted insights surface in searches, connection graphs, and synthesis suggestions alongside your handwritten notes.

AI companions — an independent check on what you already wrote

Three pairs of tools go a step further than search and connections: each runs an independent AI pass against a page you've already written by hand, then walks you through what it found before anything gets stored. Same shape every time — scan → structured dialogue → your approval → a separate AI-Extracted entry. Your original page is never rewritten.

  • Synthesis. surface_connections re-derives connections across the RC cluster behind a SYN page — blind to what the page itself says — then compares its independent read against yours: what you both found, what it caught that you missed, what you saw that no tag overlap could have surfaced. commit_distillation stores what the comparison revealed once you approve it, linked to the SYN page with a distills edge.

  • Review. audit_knowledge_status checks a claimed Knowledge Status (Solid / Mastered) against real evidence still sitting in the journal — open questions and uncited insights on that topic. commit_assessment records the outcome with an assesses edge; your REV page's claimed status is never rewritten — a real status change only ever happens on a future hand-written page.

  • Dream Capture. dream_correlation reports plain co-occurrence between dream entries and your waking entries — deliberately labeled co-occurrence, not correlation, with the window size, match count, and base rate always shown, since a small journal can make anything look meaningful. bridge_dream_research builds on it with a dialogue about what a dream's symbols mean to you, and commit_observation stores the outcome with an observes edge — called an observation, not an inference, because that's what a journal this size can actually support.

Every one of these runs after the physical page exists, never before — running the check first would let the AI perform the thinking the physical practice exists to force. None has an override flag for that precondition, and the dialogues themselves are built to ask, not propose: a question makes you think; a suggested answer makes the AI think, in your place.

Local by default. Storage, search, and connections all live in a SQLite database on your machine — nothing is synced or hosted anywhere. When your AI assistant reads a journal photo with vision, that image is handled by your assistant's platform like any other chat attachment; the local Tesseract OCR path keeps everything on-machine. Optional cloud OCR for bulk imports exists but is off unless you explicitly enable it with your own key.


AI platform support

This server uses MCP (Model Context Protocol), an open standard with growing support across AI platforms and developer tools.

Currently supported:

  • Claude Desktop (free) — full MCP support, recommended for getting started

Other MCP-compatible clients (Cursor, VS Code + GitHub Copilot, and others) can connect using the same config — check your client's MCP documentation for setup details.

Using ChatGPT, Gemini, or another platform? Use the export_captures tool to dump your knowledge base as Markdown or JSON, then paste it into your AI assistant of choice. Full native MCP support for additional platforms is on the roadmap as the ecosystem grows.

Protocol compliance: ksj-mcp runs on the official Python MCP SDK v2.0.0 over the stdio transport, using the protocol's classic initialize-handshake model — negotiated up to protocol revision 2025-11-25. (MCP is versioned by dated spec release, not semantic version — "MCP SDK v2.0.0" above refers to the SDK package's own version number, not the protocol revision.)


Setup (3 steps)

No OCR software needed — your AI assistant reads the pages. (Want fully offline OCR too? See Optional: offline OCR after setup.)

Step 1 — Install an MCP-compatible AI client

The fastest way to get started is Claude Desktop (free at claude.ai/download).

For other MCP clients, consult their documentation for how to register a local MCP server, then use the config in Step 3.

Step 2 — Install uv and the KSJ server

uv is a fast Python package manager used to install and run the KSJ server.

Install uv:

Platform

Command

Windows

winget install astral-sh.uv or download from astral.sh/uv

macOS/Linux

curl -LsSf https://astral.sh/uv/install.sh | sh

Verify with uv --version in a terminal before continuing.

Install the KSJ server (run once in a terminal):

uv tool install --from git+https://github.com/ChavezAILabs/ksj-mcp ksj-mcp

This installs ksj-mcp as a persistent command on your machine. Git must be installed for this step (Windows: Git for Windows).

Verify with uv tool list — it should list ksj-mcp with a version number.

To update later:

uv tool upgrade ksj-mcp

Step 3 — Register the server

Claude Desktop config file location:

Platform

Path

Windows

%APPDATA%\Claude\claude_desktop_config.json

macOS/Linux

~/.config/claude/claude_desktop_config.json

Claude Desktop launches MCP servers with a limited PATH, so a bare "ksj-mcp" command often won't resolve even though it works fine in a terminal — use the full path to the binary uv tool install created in Step 2 instead:

Platform

Typical binary path

Windows

C:\Users\<you>\.local\bin\ksj-mcp.exe

macOS/Linux

~/.local/bin/ksj-mcp (expand ~ to the full path, e.g. /Users/<you>/.local/bin/ksj-mcp)

Add the following block (Windows example shown — swap in your macOS/Linux path if applicable):

{
  "mcpServers": {
    "ksj": {
      "command": "C:\\Users\\<you>\\.local\\bin\\ksj-mcp.exe"
    }
  }
}

Save and restart your AI client. You should see ksj listed in the tools/integrations panel.

Optional: offline OCR (Tesseract)

Only needed if you want upload_capture / bulk_upload to read photos fully on-machine instead of via your assistant's vision. Fair warning: Tesseract performs poorly on cursive handwriting — printed or very neat text works best.

Platform

Command

Windows

Download the installer from UB-Mannheim/tesseract — check "Add to PATH" during install

macOS

brew install tesseract

Linux

sudo apt install tesseract-ocr

After installing, restart your AI client so the updated PATH is picked up.

Windows note: If you skip "Add to PATH", the server will still auto-detect Tesseract at the default install location (C:\Program Files\Tesseract-OCR\).

Optional: cloud OCR for bulk imports

Off by default — nothing leaves your machine unless you turn this on.

Importing a whole folder of handwritten pages with bulk_upload is the one place local Tesseract really hurts: cursive comes out as noise, page after page. If you have a large backlog, you can point the server at your own Azure Document Intelligence resource (~9% word error rate on handwriting vs ~95% for Tesseract):

{
  "mcpServers": {
    "ksj": {
      "command": "C:\\Users\\<you>\\.local\\bin\\ksj-mcp.exe",
      "env": {
        "KSJ_OCR_BACKEND": "azure",
        "KSJ_AZURE_ENDPOINT": "https://<your-resource>.cognitiveservices.azure.com",
        "KSJ_AZURE_KEY": "<your-key>"
      }
    }
  }
}

(Use the command path from Step 3 for your platform.)

What this means for your data: each uploaded image is sent to your own Azure resource (your subscription, your key, Azure's data terms) for text extraction. Nothing else is sent anywhere, and your knowledge base stays local either way. Every upload's output states plainly when cloud OCR is active. Remove KSJ_OCR_BACKEND to return to fully local processing.

For a handful of pages, skip all of this — sharing the photo in chat and letting your assistant read it is free and just as accurate.


Usage

Once connected, talk to your AI assistant naturally.

Capturing pages (recommended flow):

[share a photo of the page in chat] "Read this journal page and add it to my knowledge base"

"Here's RC-007 — transcribe it, show me what you read, then store it"

Capturing via local OCR (optional, needs Tesseract):

"Upload my journal photo from /Users/me/Desktop/RC-001.jpg"

"Process all the photos in my /Desktop/journal-scans folder"

Fixing a bad read:

"Capture #12's text is wrong — here's the corrected transcription: …"

Searching & browsing:

"Search my notes for ideas about spaced repetition"

"Show me everything tagged #machine-learning"

"What are my open questions about calculus?"

"Show me everything connected to RC-015"

Synthesis & review:

"Which topics am I ready to synthesize into a SYN page?"

"Show me my breakthrough timeline"

"How is my understanding of #linear-algebra progressing?"

"Run surface_connections on SYN-004" → independent scan of the RC cluster behind it, then a dialogue comparing what it found against what you wrote

"Audit REV-008 against the evidence" → checks its claimed Knowledge Status against open questions and uncited insights still sitting on that topic

Dream Capture:

"What symbols and themes keep appearing in my dreams?"

"Show me all my dream entries from this month"

"Does #flying show up near any of my waking entries?" → plain co-occurrence counts, always with the window, match count, and base rate shown

"Bridge DC-005 to my research" → checks for cross-domain echo, then asks what the dream's symbols mean to you (never proposes an interpretation)

Export & health:

"Export all captures tagged #ai as Markdown"

"Generate a study deck from my open questions"

"How's my journal practice looking?"

"Give me a browsable view of my whole knowledge base" → writes a self-contained .html file — timeline (with date-range search and a 25-at-a-time load-more), tag/entity index, per-capture connection lists, and an ego-centric connection graph (click a tag cluster or a capture to see its local neighborhood, click any neighbor to recenter) — you can open in any browser, no server or install required


Available tools

All 36 tools below were individually exercised (real-data and bad-input cases) as part of the v3.6.0 ship-readiness pass. One scaling issue was found and fixed during the pass: export_study_deck on a very large knowledge base could join far too many connected insights into a single flashcard — now ranked by connection strength and capped.

Journal tools

Tool

What it does

get_version

Report the running ksj-mcp, mcp, pydantic, and Python versions — confirms an install or upgrade actually took effect

manual_capture

Store a page your assistant transcribed with vision — the primary capture path

upload_capture

OCR a journal photo locally (Tesseract), parse the template, store it, highlight strongest connection

correct_ocr

Replace a stored capture's text with a corrected transcription — re-parses tags and connections, preserves the original

identify_capture

Assign or fix a capture's template ID — pages with unreadable IDs are stored, never discarded

bulk_upload

Process a whole folder of photos at once (local OCR)

set_volume

Multiple journals: set which book new captures go into and which books search sees

assert_entity

Link a named entity (person, place, work, dream symbol) to a capture

assert_connection

Assert that one capture supersedes / refutes / narrows / supports / distills / assesses / observes another — superseded claims are kept in history but leave current search

rebuild_connections

Re-derive the connection graph from current tags and text (asserted edges are never touched)

find_path

Shortest chain of connections between two captures

neighborhood

Everything within N hops of a capture — its local knowledge cluster

lint

Health check: orphan captures, un-closed superseded claims, unresolved contradictions, stale open questions, fragmented tags

export_backup

Full knowledge base to a versioned JSONL file (format doc)

import_backup

Restore a JSONL backup — additive, nothing overwritten

export_html

Self-contained, offline HTML view — timeline with date search and load-more, tag/entity index, per-capture connection lists, and an ego-centric connection graph, opens in any browser

search_captures

Full-text search with optional tag and date filters

list_by_tag

Browse all captures with a given tag or prefix

find_connections

Show tag-overlap and @-reference connections for a capture

get_stats

Overview: counts, top tags, open questions, insights, date range

export_captures

Dump your knowledge base as Markdown or JSON

suggest_synthesis

Find RC topic clusters ready to become a SYN entry

surface_connections

Independently scan the RC cluster behind a SYN page you've already written, then run a structured comparison dialogue — runs after the page exists, never before; no DB write

commit_distillation

Store the confirmed outcome of a surface_connections dialogue as an AIEX entry, linked to its SYN page with an asserted distills edge

export_study_deck

Export ? questions as a portable CSV study deck (Anki, Quizlet, Notion, etc.)

journal_health

KPI dashboard + coaching: velocity, synthesis ratio, review cadence, open questions

get_breakthroughs

All SYN entries chronologically — your complete breakthrough timeline

dream_patterns

Recurring symbols, emotions, motifs, and themes across DC pages

dream_correlation

Co-occurrence between DC entries and RC/REV entries sharing a tag, within a day window — descriptive only: always reports the window, match count, and base rate, never claims "correlation" or significance

knowledge_progress

Track Needs Work → Solid → Mastered progression from REV entries

audit_knowledge_status

Independently check a REV page's claimed status against evidence (open questions, uncited insights), then run a structured dialogue over anything that doesn't line up — runs after the page exists, never before; no DB write

commit_assessment

Store the confirmed outcome of an audit_knowledge_status dialogue as an AIEX entry, linked to its REV page with an asserted assesses edge — never changes the REV page's own claimed status

bridge_dream_research

Independently check a DC page for cross-domain echo (via dream_correlation) and prepare a dialogue over what its symbols mean to you — runs after the page exists, never before; no DB write

commit_observation

Store the confirmed outcome of a bridge_dream_research dialogue as an AIEX entry, linked to its DC page with an asserted observes edge — never changes the DC page's own dream narrative

AI session tools

Tool

What it does

extract_insights

Prepare an AI research session for insight extraction — loads knowledge-base context, no DB write

commit_aiex

Store the reviewed, confirmed insights as AIEX entries after your approval


Schema tag system

Use these prefixes anywhere on your journal pages — the server extracts them automatically.

RC, SYN, REV pages:

Prefix

Meaning

Example

#

Topic / domain

#machine-learning

@

Source / reference

@RC-012

!

Priority / urgency

!deadline

?

Open question

?why-does-this-work

$

Key insight

$breakthrough

A→B

Cause / effect

study→retention

DC (Dream Capture) pages use a dream-specific variant:

Prefix

Meaning

Example

#

Dream theme

#flying

@

Symbol or character

@the-old-house

!

Recurring motif

!falling

*

Sensory detail

*cold-wind

Three things the server does with these automatically:

  • Roles. The same character means different things on DC pages than on RC/SYN/REV (! is priority on RC, a recurring motif on DC). The server stores the meaning alongside the character, so browsing by tag can distinguish them — ask for "priority items" vs "dream motifs".

  • Entities. An @ value that isn't a template ID (@Veronica, @the-old-house) becomes a named entity — searchable across every capture and every journal volume. Dream symbols and story characters are the same kind of object.

  • Tag bubbles. Anything written inside the printed tag bubbles counts as a tag, with or without the #. DOG MAN, Dog-Man, and DOG-MAN all normalize to the same tag.


Multiple journals (volumes)

Finished a journal and started a second one? The new book starts over at RC-001 — that's expected. Each physical journal is a volume, and volume 2 continues volume 1's knowledge base: search spans all volumes and cross-volume connections are normal.

When you start a new book, say so once:

"I'm starting my second journal" → the assistant runs set_volume(current_volume=2)

Or write the volume on the page itself (e.g. V2 next to the template ID), or pass volume=2 on a single upload. If an upload collides with an existing page ID, the server asks whether it's a new journal or a re-capture — nothing is ever silently overwritten.


Troubleshooting

"Tesseract OCR is not installed" You called upload_capture/bulk_upload, which need the optional local OCR engine. Either install Tesseract (Optional: offline OCR) and restart your AI client — or skip it entirely: share the photo in chat and ask your assistant to read and store the page instead.

"Stored as UNIDENTIFIED" The template ID couldn't be read from the photo, but the page and its text were stored anyway — nothing is lost. Tell your assistant the correct ID ("that's RC-007") and it will fix it with identify_capture. Sloppy or unpadded IDs (RC-7, RC-OO2, a stray letter after the number) are read automatically with a confirmation note.

OCR got the text wrong Ask your assistant to fix it with correct_ocr — give it the capture number and the corrected text. The original read is preserved, and tags and connections are rebuilt from the correction.

"RC-001 already exists in your knowledge base" You're re-uploading a page that's already stored. To replace it with the new photo (e.g. after a cleaner retake), ask your AI assistant to upload with force=True:

"Upload /path/to/RC-001.jpg with force=True"

"Server transport closed unexpectedly" / server not starting Run uv tool list in a terminal — it should list ksj-mcp with a version number. If it's missing, re-run the install command from Step 2. If it's installed, the issue is likely the Claude Desktop config — double-check it is valid JSON and that command is the full path to the ksj-mcp binary (see Step 3), not just "ksj-mcp".

Server not appearing in tools panel Confirm uv tool list shows ksj-mcp installed, verify the config file is valid JSON, and restart Claude Desktop after saving any config changes. Once it's connected, ask your assistant to use the get_version tool — that confirms the server is actually running and reachable, not just installed.


Data location

All your captures are stored locally in ~/.ksj-mcp/:

Platform

Path

Windows

C:\Users\<you>\.ksj-mcp\

macOS/Linux

~/.ksj-mcp/

Files:

~/.ksj-mcp/captures.db     (SQLite database — all your captures and tags)
~/.ksj-mcp/images/         (copies of uploaded journal photos)

Your data is never sent anywhere and persists across updates. Schema upgrades run automatically on server start; before the first 3.0 start your database is backed up to captures.db.bak-v3 in the same folder.

Custom location: Set the KSJ_DATA_DIR environment variable in your config to store data elsewhere:

{
  "mcpServers": {
    "ksj": {
      "command": "C:\\Users\\<you>\\.local\\bin\\ksj-mcp.exe",
      "env": {
        "KSJ_DATA_DIR": "C:\\Users\\you\\Documents\\ksj-data"
      }
    }
  }
}

(Use the command path from Step 3 for your platform.)


License

MIT — free to use, modify, and share.

Created by Chavez AI Labs LLC paul@chavezailabs.com

Get the journal: Knowledge Synthesis Journal v2.0 (Amazon)

Available Tools

13 tools
bulk_uploadA
Process all journal page photos in a folder at once.

Finds every image file (JPG, PNG, TIFF, BMP, WebP) in the folder and runs
the full upload pipeline on each one. Non-image files are skipped silently.

Args:
    folder_path: Absolute path to the folder containing journal photos.
    force:       Set to True to overwrite existing captures with matching
                 template IDs (default False — skips duplicates with a warning).

Returns a summary table of all processed images.
ParametersJSON Schema
NameRequiredDescriptionDefault
folder_pathYes
forceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes key behaviors: processing multiple images in batch, skipping non-image files silently, handling duplicates with warnings by default, and returning a summary table. It doesn't mention potential rate limits, authentication requirements, or error handling for invalid paths.

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 well-structured and appropriately sized. It begins with the core purpose, then explains the processing behavior, provides clear parameter documentation, and ends with the return value. Every sentence adds essential information with zero wasted content.

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

Completeness5/5

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

Given the tool's complexity (batch processing with file type filtering and duplicate handling), no annotations, and the presence of an output schema, the description is remarkably complete. It explains what the tool does, how it behaves, what parameters mean, and what it returns, making the output schema's details about the 'summary table' sufficient.

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

Parameters5/5

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

The description adds significant value beyond the input schema, which has 0% description coverage. It clearly explains both parameters: 'folder_path' as 'Absolute path to the folder containing journal photos' and 'force' with detailed behavior about overwriting existing captures vs. skipping duplicates with warnings. This fully compensates for the schema's lack of descriptions.

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's purpose with specific verbs ('Process all journal page photos', 'Finds every image file', 'runs the full upload pipeline') and identifies the resource ('in a folder at once'). It distinguishes this bulk operation from the sibling 'upload_capture' tool which likely handles single uploads.

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

Usage Guidelines4/5

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

The description provides clear context about when to use this tool ('Process all journal page photos in a folder at once') and what it does with non-image files. However, it doesn't explicitly state when NOT to use it or mention alternatives like the 'upload_capture' sibling tool for single uploads.

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

dream_patternsA

Analyze recurring patterns across all Dream Capture (DC) entries.

Aggregates symbols, emotions, and themes from every DC page to surface what appears most frequently in your dreams — recurring characters, objects, emotional states, and topic clusters. The more DC pages you upload, the more meaningful the patterns become.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/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. It discloses that the tool aggregates data across all entries and that output quality depends on input volume, which are useful behavioral traits. However, it doesn't mention performance characteristics, error conditions, or specific output format details, leaving some gaps in 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 front-loaded with the core purpose in the first sentence, followed by elaboration in two concise sentences. Every sentence adds value by explaining scope, aggregation details, and data dependency, with zero wasted words or repetition.

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 the tool has 0 parameters, no annotations, and an output schema exists, the description provides sufficient context for understanding its purpose and usage. It covers what the tool does and how input volume affects results, though it could briefly hint at output structure to fully leverage the output schema.

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 input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description appropriately focuses on the tool's function without redundant parameter info, earning a high baseline score for not introducing unnecessary complexity.

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's purpose with specific verbs ('Analyze recurring patterns', 'Aggregates symbols, emotions, and themes') and resources ('all Dream Capture entries', 'DC pages'). It distinguishes itself from siblings by focusing on pattern analysis rather than upload, export, search, or other operations.

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 usage context by stating 'The more DC pages you upload, the more meaningful the patterns become,' suggesting it's best used with substantial data. However, it doesn't explicitly state when to use this tool versus alternatives like 'get_stats' or 'find_connections,' nor does it provide exclusions or prerequisites.

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

export_capturesA
Export all captures (or a tag-filtered subset) as Markdown or JSON.

Args:
    format:     "markdown" (default) or "json"
    tag_filter: Optional tag value — only include captures with this tag
                (e.g. "machine-learning")

Returns the full export as a string (no file is written).
ParametersJSON Schema
NameRequiredDescriptionDefault
formatNomarkdown
tag_filterNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/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 well by disclosing key behaviors: it exports data without writing a file (clarifying output as a string), supports filtering by tag, and specifies default values. However, it misses details like rate limits, authentication needs, or error handling, which would enhance 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 appropriately sized and front-loaded, starting with the core purpose, followed by parameter explanations and return details in a structured format. Every sentence adds value without redundancy, making it efficient and easy to understand.

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

Completeness5/5

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

Given the tool's moderate complexity, no annotations, and the presence of an output schema (which handles return values), the description is complete enough. It covers purpose, parameters, and behavioral aspects like no file writing, leaving no critical gaps for agent understanding.

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

Parameters5/5

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

The description adds significant meaning beyond the input schema, which has 0% description coverage. It explains the purpose of 'format' (Markdown or JSON with default) and 'tag_filter' (optional filtering with an example), compensating fully for the schema's lack of details and providing clear parameter semantics.

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 specific action ('Export all captures or a tag-filtered subset') and the output formats ('as Markdown or JSON'), distinguishing it from siblings like 'search_captures' or 'list_by_tag' which likely have different functions. It precisely defines what the tool does without being vague or tautological.

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

Usage Guidelines4/5

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

The description provides clear context for usage by mentioning the tag-filtering option and default format, but it does not explicitly state when to use this tool versus alternatives like 'export_study_deck' or 'search_captures'. It implies usage for exporting data but lacks explicit comparisons or exclusions.

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

export_study_deckA
Export your open questions as a portable study deck (tab-separated CSV).

Turns every ? question in your journal into a flashcard:
  Front — the question (from the ? tag)
  Back  — connected $ insight captures; falls back to the capture summary
  Tags  — the # topic tags on that capture

The output is a standard tab-separated CSV compatible with:
  - Anki (File → Import → Tab-separated)
  - Quizlet (Import → Tab between terms, newline between cards)
  - Obsidian, Notion, Google Sheets, or any CSV-aware tool
  - Print as a plain study sheet — no app required

Args:
    tag_filter: Optional # topic tag to limit the export
                (e.g. "machine-learning"). Leave blank for all questions.

Returns a tab-separated text block. No file is written to disk.
ParametersJSON Schema
NameRequiredDescriptionDefault
tag_filterNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden. It discloses key behavioral traits: it transforms questions into flashcards with specific formatting (front, back, tags), outputs as tab-separated CSV, and explicitly states 'No file is written to disk.' This covers output format and side effects, though it doesn't mention rate limits or authentication needs.

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 well-structured and appropriately sized. It front-loads the core purpose, then details the transformation process, output compatibility, and parameter usage. Every sentence adds value with no redundancy, making it efficient and easy to parse.

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

Completeness5/5

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

Given the tool's moderate complexity, no annotations, and an output schema present, the description is complete. It explains what the tool does, how it processes data, output format, parameter usage, and behavioral constraints. With an output schema handling return values, no additional explanation of outputs is needed.

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

Parameters5/5

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

The input schema has 0% description coverage, so the description must compensate. It adds detailed meaning for the single parameter 'tag_filter': explains it's optional, provides an example ('machine-learning'), and clarifies that leaving it blank exports all questions. This fully documents the parameter beyond the bare 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 tool's purpose: 'Export your open questions as a portable study deck (tab-separated CSV).' It specifies the verb 'export' and the resource 'open questions,' and distinguishes it from siblings like 'export_captures' by focusing on study decks with flashcards from journal questions.

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

Usage Guidelines4/5

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

The description provides clear context for when to use this tool: for exporting open questions as study decks, compatible with tools like Anki and Quizlet. It doesn't explicitly mention when not to use it or name alternatives, but the focus on flashcards from journal questions implies it's for study purposes rather than general data export.

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

find_connectionsA
Show all connections for a specific capture (tag overlap and @-references).

Args:
    capture_id: The numeric ID returned by upload_capture or search_captures.
ParametersJSON Schema
NameRequiredDescriptionDefault
capture_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool 'shows' connections, implying a read-only operation, but doesn't clarify if this requires specific permissions, what the output format is (though an output schema exists), or any rate limits or side effects. For a tool with zero annotation coverage, this leaves significant gaps in understanding its 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?

The description is highly concise and well-structured: it starts with the core purpose in the first sentence, then provides parameter details in a separate 'Args' section. Every sentence adds value without redundancy, making it easy to parse and understand quickly.

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 the tool's low complexity (one parameter), the presence of an output schema (which handles return values), and no annotations, the description is reasonably complete. It covers the purpose, parameter semantics, and implied usage context. However, it could improve by addressing behavioral aspects like permissions or output structure, but the output schema mitigates some of this need.

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 description adds meaningful context for the single parameter 'capture_id', explaining it's a 'numeric ID returned by upload_capture or search_captures'. This clarifies the parameter's source and type beyond what the schema provides (which has 0% description coverage and only states it's an integer). Since there's only one parameter and the description compensates well for the low schema coverage, a score of 4 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 tool's purpose: 'Show all connections for a specific capture' with specific details about what constitutes connections ('tag overlap and @-references'). It distinguishes this from siblings like 'search_captures' or 'list_by_tag' by focusing on connections within a single capture rather than searching or listing captures. However, it doesn't explicitly contrast with all siblings, so it's not a perfect 5.

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 usage context by specifying that 'capture_id' comes from 'upload_capture or search_captures', suggesting when to use this tool after those operations. However, it doesn't provide explicit guidance on when to choose this over alternatives like 'suggest_synthesis' or 'dream_patterns', nor does it state any exclusions or prerequisites beyond the ID requirement.

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

get_breakthroughsA

Return all Synthesis (SYN) entries in chronological order — your complete breakthrough timeline.

Shows the breakthrough field, patterns identified, $ insight tags, and topic tags for each SYN page. Use this to see how your thinking has evolved and which ideas led to the biggest discoveries.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/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 of behavioral disclosure. It describes the tool as a read operation ('Return all Synthesis entries') and specifies the output format and ordering, which is helpful. However, it lacks details on potential limitations like pagination, rate limits, or error conditions, which are important for a tool that might return large datasets.

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 appropriately sized and front-loaded, with the first sentence stating the core functionality clearly. Each subsequent sentence adds meaningful context without redundancy, such as detailing the returned fields and the tool's purpose for tracking thinking evolution. There is no wasted text, making it efficient and well-structured.

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 the tool's complexity (0 parameters, no annotations, but with an output schema), the description is mostly complete. It explains what the tool does, the data returned, and its use case. Since an output schema exists, it need not detail return values, but it could benefit from mentioning behavioral aspects like performance or data scope. Overall, it covers the essentials well.

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 input schema has 0 parameters with 100% coverage, so the schema fully documents the absence of inputs. The description adds value by explaining that no parameters are needed and implicitly clarifies the scope ('all Synthesis entries'), which compensates for the lack of parameters. It does not need to detail parameters, so a baseline of 4 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's purpose with specific verbs ('Return all Synthesis entries') and resources ('Synthesis entries'), distinguishing it from siblings like 'search_captures' or 'find_connections' by focusing exclusively on SYN entries. It explicitly mentions what data is returned ('breakthrough field, patterns identified, $ insight tags, and topic tags') and the chronological ordering, making the purpose unambiguous.

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

Usage Guidelines4/5

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

The description provides clear context for when to use this tool ('to see how your thinking has evolved and which ideas led to the biggest discoveries'), implying it's for retrospective analysis of breakthroughs. However, it does not explicitly state when not to use it or name alternatives among sibling tools, such as 'search_captures' for filtered results, leaving some guidance gaps.

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

get_statsB
Return an overview of your knowledge base: capture counts, top tags,
open questions, key insights, and date range.
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/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 full burden for behavioral disclosure. While 'Return an overview' implies a read-only operation, it doesn't specify whether this requires authentication, has rate limits, returns real-time or cached data, or what format the output takes. The description lists content categories but doesn't describe behavioral traits like performance characteristics or access requirements.

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 and well-structured in a single sentence. It front-loads the core purpose ('Return an overview of your knowledge base') followed by specific components in a clear list format. Every word earns its place with no redundancy or unnecessary elaboration.

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 tool has 0 parameters, 100% schema coverage, and an output schema exists, the description's job is simplified. It adequately describes what the tool returns (an overview with specific components). However, for a reporting tool with no annotations, it could benefit from more behavioral context about data freshness, authentication needs, or output format since the output schema isn't visible in the evaluation context.

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 has 0 parameters, and the input schema has 100% description coverage (though empty). The description appropriately doesn't discuss parameters since none exist. It focuses on what the tool returns rather than what it accepts, which is correct for a parameterless tool.

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 tool's purpose: 'Return an overview of your knowledge base' with specific components listed (capture counts, top tags, open questions, key insights, date range). It uses a specific verb ('Return') and resource ('knowledge base'), but doesn't explicitly differentiate from sibling tools like 'knowledge_progress' or 'journal_health' which might provide related metrics.

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. With sibling tools like 'knowledge_progress', 'journal_health', and 'get_breakthroughs' that might provide overlapping or complementary metrics, there's no indication of when this overview tool is preferred or what distinguishes it from other reporting tools.

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

journal_healthA
KPI dashboard and coaching recommendations for your journal practice.

Tracks:
  - Capture velocity (captures/week over last 4 weeks)
  - Insight velocity ($ insights/week)
  - Days since last Review entry
  - Unanswered open questions and their age
  - Synthesis ratio (RC entries per SYN page — target ~4:1)
  - Template balance (which template types are unused)

Returns a health score and specific, actionable recommendations.
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes what the tool returns (health score and actionable recommendations) and outlines the specific metrics tracked, giving good insight into its behavior without contradictions.

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 well-structured and front-loaded with the main purpose, followed by a bulleted list of tracks and a summary of returns. Every sentence adds value, with no wasted words, making it highly efficient and easy to scan.

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

Completeness5/5

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

Given the tool's complexity (health assessment with multiple metrics), no annotations, and an output schema present, the description is complete. It thoroughly explains what the tool does, the metrics it tracks, and what it returns, making additional details unnecessary.

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 input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description adds value by explaining the tool's focus on journal practice health, which compensates for the lack of parameters, earning a baseline 4 for zero parameters.

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's purpose as providing a KPI dashboard and coaching recommendations for journal practice, with specific metrics listed (capture velocity, insight velocity, days since last Review entry, etc.). It distinguishes itself from siblings by focusing on health assessment rather than operations like uploading, exporting, or searching.

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

Usage Guidelines4/5

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

The description implies usage for monitoring and improving journal practice health, but does not explicitly state when to use this tool versus alternatives (e.g., get_stats for general statistics or knowledge_progress for progress tracking). It provides clear context but lacks explicit exclusions or named alternatives.

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

knowledge_progressA
Track Knowledge Status progression across your Review (REV) entries.

Shows how topics move through Needs Work → Solid → Mastered over time,
based on the Knowledge Status field on each REV page.

Args:
    topic: Optional # topic tag to filter (e.g. "calculus"). Leave blank
           to show all topics across all REV entries.
ParametersJSON Schema
NameRequiredDescriptionDefault
topicNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It describes what the tool does (track progression and show status movement) but lacks details on output format, data freshness, rate limits, authentication needs, or whether it's read-only or has side effects. The mention of 'over time' hints at historical data, but this isn't elaborated.

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 well-structured and appropriately sized, with a clear purpose statement followed by parameter details. Every sentence adds value, though the second sentence could be slightly more concise by combining ideas about status progression.

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 the tool has an output schema (which handles return values), one parameter with good description coverage, and no annotations, the description is reasonably complete. It explains the tool's purpose, parameter usage, and context, though it could benefit from more behavioral details like data scope or limitations.

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

Parameters5/5

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

The description adds significant value beyond the input schema, which has 0% description coverage. It explains the 'topic' parameter's purpose (to filter by topic tag), provides an example ('calculus'), clarifies it's optional, and specifies that leaving it blank shows all topics. This fully compensates for the schema's lack of documentation.

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 tool's purpose: 'Track Knowledge Status progression across your Review (REV) entries' and explains it visualizes how topics move through status levels over time. It specifies the resource (REV entries) and verb (track progression), though it doesn't explicitly differentiate from sibling tools like 'get_stats' which might also provide progress-related data.

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 usage context by mentioning 'REV entries' and 'Knowledge Status field', suggesting it's for tracking learning progress in a review system. However, it doesn't provide explicit guidance on when to use this tool versus alternatives like 'get_stats' or 'journal_health', nor does it mention prerequisites or exclusions.

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

list_by_tagA
Browse all captures that carry a specific tag — no text query required.

Use this to find every note related to a topic, source, question, or insight:
  list_by_tag("machine-learning")           → all captures with that tag
  list_by_tag("machine-learning", prefix="#") → only # topic tags
  list_by_tag("RC-012", prefix="@")          → captures referencing @RC-012
  list_by_tag("deadline", prefix="!")        → priority items
  list_by_tag("attention-mechanism", prefix="?") → that open question

Args:
    tag:    Tag value to look up (without the prefix character).
    prefix: Optional prefix to narrow the search: #  @  !  ?  $  ->
            Leave blank to match the tag across all prefix types.
ParametersJSON Schema
NameRequiredDescriptionDefault
tagYes
prefixNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.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 carries the full burden. It describes the tool's behavior as browsing captures by tag, with optional prefix filtering, but lacks details on permissions, rate limits, pagination, or error handling. The examples add some context, but key behavioral traits are not disclosed.

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 well-structured and front-loaded, starting with the core purpose, followed by usage guidelines with examples, and ending with parameter details. Every sentence adds value, with no redundant information, making it efficient and easy to scan.

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 the tool's moderate complexity (2 parameters, no annotations, but with output schema), the description is largely complete. It covers purpose, usage, and parameters thoroughly. However, it lacks behavioral details like permissions or rate limits, which are important since no annotations exist. The output schema mitigates this gap somewhat, but not fully.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must compensate. It provides detailed semantics for both parameters: 'tag' is explained as 'Tag value to look up (without the prefix character),' and 'prefix' is described with examples showing allowed values (#, @, !, ?, $, ->) and its effect ('narrow the search'). This fully documents the parameters 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 tool's purpose: 'Browse all captures that carry a specific tag — no text query required.' It specifies the verb ('browse'), resource ('captures'), and key constraint ('no text query required'), which distinguishes it from sibling tools like 'search_captures' that likely require text queries.

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

Usage Guidelines5/5

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

The description provides explicit guidance on when to use this tool: 'Use this to find every note related to a topic, source, question, or insight.' It also distinguishes it from alternatives by noting 'no text query required,' implying that 'search_captures' is for text-based searches, and includes examples with different prefixes to illustrate various use cases.

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

search_capturesA
Search all journal entries by concept, keyword, or phrase — across every
template type (RC, SYN, REV, DC) at once.

This is the primary way to find entries by idea rather than tag. Use it
whenever the user asks to find notes, recall something they wrote, or
explore a topic. Natural language queries work well.

Examples:
  "neural networks"        → entries mentioning neural networks
  "why does attention"     → entries with that question or phrase
  "spaced repetition"      → concept search across all templates
  "dream flying"           → DC entries with flying imagery

Args:
    query:      The concept, keyword, or phrase to search for.
    tag_filter: Optional tag value to narrow results (e.g. "machine-learning").
    date_from:  Optional ISO date lower bound (e.g. "2025-09-01").
    date_to:    Optional ISO date upper bound (e.g. "2025-12-31").

Note: search matches terms that appear in the journal text. For tag-only
browsing without a text query, use list_by_tag instead.
ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
tag_filterNo
date_fromNo
date_toNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.8/5.0
Behavior4/5

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

With no annotations provided, the description carries full burden and does well by explaining search matches terms in journal text, works across all template types, and handles natural language queries. It could improve by mentioning pagination or result format, but covers core behavior adequately.

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?

Well-structured with purpose statement, usage guidelines, examples, parameter details, and a note - all in compact sentences. Every section adds value without redundancy. The information is front-loaded with the core purpose first.

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

Completeness5/5

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

Given 4 parameters with 0% schema coverage and no annotations, the description provides complete context: purpose, usage, behavioral details, parameter semantics, and sibling differentiation. The output schema exists, so return values don't need explanation. This is comprehensive for a search tool.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must compensate fully. It provides detailed parameter explanations beyond schema titles: query is for concept/keyword/phrase, tag_filter narrows results with examples, date_from/date_to are ISO date bounds with examples. This adds substantial semantic value.

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 searches journal entries by concept, keyword, or phrase across all template types. It specifies the verb 'search' and resource 'journal entries', distinguishing it from sibling tools like list_by_tag which is mentioned for tag-only browsing.

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

Usage Guidelines5/5

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

Explicit guidance is provided: use for finding notes by idea rather than tag, when users ask to find notes or explore topics. It distinguishes from list_by_tag for tag-only browsing and provides concrete examples of when to use it.

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

suggest_synthesisB
Scan your Rapid Capture entries and identify topic clusters ready to be
synthesized into a SYN page.

Args:
    min_captures: Minimum number of RC entries on a topic to flag it
                  (default 3).
ParametersJSON Schema
NameRequiredDescriptionDefault
min_capturesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/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 burden of behavioral disclosure. It mentions scanning and identifying clusters but doesn't describe how the tool behaves: e.g., whether it returns a list of topics with metadata, how it handles large datasets, or if it requires specific permissions. For a tool with no annotation coverage, this leaves significant gaps in understanding its operation.

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 appropriately sized and front-loaded: the first sentence states the core purpose, and the second provides parameter details. There is no wasted text, and the structure is clear and efficient, making it easy for an agent to parse quickly.

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 tool has an output schema (which likely describes return values), the description doesn't need to explain outputs. However, with no annotations and only one parameter, the description covers the purpose and parameter semantics adequately but lacks behavioral details (e.g., how clusters are identified, performance considerations). It's minimally viable but could be more complete for a clustering tool.

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 description adds meaningful context for the single parameter 'min_captures', explaining it as 'Minimum number of RC entries on a topic to flag it' and noting the default value. Since schema description coverage is 0% (the schema only provides title and type), the description compensates well by clarifying the parameter's purpose and default, though it could add more about valid ranges or effects.

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 tool's purpose: 'Scan your Rapid Capture entries and identify topic clusters ready to be synthesized into a SYN page.' This specifies the verb ('scan', 'identify'), resource ('Rapid Capture entries'), and outcome ('topic clusters ready to be synthesized'). However, it doesn't explicitly differentiate from sibling tools like 'search_captures' or 'find_connections', which might have overlapping functionality.

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 doesn't mention prerequisites (e.g., having Rapid Capture entries), exclusions, or comparisons to sibling tools like 'search_captures' or 'find_connections'. The agent must infer usage context solely from the purpose statement.

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

upload_captureA
Process a journal page photo: run OCR, parse the template, extract schema
tags, store the capture, copy the image to the knowledge base, and detect
connections to existing captures.

Args:
    image_path: Absolute path to the image file (JPG, PNG, TIFF, etc.)
    force:      Set to True to overwrite an existing capture with the same
                template ID (default False — warns instead).

Returns a summary of what was found and stored, including the strongest
connection detected.
ParametersJSON Schema
NameRequiredDescriptionDefault
image_pathYes
forceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations provided, the description carries full burden and does well. It discloses multiple behavioral traits: the multi-step processing pipeline (OCR, parsing, extraction, storage, copying, connection detection), the overwrite behavior controlled by the force parameter, and the return format (summary with strongest connection). It doesn't mention error handling, rate limits, or authentication needs.

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 perfectly structured and concise. First sentence states the comprehensive purpose, followed by clearly labeled Args and Returns sections. Every sentence earns its place by providing essential information without redundancy.

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

Completeness5/5

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

Given the tool's complexity (multi-step processing pipeline), no annotations, and the presence of an output schema (which handles return values), the description is complete enough. It covers purpose, parameters, behavior, and return summary, providing all necessary context for an agent to use this tool effectively.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must compensate fully. It provides excellent parameter semantics: image_path is explained as 'Absolute path to the image file (JPG, PNG, TIFF, etc.)' and force as 'Set to True to overwrite an existing capture with the same template ID (default False — warns instead).' This adds crucial meaning beyond the bare 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 tool's purpose with specific verbs (process, run OCR, parse, extract, store, copy, detect) and resources (journal page photo, capture, knowledge base). It distinguishes from siblings like bulk_upload (batch vs single) and find_connections (detection only vs full processing).

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

Usage Guidelines4/5

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

The description provides clear context for when to use this tool (processing a single journal page photo for OCR and storage). It doesn't explicitly mention when not to use it or name alternatives, though bulk_upload is an obvious sibling for batch processing. The force parameter guidance implies usage for overwriting existing captures.

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. Dates show when Glama detected each change.

  1. 13 tool updatesv0.1.0
    • First observedbulk_upload
    • First observeddream_patterns
    • First observedexport_captures
    • First observedexport_study_deck
    • First observedfind_connections
    • First observedget_breakthroughs
    • First observedget_stats
    • First observedjournal_health
    • First observedknowledge_progress
    • First observedlist_by_tag
    • First observedsearch_captures
    • First observedsuggest_synthesis
    • First observedupload_capture

TDQS

A4/5.0
Disambiguation4/5

Most tools have distinct purposes, but some overlap exists. For example, 'search_captures' and 'list_by_tag' both retrieve captures, though one uses text queries and the other tag-based filtering. Similarly, 'export_captures' and 'export_study_deck' both export data but in different formats and scopes. The descriptions help clarify these distinctions, but an agent might occasionally confuse them.

Naming Consistency5/5

All tool names follow a consistent snake_case pattern with clear verb_noun structures, such as 'bulk_upload', 'dream_patterns', 'export_captures', and 'upload_capture'. There are no deviations in naming conventions, making the set predictable and easy to understand.

Tool Count5/5

With 13 tools, the server is well-scoped for a journal knowledge base system. Each tool serves a specific function, from uploading and searching captures to analyzing patterns and exporting data. The count is neither too sparse nor bloated, fitting the domain appropriately.

Completeness5/5

The tool set provides comprehensive coverage for managing a journal knowledge base. It includes CRUD-like operations (upload, search, list), analysis tools (dream patterns, synthesis suggestions), export functionalities, and health tracking. There are no obvious gaps; agents can perform full workflows from capture to synthesis and review.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Local-first MCP server that extracts structured knowledge from markdown notes into SQLite with full-text search, enabling AI coding tools to retrieve relevant context offline at zero cost.
    3
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Turns a local folder of notes and documents into a searchable knowledge base for AI assistants via MCP, enabling semantic search, reading, and adding notes entirely on-device.
    4
    9
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    A local MCP server for journaling, organizing, and recalling your work. It captures entries as plain markdown files, indexes them for full-text and structured search, and enables querying via natural language.
    1
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ChavezAILabs/ksj-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server