Skip to main content
Glama

research-hub

Turn your research stack into an AI-operable workspace. Use Zotero, Obsidian, and NotebookLM together, or start with any two. research-hub gives your AI assistant a real CLI, MCP server, REST API, and dashboard for repeatable literature workflows.

How research-hub MCP works: after validation and routing, ordinary research tools can read or mutate truth stores directly, while the workflow-managed path adds durable state, workflow-only policy and checkpoints, human decisions, prepared actions, result recording, and an explicit reconcile-required blocker

research-hub dashboard demo, real screen recording

PyPI Python License: MIT Mentioned in Awesome MCP Servers

Zotero Obsidian NotebookLM

Traditional Chinese: README.zh-TW.md | Watch the full-res mp4

📚 Part of the agentic AI learning roadmap — a 7-stage curated path for building agentic AI, multilingual (zh-TW · zh-Hans · English). This workspace is referenced in §13 (research workflow skills).

🧪 Real-use signal: in daily use by 1 PhD researcher (Lehigh CEE) tracking 7+ research clusters across Zotero + Obsidian + NotebookLM. Shipping since Apr 2026, docs updated for v0.95.0.


Quick start

pip install research-hub-pipeline
research-hub dashboard --sample   # preview with sample data, no accounts needed

For a real research-hub vault with Zotero / Obsidian / NotebookLM integration, pick the install path matching your stack in § Start Here.


Related MCP server: zotero-mcp-lite

Contents

  1. Quick start

  2. Real Screenshots

  3. Is this for me?

  4. Start Here

  5. First-Run Checklist

  6. Credential Reference

  7. Connect your AI host

  8. Why this exists

  9. What it does

  10. Operator Modes

  11. Dashboard tour

  12. Inside Zotero

  13. Feature matrix

  14. Troubleshooting

  15. Known limitations

  16. Docs + Status + Dev

  17. License


Real Screenshots

These are generated by a real research-hub vault, not mockups.

Obsidian paper note: Markdown note with title, authors, DOI, Zotero key, tags, cluster, status, and verification metadata.

Obsidian Bases dashboard: generated .base file with sortable paper metadata and reading status.

Obsidian graph view: managed topic folders and labels can be colored with research-hub vault graph-colors --refresh.

Generated crystals are also plain Markdown notes under hub/<cluster>/crystals/*.md, so they can be linked, searched, and read by MCP tools at low token cost.


Is this for me? — vs alternatives

research-hub does not replace Zotero, Obsidian, or NotebookLM. It connects them so an AI agent can operate the workflow.

What you can do

Zotero alone

NotebookLM alone

Generic RAG

Obsidian-Zotero plugin

research-hub

Search arXiv + Semantic Scholar in one command

No

No

DIY

No

Yes

Ingest into Zotero and Obsidian and NotebookLM

No

No

DIY

Partial

Yes

AI brief from your collection

No

Manual

DIY

No

Yes

Cached canonical answers

No

No

Re-fetches

No

Yes

Structured memory layer

No

No

Usually chunks

No

Yes

Direct AI-agent control via MCP

No

No

DIY

No

Yes

Live dashboard with action buttons

No

No

No

No

Yes

Per-cluster Obsidian Bases dashboard

No

No

No

No

Yes

No OpenAI/Anthropic API key required

n/a

Yes

Usually no

n/a

Yes

Local-first vault you own

Partial

No

Depends

Yes

Yes

The practical fit: research-hub is most useful if you already use at least two of Zotero, Obsidian, and NotebookLM and want your AI assistant to run the repetitive steps.


Start Here

Pick the path with the fewest moving parts. You can add Zotero, NotebookLM, MCP, or AI-host skills later.

Goal

Accounts needed

Commands

Preview the dashboard only

None

pip install research-hub-pipeline then research-hub dashboard --sample

Try a demo vault

None

pip install research-hub-pipeline then research-hub init --sample

Work from local PDFs/DOCX/Markdown

Obsidian optional

pip install "research-hub-pipeline[import,secrets]" then research-hub setup --persona analyst

Zotero + Obsidian, no browser automation

Zotero

pip install "research-hub-pipeline[secrets]" then research-hub setup --skip-login

Full Zotero + Obsidian + NotebookLM loop

Zotero + Google

pip install "research-hub-pipeline[playwright,secrets]" then research-hub setup

Autonomous agent bootstrap

Existing vault or target folder

python -m research_hub setup --autonomous --vault ./vault --persona agent

After setup, run:

research-hub doctor
research-hub serve --dashboard

For the first real ingestion, keep NotebookLM out of the path until Zotero and Obsidian are healthy:

research-hub auto "agent-based modeling" --max-papers 3 --no-nlm

Then enable NotebookLM after the browser login works:

research-hub notebooklm login --auto-detect
research-hub notebooklm bundle --cluster <slug>
research-hub notebooklm upload --cluster <slug>
research-hub notebooklm generate --cluster <slug> --type brief
research-hub notebooklm download --cluster <slug>

research-hub setup also prints these next steps when it finishes.

First-Run Checklist

Item

Needed when

How to handle it

Python 3.10+

Always

Use the same Python that runs pip install research-hub-pipeline

Zotero API key + library ID

Zotero-backed paper ingestion

Set ZOTERO_API_KEY and ZOTERO_LIBRARY_ID, then run research-hub doctor

Obsidian vault

Markdown note workflow

Point setup at a folder you can open in Obsidian; it is still plain Markdown

NotebookLM browser login

NotebookLM upload/generate/download

Run research-hub notebooklm login --auto-detect; Google OAuth still requires a visible human sign-in

LLM CLI for relevance judging

research-hub auto default path

Install claude, codex, gemini, opencode, aichat, cursor, configure a custom adapter, or pass --no-fit-check

AI-host integration

Claude/Codex/Cursor/Gemini/OpenClaw/etc.

Use MCP/REST for tool-calling hosts; use research-hub install --platform ... only for verified skill installer targets

Credential Reference

These variables are required only for Zotero-backed workflows. Local file import, sample dashboards, MCP server startup, and REST API inspection can run without them.

Name

Required

Purpose

ZOTERO_API_KEY

yes

Zotero web API auth, required for paper ingestion

ZOTERO_LIBRARY_ID

yes

Zotero library identifier

SEMANTIC_SCHOLAR_API_KEY

no

Uses an S2 API key and defaults to a conservative ~1 request/sec throttle

SEMANTIC_SCHOLAR_RPS

no

Optional S2 request-rate override; leave unset unless your key has a different quota

TAVILY_API_KEY

no

Web search backend (alternative to DDG)

BRAVE_API_KEY

no

Web search backend (alternative to DDG)

Semantic Scholar searches are deliberately paced. Without SEMANTIC_SCHOLAR_API_KEY, research-hub uses a slower anonymous delay because public traffic shares capacity. With a key, the default is approximately one request per second and 429 responses are retried with Retry-After / exponential backoff. If Semantic Scholar grants your key a different quota, set SEMANTIC_SCHOLAR_RPS instead of editing code.

Connect your AI host

research-hub has two AI-facing integration layers:

Layer

Best for

Current status

MCP / REST

Claude Desktop, Claude Code, Cursor, Continue.dev, Cline, Roo Code, VS Code Copilot, OpenClaw, and other tool-calling hosts

Host-agnostic; configure the MCP server or call the REST API

Installed SKILL.md files

Claude Code, Codex, Cursor, Gemini

Built-in installer targets via research-hub install --platform ...

Manual SKILL.md loading

Hermes, OpenClaw, other agents with skill/rules directories

Copy or reference the bundled skill directories manually; not release-verified as installer targets

For Claude Desktop, Cursor, Continue.dev, Cline, VS Code Copilot, OpenClaw, or another MCP host, configure the MCP server:

{ "mcpServers": { "research-hub": { "command": "research-hub", "args": ["serve"] } } }

Restart the host. Then ask naturally:

Find me 5 papers on agent-based modeling and put them in a notebook.

The AI can call auto_research_topic(topic="agent-based modeling", max_papers=5) and ingest papers, generate a NotebookLM brief, and update the vault.

Install host-specific skill files for the platforms with known default skill directories:

research-hub install --platform claude-code
research-hub install --platform cursor
research-hub install --platform codex
research-hub install --platform gemini

OpenClaw, Hermes, and other agents can still use research-hub through MCP/REST. If the host supports SKILL.md-style directories or rules files, copy the bundled directories from skills/ or inline the relevant SKILL.md into the host's instructions. research-hub install --platform does not currently verify those hosts.

Browser-only or HTTP-capable AIs can use the REST API after starting the local server with research-hub serve --dashboard:

curl -X POST http://127.0.0.1:8765/api/v1/plan \
     -H "Content-Type: application/json" \
     -d "{\"intent\":\"research harness engineering\"}"

Full reference: MCP tools, AI integrations, AI host support matrix, and live smoke checklist.


Why this exists

Most research tools are good at one part of the workflow:

  • Zotero stores citations, metadata, and PDFs.

  • Obsidian stores notes, links, and synthesis.

  • NotebookLM turns source bundles into AI-readable briefs.

The painful part is the handoff. research-hub connects those handoffs so an AI agent can search, ingest, tag, summarize, repair, brief, and inspect your workspace without turning your library into an opaque RAG box.

You do not need all three tools on day one.

Your current stack

What research-hub gives you first

Zotero + Obsidian

Paper search, Zotero metadata, Markdown notes, tags, Obsidian Bases dashboards

Obsidian + NotebookLM

Local PDF/DOCX/MD/TXT ingest, cluster dashboards, NotebookLM bundles and briefs

Zotero + NotebookLM

Zotero-backed paper selection, namespaced tags, NotebookLM upload/generate/download

Zotero + Obsidian + NotebookLM

Full loop: discover -> ingest -> organize -> brief -> answer -> maintain

No accounts yet

Sample dashboard and local smoke tests before connecting anything


What it does

research-hub is a local-first orchestration layer for research workflows:

  • CLI: research-hub auto, import-folder, ask, doctor, tidy, clusters, zotero, notebooklm, crystal, and more.

  • MCP server: lets Claude Desktop, Claude Code, Cursor, Continue.dev, Cline, Roo Code, OpenClaw, and other MCP hosts operate the same workflow.

  • REST API: exposes /api/v1/* for browser-only or HTTP-capable assistants.

  • 12-skill portable pack: SKILL.md workflows install directly for Claude Code, Codex, Cursor, and Gemini. The new resumable orchestrator automates low-risk stages and pauses at explicit human gates before external writes, costly experiments, semantic revisions, and release.

  • Dashboard: gives humans a live view of clusters, papers, diagnostics, briefs, writing support, and management actions.

  • Vault format: writes normal Markdown, frontmatter, .base dashboards, cache files, and logs that you can inspect directly.

  • Authenticity gate (v0.95+): every discovered paper must resolve to a real identifier (DOI / arXiv / PMID), pass integrity and relevance checks, or it is quarantined with a recorded reason and never written to the vault. No fabricated references — inspect rejects with research-hub quarantine list.

The core loop:

topic or source folder
  -> discover or import sources
  -> verify authenticity (resolve + integrity + relevance) or quarantine
  -> enrich metadata
  -> write Zotero tags/notes when enabled
  -> write Obsidian Markdown notes and cluster dashboards
  -> bundle/upload/generate with NotebookLM when enabled
  -> cache answers as crystals and structured memory

Operator Modes

research-hub supports both human-first and agent-first setup.

For a human researcher, research-hub setup runs the onboarding wizard, installs host-specific skills when it can detect the host, optionally launches NotebookLM login, and offers a small sample run.

For an autonomous agent or Cowork-style host:

pip install research-hub-pipeline
python -m research_hub describe > capabilities.json
python -m research_hub setup --autonomous --vault ./vault --persona agent
# emits BootstrapReport JSON; exit code 0 if ready, 1 otherwise

Then drive operations via CLI --json mode or the bundled MCP server (research-hub-mcp). All report-shaped commands accept --json; capability introspection lives in research-hub describe.

NotebookLM boundary. NotebookLM upload still requires one-time human-driven browser-based Google OAuth. Headless agents can prepare bundles and read downloaded briefs, but they cannot complete Google's first sign-in or phone challenge by themselves.

Relevance judge boundary. auto_research_topic and research-hub auto run a fail-closed relevance check by default. With no supported LLM CLI and no --no-fit-check, auto stops before search and prints the fix instead of silently producing an empty vault.

Persona

Best for

Install extra

Researcher

STEM papers, DOI/arXiv, Zotero-first workflows

[playwright,secrets]

Humanities

books, quotes, URL-only sources, Zotero + Obsidian

[playwright,secrets]

Analyst

industry research, local PDFs/reports, no Zotero required

[import,secrets]

Internal KM

lab/company knowledge bases, mixed file types

[import,secrets]

Field presets for discover new, search, and related planning flows are cs, bio, med, physics, math, social, econ, chem, astro, edu, and general. There is no hydrology preset; use general intentionally.


Dashboard tour

research-hub serve --dashboard opens http://127.0.0.1:8765/.

Overview: treemap over clusters, storage map, and health summary.

Overview

Library: per-cluster drill-down with papers, sub-topics, and per-paper actions.

Library

Diagnostics: grouped drift alerts and readiness checks.

Diagnostics

Manage: CLI actions as buttons, inline result drawer, confirmation modal, and per-paper row actions.

Manage

Briefings and Writing tabs are also available. See the dashboard walkthrough and persona variants.


Inside Zotero

Every ingested paper gets a namespaced tag set so you can filter your library by research-hub context:

Tag

Meaning

research-hub

Ingested through this pipeline

cluster/<slug>

Which research cluster the paper belongs to

category/<arxiv-code>

arXiv category like cs.AI or econ.GN

type/<publication-type>

Review, JournalArticle, etc. from Semantic Scholar

src/<backend>

Search backend that discovered it: arxiv, semantic_scholar, crossref, zotero

Every paper can also get a child note with Summary / Key Findings / Methodology / Relevance, derived from the Obsidian frontmatter. Papers that were in Zotero before research-hub existed can be backfilled with:

research-hub zotero backfill --tags --notes --apply

Feature matrix

Capability

Command or MCP tool

Notes

One-shot setup

research-hub setup

init + install + optional NotebookLM login + guided sample run

Lazy research pipeline

research-hub auto "topic" / auto_research_topic

Search, ingest, bundle, upload, generate, download

Authenticity quarantine review

research-hub quarantine list / show <id> / restore <id>

Inspect and optionally restore papers the authenticity gate rejected (with the failing layer + reason)

Plan before running

research-hub plan "intent" / plan_research_workflow

Suggests field, cluster slug, and max papers

Resumable HITL workflow

`research-hub workflow init

status

Zotero hygiene

research-hub zotero backfill --tags --notes [--apply]

Fills missing tags and notes on legacy items

Cluster cascade delete

research-hub clusters delete <slug> [--apply --force]

Preview impact on Obsidian, Zotero, dedup, memory, and crystals

No-NotebookLM smoke test

research-hub auto "topic" --no-nlm

Validates search and vault ingest without browser automation

Local file ingest

research-hub import-folder <folder> --cluster <slug>

PDF, DOCX, MD, TXT, URL

Ad-hoc cluster Q&A

research-hub ask <cluster> "question" / ask_cluster_notebooklm

Top-level CLI takes cluster first, then question

NotebookLM operations

research-hub notebooklm upload --cluster <slug>

Browser automation with persistent Chrome

Pre-computed crystals

research-hub crystal emit --cluster <slug>

Canonical answers cached as Markdown

Structured memory

research-hub memory emit --cluster <slug>

Entities, claims, methods

Live dashboard

research-hub serve --dashboard

HTTP dashboard with action buttons

Sample preview

research-hub dashboard --sample

Temporary bundled vault, no accounts

Lazy maintenance

research-hub tidy

Doctor, dedup, bases refresh, cleanup preview

Garbage collection

research-hub cleanup --all --apply

Bundles, debug logs, stale artifacts

Cluster repair

research-hub clusters rebind --emit then --apply

Rebinds orphaned notes

Obsidian Bases

research-hub bases emit --cluster <slug>

Generated .base dashboard

Web search

research-hub websearch "query" / web_search

Tavily, Brave, Google CSE, DDG fallback


Troubleshooting

Symptom

Cause

Fix

research-hub init reports Chrome warnings

Chrome is missing or patchright cannot find it

Install Chrome, then run research-hub doctor

research-hub notebooklm login opens a browser but Google blocks login

New-device or bot challenge

Complete the visible browser sign-in and phone challenge

research-hub auto finds 0 papers / empty vault

Topic too narrow OR papers were quarantined by the authenticity gate (unresolved DOI, failed integrity, or relevance-unjudged)

Re-run with --max-papers 20 / rephrase; run research-hub quarantine list to see rejected papers + reasons

research-hub auto stops before searching: "no relevance judge on PATH"

Fail-closed relevance check and no supported LLM CLI found

Install a judge CLI, or re-run with --no-fit-check to skip relevance judging

NotebookLM upload or generate fails

NotebookLM UI changed or login expired

Run research-hub notebooklm login --auto-detect; then resume with research-hub notebooklm bundle/upload/generate/download --cluster <slug>

notebooklm upload worked yesterday and now fails on auth

Google's __Secure-1PSIDTS / PSIDRTS cookies expire roughly every 3.5h; notebooklm keepalive cannot refresh them server-side

Re-run research-hub notebooklm login --auto-detect — the browser opens, the cookies refresh on sign-in, the session saves automatically (no terminal interaction). Takes < 1 minute

auto --with-crystals cannot find an LLM CLI

No supported LLM CLI is on PATH

Install one, configure a custom adapter, or use crystal emit and crystal apply manually

Claude Desktop cannot see the MCP server

MCP config is in the wrong file or host was not restarted

Check the host config path and restart Claude Desktop

init reports Zotero warnings but you do not use Zotero

Persona expects Zotero

Re-run research-hub setup --persona analyst or --persona internal

research-hub clusters delete refuses to delete

Cluster has papers, notes, or Zotero items

Re-run with --apply --force after reviewing the cascade preview

research-hub auto errors "cluster already has N papers"

Cluster is non-empty and you ran auto --cluster <slug> without a flag

Add --append to add more, or --force to overwrite

Zotero items miss research-hub tags or notes

Items were created before v0.61 or pipeline failed mid-run

research-hub zotero backfill --tags --notes --apply

For broader checks, run:

research-hub doctor --autofix

Known limitations

These are platform or design boundaries, not bugs — please do not file them as issues. They are documented here so you know what to expect and which workaround to reach for.

Limitation

What's actually happening

What to do

IEEE Xplore PDFs / URLs are blocked by anti-bot

IEEE returns an "Unable to Load Page" HTML stub to direct fetches. paper attach-pdfs can now route configured publisher PDF URLs through your institution's EZproxy and fall back to the direct URL if the proxy fails.

Configure ezproxy_host_suffix (hostname-rewrite mode, recommended for most institutions) or ezproxy_url_template (legacy), run research-hub ezproxy login once, then re-run paper attach-pdfs. See EZproxy PDF access. Without EZproxy, manually attach the PDF through institutional access or skip the source.

NotebookLM session expires ~every 3.5h

Google's short-lived __Secure-1PSIDTS / PSIDRTS cookies are not refreshable by background polling. notebooklm keepalive exists but cannot rotate them server-side.

Re-run research-hub notebooklm login --auto-detect when a run reports an auth failure — < 1 minute, no terminal interaction.

--no-llm-fit-check can't filter "wrong sub-topic, right field"

The no-LLM BM25 gate is designed to catch blatant cross-field contamination (e.g. pure hydrology with zero AI in an LLM cluster). It cannot tell "AI-agents-in-general" from "AI-agents-in-water-resources" — both score similarly on a lexical-only metric, so the gate is recall-biased and keeps both.

For topic-specific subset filtering, use the default LLM-judge path (drop --no-llm-fit-check). The LLM-judge layer is what's designed to make semantic relevance calls.

Cluster-overview LLM auto-fill writes English headings even when the scaffold is Chinese

topic.py writes Chinese section headings (## 核心問題, ## 範圍定義, …) for the empty scaffold, but apply_overview re-renders the file with English headings (## Core Question, ## Scope, …) when the LLM fills it in.

Cosmetic — content is correct. If you prefer Chinese headings on the filled overview, hand-curate the section names after the first auto-fill (the markers ensure subsequent runs preserve your edits).

auto_pipeline() Python API stays opt-in for PDFs (CLI is opt-out)

Programmatic callers — tests, library users — get with_pdfs=False by default so the PDF-attach network round-trips don't fire silently. The CLI hands in True from BooleanOptionalAction.

If you call auto_pipeline() directly and want PDFs attached, pass with_pdfs=True explicitly. CLI users get the default-on behaviour automatically; use --no-with-pdfs to opt out.

Slow / blocked publisher URLs sometimes poison the NotebookLM bundle

Some publishers (Wiley paywalls, Frontiers oddly-routed PDFs, IEEE) return either a thin stub or an HTML error page that the bundle ladder admits because the URL pre-check passed. Downstream NotebookLM grounds on the stub instead of the paper.

Run auto and inspect the [warn] N source(s) look like they did not ingest content block. Replace the listed URLs with PDFs uploaded to the NotebookLM web UI for those papers.


Docs + Status + Dev

Docs: First 10 minutes, workflow runtime, evidence packet, lazy mode, dashboard walkthrough, MCP tools, AI host support matrix, live smoke checklist, personas, NotebookLM setup, EZproxy PDF access, import folder, CLI reference, CHANGELOG.

Status:

  • Current docs target: v0.95.0; see CHANGELOG for package history, docs/stable-api.md for the supported API surface, and docs/file-formats.md for parseable state-file schemas.

  • MCP tools: inspect the live list with python -m research_hub describe --filter mcp_tools.

  • REST endpoints: 12 at /api/v1/*.

  • Bundled skills: inspect the live list with python -m research_hub describe --filter skills.

Developer setup:

git clone https://github.com/WenyuChiou/research-hub.git
cd research-hub
pip install -e ".[dev,playwright]"
python -m pytest -q

Contributing: CONTRIBUTING.md. Package on PyPI: research-hub-pipeline. CLI entry point: research-hub.

License

MIT. See LICENSE.

Available Tools

76 tools
add_paperC

Fetch a paper by DOI/arXiv ID and ingest it (one-shot).

ParametersJSON Schema
NameRequiredDescriptionDefault
identifierYes
clusterNo
no_zoteroNo
skip_verifyNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations, the description lacks details on side effects (e.g., duplicate handling, state changes), authentication requirements, or rate limits. 'Ingest' is vague and does not disclose potential behaviors like skipping existing papers or triggering downstream processing.

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 short and front-loaded, but at the expense of necessary detail for 4 parameters. It is concise but insufficient for comprehensive understanding, missing parameter explanations and usage nuance.

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 presence of an output schema, return value explanation is not required. However, with 4 parameters and no annotations, the description fails to cover parameter roles or behavioral context, leaving the tool underspecified for correct invocation.

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

Parameters2/5

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

Schema description coverage is 0%. The description explains only the 'identifier' parameter as DOI/arXiv ID but ignores 'cluster', 'no_zotero', and 'skip_verify'. Their purposes remain unclear, forcing reliance on parameter names and defaults alone.

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 fetches a paper by DOI/arXiv ID and ingests it, specifying the action and resource. It distinguishes from sibling tools like 'search_papers' which search by query, but does not explicitly differentiate from other import tools.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives such as 'import_folder_tool' or 'search_papers'. The description only states the basic operation without context of prerequisites or exclusion cases.

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

apply_cluster_summariesA

Persist a JSON payload of per-paper summaries (when LLM was invoked out-of-band) to Obsidian + Zotero. The payload shape matches the summarize_cluster prompt's expected output: {summaries: [...]}.

ParametersJSON Schema
NameRequiredDescriptionDefault
cluster_slugYes
summaries_jsonYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/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 core behavior (persisting to Obsidian+Zotero) and payload shape, but does not disclose side effects, auth needs, or overwrite behavior. 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?

Two sentences, each adding value. No redundant information. Efficiently communicates purpose and payload constraint.

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?

Output schema exists, so return values are covered. But description lacks details on merge/overwrite behavior, prerequisites, or error handling. Adequate for basic understanding but could be more complete.

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 0%, so description must compensate. It clarifies summaries_json as 'payload of per-paper summaries' with shape `{summaries: [...]}`, but provides no additional info for cluster_slug. Partial compensation.

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

Purpose4/5

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

The description uses specific verb 'Persist' and targets 'Obsidian + Zotero', clearly stating what the tool does. However, it does not explicitly differentiate from sibling tools like apply_crystals, leaving some ambiguity.

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 mentions usage context ('when LLM was invoked out-of-band') and references the summarize_cluster prompt, implying when to use it. But it lacks explicit when-not or alternative tools, so guidance is limited.

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

apply_crystalsC

Persist crystal answers to hub//crystals/.md.

ParametersJSON Schema
NameRequiredDescriptionDefault
cluster_slugYes
crystals_jsonYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are provided, so the description must fully disclose behavior. It states the persistence action but does not specify whether existing files are overwritten or appended, permission requirements, or error handling. This is insufficient for a 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.

Conciseness5/5

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

The description is a single, concise sentence that front-loads the key action and destination. Every word earns its place; no redundancy.

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

Completeness2/5

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

Given the tool has an output schema and nested objects, the description omits details on return format, handling of crystals_json structure, and error conditions. It is not complete enough for an agent to invoke correctly without assumptions.

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

Parameters2/5

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

Schema coverage is 0%, yet the description gives no explanation of the two parameters (cluster_slug, crystals_json). The description adds no meaning beyond the schema, failing to compensate for the lack of schema descriptions.

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 states the tool persists crystal answers to a specific file path (hub/<cluster>/crystals/<slug>.md), which is a clear verb+resource. However, it does not define what 'crystals' are or differentiate from siblings like 'apply_cluster_summaries' which also persist data.

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs. alternatives like 'apply_cluster_summaries' or 'emit_crystal_prompt'. The description does not mention prerequisites, context, or exclusions.

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

apply_fit_check_to_labelsA

Convert fit-check sidecar decisions into paper labels. Persists fit_check_apply decisions before pruning. When to use: after accepted and rejected sidecars are written. When NOT to use: to score candidates; use fit_check_apply instead. Args: cluster_slug: cluster whose sidecars and notes are used. Returns: keys tagged, already, missing, error. Example: >>> apply_fit_check_to_labels("my-topic") {"tagged": ["paper-1"]}

ParametersJSON Schema
NameRequiredDescriptionDefault
cluster_slugYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior4/5

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

Even without annotations, the description discloses key behavior: it persists decisions before pruning and returns status keys. The example adds clarity. Lacks discussion of permissions or side effects, but the core behavior is transparent.

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

Conciseness5/5

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

The description is concise and well-structured, with a one-sentence summary, usage guidance, args, returns, and an example. Every part adds value 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 simplicity (1 param, no nested objects, output schema available), the description covers purpose, usage, parameter meaning, return format, and an example. It is fully sufficient for an agent to invoke it 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?

With only one parameter and 0% schema coverage, the description adds value by explaining that cluster_slug refers to the cluster whose sidecars and notes are used. This goes beyond the parameter name alone.

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

Purpose5/5

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

The description clearly states the tool's action: converting fit-check sidecar decisions into paper labels and persisting them. It distinguishes itself from siblings like fit_check_apply and fit_check_audit by the specific operation.

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 provides when to use ('after accepted and rejected sidecars are written') and when not to use ('to score candidates; use fit_check_apply instead'), offering clear context and an alternative.

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

apply_subtopic_assignmentsC

Write subtopics frontmatter to each paper note.

ParametersJSON Schema
NameRequiredDescriptionDefault
cluster_slugYes
assignmentsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.3/5.0
Behavior2/5

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

The description implies a write operation but does not disclose potential side effects, such as overwriting existing frontmatter, or permission requirements. With no annotations, the agent has minimal behavioral context.

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

Conciseness2/5

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

The description is too brief for a tool with two parameters and nested objects. It sacrifices necessary detail, making it insufficiently informative for correct usage.

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

Completeness1/5

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

Despite having an output schema and nested parameters, the description omits crucial context like output format, behavior on existing data, error handling, and usage workflow. It fails to provide a complete picture.

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

Parameters1/5

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

Schema description coverage is 0%, and the description does not explain the parameters 'cluster_slug' or 'assignments'. The agent cannot infer their meaning or structure, especially with a nested object type.

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

Purpose4/5

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

The description clearly states the action (write) and target (subtopics frontmatter to each paper note). It distinguishes from sibling tools like 'propose_subtopics' which generates subtopics, but could be more explicit about the context of cluster usage.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like 'propose_subtopics' or 'apply_cluster_summaries'. The description lacks any context or prerequisites.

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

ask_clusterA

Answer a question about one cluster, dispatching to the source named by source / mode.

Single entrypoint for all cluster-question workflows. Replaces the deprecated aliases ask_cluster_notebooklm / read_briefing / brief_cluster (gated behind RESEARCH_HUB_MCP_INCLUDE_DEPRECATED=1, removed in v2.0.0). Routes the question through three internal paths: source='local' answers from cached crystals + memory only; source='notebooklm', mode='ask' opens NotebookLM via Playwright and asks live; source='notebooklm', mode='briefing' returns the last downloaded NotebookLM briefing markdown; source='notebooklm', mode='brief' runs the full bundle-upload-generate-download round-trip to refresh the briefing artifact.

When to use:

  • User asks a natural-language question about one cluster and you want the cheapest, fastest answer first (source='local').

  • User asks an ad-hoc question that requires fresh paper content retrieval (source='notebooklm', mode='ask').

  • User wants to read the existing brief text (mode='briefing').

  • User asks to regenerate the brief (mode='brief' with force_regenerate=True).

When NOT to use:

  • You want one specific crystal answer by slug; use read_crystal instead — it skips dispatch overhead.

  • You want to search across multiple clusters; use web_search or search_papers instead.

  • You want to inspect cluster memory directly (entities / claims / methods); use read_cluster_memory.

ParametersJSON Schema
NameRequiredDescriptionDefault
clusterNoCluster slug to ask. One of ``cluster`` or ``cluster_slug`` must be set; ``cluster_slug`` is a backwards-compat alias accepted for legacy clients.
questionNoNatural-language question. May be ``None`` only when ``mode='briefing'`` or ``mode='brief'`` (where the action is read/regenerate, not Q&A).
sourceNo``'local'`` (default) for cached crystals + memory, or ``'notebooklm'`` for the Playwright-driven NotebookLM backend. NotebookLM paths require a logged-in browser session — run ``research-hub notebooklm login`` once.local
detailNoResponse verbosity. One of ``'gist'`` (default, ~100 words) / ``'standard'`` / ``'detailed'``. Only honoured by local + briefing modes.gist
headlessNoFor ``source='notebooklm'``, whether to run the browser headless. Default ``True``; set ``False`` if you need to debug a Google auth challenge.
timeout_secNoMax seconds to wait for NotebookLM. Default 120. Increase to 240+ for large clusters.
max_charsNoFor ``mode='briefing'``, truncate the briefing text after this many chars. Default value comes from the module-level ``_BRIEFING_MAX_CHARS``.
force_regenerateNoFor ``mode='brief'``, force the full round trip even if a recent briefing exists. Default ``False`` (use cached briefing when available).
modeNoNotebookLM sub-action. One of ``'ask'`` (default; live Q&A), ``'briefing'`` (return existing brief markdown), or ``'brief'`` (full bundle → upload → generate → download). Ignored when ``source='local'``.ask
cluster_slugNoBackwards-compat alias for ``cluster``. Prefer ``cluster``; ``cluster_slug`` exists for parity with the deprecated ``ask_cluster_notebooklm`` signature.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

No annotations provided, so description carries full burden. It details three internal routing paths, prerequisites (NotebookLM login), and parameter-specific behaviors (e.g., question=None for briefing modes, force_regenerate). Could mention error scenarios or rate limits, but overall strong.

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?

Well-structured with sections and bullet points, though somewhat lengthy. Every sentence adds value; however, the deprecated aliases list could be more concise. Still, it is organized and front-loaded with the core 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 10 parameters, no annotations, and presence of output schema, the description is highly complete. It covers all four modes, routing logic, and when to use alternatives, leaving little ambiguity for an agent.

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

Parameters3/5

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

Schema description coverage is 100%, so baseline 3. The description adds value by explaining parameter interdependencies (e.g., mode interaction with source, question None for certain modes) and prerequisites, but the schema already describes each parameter well.

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 it answers a question about one cluster, dispatching to internal sources. It specifies the resource (one cluster) and action (question answering), and distinguishes from siblings like read_crystal (by slug) and search_papers (multi-cluster).

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?

Provides explicit 'When to use' and 'When NOT to use' sections, referencing specific sibling tools (read_crystal, web_search, search_papers, read_cluster_memory) and giving clear guidance on source/mode selection.

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

autofill_applyA

Apply AI-authored autofill sections to paper notes. Consumes autofill_emit JSON and updates notes. When to use: after an AI returns summaries for an autofill prompt. When NOT to use: to generate prompts; use autofill_emit instead. Args: cluster_slug: cluster to update; scored: list or {"papers": [...]}. Returns: keys cluster_slug, candidate_count, filled, skipped, missing, error. Example: >>> autofill_apply("my-topic", {"papers": [{"slug": "paper-1"}]}) {"cluster_slug": "my-topic", "filled": []}

ParametersJSON Schema
NameRequiredDescriptionDefault
cluster_slugYes
scoredYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/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 full burden. It describes that the tool updates notes and consumes autofill_emit JSON, and lists return fields with an example. However, it does not detail the extent of updates (e.g., overwrite/append) or side effects, leaving some ambiguity. Still, it is fairly transparent.

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

Conciseness5/5

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

The description is concise with minimal fluff: a one-sentence purpose, usage guidelines, parameter explanations, return fields, and an example. It is front-loaded and each sentence serves a clear purpose.

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 (2 params, no output schema provided) the description covers the main use case, lists return fields, and gives an example. However, the example is somewhat ambiguous (empty filled list) and does not clarify behavior for different 'scored' formats. Still, it is largely complete.

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?

With 0% schema description coverage, the description manually explains each parameter: 'cluster_slug: cluster to update; scored: list or {"papers": [...]}'. This adds meaning beyond the raw type definitions, compensating for the lack of schema 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 starts with a specific verb 'Apply' and resource 'AI-authored autofill sections to paper notes'. It clearly distinguishes from sibling 'autofill_emit' by stating it consumes its JSON output, ensuring the agent uses the correct tool.

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 explicitly states when to use ('after an AI returns summaries for an autofill prompt') and when NOT to use ('to generate prompts; use autofill_emit instead'), including the name of the alternative. This provides clear guidance.

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

autofill_emitA

Build an autofill prompt for paper notes with TODO bodies. Emits the JSON prompt for autofill_apply. When to use: after ingest creates notes with abstracts but TODO content. When NOT to use: to write AI output; use autofill_apply instead. Args: cluster_slug: cluster whose notes are scanned for TODO placeholders. Returns: keys prompt, paper_count, error. Example: >>> autofill_emit("my-topic") {"paper_count": 3}

ParametersJSON Schema
NameRequiredDescriptionDefault
cluster_slugYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

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 full responsibility for behavioral disclosure. It explains that the tool emits a JSON prompt and describes the return structure, but does not discuss side effects, safety, or idempotency. While likely non-destructive, more explicit behavioral context could improve 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 well-structured: it begins with the core purpose, followed by usage guidelines, arguments, return values, and an example. Every sentence is concise and adds value, with no 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 that an output schema is present, the description effectively covers the return structure (prompt, paper_count, error) and provides an example. With only one simple parameter, the description is complete and 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?

With 0% schema description coverage, the description compensates by explaining the parameter 'cluster_slug' as the cluster whose notes are scanned for TODO placeholders. This adds meaningful context beyond the schema's type definition.

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 an autofill prompt') and the resource ('paper notes with TODO bodies'). It also explicitly distinguishes the tool from its sibling 'autofill_apply' by noting when to use each.

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 conditions for use ('after ingest creates notes with abstracts but TODO content') and non-use ('to write AI output; use autofill_apply instead'). This gives clear guidance on when the tool is appropriate and when to choose an alternative.

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

auto_research_topicA

One-shot research pipeline: search + ingest + NotebookLM brief (+ optional crystals).

Slugifies topic into a cluster (or reuses cluster_slug), searches arXiv + Semantic Scholar, ingests papers into Zotero + Obsidian, then bundles + uploads + generates + downloads a NotebookLM brief. With do_crystals=True and a detected supported LLM CLI on PATH, also generates and applies the canonical Q&A crystals so the cluster is fully ready for read_crystal() queries.

Use when: user says "research X for me" or "find papers on X".

Returns {ok, cluster_slug, papers_ingested, notebook_url, brief_path, total_duration_sec, error}.

ParametersJSON Schema
NameRequiredDescriptionDefault
topicYes
cluster_slugNo
cluster_nameNo
max_papersNo
fieldNo
do_nlmNo
do_crystalsNo
do_cluster_overviewNo
do_fit_checkNo
cluster_overview_thresholdNo
fit_check_thresholdNo
zotero_batch_sizeNo
llm_cliNo
dry_runNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

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

No annotations provided, so description carries full burden. It discloses key behaviors: slugification/reuse of cluster_slug, multi-source search, ingestion pipeline, conditional crystal generation with LLM CLI requirement, and return value structure. However, it doesn't mention potential side effects like creating new clusters or modifying existing ones beyond reuse.

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?

Description is compact yet comprehensive. Front-loaded with the core pipeline, each sentence adds distinct value: purpose, slug logic, actions, crystal condition, usage cue, and return format. No wasted words.

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 14 parameters and no annotations, the description covers the main workflow and return values but omits explanations for most parameters. It provides a good high-level overview but lacks depth for configuration options, making it only partially complete.

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

Parameters2/5

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

Schema coverage is 0%, so description must compensate. Only topic, cluster_slug, and do_crystals are briefly explained. The other 11 parameters (max_papers, field, dry_run, etc.) are not described, leaving the agent without guidance on their purpose or effects.

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 defines the tool as a 'one-shot research pipeline' specifying actions: search, ingest, NotebookLM brief, and optional crystals. It differentiates from sibling tools by combining multiple steps, with explicit mention of searching arXiv + Semantic Scholar, ingesting into Zotero + Obsidian, and generating a NotebookLM brief.

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?

Explicitly states 'Use when: user says "research X for me" or "find papers on X".' This gives clear context for usage, though it does not provide exclusions or alternatives for when a simpler tool would suffice.

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

build_citationC

Return an inline citation string for a paper.

ParametersJSON Schema
NameRequiredDescriptionDefault
doi_or_slugYes
styleNoapa

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.4/5.0
Behavior2/5

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

No annotations are present, so the description must carry the burden. It does not disclose any behavioral traits like error handling (invalid DOI), rate limits, or side effects. The description is too sparse for an agent to understand implications.

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

Conciseness2/5

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

The description is a single sentence, which is concise but at the expense of necessary detail. It front-loads the action but is too brief to be informative.

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

Completeness2/5

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

Given the tool's simplicity (2 params, output schema exists), the description should at least clarify parameter formats and purpose. It fails to do so, leaving the agent with insufficient context despite the output schema existing.

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

Parameters1/5

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

Schema description coverage is 0%, and the description adds no meaning to parameters. 'doi_or_slug' and 'style' are undefined; valid styles are not enumerated. The agent has no clue what values are acceptable.

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 states the tool returns an inline citation string for a paper, making the action clear. However, it lacks differentiation from sibling tools like 'get_citations' or 'export_citation'.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives, such as when an inline citation is needed vs. a full reference list. No exclusions or context provided.

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

build_topic_notesC

Generate topics/NN_.md files from paper frontmatter.

ParametersJSON Schema
NameRequiredDescriptionDefault
cluster_slugYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.4/5.0
Behavior2/5

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

The description says it generates files, implying writes, but does not disclose whether it overwrites existing files, requires specific permissions, or has side effects. No annotations are provided to compensate, leaving behavioral traits unclear.

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 a single sentence, which is concise and front-loaded, but it sacrifices critical information. It could be expanded to include parameter explanation and behavioral notes without becoming overly long.

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

Completeness2/5

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

Despite having an output schema, the description fails to explain the output format or what the generated files contain. The parameter is not described, and the tool's role among siblings is unclear. The description is incomplete for a tool with one parameter and an output schema.

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

Parameters1/5

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

The single parameter 'cluster_slug' is entirely undocumented in the description. With 0% schema description coverage, the description should explain the parameter but does not. The mention of 'paper frontmatter' does not clarify what cluster_slug represents.

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

Purpose4/5

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

The description clearly states it generates topic note files from paper frontmatter. The verb 'Generate' and resource 'topics/NN_<slug>.md files' are specific, and it distinguishes from sibling tools like list_topic_notes or write_topic_overview. However, the meaning of 'NN_' is ambiguous.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like list_topic_notes or write_topic_overview. The description does not specify prerequisites, exclusions, or typical use cases.

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

capture_quoteC

Persist a quote to /.research_hub/quotes/.md.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYes
pageYes
textYes
contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations, the description must disclose side effects. It mentions persisting to a file but does not explain overwrite behavior, error handling, or any required context (e.g., directory existence).

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 a single sentence, concise but lacking structure. It could be expanded with parameter details without losing conciseness.

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

Completeness2/5

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

Despite having an output schema, the description omits behavioral context such as idempotency, required permissions, or return value semantics. The tool has 4 parameters with 0% schema coverage, yet the description does not compensate.

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

Parameters1/5

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

Schema description coverage is 0%, and the description provides zero explanation for the four parameters (slug, page, text, context). The agent cannot infer their meaning or format from the 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 action (persist a quote) and specifies the exact file path in the vault, distinguishing it from other tools that list or manage quotes.

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs alternatives like add_paper or list_quotes. No prerequisites or when-not-to-use scenarios mentioned.

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

check_crystal_stalenessC

Check how many crystals are stale (>10% cluster paper delta since generation).

ParametersJSON Schema
NameRequiredDescriptionDefault
cluster_slugYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior2/5

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

No annotations provided; description merely states it 'checks how many crystals are stale,' implying a read operation but offering no details on side effects, resource consumption, or response format. Behavioral insight is minimal.

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?

A single sentence that is front-loaded and without wasted words, but it sacrifices necessary detail (e.g., parameter explanation). It is concise but insufficiently informative.

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

Completeness2/5

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

The description lacks essential information about the required parameter and does not clarify what the output schema provides. For a tool with one parameter and no schema descriptions, the description is incomplete to enable correct invocation.

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

Parameters1/5

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

Schema description coverage is 0% and the description does not mention the required 'cluster_slug' parameter at all. The agent receives no guidance on what values are valid or how the parameter affects the tool's behavior.

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?

Description clearly states verb (check), resource (crystals), and condition (>10% delta since generation). It distinguishes from siblings like 'list_crystals' (list all) and 'read_crystal' (read specific), providing a specific monitoring function.

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool vs. alternatives. The description implies usage for staleness checks but does not mention scenarios where other tools (e.g., list_crystals, read_crystal) would be more appropriate.

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

cleanup_garbageA

Garbage-collect accumulated research-hub files (v0.46+).

Pass everything=True for the common case (bundles + debug logs + artifacts). Default mode lists candidates without deleting; pass apply=True to actually remove.

Use when: user says "clean up", "free disk space", or "GC the vault".

Returns {ok, total_bytes, files_deleted, dirs_deleted, candidates}.

ParametersJSON Schema
NameRequiredDescriptionDefault
bundlesNo
debug_logsNo
artifactsNo
everythingNo
keep_bundlesNo
debug_older_than_daysNo
keep_artifactsNo
applyNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description must disclose behavior. It explains the dual mode of operation (list vs. apply) and the 'everything' shortcut. It also mentions the return format. The description implies destructive capability with 'apply=True to actually remove,' which is sufficient transparency. No hidden behaviors are apparent, though it could explicitly warn about irreversibility.

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 very concise (5 lines), with clear sections: purpose, usage guidance, and return format. Every sentence adds value with no redundancy or fluff. It is well-structured and front-loaded.

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?

The tool has 8 parameters and no annotations, but does have an output schema. The description covers the overall purpose, common usage patterns, and return format. However, it misses details on several parameters (e.g., retention settings) and does not explain how they interact. This could lead to suboptimal use by an AI agent, but the main functionality is clear enough for basic tasks.

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 0%, so description must compensate. It explains the 'everything' and 'apply' parameters and mentions the categories (bundles, debug logs, artifacts). However, it does not explain parameters like 'keep_bundles', 'debug_older_than_days', 'keep_artifacts', or the other booleans. Only partial coverage is provided, which is minimally adequate but incomplete.

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: garbage-collecting accumulated research-hub files, with a specific verb ('Garbage-collect') and resource. It also explains the default behavior (listing candidates) and the version requirement. However, it does not differentiate from sibling tools like 'tidy_vault', which may 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 Guidelines4/5

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

The description explicitly provides usage triggers: 'Use when: user says "clean up", "free disk space", or "GC the vault".' It also explains the difference between default (dry-run) and apply mode, giving clear guidance on when to pass parameters. However, it does not mention scenarios where this tool should not be used.

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

cluster_rebindA

Run the cluster-rebind workflow specified by action.

Single entrypoint that consolidates four legacy rebind operations (propose / apply / list_orphans / status) into one tool with an action discriminator. Replaces the deprecated aliases propose_cluster_rebind / apply_cluster_rebind / list_orphan_papers / summarize_rebind_status, which are gated behind RESEARCH_HUB_MCP_INCLUDE_DEPRECATED=1 and slated for removal in v2.0.0.

When to use:

  • After ingest leaves orphan paper notes that don't match any active cluster, and you want to plan moves before touching files.

  • After a manual cluster rename, when existing paper notes still reference the old slug.

  • Periodic vault hygiene: surface stuck or low-confidence orphans via action='status'.

When NOT to use:

  • You want to delete clusters wholesale, not rebind their papers; use research-hub clusters delete (CLI) instead.

  • You want to archive papers carrying a label; use prune_cluster instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionNoWhich rebind sub-step to run. One of: ``'propose'`` (write a draft rebind report to disk), ``'apply'`` (execute moves from a report — requires ``report_path``), ``'list_orphans'`` (return orphan paper paths, optionally filtered by ``folder``), or ``'status'`` (one-shot summary of orphans + open proposals). Defaults to ``'propose'``.propose
cluster_slugNoLimit ``propose`` / ``status`` to one cluster's papers. Empty string (default) means all clusters.
report_pathNoPath to a rebind report emitted by a prior ``action='propose'``. Required for ``action='apply'``; ignored otherwise.
dry_runNoWhen ``action='apply'``, report the moves without touching the filesystem. Defaults to ``True`` — pass ``False`` to actually move files.
auto_create_newNoWhen ``action='apply'``, allow the apply step to create previously-unknown cluster folders for high-confidence new-cluster proposals. Defaults to ``False``.
folderNoWhen ``action='list_orphans'``, restrict the result to papers under this ``raw/`` subdirectory. Empty string (default) returns all orphans.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/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 explains the tool as a single entrypoint and mentions the deprecated aliases, but does not explicitly state the potential destructive nature of the 'apply' action when 'dry_run' is false. More explicit warnings about side effects would improve 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 well-structured with sections, front-loading the core purpose. While it is moderately lengthy, each sentence adds value by explaining actions, usage guidance, and deprecation details. It is concise relative to the tool's complexity.

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 (6 parameters, 0 required, 100% schema coverage, and an output schema), the description covers workflow, usage guidance, parameter context, and deprecation details. It is complete enough for effective tool selection and invocation.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents each parameter thoroughly. The description adds context about the overall workflow and action selection, but does not significantly enhance understanding of individual parameter meanings 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 that the tool runs the cluster-rebind workflow specified by an action, consolidating four legacy operations. It lists specific use cases and distinguishes from siblings like 'prune_cluster' and CLI delete.

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 includes explicit 'When to use' and 'When NOT to use' sections, providing concrete scenarios and naming alternative tools (e.g., 'research-hub clusters delete', 'prune_cluster'). This provides clear guidance on tool selection.

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

collect_to_clusterA

Unified ingest. Auto-routes by source shape: DOI/arXiv -> add_paper, folder -> import_folder, URL -> .url file + import.

ParametersJSON Schema
NameRequiredDescriptionDefault
sourceYes
cluster_slugYes
skip_verifyNo
no_zoteroNo
dry_runNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior3/5

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

No annotations are provided, so the description must disclose behavioral traits. It explains auto-routing behavior and mentions the dry_run parameter, but does not describe side effects, authorization needs, or potential destructiveness. The information 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?

A single well-structured sentence front-loads the core purpose ('Unified ingest') and efficiently details the routing logic with examples. No unnecessary words or repetitions.

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

Completeness2/5

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

Given five parameters with no documentation and the complexity of an ingest operation, the description is insufficient. It does not cover how to use each parameter, expected output, or error cases. Although an output schema exists, the description lacks completeness for reliable agent invocation.

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

Parameters2/5

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

Schema description coverage is 0%, so parameter descriptions are missing entirely. The description only indirectly clarifies the 'source' parameter by listing example source types (DOI, arXiv, folder, URL). Other parameters like skip_verify, no_zotero, dry_run are not explained, adding minimal value beyond parameter names.

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 it is a unified ingest tool that auto-routes based on source shape, and it distinguishes between siblings by naming specific delegated actions (add_paper, import_folder, URL file). The verb 'collect' is implicit in 'ingest'.

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 clearly implies when to use this tool (for DOI, arXiv, folder, URL inputs) and references alternative tools for specific use cases. However, it does not explicitly state when not to use it or provide exclusions, leaving some ambiguity.

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

compose_brief_draftC

Assemble a markdown draft from cluster quotes + overview + crystal TLDRs.

ParametersJSON Schema
NameRequiredDescriptionDefault
cluster_slugYes
outlineNo
max_quotesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.4/5.0
Behavior2/5

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

With no annotations provided, the description must disclose behavioral traits. It only states what the tool does, not side effects, permissions, or whether it is read-only or destructive. For a tool that likely creates a draft, this is insufficient.

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 a single sentence, which is concise but lacks necessary structure. While front-loaded with the core action, it omits critical details that would fit in a slightly longer description.

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

Completeness2/5

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

Given the tool's complexity (assembling draft from multiple sources) and the presence of an output schema and siblings like 'compose_draft', the description is too terse. It fails to explain how parameters affect output or when to prefer this over similar tools.

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

Parameters1/5

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

The input schema has three parameters (cluster_slug, outline, max_quotes) with 0% schema description coverage. The description does not explain any parameter, leaving the agent to guess their meaning and usage.

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: assembling a markdown draft from specific sources (cluster quotes, overview, crystal TLDRs). This verb-resource pair is specific and distinct from many siblings, though it does not explicitly differentiate from 'compose_draft'.

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs alternatives like 'compose_draft' or other drafting tools. The description does not provide context for appropriate use cases or exclusions.

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

compose_draftC

Assemble captured quotes into a markdown draft.

ParametersJSON Schema
NameRequiredDescriptionDefault
cluster_slugYes
outlineNo
quote_slugsNo
styleNoapa
include_bibliographyNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.4/5.0
Behavior2/5

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

No annotations are provided, so the description bears full responsibility for behavioral disclosure. It states the action ('assemble') but does not disclose whether the operation is destructive, idempotent, or whether it interacts with existing drafts. The required cluster_slug hints at context but is not explained.

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

Conciseness2/5

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

The description is a single sentence, which is concise but insufficient for a tool with 5 parameters and nuanced behavior. Important details are omitted, making it underspecified rather than efficiently brief.

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

Completeness2/5

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

Despite the presence of an output schema, the description fails to cover prerequisites, expected inputs, or output details. It does not explain the role of the cluster, how the outline affects the draft, or the meaning of the style parameter. The tool's relationship to other composition tools is unclear.

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

Parameters1/5

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

With 0% schema description coverage, the description must elaborate on parameters. It only implies 'captured quotes' (mapping to quote_slugs) and 'draft' (output format). The other parameters (cluster_slug, outline, style, include_bibliography) are completely unmentioned, leaving their roles ambiguous.

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 its purpose: assembling captured quotes into a markdown draft. It specifies the resource ('captured quotes') and output format ('markdown draft'). However, it does not differentiate from the sibling tool 'compose_brief_draft', which could have distinct 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?

No guidance is provided on when to use this tool versus alternatives. For example, 'compose_brief_draft' is listed as a sibling but no distinction is made. Prerequisites (e.g., existence of captured quotes and a cluster) are implied but not stated.

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

discover_cleanC

Remove the discover stash directory for a cluster.

ParametersJSON Schema
NameRequiredDescriptionDefault
cluster_slugYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.6/5.0
Behavior2/5

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

The description implies destructive behavior ('Remove') but does not disclose side effects, reversibility, or prerequisites. With no annotations, the description carries full burden and fails to inform about safety.

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?

Single sentence, no fluff, but lacks important details. Could be more informative while remaining concise.

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

Completeness2/5

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

Simple tool with one parameter and output schema, but missing explanation of return value, success/failure behavior, or side effects. Incomplete for effective usage.

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

Parameters2/5

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

The description mentions 'for a cluster' but does not explain the cluster_slug parameter beyond general scope. Schema coverage is 0%, and description adds minimal meaning.

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?

Description clearly states the verb 'Remove' and the resource 'discover stash directory' scoped to a cluster. It distinguishes from siblings like discover_new or discover_status by indicating a cleanup action.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like discover_new or when cleanup is appropriate. The agent lacks context for decision-making.

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

discover_continueA

Apply fit-check scores from an AI judge and produce a papers_input.json ready for ingest.

Second half of the interactive discovery flow. The user runs discover_new first (which emits a search-results stash + a scoring prompt), pastes the prompt into an AI of choice, then feeds the AI's scored output back through this tool. The scored candidates are filtered by threshold and written to papers_input.json in the cluster's discover-stash directory, ready for the standard ingest pipeline (research-hub auto or research-hub clusters ingest).

When to use:

  • You have a JSON list of fit-check scores from an AI judge and want to admit only the high-confidence candidates into the vault.

  • You're running the two-phase discovery flow because the topic boundaries are fuzzy and you want a human / AI in the loop on which papers belong.

When NOT to use:

  • You haven't run discover_new yet — there's no stash to apply scores against. Run discover_new first.

  • You already have a fully-resolved list of DOIs to ingest; skip discovery and call add_paper per item, or auto_research_topic for the one-shot path.

  • You want to re-score an EXISTING ingested cluster's papers; use fit_check_emit + fit_check_apply (the post-ingest re-scoring path).

ParametersJSON Schema
NameRequiredDescriptionDefault
cluster_slugYesSlug of the cluster whose discover stash will be consumed. Must match the slug passed to ``discover_new``.
scoredYesEither a flat list of score dicts (each with at least ``slug`` + ``score``), or a wrapping dict like ``{"scores": [...]}`` — both shapes accepted. Score values are 0-5 integers; entries missing a score are treated as score 0.
thresholdNoMinimum score (inclusive) for admission. Defaults to ``None`` — when ``auto_threshold=False`` this falls back to the cluster's configured default (typically 4).
auto_thresholdNoWhen ``True``, ignore ``threshold`` and pick a cutoff automatically from the score distribution (a bimodal gap heuristic). Default ``False`` (use explicit ``threshold``).

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations, the description covers the key behavioral aspects: input processing (scored list), threshold filtering, auto-threshold heuristic, and output writing. It does not explicitly mention whether it overwrites existing files or the stash, which would improve 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 well-structured with a summary, detailed process, and usage guidelines. It uses formatting for code and clear sections. While slightly verbose, it remains focused and front-loaded with the core action.

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 complexity and presence of an output schema, the description adequately covers prerequisites, input handling, filtering logic, and integration with the discovery flow. It addresses edge cases like missing scores and auto-threshold, making it complete for an agent to invoke 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%, providing a baseline of 3. The description adds value by explaining default threshold behavior (falls back to cluster default), that missing scores are treated as 0, and that 'scored' can be a list or dict. This goes 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 action: 'Apply fit-check scores from an AI judge and produce a papers_input.json ready for ingest.' It specifies the tool is the second half of the discovery flow, distinguishing it from siblings like discover_new or discover_clean.

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 'When to use' and 'When NOT to use' sections provide clear guidance, including prerequisites (run discover_new first) and alternatives (add_paper, fit_check_apply). This helps the agent select the correct tool.

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

discover_newC

Run search + emit fit-check prompt, stashing state for discover_continue.

ParametersJSON Schema
NameRequiredDescriptionDefault
cluster_slugYes
queryYes
year_fromNo
year_toNo
min_citationsNo
backendsNo
limitNo
definitionNo
exclude_typesNo
exclude_termsNo
min_confidenceNo
rank_byNosmart
fieldNo
regionNo
from_variantsNo
expand_autoNo
expand_fromNo
expand_hopsNo
seed_doisNo
include_existingNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided. The description mentions 'stashing state' but does not disclose any behavioral traits such as side effects, authorization needs, rate limits, or whether it modifies data.

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

Conciseness2/5

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

The description is only one sentence and lacks structure. For a tool with 20 parameters, it is under-specified and should be more detailed or use bullet points.

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

Completeness1/5

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

Given the high complexity (20 parameters, no annotations), the description is woefully incomplete. It does not explain return values (even though output schema exists), parameter relationships, or how the tool fits with other siblings beyond discover_continue.

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

Parameters1/5

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

Schema description coverage is 0%. The description does not explain any of the 20 parameters (e.g., cluster_slug, query, year_from), leaving the agent without guidance on their meaning or usage.

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 it runs a search and emits a fit-check prompt, stashing state for discover_continue. This distinguishes it from sibling tools like discover_continue and discover_variants.

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 that after running discover_new, one should use discover_continue, but it does not provide explicit guidance on when to use this tool versus alternatives, nor when not to use it.

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

discover_statusC

Return current discover state for a cluster.

ParametersJSON Schema
NameRequiredDescriptionDefault
cluster_slugYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.8/5.0
Behavior2/5

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

No annotations exist, so the description must fully convey behavioral traits. It only says 'return', implying a read-only operation, but does not clarify permissions, side effects, or the nature of 'discover state'. This is insufficient for sound agent reasoning.

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 a single sentence of 8 words, which is very concise. However, it is under-specified; conciseness should not come at the cost of completeness for a tool with no other documentation.

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 simple tool (1 parameter, output schema exists), the description is minimally adequate but fails to clarify what 'discover state' entails or how the output should be interpreted. The presence of an output schema partially compensates.

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

Parameters1/5

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

The sole parameter 'cluster_slug' has 0% schema description coverage and is not explained in the description. The agent receives no guidance on its format, source, or meaning beyond the name.

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 'return' and the resource 'current discover state for a cluster'. It is specific and distinguishes from sibling tools like 'discover_new' or 'discover_continue' which initiate or modify discovery processes.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives (e.g., when to check state vs. when to start discovery). There is no mention of prerequisites or limitations.

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

discover_variantsA

Emit a query-variation prompt for discovery search. Generates alternate discover_new queries. When to use: before discovery when the seed query is narrow. When NOT to use: to run search; use discover_new instead. Args: cluster_slug: context; query: seed query; count: variant target. Returns: keys prompt, target_count, error. Example: >>> discover_variants("my-topic", "LLM agents", count=4) {"target_count": 4, "prompt": "..."}

ParametersJSON Schema
NameRequiredDescriptionDefault
cluster_slugYes
queryYes
countNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior4/5

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

Describes return format (keys prompt, target_count, error) and provides an example, but could elaborate more on side effects or safety. However, given no annotations, the description sufficiently discloses 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?

Very concise with clear sections (description, when to use, args, returns, example) and front-loaded purpose. No wasted words.

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

Completeness4/5

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

Provides sufficient information for a simple tool: purpose, usage conditions, parameter semantics, and return format. Lacks output schema details but example compensates.

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?

Adds meaningful context to parameters beyond the input schema: cluster_slug as context, query as seed, count as target count. This compensates for the 0% schema description coverage.

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

Purpose5/5

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

The description clearly states it emits query-variation prompts for discovery search and distinguishes itself from sibling tool discover_new by specifying that discover_new should be used to actually run search.

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 provides when to use (before discovery with narrow seed query) and when not to use (to run search; use discover_new instead), offering clear guidance on alternatives.

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

download_artifactsA

Download a generated NotebookLM briefing back to the vault.

Opens the cluster's NotebookLM notebook using the saved local session, extracts the latest briefing summary text, and saves it under <vault>/.research_hub/artifacts/<cluster_slug>/brief-<UTC>.txt. The cluster's nlm_cache.json entry is updated with the new path.

ParametersJSON Schema
NameRequiredDescriptionDefault
cluster_slugYesThe cluster identifier.
artifact_typeNoOnly "brief" is supported in v0.9.0; audio, mind-map, and video downloads land in v0.9.1.brief
headlessNoIf True (default), drive Chrome headlessly so this tool can run inside an MCP server with no display.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries full behavioral disclosure. It details the process (opens notebook, extracts briefing, saves to specific path, updates cache). However, it omits error handling or prerequisites like having a saved session.

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 very concise (4 sentences) and front-loaded with the main action. Every sentence adds necessary detail without 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 output schema exists, the description need not explain return values. It covers the process, file naming, and cache update. Minor gap: no mention of prerequisites like having a local session or existing briefing.

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?

All three parameters are described in the schema (100% coverage). The description adds value by explaining the artifact_type limitation ('only brief in v0.9.0') and headless use case (MCP server without display), going 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 action (download), resource (NotebookLM briefing), and destination (vault). It uses a specific verb and resource, distinguishing it from siblings like notebooklm_generate or notebooklm_upload.

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 (generated briefing, local session) but lacks explicit when-to-use or when-not-to-use guidance. It does not mention alternatives or exclusions, relying on the sibling list for differentiation.

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

emit_assignment_promptA

Build the topic-build Phase 2 (sub-topic assignment) LLM prompt.

Part of the multi-phase topic build flow: Phase 1 proposes sub-topics for a cluster; Phase 2 (this tool) emits the prompt that asks an LLM to assign each paper to one of those sub-topics.

ParametersJSON Schema
NameRequiredDescriptionDefault
cluster_slugYesthe cluster being organised.
subtopicsYeslist of dicts matching ``research_hub.topic.SubtopicProposal`` — i.e. ``{"slug": str, "title": str, "description": str}`` (``description`` optional, defaults to ``""``).

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior3/5

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

With no annotations, the description provides basic transparency: it emits a prompt. However, it does not disclose whether the tool has side effects, what the prompt contains, or if it is purely read-only. The behavior is implied but not fully detailed.

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 sentences, no filler. The first sentence states the core purpose, the second provides essential context about the multi-phase flow. Every sentence adds unique value.

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?

The description, combined with the 100% schema coverage and the presence of an output schema, fully specifies the tool. It covers the tool's role in the workflow and the inputs needed. No missing information for correct invocation.

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

Parameters3/5

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

The input schema has 100% coverage with parameter descriptions. The description adds no extra semantic detail beyond noting the phase; the schema already explains 'cluster_slug' and 'subtopics' structure. Baseline 3 applies as schema does the heavy lifting.

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: building the Phase 2 LLM prompt for sub-topic assignment. It specifies the verb ('emit') and resource ('the prompt'), and distinguishes from sibling tools like 'propose_subtopics' (Phase 1) and 'apply_subtopic_assignments' (Phase 3) by referencing the multi-phase flow.

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 explains the tool's role in the multi-phase topic build flow, indicating it should be used after 'propose_subtopics' and before 'apply_subtopic_assignments'. It lacks explicit when-not or alternative usage, but the flow context is clear.

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

emit_cluster_baseC

Emit (or refresh) the .base dashboard file for a cluster.

ParametersJSON Schema
NameRequiredDescriptionDefault
cluster_slugYes
forceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior2/5

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

No annotations exist, so the description must disclose behavior. It mentions 'emit (or refresh)' but does not explain whether it overwrites, side effects, authorization needs, or any destructive potential. This is insufficient for a file-related 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 a single concise sentence, but it omits necessary details about parameters and behavior. While concise, it lacks completeness, making it borderline under-specified.

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

Completeness2/5

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

Despite low complexity (2 params, output schema present), the description fails to explain the role of 'force', the nature of the output, or any effects. An output schema exists but is not referenced; the agent lacks context for decision-making.

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

Parameters1/5

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

Schema description coverage is 0%, and the description adds no meaning to 'cluster_slug' or 'force'. Without any explanation of parameters, the agent cannot infer their purpose beyond type hints.

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 emits or refreshes a .base dashboard file for a cluster, using a specific verb and resource. It distinguishes itself from siblings like 'generate_dashboard' or 'emit_crystal_prompt' by specifying the entity type.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. Given many sibling tools (e.g., 'generate_dashboard'), the description lacks context for choosing this tool.

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

emit_crystal_promptC

Emit the markdown prompt the calling AI should answer to generate crystals.

ParametersJSON Schema
NameRequiredDescriptionDefault
cluster_slugYes
question_slugsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.4/5.0
Behavior2/5

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

With no annotations provided, the description must fully convey behavioral traits. It only says 'emit', implying a generation operation, but does not disclose whether it is read-only, requires permissions, has side effects, or what the output format is. The lack of transparency is a significant gap.

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 a single short sentence, which is concise but sacrifices detail. It is front-loaded but underspecified. An appropriately sized description would include more context without being verbose.

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

Completeness2/5

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

The description fails to explain the output (despite an output schema existing), the role of parameters, or the overall workflow. Given the complexity of generating a prompt for crystal generation, more context is needed for the agent to use it correctly.

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

Parameters2/5

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

The input schema has 0% description coverage, and the tool description provides no explanation of the parameters (cluster_slug, question_slugs). The description does not compensate by adding meaning beyond the parameter names, leaving the agent to guess their roles.

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

Purpose3/5

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

The description states it emits a markdown prompt for generating crystals, which is a specific verb+resource. However, the phrasing is somewhat convoluted ('the calling AI should answer to generate crystals') and lacks clarity on what the prompt is for. It distinguishes from siblings like emit_assignment_prompt but could be more precise.

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

Usage Guidelines2/5

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

No usage guidelines are provided. The description does not indicate when to use this tool versus alternatives (e.g., emit_assignment_prompt), nor does it specify prerequisites, context, or exclusions. This leaves the agent without guidance on proper invocation.

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

enrich_candidatesC

Resolve candidate identifiers to full paper records.

ParametersJSON Schema
NameRequiredDescriptionDefault
candidatesYes
backendsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.4/5.0
Behavior2/5

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

With no annotations, the description must disclose behavioral traits like read-only or idempotency. It only implies a read operation ('resolve') but does not confirm side effects, error handling, or network dependency. The agent gets minimal insight into tool behavior.

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

Conciseness2/5

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

The description is a single sentence that is concise but underspecified. For a tool with 2 undocumented parameters, it fails to include essential information, making it closer to under-specification than efficient conciseness.

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

Completeness2/5

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

Although an output schema exists, the description omits crucial context about input semantics and behavior. With 0% schema coverage, the description should compensate but does not, leaving the tool incomplete for correct use.

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

Parameters1/5

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

Schema description coverage is 0%, yet the description provides no explanation for the 'candidates' or 'backends' parameters. The agent has no clue what candidate identifiers are (e.g., DOIs, IDs) or what backends represent, which critically undermines correct invocation.

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

Purpose4/5

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

The description clearly states the action (resolve) and the resource (candidate identifiers to full paper records), making the tool's purpose specific. It distinguishes from siblings like 'search_papers' by focusing on resolution of candidates rather than general search, but does not explicitly differentiate.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives such as 'search_papers' or 'verify_paper'. The description lacks context for appropriate usage scenarios or exclusions.

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

examples_copyC

Copy an example into the user's cluster registry.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
cluster_slugNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description must convey behavioral traits. It only labels the operation as 'copy' but omits important details like whether it duplicates an existing example, what happens on conflict, permissions needed, or side effects on related data.

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

Conciseness5/5

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

The description is a single concise sentence that front-loads the action. Every word is necessary and there is no superfluous content.

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

Completeness2/5

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

Given the presence of an output schema, return values are covered. However, the description lacks completeness for a simple copy tool: it doesn't explain what an 'example' is, what the 'cluster registry' is, or how the tool integrates with sibling tools like examples_list. The two parameters are not contextualized.

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

Parameters1/5

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

Schema coverage is 0%, and the description does not explain the meaning or constraints of the two parameters ('name' and 'cluster_slug'). The agent has no way to infer what values are valid or how they affect the copy operation.

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

Purpose5/5

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

The description clearly states the action ('Copy'), the object ('an example'), and the destination ('into the user's cluster registry'). It distinguishes this tool from siblings like examples_list and examples_show by indicating a mutation operation.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives, no prerequisites, and no exclusions. For a copy operation, it would be helpful to mention if the source example must exist or if overwriting occurs.

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

examples_listA

List bundled example clusters.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

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?

No annotations provided. The description does not disclose any behavioral details beyond listing (e.g., read-only, no side effects). Agent must infer safety profile.

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?

Extremely concise—three words—and front-loaded with verb and resource. No wasted text.

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

Completeness4/5

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

Given no parameters and presence of output schema, the description is minimally adequate. Could mention output format (e.g., list of names), but schema fills that gap.

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 exist, and schema coverage is 100% trivially. Description adds no param info but none is needed. Baseline is 4 per rules.

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

Purpose5/5

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

The description clearly states the action 'List' and the resource 'bundled example clusters', which is specific and distinguishes it from siblings like 'examples_copy' and 'examples_show'.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives such as 'examples_copy' or 'examples_show'. The description does not provide context for selection.

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

examples_showA

Return one bundled example cluster definition. Inspects sample JSON before examples_copy. When to use: before copying an example such as cs_swe. When NOT to use: to list names; use examples_list instead. Args: name: bundled example id, such as cs_swe or bio_protein. Returns: keys name, slug, field, query, definition, year_from, year_to, min_citations, sample_dois, description, error. Example: >>> examples_show("cs_swe") {"slug": "llm-agents-software-engineering"}

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior3/5

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

No annotations are provided, so the description carries full burden. It discloses the return keys and that it inspects JSON, but does not detail side effects, error handling, or whether it is read-only. Adequate but not fully transparent.

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

Conciseness5/5

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

The description is concise yet structured with clear sections: action, usage, args, returns, example. No wasted words.

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

Completeness4/5

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

Given the tool's simplicity (one parameter, output schema present), the description covers purpose, parameters, return keys, and an example. It lacks error behavior details, but overall is quite complete.

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 0%, but the description adds meaning by providing examples (cs_swe, bio_protein) and explaining that name is a bundled example id, which compensates well.

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 it returns a bundled example cluster definition and mentions inspecting sample JSON before examples_copy, distinguishing itself 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 Guidelines5/5

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

Explicitly says when to use (before copying an example) and when not to use (to list names, use examples_list instead), providing clear guidance.

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

export_citationC

Export citation in BibTeX, BibLaTeX, RIS, or CSL-JSON format.

ParametersJSON Schema
NameRequiredDescriptionDefault
identifierNo
clusterNo
formatNobibtex

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries the full burden. It states the output formats but does not disclose whether the tool is a read operation, requires network access, or has any side effects. Missing details on error handling or input dependencies.

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

Conciseness5/5

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

The description is a single concise sentence, front-loaded with the verb 'Export', and contains no extraneous information.

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

Completeness2/5

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

Given the tool has three optional parameters and multiple formats, the description is too sparse. It fails to explain the roles of identifier and cluster, and does not mention the output schema or return value, though an output schema exists externally.

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 0%, so description must compensate. It clarifies the format parameter by listing specific values, but does not explain identifier or cluster parameters. Partial compensation.

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 exports a citation in specific formats (BibTeX, BibLaTeX, RIS, CSL-JSON). It uses a specific verb and resource, distinguishing it from siblings like build_citation or get_citations, though not explicitly.

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

Usage Guidelines2/5

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

No guidelines are provided about when to use this tool versus alternatives like build_citation or get_citations. There is no mention of prerequisites, conditions, or exclusions.

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

fit_check_applyC

Consume AI scores, filter candidates, write rejected sidecar.

ParametersJSON Schema
NameRequiredDescriptionDefault
cluster_slugYes
candidatesYes
scoresYes
thresholdNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.4/5.0
Behavior2/5

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

With no annotations, the description must disclose behavioral traits. It only mentions writing a rejected sidecar, implying mutation, but lacks details on side effects, permissions, error handling, or the nature of the sidecar. Very minimal 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 a single short sentence, which is concise but at the expense of clarity. It could benefit from structure, but it is not overly verbose.

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

Completeness2/5

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

Despite having 4 parameters (3 required) and an output schema, the description fails to explain the filtering logic, the 'sidecar' concept, or provide context for the tool's internal workings. Significant gaps remain given the complexity.

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

Parameters2/5

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

Schema descriptions coverage is 0%, and the description does not explain the parameters ('cluster_slug', 'candidates', 'scores', 'threshold'). The terms 'AI scores' and 'candidates' are used but not mapped to the schema. No added meaning beyond parameter names.

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

Purpose3/5

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

The description states the tool consumes AI scores, filters candidates, and writes a rejected sidecar, giving a rough idea of the operation. However, 'sidecar' is undefined and the description does not differentiate from sibling tools like fit_check_audit or enrich_candidates, so clarity is moderate.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives, nor are prerequisites or conditions mentioned. The agent receives no context about appropriate scenarios.

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

fit_check_auditA

Parse the latest NotebookLM briefing for off-topic flags. Audits briefing text before fit_check_drift. When to use: after NotebookLM flags papers. When NOT to use: to emit scoring prompts; use fit_check_emit instead. Args: cluster_slug: cluster whose briefing is audited. Returns: keys ok, cluster_slug, flagged, reason, error. Example: >>> fit_check_audit("my-topic") {"ok": True, "flagged": [...]}

ParametersJSON Schema
NameRequiredDescriptionDefault
cluster_slugYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior3/5

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

No annotations are provided, so the description must fully convey behavioral traits. It describes the tool as parsing and auditing, implying a read-only analysis, but does not explicitly state side effects, permissions, or whether it modifies state. The return example and keys provide some insight, but more explicit behavioral context would be helpful.

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 with distinct sections: purpose, usage, params, returns, example. It is concise with no wasted words; 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?

Given the tool's simplicity (one parameter, output schema exists), the description covers the return keys and provides an example. It distinguishes from relevant siblings (fit_check_drift, fit_check_emit). It is slightly lacking in prerequisites or edge cases, but overall sufficient for the complexity level.

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% description coverage, so the description compensates by explaining the single parameter: 'cluster_slug: cluster whose briefing is audited.' This adds meaning beyond the schema, which only provides the name. An example usage further clarifies.

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: 'Parse the latest NotebookLM briefing for off-topic flags.' It uses a specific verb 'parse' and a resource 'NotebookLM briefing', and distinguishes itself from sibling 'fit_check_drift' by noting it audits before drift check.

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 usage guidance is provided: 'When to use: after NotebookLM flags papers. When NOT to use: to emit scoring prompts; use `fit_check_emit` instead.' This clearly indicates when to use this tool versus an alternative.

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

fit_check_driftA

Emit a drift-check prompt for the current cluster overview. Re-scores papers after fit_check_audit. When to use: when an overview changed and papers may not fit. When NOT to use: to apply scores; use fit_check_apply instead. Args: cluster_slug: cluster; threshold: accepted score cutoff, default 3. Returns: keys cluster_slug, paper_count, threshold, prompt, error. Example: >>> fit_check_drift("my-topic", threshold=3) {"cluster_slug": "my-topic", "prompt": "..."}

ParametersJSON Schema
NameRequiredDescriptionDefault
cluster_slugYes
thresholdNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior4/5

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

Discloses that it re-scores papers after audit, implying mutation. With no annotations, this is valuable. Lacks specifics on side effects beyond scores (e.g., state changes) but sufficient.

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?

Concise yet comprehensive: two lines of purpose, usage rules, parameter descriptions, return keys, and example. No wasted words.

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?

Covers purpose, when to use, parameters, returns, and context (after audit). With output schema existing, return info is adequate.

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 0%, but description adds clear meaning: cluster_slug described as 'cluster', threshold as 'accepted score cutoff' with default. Example reinforces usage.

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?

Clearly states verb (emit) and resource (drift-check prompt) and context (after fit_check_audit). Differentiates from sibling fit_check_apply by indicating when NOT to use.

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?

Provides explicit 'When to use' and 'When NOT to use' sections with a clear alternative (fit_check_apply).

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

fit_check_promptC

Build the Gate 1 fit-check prompt for an AI to score.

ParametersJSON Schema
NameRequiredDescriptionDefault
cluster_slugYes
candidatesYes
definitionNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. The description only states what the tool builds, but does not reveal whether the prompt is stored, returned, or has side effects. This is insufficient for a tool with no annotations.

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 a single sentence, which is concise but lacks substance. It does not front-load key information beyond the purpose. While brevity is appreciated, the description would benefit from additional context.

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

Completeness2/5

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

Given the presence of an output schema, the description does not need to explain return values. However, with 0% parameter coverage and missing usage guidance, the description fails to provide a complete understanding for an agent to correctly invoke the tool.

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

Parameters1/5

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

Schema description coverage is 0%, and the description provides no explanation of the three parameters (cluster_slug, candidates, definition). Without any guidance, the agent cannot determine how to correctly populate these fields.

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 that the tool builds a Gate 1 fit-check prompt for an AI to score. It uses a specific verb ('Build') and identifies the resource ('Gate 1 fit-check prompt'). While it doesn't explicitly differentiate from siblings like fit_check_apply, the purpose is distinct enough.

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 such as fit_check_apply or fit_check_audit. There is no indication of prerequisites, context, or exclusion criteria.

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

generate_dashboardA

Generate a personal HTML dashboard for the vault.

Returns the path to the generated file. Open it in a browser to see cluster overview, paper counts, reading status breakdown, and NotebookLM links.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

Discloses it generates a file and returns path, plus what the dashboard contains. Without annotations, it covers key behaviors, though it could mention any prerequisites.

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 efficient sentences front-loading purpose, return value, and usage. No 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?

For a parameterless tool with output schema, description sufficiently explains what it does, what it returns, and how to use the result.

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 exist, so description cannot add param meaning. Baseline is 4; description adds value by explaining output and content.

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?

Clearly states it generates a personal HTML dashboard for the vault, with specific verb and resource. Distinct from siblings as only dashboard tool.

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?

Describes when to use: to see cluster overview, paper counts, etc. Provides clear context but lacks explicit exclusions or alternative tool references.

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

get_citationsA

List papers that cite the given paper (forward citations).

Delegates to research_hub.citation_graph.CitationGraphClient (Semantic Scholar Graph API).

ParametersJSON Schema
NameRequiredDescriptionDefault
identifierYesa DOI (``10.xxxx/...``), arXiv id (``2401.12345``), or Semantic Scholar paper id. Bare titles are NOT accepted.
limitNomax results (default 20).

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?

No annotations are provided, so the description must disclose behavioral traits. It only notes delegation to Semantic Scholar, omitting details like rate limits, authentication, or that it is a read-only 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 two sentences, front-loading the purpose and adding a technical note. Every sentence is meaningful and concise.

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 list operation, the description covers the identifier format and delegation. An output schema exists, so return values need not be explained. Minor gaps in usage context remain.

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 already has 100% coverage with descriptions, but the description adds 'Bare titles are NOT accepted,' which provides extra clarity beyond the schema's parameter types.

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 ('List papers that cite the given paper') and specifies 'forward citations' to differentiate from backward citation tools like 'get_references'.

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 does not provide guidance on when to use this tool versus siblings like 'get_references' or 'search_papers'. It only mentions delegation to an API.

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

get_config_infoA

Show current configuration paths and settings.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior2/5

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

No annotations are provided, so the description bears full responsibility for behavioral disclosure. It only states 'Show,' indicating a read operation, but does not mention any side effects, authentication needs, or limitations. More detail about what exactly is shown (e.g., file paths, environment settings) would improve transparency.

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

Conciseness5/5

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

The description is a single sentence, front-loading the action and resource. It contains no extraneous words and 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?

For a parameterless tool with an output schema, the description is largely adequate. However, it could be slightly more complete by clarifying the scope of 'configuration paths and settings' (e.g., system-wide or user-specific). Nevertheless, it is sufficient given the tool's simplicity.

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

Parameters4/5

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

There are no parameters in the input schema, so the description does not need to explain any. The baseline for 0 parameters is 4, and the description appropriately avoids adding unnecessary parameter information.

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 the specific verb 'Show' and clearly identifies the resource: 'current configuration paths and settings.' This unambiguously states what the tool does, and there are no sibling tools with similar names, so differentiation is not needed.

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, no context for usage, and no exclusions. While it's a simple read-only tool, the lack of any usage direction is a gap.

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

get_referencesC

List papers cited by the given paper (its bibliography).

ParametersJSON Schema
NameRequiredDescriptionDefault
identifierYes
limitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, and the description does not disclose behavioral traits such as read-only status, pagination, or rate limits. It merely states the action without context on side effects or limitations.

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 very concise and front-loaded, consisting of a single sentence. While brevity is valued, the lack of additional detail may hinder understanding.

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 that there is an output schema, the description is minimally complete for a list tool. However, it lacks context on input format, error handling, and typical use cases.

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

Parameters1/5

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

The description adds no meaning to the parameters. It does not explain what 'identifier' represents (e.g., DOI, paper ID) or how 'limit' affects results. With 0% schema description coverage, this is a significant gap.

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: listing papers cited by a given paper (its bibliography). However, it does not differentiate this from sibling tools like get_citations, which may retrieve papers that cite the given paper.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives. The description does not mention which papers qualify as 'references' or how it differs from get_citations, search_papers, or web_search.

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

get_topic_digestC

Return every paper in a cluster plus a markdown digest for overview writing.

ParametersJSON Schema
NameRequiredDescriptionDefault
cluster_slugYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavioral traits. It only states the tool returns data and a digest, with no mention of side effects, permissions, or output format details. This is insufficient for full transparency.

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

Conciseness4/5

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

The description is a single sentence of 13 words, front-loaded with the action and result. It is concise but may be too brief, missing important details about the digest and parameter.

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

Completeness2/5

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

With no annotation support and a single undocumented parameter, the description fails to provide adequate context. The existence of an output schema partially compensates, but the input parameter and behavioral gaps remain.

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

Parameters2/5

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

The sole parameter 'cluster_slug' has no description in the schema (0% coverage). The tool description adds no explanation of what a cluster_slug is or how to obtain it, leaving the agent without required context.

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 returns every paper in a cluster plus a markdown digest for overview writing. This distinguishes it from sibling tools like 'show_cluster' or 'summarize_cluster' by emphasizing the digest generation.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives such as 'show_cluster' or 'summarize_cluster'. The description does not provide context about prerequisites or use cases.

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

import_folder_toolC

Walk a local folder and ingest non-DOI files as document notes.

ParametersJSON Schema
NameRequiredDescriptionDefault
folderYes
cluster_slugYes
dry_runNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.5/5.0
Behavior2/5

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

The description lacks behavioral details beyond the core action. It does not disclose side effects (e.g., file creation, metadata updates), permissions needed, error handling, or any constraints. Without annotations, the agent has insufficient behavioral context.

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

Conciseness2/5

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

The description is extremely brief (one sentence) but fails to convey essential information. It is underspecified rather than concise, lacking detail that is necessary for effective tool selection and invocation.

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

Completeness1/5

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

Given the absence of parameter descriptions, usage guidance, and behavioral transparency, the description is severely incomplete. The existence of an output schema does not compensate for the lack of input and usage context.

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

Parameters1/5

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

The description provides no information about the three parameters ('folder', 'cluster_slug', 'dry_run'). With 0% schema description coverage, the agent cannot infer the meaning, format, or purpose of these inputs beyond their names and types.

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 states a specific verb 'walk and ingest' targeting a resource 'local folder' and 'non-DOI files', clearly indicating what the tool does. It differentiates from siblings by implying it handles folder ingestion, which is distinct from other sibling tools like 'add_paper' or 'search_papers'.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. There is no mention of prerequisites, exclusions, or comparison to other import or ingestion tools among the siblings.

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

label_paperC

Set, add, or remove labels on a paper note.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYes
labelsNo
addNo
removeNo
fit_scoreNo
fit_reasonNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.4/5.0
Behavior2/5

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

No annotations exist, so the description must carry the full burden. It only says 'set, add, or remove labels' without detailing behavioral traits like whether setting replaces all labels, what happens with duplicates, or how fit_score/fit_reason interact. The mutation aspect is implied but not elaborated.

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 a single sentence, which is concise. However, it is too vague and does not earn its place by informing the agent adequately. It could be expanded to cover critical aspects without being verbose.

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

Completeness2/5

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

Given the tool has 6 parameters, no annotations, and an output schema (but not referenced), the description is incomplete. It omits how fit_score/fit_reason are used, what the output contains, and any usage constraints. A minimal description for a complex label manipulation tool should do more.

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

Parameters1/5

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

With 0% schema description coverage, the description must explain parameters. It mentions nothing about 'slug', 'labels', 'add', 'remove', 'fit_score', or 'fit_reason'. Parameter names provide some hint, but the description does not map them or clarify how they work together.

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 verb (set, add, remove) and the resource (labels on a paper note). It distinguishes the tool's purpose from sibling tools that deal with paper existence or clustering. However, it doesn't differentiate among the three operations or explain when to use each.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like 'mark_paper' or 'apply_fit_check_to_labels'. The description does not mention prerequisites, context, or when to use set vs add vs remove.

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

list_clustersA

List all topic clusters with their bindings.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

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?

No annotations are provided, and the description does not disclose behavioral traits beyond 'list all'. It does not mention that the operation is read-only, nor does it address pagination or performance.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no unnecessary words. It efficiently conveys the purpose.

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

Completeness3/5

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

Given the existence of an output schema (not shown), the description need not detail return values. However, with many sibling tools, additional context such as 'this is a read-only operation' would improve completeness.

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

Parameters4/5

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

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

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

Purpose5/5

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

The description clearly states the action ('List'), the resource ('all topic clusters'), and what is included ('their bindings'). This differentiates from sibling tools like 'show_cluster' which likely returns details of a single cluster.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives such as 'show_cluster' or 'summarize_cluster'. The agent must infer usage from context.

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

list_crystalsC

List all pre-computed crystal answers for a cluster.

ParametersJSON Schema
NameRequiredDescriptionDefault
cluster_slugYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.8/5.0
Behavior2/5

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

No annotations provided, and description minimally discloses behavior: it lists pre-computed answers. Does not reveal if results are paginated, ordered, or if errors occur for invalid cluster_slug.

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?

Single sentence that is direct and to the point. No wasted words, but could be slightly expanded for clarity.

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?

Has output schema which reduces burden, but description doesn't address pagination, error handling, or whether the list is sorted. Minimal but adequate for a simple list tool.

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

Parameters2/5

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

Schema description coverage is 0%, so the description should compensate for the single parameter. It only implies cluster_slug identifies the cluster, but no details on format, constraints, or examples.

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?

Description clearly states the action (List) and resource (pre-computed crystal answers) with scope (for a cluster). Differentiates from sibling list tools like list_clusters.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus siblings like read_crystal or list_clusters. Lacks any when-not or alternative usage hints.

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

list_papers_by_labelC

Return paper states for the cluster, optionally filtered by label.

ParametersJSON Schema
NameRequiredDescriptionDefault
cluster_slugYes
labelNo
label_notNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior2/5

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

No annotations provided, so description must disclose behavior. It fails to mention important traits like read-only nature, permission requirements, pagination, or what exactly 'paper states' means.

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?

Single sentence, no wasted words. However, it is too brief and lacks critical detail, making it less useful despite conciseness.

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

Completeness2/5

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

With 3 parameters (no schema descriptions), no annotations, but an output schema, the description leaves many unknowns (e.g., what 'paper states' are, how filters combine, output format). Insufficient for effective tool selection and use.

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

Parameters2/5

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

Schema coverage is 0%, so description should compensate. It only mentions 'filtered by label' but doesn't clarify the difference between 'label' and 'label_not' or explain 'cluster_slug'.

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 states the tool returns paper states for a cluster with optional label filtering, which is clear. However, 'paper states' is somewhat vague and doesn't distinguish from sibling tools like 'list_clusters' or 'search_papers'.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives. There are many sibling tools for listing, filtering, or labeling papers, but the description provides no selection criteria.

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

list_quotesB

List captured quotes, optionally filtered by cluster.

ParametersJSON Schema
NameRequiredDescriptionDefault
cluster_slugNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior2/5

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

No annotations provided, so description must fully convey behavior. It indicates a read-only operation, but omits authentication needs, error handling, pagination, or ordering. The description is minimal for behavioral 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?

Single sentence with no extraneous words; information is front-loaded and efficiently conveys the tool's action and optional parameter.

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

Completeness3/5

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

For a simple list tool with one optional parameter, the description provides basic functionality. However, it lacks guidance on output content (though output schema exists), ordering, or relationship to other entities like clusters, which could improve usability.

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?

With 0% schema coverage, the description adds context by stating the cluster_slug parameter is optional and used for filtering. This clarifies the parameter's purpose, though it could further explain what a cluster_slug represents or how to obtain it.

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

Purpose4/5

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

The description clearly states it lists captured quotes with optional cluster filtering. It distinguishes from sibling tools like capture_quote (create) and list_clusters (lists clusters), but does not explicitly differentiate from other list tools like list_crystals or list_papers_by_label.

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?

Implies usage: retrieve quotes, optionally filtered by cluster. No explicit guidance on when not to use or alternatives among sibling list tools, leaving inference to the agent.

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

list_topic_notesC

List existing sub-topic notes for a cluster.

ParametersJSON Schema
NameRequiredDescriptionDefault
cluster_slugYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.6/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. It only states the function but does not disclose idempotency, side effects, or that it is a read-only operation. Minimal behavioral context.

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

Conciseness3/5

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

The description is a single sentence, efficient but too brief, missing essential details. It is front-loaded but at the expense of completeness.

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 the tool has only one parameter and an output schema exists, the description lacks context about how to find the cluster slug or what to expect in return. Adequate when combined with other tools, but incomplete standalone.

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

Parameters1/5

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

The parameter 'cluster_slug' has no description in the schema, and the tool description does not explain its meaning, format, or how to obtain it. With 0% schema coverage, the description adds no value.

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

Purpose4/5

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

The description clearly states it lists sub-topic notes for a cluster, with a specific verb and resource. It distinguishes from siblings like build_topic_notes (creates) and list_clusters (lists clusters). However, 'sub-topic notes' could be more precise.

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs alternatives, no prerequisites or exclusions. The description fails to provide context for appropriate use.

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

mark_paperC

Update the reading status of a paper note.

Delegates to research_hub.operations.mark_paper.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesthe paper note slug (lowercase ``[a-z0-9_-]``).
statusYesone of ``unread`` | ``reading`` | ``deep-read`` | ``cited`` (``research_hub.operations.VALID_STATUSES``). Written to the note's ``status`` frontmatter field. An unrecognised value raises ValueError → ``{"error": ...}``.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries the full burden. It implies mutation but does not disclose side effects, permission requirements, or error handling beyond what the schema provides. The second sentence is an implementation detail, not a 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.

Conciseness4/5

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

The description is short and front-loaded with the purpose. However, the second sentence is unnecessary for tool selection (delegation detail) and could be removed to improve conciseness.

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

Completeness2/5

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

Given the tool's mutation nature and the presence of many sibling tools, the description lacks completeness. It should mention idempotency, what happens on error, or reference the output schema. The current description is too sparse.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents both parameters. The description does not add extra meaning beyond what is in the schema, thus baseline 3 is appropriate.

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

Purpose4/5

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

The description clearly states 'Update the reading status of a paper note,' which specifies the verb (update) and resource (reading status of a paper note). It distinguishes from sibling tools like add_paper and remove_paper, though it could be more explicit about what exactly it updates.

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

Usage Guidelines2/5

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

No usage guidance is provided. The description only mentions delegation to an internal function, which is not helpful for deciding when to use this tool versus alternatives like label_paper or move_paper.

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

merge_clustersA

Merge all papers from one cluster into another, then delete the source.

Delegates to research_hub.clusters.ClusterRegistry.merge.

ParametersJSON Schema
NameRequiredDescriptionDefault
sourceYesslug of the cluster to drain + remove.
intoYesslug of the surviving destination cluster.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior4/5

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

Explicitly states that the source cluster is deleted after merge, indicating destructive behavior. With no annotations, this disclosure is adequate, though it could mention idempotency 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.

Conciseness3/5

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

Two sentences; the first is effective but the second mentions internal delegation which is unnecessary for tool selection. Could be more focused.

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?

Covers the basic operation but lacks mention of error conditions, what happens if clusters do not exist, or the output format (though output schema exists). Adequate but not thorough.

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?

Both parameters have comprehensive schema descriptions (100% coverage). The tool description adds no new information beyond the schema, so baseline 3 applies.

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

Purpose5/5

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

The description clearly states the action: merge all papers from one cluster into another and then delete the source. This distinctively differentiates from sibling tools like split_cluster or prune_cluster.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like split_cluster or simple_move. Does not mention prerequisites or conditions for use.

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

move_paperC

Move a paper note from its current cluster to another.

Delegates to research_hub.operations.move_paper.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYespaper note slug (lowercase ``[a-z0-9_-]``).
to_clusterYesdestination cluster slug. The note's ``.md`` file is moved on disk into the destination cluster dir.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations provided, the description fails to disclose important behavioral traits such as side effects (e.g., physical file movement), required permissions, or error conditions. The mention of delegation to an internal function is not helpful for an AI agent.

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 very short (two sentences) and front-loaded with the main action, but it lacks necessary details. While concise, it is underspecified, scoring average.

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

Completeness2/5

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

Given the lack of annotations and output schema details, the description is incomplete. It does not cover behavioral expectations, return values, or usage scenarios, leaving significant gaps for an AI agent.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description does not add any extra meaning beyond what the schema already provides; it remains neutral.

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

Purpose4/5

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

The description clearly states the action ('Move a paper note') and the resource ('from its current cluster to another'). It is specific about what the tool does, though it does not explicitly differentiate from sibling tools like 'collect_to_cluster' or 'merge_clusters'.

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 such as 'add_paper' or 'remove_paper'. No usage context or preconditions are mentioned.

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

notebooklm_bundleC

Build a NotebookLM upload bundle for a cluster.

ParametersJSON Schema
NameRequiredDescriptionDefault
cluster_slugYes
download_pdfsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.6/5.0
Behavior2/5

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

With no annotations, the description carries full burden but provides minimal behavioral information. It does not disclose side effects, authorization needs, or what the output represents beyond 'build'. The agent cannot tell if this triggers uploads or modifies state.

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

Conciseness4/5

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

The description is a single sentence with no wasted words. However, it is at the edge of being too terse, sacrificing necessary detail for brevity.

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

Completeness2/5

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

Despite a simple parameter set and an output schema, the description lacks essential context: what is a bundle, when to build vs. upload, and how the output is used. It is incomplete for a tool with many siblings.

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

Parameters1/5

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

The description does not reference the two parameters (cluster_slug and download_pdfs) at all. With 0% schema description coverage, the description should compensate but fails to explain how each parameter affects the bundle.

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

Purpose4/5

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

The description clearly states the action (Build) and the resource (NotebookLM upload bundle) with context (for a cluster). It distinguishes itself from sibling tools like notebooklm_upload and notebooklm_download, but could be more specific about the bundle contents.

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs. alternatives such as notebooklm_upload or notebooklm_generate. The description lacks any contextual hints about prerequisites or conditions.

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

notebooklm_downloadC

Download the latest NotebookLM briefing artifact into the vault.

ParametersJSON Schema
NameRequiredDescriptionDefault
cluster_slugYes
artifact_typeNobrief
headlessNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.6/5.0
Behavior2/5

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

No annotations provided, so description must compensate, but it lacks details on behavior: what happens if no artifact exists, permissions needed, whether it overwrites or creates new files? Does not explain parameters like 'headless' or 'artifact_type'.

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 a single sentence of 8 words, which is concise but lacks necessary detail. It front-loads the main action but sacrifices completeness.

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

Completeness1/5

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

Given 3 parameters with no schema descriptions, no annotations, and an output schema (unseen), the description is severely incomplete. It does not explain usage context, output, or prerequisites, leaving the agent underinformed.

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

Parameters1/5

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

Schema description coverage is 0%, so description should explain parameters. However, only 'briefing artifact' is mentioned; 'cluster_slug', 'artifact_type', and 'headless' are not described, adding no meaning beyond their names.

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 'download' and resource 'latest NotebookLM briefing artifact' with destination 'into the vault'. It distinguishes from siblings like notebooklm_generate (generates) and notebooklm_upload (uploads).

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives (e.g., notebooklm_generate, notebooklm_upload, notebooklm_bundle). No information on prerequisites or conditions like artifact existence.

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

notebooklm_generateC

Trigger NotebookLM artifact generation for a cluster notebook.

ParametersJSON Schema
NameRequiredDescriptionDefault
cluster_slugYes
artifact_typeNobrief
headlessNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.4/5.0
Behavior2/5

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

No annotations are provided, so the description must convey behavioral traits. It only says 'Trigger... generation' without indicating whether the operation is destructive, asynchronous, or requires specific permissions. The agent cannot anticipate side effects or state changes.

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 a single sentence, which is concise but lacks necessary detail. It is front-loaded but too brief for a 3-parameter tool with no schema descriptions.

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

Completeness2/5

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

Given the complexity of sibling tools and lack of schema descriptions, the description is incomplete. It does not clarify what 'artifact generation' entails, how it differs from similar tools, or what the output schema provides.

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

Parameters1/5

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

With 0% schema description coverage, the description must explain parameters. It does not mention cluster_slug, artifact_type, or headless at all. The agent has no semantic guidance beyond parameter names and types.

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 verb 'Trigger' and the resource 'NotebookLM artifact generation for a cluster notebook'. It is specific but does not differentiate from siblings like notebooklm_bundle or compose_brief_draft. The purpose is clear at a high level.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives (e.g., compose_brief_draft, notebooklm_bundle). There is no mention of prerequisites or typical use cases, leaving the agent to infer from the name alone.

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

notebooklm_uploadC

Upload the latest cluster bundle to NotebookLM using the saved session.

ParametersJSON Schema
NameRequiredDescriptionDefault
cluster_slugYes
dry_runNo
headlessNo
create_if_missingNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.3/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It only says 'upload' without disclosing side effects, required authentication, or behavior of parameters like dry_run and create_if_missing. The term 'saved session' hints at a prerequisite but is not explained.

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

Conciseness2/5

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

The description is a single sentence, which is concise, but it is underspecified given the tool's complexity (4 parameters, no param docs). Conciseness should not sacrifice essential information; here it is too terse.

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

Completeness1/5

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

Given the presence of 4 parameters, no annotations, and an output schema (content unknown), the description fails to provide necessary context such as what a 'cluster bundle' is, what a 'saved session' entails, or how to obtain the required inputs. The tool appears to be a mutation with side effects but lacks sufficient detail.

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

Parameters1/5

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

The input schema has 0% description coverage, and the description adds no information about any of the four parameters. The agent is left to infer meaning from names alone (cluster_slug, dry_run, headless, create_if_missing), which is insufficient for correct invocation.

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

Purpose4/5

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

The description clearly states it uploads the latest cluster bundle to NotebookLM using a saved session, specifying the verb (upload) and the resource (cluster bundle to NotebookLM). It is specific enough to convey the action, though it does not differentiate from sibling tools like notebooklm_bundle or notebooklm_generate.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives, nor any prerequisites or exclusions. The description simply states what it does without context for appropriate usage.

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

plan_research_workflowA

Convert a freeform user intent into a structured research plan.

Call this BEFORE auto_research_topic when the user's request is vague, ambitious, or could collide with an existing cluster. Returns a suggested topic + search depth + NLM/crystals choices + clarifying questions for you to confirm with the user.

Use when the user says things like: "I want to learn about X" "research X for my dissertation" "find recent papers on X" "ingest X but skip NotebookLM"

The plan includes:

  • intent_summary: rephrased one-line restatement (confirm with user)

  • suggested_topic / cluster_slug

  • suggested_max_papers (auto-tuned: 25 for thesis, 8 default, etc.)

  • suggested_do_nlm / do_crystals (with detected CLI awareness)

  • existing_cluster_match: warns if a similar cluster already exists

  • clarifying_questions: ask these BEFORE calling auto_research_topic

  • next_call: ready-to-execute auto_research_topic args after confirmation

  • estimated_duration_sec: rough time estimate

After presenting the plan + getting user confirmation, call auto_research_topic with the plan's suggested args.

ParametersJSON Schema
NameRequiredDescriptionDefault
user_intentYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

No annotations provided, but description fully details the output structure including fields like intent_summary, suggested_topic, clarifying_questions, next_call, and estimated_duration_sec. No mention of side effects, but tool appears non-destructive.

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?

Well-structured with bullet points and examples. Front-loaded main purpose. Slightly verbose but all content relevant.

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?

Covers input, output fields (though not formal schema), and usage flow. Does not detail error handling or edge cases, but adequate for a planning tool with one parameter.

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?

Single parameter 'user_intent' with no schema description. Description adds value by explaining expected input as freeform intent and providing examples, compensating for schema coverage gap.

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?

Clear verb 'convert' and resource 'freeform user intent into a structured research plan'. Explicitly distinguishes from sibling auto_research_topic by stating order of use.

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?

Provides explicit when-to-use scenarios (vague, ambitious, potential cluster collisions) and gives example user statements. Clearly states to call before auto_research_topic and specifies confirmation flow.

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

propose_research_setupA

Propose names for a new research collection without creating anything.

Use this BEFORE creating clusters/collections/notebooks. Show the suggestions to the user and ask them to confirm or override each name. Only after the user agrees should you call the create tools.

ParametersJSON Schema
NameRequiredDescriptionDefault
topicYesThe research topic in any language (e.g., "AI agents in geopolitics" or "LLM 在地緣政治的應用")

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description bears full burden. It discloses that the tool does not create anything, only proposes names. While it does not detail the response format, the existence of an output schema and the mention of 'showing suggestions' sufficiently conveys non-destructive read-like 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 two sentences, front-loads the purpose, and provides workflow instructions without any wasted words. Extremely efficient.

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 simplicity (single required parameter, full schema coverage, output schema exists) and the rich context of sibling creation tools, the description fully explains the tool's role in the workflow, making it complete for an AI agent.

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

Parameters3/5

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

Schema coverage is 100% with a single parameter described in the schema. The description does not add further meaning to the 'topic' parameter beyond what the schema already provides, achieving the baseline of 3.

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

Purpose5/5

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

The description clearly states the action ('propose names') and the resource ('new research collection'), and distinguishes itself from creation tools by emphasizing 'without creating anything'.

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 the agent to use this BEFORE creating clusters/collections/notebooks, to show suggestions to the user, and to proceed with create tools only after user confirmation. Provides clear workflow and alternatives.

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

propose_subtopicsC

Build the Phase 1 sub-topic proposal prompt for an AI to consume.

ParametersJSON Schema
NameRequiredDescriptionDefault
cluster_slugYes
target_countNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.4/5.0
Behavior2/5

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

No annotations are present, and the description does not disclose whether the tool creates side effects (e.g., storing the prompt) or is read-only. The agent cannot infer safety or persistence from the description alone.

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

Conciseness2/5

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

The description is a single sentence, but it sacrifices crucial details for brevity. It does not fulfill the need to differentiate among 70+ sibling tools or explain parameters.

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

Completeness2/5

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

Despite having an output schema, the description omits essential context like the relationship to subtopics, the role of the parameters, and how the prompt will be used. For a tool with many similar siblings, this is incomplete.

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

Parameters1/5

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

Schema description coverage is 0%, and the description does not mention either parameter ('cluster_slug' or 'target_count'). The agent must guess their meaning from names alone, which is insufficient.

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

Purpose4/5

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

The description uses a specific verb 'Build' and identifies the resource as 'Phase 1 sub-topic proposal prompt', with a clear consumer ('for an AI to consume'). This distinguishes it from sibling tools like 'propose_research_setup' but could be more explicit about the prompt's content or purpose.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives such as 'suggest_cluster_split' or 'plan_research_workflow'. The description lacks context about the phase in a workflow or prerequisites.

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

prune_clusterA

Archive or delete paper notes in a cluster whose frontmatter carries label.

Cluster cleanup operation that acts on the label sidecars written by apply_fit_check_to_labels (e.g. deprecated, off_topic, low_relevance). Moves matching paper notes to the cluster's _archive/ subfolder by default, or deletes them outright if delete=True. Pairs with apply_fit_check_to_labels as a two-step "decide → act" workflow: that tool labels papers based on fit-check sidecars; this tool acts on the labels.

When to use:

  • After running apply_fit_check_to_labels (or manually labelling papers), you want to physically move the off-topic notes out of the active cluster folder.

  • You want to keep an audit trail (default archive=True) so the moves are reversible.

When NOT to use:

  • You want to ADD labels, not act on them; use apply_fit_check_to_labels instead.

  • You want to delete the entire cluster (not just labelled papers); use research-hub clusters delete (CLI) instead.

  • You want to rebind orphans to a different cluster, not archive them; use cluster_rebind instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
cluster_slugYesCluster whose papers are scanned.
labelNoFrontmatter label string to match (e.g. ``"deprecated"``, ``"off_topic"``). Papers without this label in their frontmatter are skipped. Defaults to ``"deprecated"``.deprecated
archiveNoWhen ``True`` (default), move matched papers to ``hub/<slug>/_archive/`` rather than deleting them. Set to ``False`` only when paired with ``delete=True``.
deleteNoWhen ``True``, permanently delete matched papers instead of archiving. Defaults to ``False`` (safer). Has no effect when ``archive=True``.
dry_runNoWhen ``True`` (default), report what WOULD be affected without touching the filesystem. Pass ``False`` to execute the moves/deletes.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

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

No annotations provided, but description fully discloses behavioral traits: defaults for archive, delete, dry_run; two-step workflow; audit trail reversibility. No 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?

Description is well-organized with bullet points for usage guidelines. Every sentence adds value, no fluff. Appropriate length for complexity.

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 5 parameters and output schema exists, description is complete: covers purpose, usage, parameter behavior, sibling relationships, and workflow. No major gaps.

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%, baseline 3. Description adds value beyond schema by explaining parameter interactions (delete has no effect when archive=True), defaults, and expected label values. Not quite 5 because schema already does heavy lifting.

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?

Description clearly states verb 'Archive or delete paper notes in a cluster whose frontmatter carries label', specifying resource and condition. It distinguishes from siblings by naming related tools (apply_fit_check_to_labels, cluster_rebind).

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?

Provides explicit 'When to use' (after apply_fit_check_to_labels) and 'When NOT to use' (adding labels, deleting entire cluster, rebinding orphans), with named alternatives (apply_fit_check_to_labels, CLI, cluster_rebind).

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

read_cluster_memoryC

Read cluster memory. kind may be entities, claims, methods, or all.

ParametersJSON Schema
NameRequiredDescriptionDefault
clusterYes
kindNoall
min_confidenceNolow

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior2/5

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

The description lacks behavioral details beyond the basic read operation. Without annotations, it does not disclose side effects, permission requirements, or constraints. The read-only nature is implied by the name but not confirmed.

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 very short and to the point, with only one sentence. It front-loads the action and immediately provides parameter guidance. However, it could be slightly expanded for completeness without harming conciseness.

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

Completeness2/5

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

The description is too minimal given the tool has three parameters and an output schema. It fails to set context about what cluster memory is, what the output looks like, or any important caveats. The output schema may compensate, but the description should provide a higher-level understanding.

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

Parameters2/5

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

With 0% schema description coverage, the description must explain all parameters. It only explains the 'kind' parameter values but omits the meaning of 'cluster' and 'min_confidence', leaving the agent with incomplete parameter semantics.

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 reads cluster memory and specifies the 'kind' parameter values, which helps the agent understand the resource and action. However, it does not differentiate this tool from similar sibling tools like 'read_crystal' or 'show_cluster', leaving potential ambiguity.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites, context, or when not to use it, leaving the agent without decision-making support for tool selection.

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

read_crystalC

Read a specific crystal at the requested detail level.

ParametersJSON Schema
NameRequiredDescriptionDefault
cluster_slugYes
crystal_slugYes
levelNogist

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations, the description carries full burden for behavioral disclosure. It states 'Read' implying a safe, read-only operation, but does not explicitly confirm this or mention any other behavioral traits (e.g., idempotency, rate limits).

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

Conciseness2/5

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

The single sentence is concise but too terse. It lacks structure such as parameter explanations or usage examples. It conveys purpose but fails to earn its place by omitting critical details.

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

Completeness2/5

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

The description is incomplete for a tool with three parameters and an output schema. It does not explain the parameters sufficiently, especially 'level' with its default. While output schema may handle return values, the input side is underdescribed.

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

Parameters2/5

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

Schema description coverage is 0%, yet the description only vaguely references 'detail level' for the 'level' parameter. It does not explain the meaning of 'cluster_slug' or 'crystal_slug', nor does it clarify valid values or the default for 'level'.

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 'Read' and the resource 'crystal', immediately distinguishing this from siblings like 'list_crystals'. The mention of 'detail level' hints at the 'level' parameter, 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 Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It does not mention when not to use it, nor does it reference siblings like 'list_crystals' for listing all crystals.

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

read_topic_overviewA

Return the current topic overview markdown for a cluster, if present.

ParametersJSON Schema
NameRequiredDescriptionDefault
cluster_slugYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

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

Without annotations, the description hints at optional return via 'if present' but does not disclose the exact behavior when no overview exists, permissions, or side effects. Adequate but not comprehensive.

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

Conciseness5/5

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

The description is a single concise sentence with no waste. It is front-loaded with the key action and resource.

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's simplicity, one parameter, and existing output schema, the description is minimally viable but could clarify the parameter's format or constraints.

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

Parameters2/5

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

The description does not mention the single parameter 'cluster_slug', and the schema has 0% coverage. The agent must infer its meaning from the name alone, which is insufficient.

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 'return', the resource 'topic overview markdown', and the condition 'if present', which effectively distinguishes it from sibling tools like 'write_topic_overview'.

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 lacks explicit guidance on when to use this tool versus alternatives. The purpose is clear but no context is provided for decision-making in a complex toolset.

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

remove_paperB

Remove a paper from the vault, optionally deleting its Zotero item too.

ParametersJSON Schema
NameRequiredDescriptionDefault
identifierYes
include_zoteroNo
dry_runNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/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 only states the removal action and optional Zotero deletion, but does not elaborate on destructive nature, reversibility, permissions, side effects, or how dry_run works. This is minimal transparency for a destructive 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?

The description is a single, concise sentence that states the core functionality without any extraneous words. It is front-loaded and efficient.

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 complexity (3 parameters, 1 required) and presence of an output schema, the description covers the main action and one parameter but misses dry_run behavior and identifier format. It is adequate but has clear gaps for correct invocation.

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

Parameters2/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 add meaning. While 'optionally deleting its Zotero item' hints at the include_zotero parameter, it does not explain the required identifier (e.g., paper ID format) or the dry_run parameter, leaving significant ambiguity.

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 'remove' and the resource 'paper from the vault', with an optional Zotero deletion, making the purpose unambiguous. It implicitly distinguishes from sibling tools like add_paper, move_paper, and mark_paper, as removal is a distinct action.

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

Usage Guidelines2/5

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

No usage guidelines are provided; the description does not specify when to use this tool versus alternatives like move_paper or mark_paper. There is no discussion of prerequisites, confirmation steps, or when not to use it.

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

run_doctorB

Run health checks on the research-hub installation.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations, the description must disclose behavioral traits. It only states the action without explaining whether the tool is read-only, if it modifies state, or what the output format is.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no wasted words. It efficiently conveys the tool's purpose.

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

Completeness3/5

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

Given the tool's simplicity (no parameters, output schema exists), the description is minimally adequate but lacks information about side effects, permissions, or expected output, which an agent might find useful.

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% (empty schema) and there are no parameters, so the description adds no parameter info. Baseline 3 is appropriate as no additional meaning is needed.

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

Purpose5/5

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

The description clearly specifies the action ('Run health checks') and the resource ('research-hub installation'), distinguishing it from sibling tools which focus on paper management, clustering, and other tasks.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool, such as for troubleshooting or periodic maintenance. There are no hints about prerequisites or alternatives.

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

search_papersC

Search for academic papers across multiple backends.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
limitNo
verifyNo
year_fromNo
year_toNo
min_citationsNo
backendsNo
exclude_typesNo
exclude_termsNo
min_confidenceNo
rank_byNosmart
fieldNo
regionNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.4/5.0
Behavior2/5

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

With no annotations, the description carries full burden but provides minimal behavioral context. It does not disclose search mechanics, rate limits, authentication requirements, or result structure, leaving significant gaps.

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 very short (6 words), which is concise, but it lacks sufficient detail for a complex tool. It is not overly verbose, but under-specification reduces its value.

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

Completeness2/5

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

Given 13 parameters and an output schema, the description is incomplete. It does not explain how parameters interact, filtering behavior, or search semantics, leaving the agent to infer from parameter names alone.

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

Parameters1/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, but it adds zero parameter details. Even though many parameters have defaults and names, their meaning and usage are not clarified.

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 verb 'search' and resource 'academic papers', with mention of 'multiple backends' distinguishing it from general search tools like web_search. However, it lacks specificity about which backends or how results are aggregated.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives such as web_search or search_vault. The description does not mention prerequisites, exclusions, or situational context.

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

search_vaultC

Search local vault notes by title or full text.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
clusterNo
statusNo
full_textNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.3/5.0
Behavior1/5

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

With no annotations, the description bears full responsibility for behavioral disclosure. It only states the basic action and omits critical details: return format, pagination, behavior of optional parameters (cluster, status), and whether modifications occur. This is severely insufficient.

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

Conciseness2/5

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

The description is a single short sentence, but it sacrifices essential information for brevity. It is under-specified given the tool's parameter complexity.

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

Completeness1/5

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

Despite having an output schema (which need not be described), the description lacks details about parameter behavior and usage context. For a tool with 4 parameters, this is far from complete.

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

Parameters1/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 only alludes to 'full_text' via 'by title or full text', but provides no meaning for 'query', 'cluster', or 'status'. The added value beyond the schema is minimal.

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 'local vault notes' by 'title or full text', specifying the resource and scope. It distinguishes from sibling tools like 'search_papers' which target papers, not vault notes.

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool versus alternatives. The description does not mention any conditions, exclusions, or comparisons to other tools.

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

show_clusterB

Show detailed info for a cluster including sync status.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior2/5

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

No annotations provided. The description does not disclose any behavioral traits such as read-only nature, side effects, or authorization requirements. For a tool with no annotations, the description should add transparency beyond the basic action.

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

Conciseness5/5

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

The description is a single concise sentence with all key information front-loaded. No extraneous words or redundancy.

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 output schema exists, return values are covered. However, the description lacks context about slug provenance, error handling, and whether the cluster must exist. It is minimally sufficient but could be improved.

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

Parameters2/5

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

Schema coverage is 0%, and the description does not explain what 'slug' means. Although it is a single parameter, its format and how to obtain it are not clarified, leaving ambiguity for an AI agent.

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

Purpose5/5

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

The description clearly states the action ('Show'), the resource ('cluster'), and specifies 'detailed info including sync status'. This distinguishes it from siblings like list_clusters (listing) and summarize_cluster (summary).

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 guidance on when to use this tool versus alternatives. Context is implied but not stated, and there are no prerequisites or when-not-to-use indicators.

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

split_clusterB

Split a source cluster into a new cluster based on title keyword overlap.

ParametersJSON Schema
NameRequiredDescriptionDefault
sourceYes
queryYes
new_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior2/5

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

No annotations provided, so description carries full burden. It does not disclose whether the split is destructive, if papers are removed from source, or how the new cluster is formed. Lacks essential behavioral context.

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

Conciseness4/5

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

Single sentence, front-loaded with key action. Efficient but could benefit from structured breakdown of parameters and behavior. Not overly verbose.

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

Completeness2/5

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

With 3 required parameters and no schema descriptions, the description should explain each parameter and the effect on clusters. It only provides high-level purpose, missing details needed for correct invocation.

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 has 0% description coverage; description adds meaning that 'query' relates to title keyword overlap, but does not explain 'source' and 'new_name' beyond their names. Partial compensation.

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?

Description clearly states the action (split), resource (cluster), and mechanism (title keyword overlap). It distinguishes from sibling tools like merge_clusters or prune_cluster.

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?

Description implies usage for splitting based on title keyword overlap but does not specify when not to use it or mention alternatives like suggest_cluster_split. No explicit guidance on prerequisites.

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

suggest_cluster_splitB

Analyze a cluster's citation graph and suggest sub-topic splits.

ParametersJSON Schema
NameRequiredDescriptionDefault
cluster_slugYes
min_community_sizeNo
max_communitiesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior3/5

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

No annotations are provided, so the description must convey behavioral traits. It implies a read-only analysis via 'suggest', but does not explicitly confirm no side effects or state permissions. The presence of an output schema aids expectations, but transparency is minimal.

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

Conciseness5/5

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

The description is a single, correctly front-loaded sentence with no filler. Every word adds value.

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

Completeness2/5

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

Given the three parameters and no param descriptions, the tool requires more context on how the analysis works and what the output contains. The description does not address the output schema or parameter effects, leaving the agent underinformed.

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

Parameters1/5

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

Schema description coverage is 0%, yet the description does not explain any parameters. 'cluster_slug' is required but undefined; 'min_community_size' and 'max_communities' have defaults but no role. The description fails to compensate for the missing schema 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 verb 'analyze' and 'suggest' with the resource 'cluster's citation graph' and 'sub-topic splits'. It distinguishes from siblings like 'split_cluster' (which performs the split) and 'propose_subtopics' (which may not use citation graph).

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool vs. alternatives like 'split_cluster' or 'propose_subtopics'. No prerequisites or exclusions are mentioned.

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

suggest_integrationC

Suggest which cluster a paper belongs to and find related papers.

ParametersJSON Schema
NameRequiredDescriptionDefault
identifierYes
top_clustersNo
top_relatedNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.4/5.0
Behavior2/5

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

With no annotations, the description must convey behavioral traits. It indicates the tool suggests and finds but does not state whether it modifies state, requires authorization, or has any side effects. Minimal behavioral context is provided beyond the basic action.

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 a single concise sentence (12 words), but it omits important details about parameters and usage. It is efficient but under-specified for practical use.

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

Completeness2/5

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

Given the presence of an output schema, return values are covered, but the description fails to sufficiently detail the purpose and behavior of the three input parameters. The description is incomplete for effective tool selection and invocation.

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

Parameters1/5

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

The input schema has 0% description coverage, and the tool description adds no explanation for the parameters (identifier, top_clusters, top_related). This forces the agent to infer meaning from names alone, which is insufficient.

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 suggests a cluster for a paper and finds related papers, using specific verbs and resource references. However, it does not explicitly differentiate from sibling tools like suggest_cluster_split or search_papers, leaving some ambiguity.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives such as search_papers or suggest_cluster_split. The description lacks context about appropriate use cases or exclusions.

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

summarize_clusterA

Generate per-paper Key Findings + Methodology + Relevance via LLM CLI.

For each paper in cluster_slug, builds a prompt from the abstract and invokes the detected LLM CLI (claude, codex, or gemini — pass llm_cli to override). With apply=False (default), returns the parsed JSON without writing. With apply=True, writes back to BOTH the Obsidian markdown blocks and the Zotero child note for each paper.

Use when: user says "summarize this cluster's papers", "fill the TODO Findings", or after auto ingest before scanning the vault.

No LLM CLI on PATH: prompt is saved to artifacts//summarize-prompt.md; user can pipe it through their LLM and re-run with --apply (CLI) or pass the parsed payload to the apply_cluster_summaries MCP tool below.

Returns {cluster_slug, ok, error, cli_used, prompt_path, apply_result}.

ParametersJSON Schema
NameRequiredDescriptionDefault
cluster_slugYes
llm_cliNo
applyNo
write_zoteroNo
write_obsidianNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior5/5

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

With no annotations provided, the description fully discloses behavior: it invokes an LLM CLI (claude, codex, gemini with override), can write to Obsidian and Zotero when apply=True, returns JSON by default, and saves a prompt file if CLI is missing. The return structure is also described.

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 with a front-loaded purpose statement, followed by mode details, usage cues, and fallback instructions. It is concise but could trim some procedural repetition (e.g., re-explaining the apply flow).

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?

The description covers the main workflow, fallback, and return format, but does not explain the individual write flags or any prerequisites like how to obtain a cluster_slug. Given the tool's complexity and lack of schema descriptions, it is largely complete but has minor gaps.

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 0%, so the description must compensate. It explains 'cluster_slug' and 'llm_cli' verbally, and mentions 'apply' behavior, but does not describe the boolean parameters 'write_zotero' and 'write_obsidian', leaving their purpose unclear. Partial coverage across 5 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 starts with a clear action: 'Generate per-paper Key Findings + Methodology + Relevance via LLM CLI.' It specifies the resource ('cluster_slug') and distinguishes from sibling tools like 'apply_cluster_summaries' and 'ask_cluster' by detailing the generation process and output modes.

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 explicitly states when to use the tool: when user says 'summarize this cluster's papers', 'fill the TODO Findings', or after 'auto' ingest. It also provides an alternative path: if no LLM CLI is available, the prompt is saved and can be processed with 'apply_cluster_summaries' or the CLI re-run.

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

sync_clusterC

Aggregate maintenance view: staleness + scope drift + vault health + recommendations.

ParametersJSON Schema
NameRequiredDescriptionDefault
cluster_slugYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.3/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It indicates a 'view', implying read-only behavior, but does not explicitly confirm idempotency, side effects, or whether it requires authentication. The description adds minimal behavioral context beyond the name.

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

Conciseness4/5

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

The description is a single sentence with no extraneous words. It is front-loaded with the tool's purpose and lists key content areas. However, it could be slightly more structured (e.g., listing what the output includes) without adding length.

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

Completeness2/5

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

Given the output schema exists, the description could omit return details, but it does not mention the tool's scope (e.g., whether it covers all clusters or suggests actions). With only one parameter and no nested objects, the description is still too sparse to fully guide correct invocation.

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

Parameters1/5

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

The only parameter, 'cluster_slug', lacks any description in the schema (0% coverage) and the tool description provides no explanation of what constitutes a valid slug, its purpose, or formatting. The agent has no guidance on constructing this parameter correctly.

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

Purpose3/5

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

The description 'Aggregate maintenance view' suggests a read-only overview but lacks an explicit verb (e.g., 'get', 'list'). It lists covered areas (staleness, scope drift, etc.) but does not clearly differentiate from sibling tools like 'read_crystal' or 'show_cluster' that may provide similar views.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives. The description does not specify prerequisites, when to invoke it, or when not to. Given the large set of sibling tools, this omission reduces usability.

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

tidy_vaultA

One-shot vault maintenance: doctor autofix + dedup rebuild + bases refresh + cleanup preview.

Each sub-step is non-fatal — failures logged but don't abort the others.

Use when: user says "tidy", "maintenance", "vault health check".

Returns {ok, steps, total_duration_sec, cleanup_preview_bytes}.

ParametersJSON Schema
NameRequiredDescriptionDefault
apply_cleanupNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

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

Discloses that each sub-step is non-fatal and failures are logged without aborting. However, it does not clarify whether the tool is read-only or modifies the vault by default, nor does it explain the effect of the 'apply_cleanup' parameter on the behavior beyond the preview.

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 concise sentences, front-loaded with the core action, followed by key behavioral notes and usage triggers. Every sentence adds value without 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?

Covers purpose, behavior, when to use, and return format adequately. Lacks prerequisites or side effects, but given the output schema exists to detail return values, the description is reasonably complete for a multi-step maintenance 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?

With 0% schema coverage, the description adds some meaning by mentioning 'cleanup preview' in the return, but it does not explain how the 'apply_cleanup' parameter affects the tool's behavior. The parameter's role (apply vs preview) is only implied.

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 'one-shot vault maintenance' and lists specific sub-steps: doctor autofix, dedup rebuild, bases refresh, and cleanup preview. This distinguishes it from sibling tools like 'run_doctor' or 'cleanup_garbage', which handle individual steps.

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?

Explicitly states when to use: when user says 'tidy', 'maintenance', or 'vault health check'. Does not explicitly list when not to use or alternative tools for single steps, but the context implied by listing sub-steps provides adequate guidance.

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

verify_paperB

Verify a paper exists via DOI, arXiv ID, or fuzzy title match.

ParametersJSON Schema
NameRequiredDescriptionDefault
doiNo
arxiv_idNo
titleNo
authorsNo
yearNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden for behavioral disclosure. It only states 'verify', which implies a read operation, but does not detail side effects, return format, or error handling. The presence of an output schema mitigates some lack, but the description itself is insufficient.

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

Conciseness5/5

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

The description is a single concise sentence that front-loads the key action and methods. Every word carries weight, with no filler or redundancy.

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

Completeness2/5

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

Given 5 optional parameters and no annotations, the description is too brief. It does not address how parameters interact (e.g., combined usage), what happens on success/failure, or the output schema content. The presence of an output schema helps, but the description alone leaves significant gaps.

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

Parameters2/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 adds meaning for 'doi', 'arxiv_id', and 'title' via 'DOI, arXiv ID, or fuzzy title match', but entirely ignores 'authors' and 'year' parameters. This incomplete coverage reduces clarity.

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 'verify' and the resource 'paper', and specifies the methods (DOI, arXiv ID, or fuzzy title match). It effectively distinguishes from sibling tools like 'search_papers' (full search) and 'add_paper' (creation), making its 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 Guidelines3/5

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

The description implies that the tool is for confirming existence of a paper using identifiers, but it does not explicitly state when to use it versus alternatives (e.g., search_papers). It lacks guidance on when not to use it or prerequisites.

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

write_topic_overviewC

Write a topic overview markdown file for a cluster.

ParametersJSON Schema
NameRequiredDescriptionDefault
cluster_slugYes
markdownYes
overwriteNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It only states it writes a file, but omits crucial details: the overwrite parameter's default behavior (false), whether the operation is destructive, required permissions, or any side effects. This is insufficient for safe invocation.

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

Conciseness4/5

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

The description is a single sentence, making it concise and front-loaded. However, it is under-specified for the tool's complexity, sacrificing completeness for brevity.

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

Completeness2/5

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

Given the tool has 3 parameters, no annotations, and an output schema that presumably explains return values, the description still lacks key contextual information: the meaning of 'cluster_slug,' the expected format of 'markdown,' and the behavior of 'overwrite.' This is insufficient for correct usage.

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

Parameters1/5

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

Schema description coverage is 0%, meaning the description adds no meaning to the parameters. The parameters 'cluster_slug,' 'markdown,' and 'overwrite' are not explained at all. The description fails to clarify what each parameter represents or how to use them.

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 'Write a topic overview markdown file for a cluster,' using a specific verb (write) and resource (topic overview). It effectively distinguishes from the sibling tool 'read_topic_overview,' which is for reading.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It does not mention when not to use it, prerequisites, or any context that helps an agent decide between this and sibling tools like 'apply_cluster_summaries' or 'summarize_cluster.'

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. 4 tool updatesv1.0.2
    • Changedask_cluster10 fields changed
      • addedInput schema / properties / cluster / description
        Added value: +"Cluster slug to ask. One of ``cluster`` or\n``cluster_slug`` must be set; ``cluster_slug`` is a\nbackwards-compat alias accepted for legacy clients."
      • addedInput schema / properties / cluster_slug / description
        Added value: +"Backwards-compat alias for ``cluster``. Prefer\n``cluster``; ``cluster_slug`` exists for parity with the\ndeprecated ``ask_cluster_notebooklm`` signature."
      • addedInput schema / properties / detail / description
        Added value: +"Response verbosity. One of ``'gist'`` (default, ~100\nwords) / ``'standard'`` / ``'detailed'``. Only honoured by\nlocal + briefing modes."
      • addedInput schema / properties / force_regenerate / description
        Added value: +"For ``mode='brief'``, force the full round\ntrip even if a recent briefing exists. Default ``False``\n(use cached briefing when available)."
      • addedInput schema / properties / headless / description
        Added value: +"For ``source='notebooklm'``, whether to run the\nbrowser headless. Default ``True``; set ``False`` if you\nneed to debug a Google auth challenge."
      • addedInput schema / properties / max_chars / description
        Added value: +"For ``mode='briefing'``, truncate the briefing text\nafter this many chars. Default value comes from the\nmodule-level ``_BRIEFING_MAX_CHARS``."
      • addedInput schema / properties / mode / description
        Added value: +"NotebookLM sub-action. One of ``'ask'`` (default; live\nQ&A), ``'briefing'`` (return existing brief markdown), or\n``'brief'`` (full bundle → upload → generate → download).\nIgnored when ``source='local'``."
      • addedInput schema / properties / question / description
        Added value: +"Natural-language question. May be ``None`` only when\n``mode='briefing'`` or ``mode='brief'`` (where the action\nis read/regenerate, not Q&A)."
      • addedInput schema / properties / source / description
        Added value: +"``'local'`` (default) for cached crystals + memory, or\n``'notebooklm'`` for the Playwright-driven NotebookLM\nbackend. NotebookLM paths require a logged-in browser\nsession — run ``research-hub notebooklm login`` once."
      • addedInput schema / properties / timeout_sec / description
        Added value: +"Max seconds to wait for NotebookLM. Default 120.\nIncrease to 240+ for large clusters."
    • Changedcluster_rebind6 fields changed
      • addedInput schema / properties / action / description
        Added value: +"Which rebind sub-step to run. One of:\n``'propose'`` (write a draft rebind report to disk),\n``'apply'`` (execute moves from a report — requires\n``report_path``), ``'list_orphans'`` (return orphan paper\npaths, optionally filtered by ``folder``), or ``'status'``\n(one-shot summary of orphans + open proposals). Defaults\nto ``'propose'``."
      • addedInput schema / properties / auto_create_new / description
        Added value: +"When ``action='apply'``, allow the apply step\nto create previously-unknown cluster folders for\nhigh-confidence new-cluster proposals. Defaults to\n``False``."
      • addedInput schema / properties / cluster_slug / description
        Added value: +"Limit ``propose`` / ``status`` to one cluster's\npapers. Empty string (default) means all clusters."
      • addedInput schema / properties / dry_run / description
        Added value: +"When ``action='apply'``, report the moves without\ntouching the filesystem. Defaults to ``True`` — pass\n``False`` to actually move files."
      • addedInput schema / properties / folder / description
        Added value: +"When ``action='list_orphans'``, restrict the result to\npapers under this ``raw/`` subdirectory. Empty string\n(default) returns all orphans."
      • addedInput schema / properties / report_path / description
        Added value: +"Path to a rebind report emitted by a prior\n``action='propose'``. Required for ``action='apply'``;\nignored otherwise."
    • Changeddiscover_continue4 fields changed
      • addedInput schema / properties / auto_threshold / description
        Added value: +"When ``True``, ignore ``threshold`` and pick a\ncutoff automatically from the score distribution (a\nbimodal gap heuristic). Default ``False`` (use explicit\n``threshold``)."
      • addedInput schema / properties / cluster_slug / description
        Added value: +"Slug of the cluster whose discover stash will be\nconsumed. Must match the slug passed to ``discover_new``."
      • addedInput schema / properties / scored / description
        Added value: +"Either a flat list of score dicts (each with at least\n``slug`` + ``score``), or a wrapping dict like\n``{\"scores\": [...]}`` — both shapes accepted. Score values\nare 0-5 integers; entries missing a score are treated as\nscore 0."
      • addedInput schema / properties / threshold / description
        Added value: +"Minimum score (inclusive) for admission. Defaults\nto ``None`` — when ``auto_threshold=False`` this falls\nback to the cluster's configured default (typically 4)."
    • Changedprune_cluster5 fields changed
      • addedInput schema / properties / archive / description
        Added value: +"When ``True`` (default), move matched papers to\n``hub/<slug>/_archive/`` rather than deleting them. Set to\n``False`` only when paired with ``delete=True``."
      • addedInput schema / properties / cluster_slug / description
        Added value: +"Cluster whose papers are scanned."
      • addedInput schema / properties / delete / description
        Added value: +"When ``True``, permanently delete matched papers\ninstead of archiving. Defaults to ``False`` (safer). Has\nno effect when ``archive=True``."
      • addedInput schema / properties / dry_run / description
        Added value: +"When ``True`` (default), report what WOULD be\naffected without touching the filesystem. Pass ``False``\nto execute the moves/deletes."
      • addedInput schema / properties / label / description
        Added value: +"Frontmatter label string to match (e.g. ``\"deprecated\"``,\n``\"off_topic\"``). Papers without this label in their\nfrontmatter are skipped. Defaults to ``\"deprecated\"``."
  2. 10 tool updatesv1.0.1
    • Removedapply_cluster_rebind
    • Removedask_cluster_notebooklm
    • Removedbrief_cluster
    • Removedlist_claims
    • Removedlist_entities
    • Removedlist_methods
    • Removedlist_orphan_papers
    • Removedpropose_cluster_rebind
    • Removedread_briefing
    • Removedsummarize_rebind_status
  3. 86 tool updatesv1.0.0
    • First observedadd_paper
    • First observedapply_cluster_rebind
    • First observedapply_cluster_summaries
    • First observedapply_crystals
    • First observedapply_fit_check_to_labels
    • First observedapply_subtopic_assignments
    • First observedask_cluster
    • First observedask_cluster_notebooklm
    • First observedauto_research_topic
    • First observedautofill_apply
    • First observedautofill_emit
    • First observedbrief_cluster
    • First observedbuild_citation
    • First observedbuild_topic_notes
    • First observedcapture_quote
    • First observedcheck_crystal_staleness
    • First observedcleanup_garbage
    • First observedcluster_rebind
    • First observedcollect_to_cluster
    • First observedcompose_brief_draft
    • First observedcompose_draft
    • First observeddiscover_clean
    • First observeddiscover_continue
    • First observeddiscover_new
    • First observeddiscover_status
    • First observeddiscover_variants
    • First observeddownload_artifacts
    • First observedemit_assignment_prompt
    • First observedemit_cluster_base
    • First observedemit_crystal_prompt
    • First observedenrich_candidates
    • First observedexamples_copy
    • First observedexamples_list
    • First observedexamples_show
    • First observedexport_citation
    • First observedfit_check_apply
    • First observedfit_check_audit
    • First observedfit_check_drift
    • First observedfit_check_prompt
    • First observedgenerate_dashboard
    • First observedget_citations
    • First observedget_config_info
    • First observedget_references
    • First observedget_topic_digest
    • First observedimport_folder_tool
    • First observedlabel_paper
    • First observedlist_claims
    • First observedlist_clusters
    • First observedlist_crystals
    • First observedlist_entities
    • First observedlist_methods
    • First observedlist_orphan_papers
    • First observedlist_papers_by_label
    • First observedlist_quotes
    • First observedlist_topic_notes
    • First observedmark_paper
    • First observedmerge_clusters
    • First observedmove_paper
    • First observednotebooklm_bundle
    • First observednotebooklm_download
    • First observednotebooklm_generate
    • First observednotebooklm_upload
    • First observedplan_research_workflow
    • First observedpropose_cluster_rebind
    • First observedpropose_research_setup
    • First observedpropose_subtopics
    • First observedprune_cluster
    • First observedread_briefing
    • First observedread_cluster_memory
    • First observedread_crystal
    • First observedread_topic_overview
    • First observedremove_paper
    • First observedrun_doctor
    • First observedsearch_papers
    • First observedsearch_vault
    • First observedshow_cluster
    • First observedsplit_cluster
    • First observedsuggest_cluster_split
    • First observedsuggest_integration
    • First observedsummarize_cluster
    • First observedsummarize_rebind_status
    • First observedsync_cluster
    • First observedtidy_vault
    • First observedverify_paper
    • First observedweb_search
    • First observedwrite_topic_overview

TDQS

B3.2/5.0

Scored across 76 tools

Disambiguation5/5

Every tool has a clearly distinct purpose, with detailed descriptions that explicitly state when and when not to use each tool, eliminating ambiguity even among closely related functions like fit_check variants.

Naming Consistency5/5

All tool names follow a consistent snake_case verb_noun pattern, with predictable prefixes like 'discover_', 'fit_check_', 'notebooklm_', etc., making it easy for an agent to infer behavior from the name.

Tool Count2/5

76 tools is far beyond the typical well-scoped range; the server appears to cover a broad domain but could benefit from consolidation, as many tools are highly specialized (e.g., individual discover_* steps) and may overwhelm agents.

Completeness4/5

The tool set covers the full research workflow from discovery and ingest to analysis, labeling, cleanup, and dashboard generation. Minor gaps exist (e.g., no direct tool for deleting a cluster, relying on CLI), but core operations are well-covered.

Maintenance

ActivityMaintained
ResponsivenessResponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    A
    maintenance
    Your AI's research copilot. Searches 6 academic databases, downloads real PDFs, reads them cover to cover, extracts evidence, renders figures, syncs to Zotero.
    16
    12
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables natural language interaction with Zotero libraries, allowing users to search, retrieve, and update papers and metadata via AI assistants like Claude and Gemini.
    1
    GPL 2.0
  • F
    license
    Not graded
    quality
    D
    maintenance
    Aggregates academic paper search from multiple databases (OpenAlex, Semantic Scholar, etc.) with PDF storage and full-text search capabilities.
    1
    -