Skip to main content
Glama

MindPulse Academic Suite

Scholar Agent is part of the MindPulse Academic Suite, forming a powerful synergy between local open-source tools and fully-managed cloud services:

  • ๐ŸŒŒ Scholar Agent (Open Source & Local): A local-first knowledge flywheel that integrates with your IDE via MCP (Model Context Protocol). It saves research answers as local Markdown knowledge cards, building your custom personal LLM-Wiki.

  • โšก PaperPulse (Cloud SaaS): A fully-managed daily academic digest SaaS that monitors arXiv/Semantic Scholar, scores papers based on your personalized research preferences, and delivers distilled summaries straight to your WeChat or Email.

Feature

Scholar Agent (Local)

PaperPulse (Cloud SaaS)

Hosting & Mode

Local MCP Server (Open Source)

Fully-Managed SaaS (Closed Source)

Core Workflow

On-demand research query & knowledge synthesis

Automated daily crawling, scoring & email/WeChat push

Storage

Local Markdown Files / Vector DB

Cloud Postgres / Managed Index

IDE Integration

Deeply integrated with Claude Code, VS Code, Cursor

Web-based Dashboard & Chatbot

Pricing

Free & Open Source

Free Tier / Premium Subscriptions

๐Ÿ’ก Synergy (One-Click Local Sync):

  • One-Click Sync: When your Scholar Agent MCP server is running locally, simply click the "Import to Local Scholar Agent" button on the PaperPulse web interface. The note will be instantly synced and written to your local knowledge/ directory via a secure local loopback interface, bypass browser sandbox constraints and rebuild your search index automatically!

  • Manual Export: You can also click "Export Markdown" to download the standard Markdown note and place it into your knowledge base directory manually.


Related MCP server: ContextAtlas

Why

Every AI conversation generates knowledge โ€” research findings, technical explanations, citations. But LLMs are stateless: each new session starts from zero. The research your AI completed yesterday is not available today.

Scholar Agent makes AI knowledge persistent. It saves research and answers as local knowledge cards โ€” structured, citable, and interconnected. Before answering, the AI checks existing local knowledge first, building on what it has already learned rather than starting from scratch each time.

The result is a personal LLM-Wiki: structured, traceable, continuously growing โ€” making your AI increasingly accurate in the domains you care about.


Demo


What It Does

Architecture & Data Flow

When you ask a question, the agent routes the query through a local-first retrieval loop before falling back to external sources:

sequenceDiagram
    actor User
    participant Host as Claude Code / VS Code
    participant MCP as Scholar Agent (MCP Server)
    participant Local as Local Index (BM25)
    participant Web as arXiv / Semantic Scholar

    User->>Host: Prompt: "Explain MoE"
    Host->>MCP: query_knowledge("MoE")
    MCP->>Local: BM25 Query
    alt Local Hit (BM25 Score >= Threshold)
        Local-->>MCP: Match (e.g. mixture-of-experts.md)
        MCP-->>Host: Local Note Context
    else Local Miss
        MCP->>Web: API Fallback (arxiv + web search)
        Web-->>MCP: Raw Papers & Metadata
        MCP->>MCP: Synthesize & Distill
        MCP->>Local: Save Card (Staging -> Validate -> Promote)
        MCP-->>Host: Synthesized Answer + Citations
    end
    Host->>User: Natural Language Response

Knowledge Persistence

Each conversation can produce a knowledge card โ€” a structured record with:

  • The question asked

  • Evidence-backed answer with citations

  • Confidence scores and uncertainty flags

  • Source references you can trace back

These cards accumulate into a searchable local knowledge base. Next time a similar question comes up, the AI draws from what's already been researched.

Knowledge Network

Cards aren't isolated files. Scholar Agent:

  • Maintains a quality lifecycle for each card: draft โ†’ reviewed โ†’ trusted โ†’ stale โ†’ deprecated

  • Auto-generates [[wiki-links]] between related cards

  • Tracks provenance โ€” every claim links back to its source evidence

  • Outputs Obsidian-compatible Markdown (YAML frontmatter + wiki-links)

  • Obsidian Graph Ready โ€” Open your knowledge data directory (e.g. ~/scholar/) directly as an Obsidian Vault to navigate your visual knowledge graph.

Evidence-Based Answers

When researching a question, Scholar Agent:

  1. Searches local knowledge (BM25 keyword index)

  2. Falls back to web and academic APIs when local knowledge is insufficient

  3. Synthesizes answers where every claim cites its source

  4. Flags claims that lack supporting evidence

  5. Returns structured results with confidence levels and suggested next steps

Academic Research Pipeline

For paper research, Scholar Agent provides:

  • Paper Search โ€” arXiv, DBLP, Semantic Scholar with 10+ top-conference filters

  • Smart Scoring โ€” 4-dimensional ranking: relevance, recency, popularity, quality

  • Deep Analysis โ€” 20+ section structured notes with AI-assisted completion

  • Figure Extraction โ€” From arXiv source archives and PDFs

  • Daily Recommendations โ€” Dual-track: 2 top-conference papers + 2 arXiv innovation papers

  • Paper โ†’ Knowledge Card โ€” Feed analyses back into the knowledge base


Quick Start

Install

pip install py-scholar-agent

Or with pipx (isolated environment):

pipx install py-scholar-agent

Or from source:

git clone https://github.com/zfy465914233/scholar-agent.git
cd scholar-agent
pip install -e .

Setup

scholar-agent init

One command creates the Scholar home, knowledge data directories, writes config, and registers MCP with Claude Code. Use scholar-agent init --host all to register Claude Code, VS Code Copilot, and OpenCode in one pass. Check the result with scholar-agent doctor --format text.

Modes

Mode

Command

Knowledge Data

Config/Index Home

Scope

Global (recommended)

scholar-agent init

~/scholar/

~/.scholar/

Every project

Project-Local

SCHOLAR_HOME=./scholar scholar-agent init

my-project/scholar/

my-project/scholar/

Current project only

Docker

docker run -v ~/scholar:/data scholar-agent serve-mcp

/data/

/data/

Isolated


MCP Integration

Scholar Agent runs as an MCP server, integrating directly into your tools:

  • Claude Code โ€” scholar-agent install claude --write

  • VS Code Copilot โ€” scholar-agent install vscode --write

  • OpenCode โ€” scholar-agent install opencode --write

Core tools (always available): query_knowledge ยท save_research ยท list_knowledge ยท capture_answer ยท ingest_source ยท build_graph ยท validate_knowledge ยท lint_knowledge ยท scan_stale_knowledge ยท scan_dead_links

Academic tools (set SCHOLAR_ACADEMIC=1): search_papers ยท search_conf_papers ยท download_paper ยท analyze_paper ยท extract_paper_images ยท paper_to_card ยท daily_recommend ยท link_paper_keywords

save_research is provenance-gated: pass a non-empty sources array and cite those sources from every supporting_claims[].evidence_ids. For unsourced conversation captures, use capture_answer instead. URL ingestion and fetch_url archive first-hand source snapshots under knowledge/_snapshots/; those internal snapshots are excluded from card indexing and governance scans.

Add this to your claude_desktop_config.json:

{
  "mcpServers": {
    "scholar-agent": {
      "command": "scholar-agent",
      "args": ["serve-mcp"],
      "env": {
        "SCHOLAR_ACADEMIC": "1"
      }
    }
  }
}

Local Retrieval

Knowledge is indexed with BM25 for fast keyword search โ€” no external dependencies required. An optional embedding layer adds semantic similarity: build it once with scholar-agent index --build-embedding-index and query_knowledge automatically switches to hybrid (BM25 + semantic) retrieval, keeping the index fresh as you add cards.


CLI Reference

Command

Description

scholar-agent init

One-command setup: Scholar home + knowledge data dirs + config + MCP registration

scholar-agent serve-mcp

Start the MCP server

scholar-agent doctor --format text --host all

Show environment and MCP host registration diagnostics

scholar-agent health

Read-only project health summary for config, index, stale cards, duplicates, and dangling links

scholar-agent config show

Show resolved configuration

scholar-agent index --build-embedding-index

Build/rebuild the search index; the flag enables hybrid retrieval

scholar-agent scan-stale --refresh

Report stale cards and optionally refresh source snapshots

scholar-agent report-dangling

Report dangling [[wikilinks]] across notes and knowledge cards

scholar-agent report-dead-links

Diagnose dead source URLs (404/410/connection failure) across knowledge cards

scholar-agent install claude --write

Register MCP with Claude Code

scholar-agent install vscode --write

Register MCP with VS Code Copilot

scholar-agent install opencode --write

Register MCP with OpenCode


Configuration

Environment Variables

Variable

Required

Description

SCHOLAR_ACADEMIC

No

Set to 1 to enable academic tools

SCHOLAR_HOME

No

Override Scholar home. When unset, config/indexes default to ~/.scholar/ and knowledge data defaults to ~/scholar/; when set, both are rooted in SCHOLAR_HOME.

S2_API_KEY

No

Semantic Scholar API key (get one free)

LLM_API_KEY

No

LLM API key for advanced synthesis pipeline

Config File

See .scholar.example.json for a full example. Key sections:

  • knowledge_dir โ€” Knowledge cards directory. Defaults to ~/scholar/knowledge; with SCHOLAR_HOME set, defaults to $SCHOLAR_HOME/knowledge.

  • index_path โ€” BM25 search index. Defaults to ~/.scholar/indexes/local/index.json; with SCHOLAR_HOME set, defaults to $SCHOLAR_HOME/indexes/local/index.json.

  • academic.research_interests โ€” Your domains, keywords, arXiv categories

  • academic.scoring โ€” Paper scoring weights

Default Path Layout

~/.scholar/
โ”œโ”€โ”€ config/         # Configuration files
โ”œโ”€โ”€ indexes/        # BM25 search index
โ”œโ”€โ”€ cache/          # Cached data
โ””โ”€โ”€ outputs/        # Generated outputs

~/scholar/
โ”œโ”€โ”€ knowledge/      # Knowledge cards
โ”œโ”€โ”€ paper-notes/    # Paper analysis notes
โ””โ”€โ”€ daily-notes/    # Daily paper recommendations

When SCHOLAR_HOME is set, both groups are created under that directory.


Daily research flow

Ask a question (via MCP)
  โ†’ Scholar Agent searches local knowledge first
  โ†’ Falls back to web/academic APIs when needed
  โ†’ Synthesizes answer with citations
  โ†’ Saves as a knowledge card
  โ†’ Next similar question draws from local knowledge

Paper analysis flow

For best paper analysis quality:

  1. Download: download_paper("2510.24701", title="Paper Title", domain="LLM")

  2. Extract images: extract_paper_images("2510.24701")

  3. Deep analysis: analyze_paper(paper_json)

  4. Feed into knowledge base: paper_to_card(paper_json)

Downloading the PDF first enables full-text extraction, producing notes with specific data, formulas, and experimental results.


Development

make dev       # Install with dev dependencies + pre-commit hooks
make lint      # Run ruff + mypy
make test      # Run the offline test suite (1554 tests collected; runtime varies by machine)
make coverage  # Run tests with coverage report
make build     # Build distribution package
make check-dist # Build and validate sdist/wheel contents
make docker    # Build Docker image

See CONTRIBUTING.md for detailed guidelines.

Highlights

  • Knowledge persistence โ€” Every conversation can produce a reusable knowledge card; the local knowledge base grows over time

  • Evidence-based โ€” Every claim cites its source, with confidence scores and uncertainty flags

  • Quality lifecycle โ€” Cards are validated, scored, promoted, and deprecated. Full provenance tracking

  • Knowledge network โ€” Wiki-links connect related cards into a navigable knowledge graph

  • Obsidian compatible โ€” Markdown + YAML frontmatter + [[wiki-links]]. Your data, no lock-in

  • Academic pipeline โ€” Search โ†’ Score โ†’ Analyze โ†’ Extract โ†’ Recommend, fully automated

  • MCP integration โ€” Works with Claude Code, VS Code Copilot, and OpenCode out of the box

  • Offline-first โ€” Local BM25 index, graceful degradation when external APIs are unavailable

Comparison

Wondering how Scholar Agent compares to mem0, MemGPT, or Zep? See docs/comparison.md for a detailed breakdown.

License

MIT โ€” see LICENSE.

Available Tools

12 tools
build_graphA

Build an interactive knowledge graph visualization.

Generates a self-contained HTML file showing all knowledge cards as nodes and their wiki-links as edges. Open the output file in a browser to explore the knowledge graph visually. Compatible with Obsidian vaults.

Returns the path to the generated graph.html file.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

No annotations are provided, so the description must carry the behavioral burden. It discloses that the tool generates a self-contained HTML file and returns its path. Potential side effects like processing time for large knowledge bases are not mentioned, which prevents a 5.

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 relatively concise with four sentences. The first sentence clearly states the purpose, and subsequent sentences add details. However, the phrase 'self-contained HTML file' could be merged with the next sentence to reduce redundancy. Still, it earns its place.

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 lack of annotations, no parameters, and the presence of an output schema (which likely describes the return path), the description is complete enough to guide an agent. It covers what the tool does, the output format, and even compatibility. No critical gaps remain.

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 zero parameters, and the description fully compensates by explaining what the tool does without needing to describe parameter semantics. The description adds value beyond the schema by detailing the output and compatibility with Obsidian vaults.

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

Purpose5/5

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

The description clearly states the verb 'build' and the resource 'knowledge graph visualization.' It distinguishes itself from sibling tools by specifying it generates an interactive HTML graph, unlike query_knowledge or list_knowledge. The purpose is specific and 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?

While there is no explicit when-to-use or when-not-to-use guidance, the description implies use when wanting to visualize knowledge cards as nodes and wiki-links as edges. None of the sibling tools serve a similar purpose, so differentiation is naturally clear. A slight improvement would be to explicitly mention not to use for non-graph queries.

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

capture_answerA

Capture a useful Q&A answer as a draft knowledge card.

Use this ONLY when a conversation produces a SUBSTANTIVE answer that is worth persisting โ€” meaning it provides genuine technical insight, a non-obvious explanation, or actionable knowledge that cannot be found in standard references.

DO NOT use this tool for:

  • Single-sentence answers or brief definitions

  • Answers that could be found in any standard reference (Wikipedia, docs)

  • Trivial facts, simple yes/no responses, or content shorter than 150 characters

  • Paper or topic-level knowledge that requires source verification

If you have structured evidence and claims, prefer save_research instead โ€” it produces higher-quality cards with proper source attribution.

The answer text MUST be at least 150 characters. Write a thorough explanation covering the key insight, context, and practical implications.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNoComma-separated tags for the card (optional).
queryYesThe question that was answered.
answerYesThe answer text (plain text or markdown). Minimum 150 characters.
languageNoLanguage for the card content โ€” "zh" (Chinese, default) or "en" (English).zh

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior4/5

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

No annotations provided, so the description carries the full burden. It discloses the 150-character minimum, content expectations, and the type of answer suitable. However, it does not mention any side effects or authorization requirements, though the tool is likely non-destructive. Overall, good transparency.

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

Conciseness4/5

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

The description is front-loaded with purpose and then provides clear usage guidelines in a bullet-like structure. While slightly verbose, every sentence adds value, and the structure is logical 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?

With output schema present and full schema coverage, the description covers purpose, usage guidelines, parameter semantics, and context relative to siblings. It is complete enough for an AI agent to correctly select and invoke the 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 coverage is 100%, but the description adds significant value: clarifies tags as optional, language defaults, and importantly the 150-character minimum for answer. It also explains the expected content quality, which goes beyond the schema's description.

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 captures a Q&A answer as a draft knowledge card, specifying it is for substantive answers from conversations. The verb 'capture' and resource are distinct and well-defined, and it differentiates from sibling tools like 'save_research'.

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?

Explicitly states when to use (substantive answers worth persisting) and when not to use (single-sentence, standard references, etc.), and provides a clear alternative: 'save_research' for structured evidence. This gives excellent guidance to an AI agent.

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

fetch_urlA

Fetch a web URL and return its main content as markdown โ€” first-hand retrieval (G5).

ๆŠ“ๅ–็ฝ‘้กตๆญฃๆ–‡(ๅทฒๅš HTMLโ†’ๆญฃๆ–‡ๆๅ–)่ฟ”ๅ›ž็ป™่ฐƒ็”จๆ–น,็”จไบŽๅœจ save_research ไน‹ๅ‰ๆŠŠ knowledge card ๅปบ็ซ‹ๅœจไธ€ๆ‰‹ๅ‡บๅค„ไน‹ไธŠ,่€Œ้žๅ‡ญ่ฎฐๅฟ†ๆˆ–ๆ‘˜่ฆใ€‚ๅŒๆ—ถๆŠŠๅฎŒๆ•ดๆญฃๆ–‡ๅญ˜ๆœฌๅœฐ ๅฟซ็…ง knowledge/_snapshots/<sha1(url)>.md(ๅซ captured_at),้˜ฒๆญขๅŽŸ้“พๆŽฅๅคฑๆ•ˆ (ๆ‹›่˜ JDใ€็ฝ‘้กตๆ˜“ไธ‹ๆžถ)ๅŽๆ— ๆณ•ๅ›žๆบฏ(G2)ใ€‚

ๅ…ธๅž‹็”จๆณ•:fetch_url ๆŠ“ไธ€ๆ‰‹ โ†’ ๅŸบไบŽๆญฃๆ–‡ๅ†™ๅธฆๅ…ทไฝ“ๆ•ฐๅญ—/ๆœบๅˆถ็š„ๆทฑๅบฆ answer โ†’ save_research ๅญ˜ๅกใ€‚

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes่ฆๆŠ“ๅ–็š„ http(s) URLใ€‚
max_charsNo่ฟ”ๅ›ž content_md ็š„ๆœ€ๅคงๅญ—็ฌฆๆ•ฐ(้ป˜่ฎค 6000;ๅฎŒๆ•ดๆญฃๆ–‡ๅœจๅฟซ็…ง้‡Œ)ใ€‚

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior5/5

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

The description discloses key behaviors: it saves a local snapshot with captured_at to prevent link rot, and the returned content_md is truncated by max_chars while full content is in the snapshot. Since no annotations are provided, the description fully carries the burden of behavioral disclosure.

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 description is informative but somewhat verbose, mixing English and Chinese. It includes a typical usage flow that adds value, but could be streamlined. It is structured with clear sections but overall slightly long for a tool description.

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 (external fetch, snapshot, truncation) and the presence of an output schema (so no need to detail return values), the description is complete. It covers purpose, behavior, usage flow, and parameter implications adequately.

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

Parameters4/5

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

Schema coverage is 100% with descriptions for both params (url and max_chars). The description adds context: max_chars controls returned content length and that full content is in the snapshot, which is beyond the schema's default value and description. Baseline 3 plus extra value justifies 4.

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

Purpose5/5

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

The description clearly states the tool's action: 'Fetch a web URL and return its main content as markdown.' It emphasizes first-hand retrieval (G5) and distinguishes itself from siblings like save_research, which saves knowledge cards, and query_knowledge, which retrieves stored knowledge.

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 a typical usage flow: 'fetch_url to fetch primary source โ†’ write deep answer with specific numbers/mechanisms โ†’ save_research to save card.' It explicitly connects to the sibling tool save_research and implies when to use (before saving). However, it doesn't explicitly state when not to use or mention alternatives.

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

import_paperpulse_noteA

Import a distilled paper note from PaperPulse SaaS directly into the local Scholar Agent knowledge base.

ParametersJSON Schema
NameRequiredDescriptionDefault
paper_idYesThe UUID of the paper to import.
api_tokenNoOptional API token. If not provided, reads 'paperpulse_token' from config.json.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries full burden. It states the action but does not disclose side effects (e.g., overwriting existing notes), authentication requirements beyond the optional token, or validation 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?

A single, grammatically correct sentence that conveys the core purpose without any unnecessary words or fluff.

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?

While an output schema exists, the description lacks context about the PaperPulse integration, prerequisites, and how it differs from ingest_source. This is adequate but not fully complete for a tool with specific external dependency.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already documents both parameters adequately. The description adds no additional meaning 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 a specific verb ('Import') and resource ('distilled paper note from PaperPulse SaaS into local Scholar Agent knowledge base'), which distinguishes it from siblings like ingest_source or save_research that are more generic.

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

Usage Guidelines3/5

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

The description implies the tool is for importing from PaperPulse but provides no explicit guidance on when to use it vs alternatives, nor any prerequisites or exclusions.

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

ingest_sourceA

Ingest a URL or raw text into the knowledge base as a draft card.

For URLs: fetches the page content, extracts text, and saves as a card. For text: saves the provided text directly as a card.

Use this when you want to add external documents, articles, or notes to the knowledge base without requiring structured JSON.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNoComma-separated tags for the card (optional).
titleNoOptional title for the card. Auto-detected from URL pages.
sourceYesA URL (starting with http:// or https://) or raw text/markdown. When providing raw text and language="zh", the text MUST be in Chinese (ไธญๆ–‡).
languageNoLanguage for the card content โ€” "zh" (Chinese, default) or "en" (English). When "zh" and providing raw text, ensure the content is in Chinese. For URL sources, the content language is determined by the original page.zh

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 full burden. It discloses that for URLs it fetches page content and extracts text, and for text it saves directly. However, it does not cover potential errors, idempotency, or what 'draft card' entails (e.g., whether it's editable). This is adequate but not comprehensive.

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

Conciseness5/5

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

The description is concise, front-loaded with the core action, and uses clear bullet-like statements for URL vs text behavior. Every sentence adds value with no 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?

Given the tool's complexity (4 parameters, simple types, output schema exists), the description covers the main use cases and key behaviors. It could mention error handling or the draft card concept more explicitly, but overall it is sufficient for an agent to use the tool correctly.

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

Parameters4/5

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

Schema coverage is 100% (all 4 parameters described). The description adds value by explaining the behavioral difference between URL and text input, and emphasizing the language constraint for Chinese text ('MUST be in Chinese'). This goes beyond the schema descriptions for 'source' and 'language', making parameter semantics clearer.

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 ingests a URL or raw text into the knowledge base as a draft card, with specific behaviors for each type. It distinguishes from sibling tools like fetch_url (which only fetches) and save_research (which likely expects structured JSON) by emphasizing 'without requiring structured JSON'.

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 explicitly says 'Use this when you want to add external documents, articles, or notes to the knowledge base without requiring structured JSON,' providing clear context. It implies not to use for structured data but does not name specific alternatives, leaving some ambiguity.

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

lint_knowledgeA

Run read-only content health checks over the local knowledge base.

Reports orphan cards, broken wiki-links, cards not updated within stale_days, and highly overlapping titles. This tool never edits files.

ParametersJSON Schema
NameRequiredDescriptionDefault
stale_daysNoAge threshold in days for the updated_at lint check.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior5/5

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

With no annotations provided, the description fully carries the behavioral burden. It explicitly states the tool is read-only and never edits files, and enumerates the exact checks performed, providing complete 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 two concise sentences, front-loading the purpose and listing actions without any filler. Every sentence contributes value.

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 one parameter, no annotations, and an output schema (inferred), the description covers the tool's scope well. It mentions all performed checks and the parameter.

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

Parameters3/5

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

The single parameter 'stale_days' is fully described in the input schema. The tool description already mentions stale_days in context, so the description adds minimal extra meaning 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?

The description clearly specifies the action: 'Run read-only content health checks' on the 'local knowledge base.' It lists the specific checks (orphan cards, broken wiki-links, stale cards, overlapping titles) and states it never edits files, making the purpose distinct from siblings.

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 health checks but does not explicitly state when to use this tool versus alternatives like scan_dead_links or scan_stale_knowledge. However, it is clear that this is a composite check tool.

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

list_knowledgeA

List all knowledge cards in the local knowledge base.

Returns card metadata (id, title, topic, type) for browsing and discovery.

ParametersJSON Schema
NameRequiredDescriptionDefault
topicNoOptional topic filter (e.g. 'qpe', 'markov_chain'). Returns all if omitted.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/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 full burden. It describes a read-only listing operation with no side effects, but does not disclose any potential limitations like pagination or performance considerations.

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 concise sentences that front-load the core purpose and list return fields. No 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?

With an output schema existing, the description adequately covers the tool's purpose and basic parameter. It could mention it's a local knowledge base listing, but overall it is complete for simple browsing.

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% for the single optional parameter. The description adds minimal extra meaning beyond the schema, stating it's optional and returns all if omitted. Baseline 3 is appropriate.

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

Purpose5/5

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

The description uses specific verbs and resources: 'List all knowledge cards' and returns specific metadata fields. It clearly distinguishes from siblings like 'query_knowledge' which likely searches or filters.

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?

No explicit when-to-use or when-not-to-use guidance is provided. The context of sibling tools implies it's for browsing all cards or filtering by topic, but no alternatives are mentioned.

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

query_knowledgeA

Search the local knowledge base for relevant information.

Returns top-k knowledge cards matching the query, with scores and content. Use this to find existing knowledge before doing web research.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of results to return (default 5).
queryYesThe search query in natural language.
rerankNoWhen true, fetches limit*3 candidates and uses an LLM cross-encoder to score each (query, candidate) pair on 0-10 relevance. Improves top-1 precision for ambiguous queries at the cost of one LLM call per candidate (~2s each). Default false.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

No annotations exist, so description must disclose behavior. It describes return format (top-k, scores, content), implying read-only. Could add more detail on response structure, but sufficient for a search tool.

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 concise sentences with a clear usage directive. Zero fluff, every sentence adds value.

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?

With an output schema present, description doesn't need to detail return values. It covers purpose, usage, and basic input semantics. Complete enough for a simple search tool.

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

Parameters3/5

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

Schema coverage is 100%, so parameters are already well-documented in the schema. The description adds no further semantic meaning beyond the schema's own descriptions, meeting baseline expectations.

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 the local knowledge base, returns top-k cards with scores and content, and distinguishes it from sibling tools like fetch_url or save_research.

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 to 'use this to find existing knowledge before doing web research' tells the agent when to invoke this tool and implies alternatives (web research tools).

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

save_researchA

Save structured research results as a knowledge card in the local knowledge base.

The answer_json must conform to schemas/answer.schema.json: { "answer": "detailed answer text", "supporting_claims": [{"claim": "...", "evidence_ids": ["..."], "confidence": "high|medium|low"}], "inferences": ["..."], "uncertainty": ["..."], "missing_evidence": ["..."], "suggested_next_steps": ["..."], "sources": ["https://example.com/source1", "https://example.com/source2"], "visual_aids": [{"type": "mermaid|image_url|image_path", "content": "...", "caption": "...", "alt_text": "..."}] }

IMPORTANT quality requirements:

  • The "answer" field MUST be at least 200 characters of substantive content.

  • You MUST include at least 1 supporting_claim with evidence_ids and confidence.

  • Each claim text MUST be at least 20 characters โ€” vague one-word claims are rejected.

  • DO NOT create cards with empty supporting_claims โ€” every card needs evidence-backed claims.

  • Aim for 3+ supporting claims, inferences, uncertainty, and suggested_next_steps for high-quality cards.

  • DO NOT use this tool for trivial facts or one-sentence answers โ€” those are not worth persisting.

  • ALWAYS include a "sources" array with the URLs you referenced during research. These are written to the card's frontmatter source_refs for provenance tracking.

  • evidence_ids in supporting_claims SHOULD cite the source URL (from "sources") โ€” the card renders them as clickable [host](url) source links. Opaque ids like "s1" stay as bare text and lose the link.

  • For first-hand depth: call fetch_url on key sources BEFORE writing the answer, so it cites concrete numbers/mechanisms from the actual page (not memory). fetch_url also archives a local snapshot (knowledge/_snapshots/) so dead links stay traceable. save_research best-effort snapshots any listed sources in the background even without an explicit fetch_url.

  • When language="zh" (default), the entire answer field MUST be written in Chinese (ไธญๆ–‡). When language="en", write in English.

When to include visual_aids (auto-judge by topic):

  • Processes / workflows / data flow โ†’ mermaid flowchart or sequence diagram

  • Architecture / system design โ†’ mermaid graph or class diagram

  • Comparisons or hierarchies โ†’ mermaid diagram or table

  • Spatial / geometric concepts โ†’ image_url or mermaid

  • Pure definitions or simple facts โ†’ omit visual_aids

When sources contain useful images (charts, diagrams, figures):

  • If a source page has a relevant diagram/chart with clear explanatory value, include it as visual_aids with type "image_url" and the image's absolute URL

  • Judge relevance: prefer diagrams explaining mechanisms, architecture overviews, comparison charts, result plots โ€” skip decorative screenshots or generic stock photos

  • Always provide a descriptive caption explaining what the image shows

For method/procedural content (how-to, implementation, deployment, etc.), also include:

  • expected_output: Description of what a successful result looks like โ€” output format, shape, key metrics, or acceptance criteria. Synthesize from the answer if sources don't explicitly provide this.

  • example: A minimal worked example (sample input โ†’ processing steps โ†’ expected output). Construct synthetically based on the answer if sources lack one. Write '[insufficient data โ€” needs supplementation]' only if impossible to construct.

Visual aids placement (optional after_section field):

  • "answer" โ€” insert after the main answer paragraph (default for architecture/pipeline diagrams)

  • "supporting_claims" โ€” insert after claims (default for evidence figures/charts)

  • "inferences", "uncertainty", "missing_evidence", "suggested_next_steps" โ€” after respective sections

  • Omit after_section to place at the end of the card (backward compatible)

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesThe original research question.
domainNoOptional domain/folder name for the card (e.g. "quant-backtest"). When provided, the card is placed directly under knowledge/<domain>/ and all auto-routing (AI, folder matching, heuristic) is skipped.
languageNoLanguage for the card content โ€” "zh" (Chinese, default) or "en" (English). When "zh", the answer, claims, inferences, and all other text fields MUST be in Chinese.zh
card_typeNoOptional explicit card type โ€” "engineering" (a step-by-step implementation playbook with prerequisites/implementation_steps/verification/pitfalls/rollback), "method", or "knowledge". If omitted, inferred from query + content. Use "engineering" for how-to / landing / deployment knowledge so it renders as actionable steps instead of an abstract research summary.
answer_jsonYesJSON string with the structured answer.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description fully discloses behavioral traits: it creates knowledge cards, enforces quality requirements, and best-effort snapshots source URLs. It explains side effects like background snapshots and the persistence of cards, which is sufficient for a non-destructive write operation.

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 description is lengthy and includes many details that could be separated or placed in schema annotations. While it is well-organized with headings (IMPORTANT, When to include, etc.), it is not concise and may overwhelm agents scanning for quick purpose.

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 (5 parameters, no annotations, output schema exists), the description is exceptionally complete. It covers output format, quality constraints, visual aid placement, source handling, and language rules, leaving no ambiguity about what the tool does and expects.

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 coverage is 100%, so baseline is 3. The description dramatically adds value by elaborating on the answer_json structure, quality rules, language expectations, visual_aids inclusion logic, and source referencing. This far exceeds the brief schema descriptions, making parameter usage clear and correct.

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 opens with a clear verb+resource: 'Save structured research results as a knowledge card in the local knowledge base.' This explicitly states the tool's function and distinguishes it from read-only or ingestion tools like query_knowledge or ingest_source.

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 warns against using the tool for 'trivial facts or one-sentence answers,' but it provides no explicit guidance on when to choose this tool over siblings like capture_answer or validate_knowledge. The absence of alternatives or when-not-to-use scenarios limits its usefulness for tool selection.

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

scan_stale_knowledgeA

Report knowledge cards whose source freshness exceeds domain thresholds.

Unlike lint_knowledge's updated_at check, this uses source_date/captured year with the domain-specific freshness policy used by card validation. This tool is read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior4/5

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

Explicitly declares read-only behavior, which is critical since no annotations are provided. Describes the evaluation basis (source_date/captured year and domain policy), but doesn't mention other behaviors like performance or error handling.

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?

Three sentences: purpose, sibling differentiation, read-only statement. Every sentence is necessary and front-loaded with purpose. No redundant information.

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 no parameters and an output schema exists, the description covers input (none), criteria (source freshness vs threshold), behavior (read-only), and sibling context. No gaps for a simple reporting 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?

No parameters in schema, so baseline is 4. Description does not need to add parameter info. The description adds no param-specific details, which 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 'Report knowledge cards whose source freshness exceeds domain thresholds' โ€“ specific verb and resource with exact criterion. Contrasts with lint_knowledge to differentiate purpose.

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?

Explicitly tells when to use (check source freshness with domain-specific policy) and distinguishes from lint_knowledge by specifying different date field and policy, providing alternative context.

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

validate_knowledgeA

Validate local knowledge cards without modifying files.

Runs card frontmatter validation plus body-density/source-freshness checks. Use this before relying on a knowledge base or after bulk imports.

ParametersJSON Schema
NameRequiredDescriptionDefault
verboseNoWhen true, include warning-only cards in the per-card report.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

No annotations, but description clearly states 'without modifying files' and lists validation types (frontmatter, body-density, source-freshness). No behavioral surprises.

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?

Three sentences: purpose, scope, usage. No fluff. Front-loaded with key action and resource.

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 simple tool (1 optional param, output schema exists), description covers purpose, behavior, and usage. Adequate for AI agent decision-making.

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

Parameters4/5

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

Schema description coverage is 100%, and description adds context for the verbose parameter: 'include warning-only cards in the per-card report.' Adds value beyond 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 explicitly states 'Validate local knowledge cards' with a specific verb and resource. It distinguishes from siblings like lint_knowledge by mentioning body-density/source-freshness checks.

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?

Gives clear usage context: 'Use this before relying on a knowledge base or after bulk imports.' Does not explicitly contrast with alternatives, but the guidance is helpful.

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. 12 tool updatesv0.1.0
    • First observedbuild_graph
    • First observedcapture_answer
    • First observedfetch_url
    • First observedimport_paperpulse_note
    • First observedingest_source
    • First observedlint_knowledge
    • First observedlist_knowledge
    • First observedquery_knowledge
    • First observedsave_research
    • First observedscan_dead_links
    • First observedscan_stale_knowledge
    • First observedvalidate_knowledge

TDQS

A4.2/5.0

Scored across 12 tools

Disambiguation4/5

Most tools have distinct purposes (query, save, ingest, validate, fetch, list, lint, scan, build, import). However, save_research, capture_answer, and ingest_source all persist knowledge cards with different input formats, which could cause confusion despite detailed descriptions.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern with snake_case (e.g., query_knowledge, save_research, fetch_url). Verbs are descriptive and the pattern is predictable across all 12 tools.

Tool Count5/5

12 tools is well-scoped for a knowledge management server. The set covers querying, saving, ingesting, validating, listing, linting, scanning dead links, building graphs, and importing notesโ€”no bloat or deficiency.

Completeness3/5

The tool surface covers create (save, capture, ingest), read (query, list), and checking tools, but lacks update and delete operations for knowledge cards. This is a notable gap that could hinder full life cycle management.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI coding agents to retrieve and manage code context with hybrid search, project memory, and observability via MCP tools.
    29
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Local knowledge engine for codebases with hybrid search, knowledge graph, and interaction tracking, enabling Claude Code to search and interact with project knowledge locally.
    7
    1
    MIT