Research Notebook MCP
Supports capturing sources from Google Scholar (and other highwire-style academic pages) by extracting bibliographic metadata - title, authors, date, journal/site, and DOI - from the citation_* meta tags when a URL is cited, so Scholar-indexed papers can be stored as structured, citable sources.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Research Notebook MCPcite this page and add a note about why it matters"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Research Notebook MCP
An MCP server that turns any BOSS agent into a research assistant. It gives your agent (Claude Code, Codex, Gemini, OpenCode - anything BOSS drives) a set of tools to capture cited sources, keep linked notes, and export a bibliography or a literature-review outline - all stored as plain files inside the project you are working in.
Point it at a project, browse and read as usual, and ask your agent to "cite
this page", "note down why this matters", or "draft an outline of what I have so
far". The notebook is a single human-readable notebook.json plus the Markdown
and BibTeX files it generates, so nothing is locked away.
Why this helps researchers
The expensive part of a literature review is not reading, it is keeping track: where a fact came from, which paper made which claim, and how a pile of notes turns into a structured draft. A general chat agent forgets all of this between turns. This server gives the agent a durable, structured memory built around the two things a researcher actually accumulates:
Sources you cite, with real bibliographic metadata (title, authors, date, journal or site, DOI) extracted automatically from the page.
Notes you write, each linked to the sources behind it.
From those it can produce a BibTeX file for LaTeX/Overleaf, an annotated bibliography, or a literature-review outline that groups your notes by theme and threads in the right citations.
Related MCP server: Tacitus MCP Server
The tools
Tool | What it does |
| Fetch a URL, extract its metadata, and save it as a source (de-duplicates by URL; adds your quote/tags to an existing source). |
| Record a source by hand (a book, or a page you cannot fetch). |
| Correct or enrich a source's fields. |
| Attach an excerpt (with page/location and your comment) to a source. |
| Write a Markdown research note linked to the sources it draws on. |
| Edit a note's title, content, tags, or links. |
| List sources or notes, optionally filtered by tag (or by linked source). |
| Show full detail of one item, including quotes. |
| Full-text search across sources and notes. |
| Delete an item (removing a source unlinks it from notes and reports which). |
| Render sources as BibTeX, optionally writing |
| Render a Markdown bibliography (plain or annotated), optionally writing |
| Assemble notes into a literature-review scaffold, optionally writing |
| Counts of sources, notes, quotes, tags, and types. |
Quick start
git clone https://github.com/Rushikeshiitb/boss-research-notebook-mcp.git
cd boss-research-notebook-mcp
npm install
npm run buildRun it directly (it speaks MCP over stdio):
RESEARCH_NOTEBOOK_DIR="$PWD/.research-notebook" node dist/index.jsOr install it on your PATH as research-notebook-mcp (the package declares a
bin):
npm install -g . # from the cloned repo
# now `research-notebook-mcp` launches the server over stdioCite keys
Sources get a human-friendly citation key in the usual author-year-word style,
for example vaswani2017attention. Collisions are disambiguated with a trailing
letter (smith2020a, smith2020b). You can refer to any source by either its
cite key or its internal id in every tool that takes a source.
Connecting it to BOSS
BOSS drives coding CLIs (Claude Code, Codex, Gemini, OpenCode), and each of them loads MCP servers from its own configuration - so you register this server with the CLI you use inside BOSS. It is a stdio server: the client launches it and talks over stdin/stdout.
Project-scoped config file (portable across clients). Drop a .mcp.json in
the root of the project you open in BOSS:
{
"mcpServers": {
"research-notebook": {
"command": "node",
"args": ["/absolute/path/to/boss-research-notebook-mcp/dist/index.js"],
"env": {
"RESEARCH_NOTEBOOK_DIR": "/absolute/path/to/your/project/.research-notebook",
"RESEARCH_NOTEBOOK_TITLE": "My Literature Review"
}
}
}
}Claude Code, one command (run it in your project directory):
claude mcp add research-notebook \
-e RESEARCH_NOTEBOOK_DIR="$PWD/.research-notebook" \
-- node /absolute/path/to/boss-research-notebook-mcp/dist/index.jsIf you installed it globally (npm install -g .), the command is simply
research-notebook-mcp in place of node .../dist/index.js.
Once connected, the 17 tools above appear to your agent alongside the rest of the tools it can call.
Configuration
Variable | Default | Purpose |
|
| Folder holding |
| (unset) | Sets the notebook title on first run, used in export headings. |
What gets written
Everything lives in the notebook directory:
notebook.json- the canonical store (sources and notes). Written atomically (unique temp file + rename) under an advisory lock.references.bib- BibTeX, when you askexport_bibtexto write.references.md- Markdown bibliography, when you askexport_markdownto write.outline.md- the literature-review scaffold, when you askgenerate_outlineto write.
Because it is all plain text in your project, it version-controls cleanly and you
can read or edit it without the server. Every source and note needs a non-empty
id; the server normalises array fields on load (missing ones become empty,
tags are lowercased and de-duplicated, unknown keys are kept) and refuses to
start if an entry cannot be read at all.
Editing it while the server runs: the server loads notebook.json once and
writes the whole document back on each change. If the file changes on disk
underneath it - you hand-edited it, or a second server shares the directory - the
next write is refused rather than silently overwriting your edit: the server
reloads the on-disk version and returns a conflict error asking you to re-apply
your change. A refused or failed write never corrupts the file or the in-memory
copy. Writes are serialized by a lock file, so two servers on one directory take
turns instead of clobbering each other.
Example workflow
cite_urlon a paper you are reading, with aquoteandtags: ["method"].add_notecapturing your take, linked to that source.Repeat while you read.
generate_outlineto get a themed draft with citations threaded in.export_bibtexto dropreferences.bibinto your LaTeX project.
Privacy and safety
The only outbound request the server makes is
cite_urlfetching a page. Because the agent, not you, picks that URL, the fetch is hardened against being pointed at your own network (SSRF):only
http/https;the hostname is resolved and every address it returns is checked - the request is refused if any is loopback, private, link-local (cloud metadata at
169.254.169.254), CGNAT or IPv6 loopback/ULA/link-local/mapped-private;the connection is pinned to the validated address, so a name cannot be re-resolved to a private address after the check (DNS-rebinding);
redirects are followed manually and each hop is re-validated, so a public page cannot bounce the fetch to an internal one;
the response body is capped (5 MiB) and the fetch gives up after 30 s. Nothing else leaves your machine.
All data is stored locally in the notebook directory. There is no external service and no telemetry.
A failed or blocked fetch is reported cleanly; you can always fall back to
add_sourceto record a citation by hand.
Development
npm run typecheck # tsc --noEmit
npm test # vitest: unit + in-memory MCP integration tests
npm run build # emit dist/The test suite covers metadata extraction (OpenGraph, Google Scholar / highwire
citation_* tags, JSON-LD, and degenerate pages), cite-key generation and
collisions, the notebook store and its persistence, BibTeX and Markdown
rendering, and a full end-to-end pass driving the real MCP server over an
in-memory transport with a stubbed fetch.
Layout
src/
types.ts data model (sources, notes, notebook)
metadata.ts pure HTML -> bibliographic metadata extraction
citekey.ts author-year-word cite keys, with de-duplication
notebook.ts the store: CRUD, search, atomic persistence
bibtex.ts BibTeX export
markdown.ts bibliography + literature-review outline
server.ts MCP tool registration (fetch and store injected)
index.ts stdio entry pointLicense
Apache-2.0, matching the BOSS Console core.
Available Tools
17 toolsadd_noteAdd a research noteA
Write a research note in Markdown and link it to the sources it draws on. Notes are the raw material generate_outline turns into a literature-review scaffold.
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | Lowercase topic tags. | |
| title | Yes | ||
| content | Yes | Markdown body of the note. | |
| sources | No | Source ids or cite keys to link. |
TDQS
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 does disclose meaningful traits: the content must be Markdown, the note links to sources, and notes feed generate_outline. It omits whether sources must pre-exist, whether the note is mutable afterward, duplicate handling, and what the call returns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with zero padding. The core action is front-loaded, and the second sentence supplies useful workflow context rather than restating the name or title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a creation tool with no output schema and no annotations, the description should say more about results and constraints. It covers purpose, format and downstream use, but leaves the return value (e.g. a note id) and failure conditions unspecified, so it is adequate rather than complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 75%, close to the 80% threshold where the schema does the heavy lifting, so 3 is the appropriate baseline. The description adds only marginal meaning: 'Markdown' maps to content and 'link it to the sources' maps to sources, but title and tags semantics remain unaddressed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Write a research note') plus format ('in Markdown') and a linking behavior. It differentiates itself somewhat from siblings by naming the downstream consumer (generate_outline), but it never contrasts with update_note or add_quote, so an agent must infer those boundaries.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives implied usage context by explaining that notes are the raw material for generate_outline, which hints at when this tool fits in a workflow. However, there is no explicit when-to-use guidance versus update_note/add_quote, no prerequisites (e.g. must sources already exist), and no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_quoteAdd a quote to a sourceB
Attach an excerpt (optionally with a page/location and your comment) to a source.
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | Why this excerpt matters. | |
| page | No | Page or location, e.g. "p. 12" or "ยง3.2". | |
| text | Yes | The quoted excerpt. | |
| source | Yes | A source id (src-...) or its cite key (e.g. vaswani2017attention). |
TDQS
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 says what gets attached but not whether the source must already exist, what happens on duplicate quotes, whether the write is reversible, or what is returned. For a mutation tool with zero annotation coverage this is a real gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single well-formed sentence that front-loads the core action and relegates optional detail to a parenthetical. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description should at least cover preconditions and mutation behavior for a 4-parameter write tool. It covers the operation itself adequately but leaves the source-existence prerequisite and error/return behavior unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters (source, text, page, note) are already documented in the schema. The description restates the optional ones (page/location, comment) without adding format or constraint detail beyond the schema. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: attach an excerpt to a source. The parenthetical lists the optional fields, making the operation concrete. It does not differentiate from siblings like add_note or add_source, which share nearly identical naming, so an agent gets no explicit routing help.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 versus add_note, add_source, or the various update_* siblings. Usage is only implied by the word 'source'. No prerequisites (does the source need to exist?) are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_sourceAdd a source manuallyA
Record a source by hand - a book, a paper you have the details for, or a page you cannot fetch. Use this when cite_url is not possible.
| Name | Required | Description | Default |
|---|---|---|---|
| doi | No | ||
| url | No | ||
| tags | No | Lowercase topic tags. | |
| type | No | Bibliographic type. Defaults to webpage, or paper for pages with DOIs. | |
| title | Yes | Title of the work. | |
| authors | No | Authors, "First Last" or "Last, First". | |
| summary | No | A short summary in your own words. | |
| container | No | Journal, publisher, or site name. | |
| publishedDate | No | Year or ISO date. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it says nothing beyond the purpose. It does not disclose whether duplicate sources are detected, whether the write is idempotent, what happens to an existing source with the same DOI/URL, or what a successful call returns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero filler, and the core purpose is front-loaded ahead of the routing hint. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter creation tool with no annotations and no output schema, the description covers purpose and sibling routing but omits duplicate handling, conflicts with cite_url/update_source, and post-create behavior. Adequate to invoke, incomplete for edge cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 78%, so the schema already documents nearly every field (type enum, authors format, tags casing, dates). The description's 'book / paper / page' phrasing loosely gestures at the type enum but adds no real syntax or constraint detail, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Record a source by hand') and enumerates the cases it covers (book, paper with details, unfetchable page). It explicitly contrasts itself with the sibling cite_url, so an agent can pick between them without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Use this when cite_url is not possible' gives a clear triggering condition and names the primary alternative. It stops short of full routing guidance -- no mention of the relationship to update_source (avoid duplicates) or add_note/add_quote -- so it's clear context without exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cite_urlCite a web pageA
Fetch a URL, extract its bibliographic metadata (title, authors, date, journal/site, DOI) and save it as a source. If the URL is already saved, it is not duplicated; any quote/note you pass is added to the existing source instead. This is the fastest way to capture a citation while browsing.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The page to cite. | |
| note | No | Your comment on the quote, or a one-line summary. | |
| tags | No | Lowercase topic tags. | |
| type | No | Bibliographic type. Defaults to webpage, or paper for pages with DOIs. | |
| quote | No | An excerpt to store with the source. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations show readOnlyHint=false and openWorldHint=true; the description adds valuable context by explaining deduplication behavior and that quotes/notes attach to existing sources. It doesn't discuss error modes or auth requirements, but the dedup behavior is a key non-obvious trait.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the core action and followed by the deduplication rule and the value proposition. No waste; every sentence carries distinct information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description covers the key behavioral outcomes (dedup, note/quote attachment). It doesn't describe what the saved source object looks like or any rate limits, but for a 5-param tool with full schema coverage, it is largely complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds meaning by explaining that quote/note are added to the existing source if the URL is already saved, and that the URL itself is deduplicated โ semantics not evident from the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: fetch a URL, extract bibliographic metadata, and save it as a source. Distinct from siblings like add_source and add_quote by naming the exact capture behavior.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context: 'the fastest way to capture a citation while browsing.' Explains the deduplication behavior, which frames when to use it versus add_source. However, it doesn't explicitly name add_source as the alternative or state 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.
export_bibtexExport BibTeXB
Render sources as BibTeX. Optionally filter by tag and/or write the result to references.bib next to the notebook.
| Name | Required | Description | Default |
|---|---|---|---|
| tag | No | ||
| write | No | Also write references.bib to the notebook folder. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full load. It does disclose the meaningful side effect and its location ('write the result to references.bib next to the notebook'), which is useful context beyond the schema. However it omits whether the file is overwritten, whether auth is needed, and whether the BibTeX text is also returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with what the tool does before the optional behaviors. No filler or redundancy; every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter export tool with no output schema and no annotations, the description covers the action, filtering, and file side effect, which is roughly adequate. It still leaves the return value (inline BibTeX string vs. file-only) and overwrite semantics unspecified, which an agent would need when no output schema exists.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Two parameters at 50% schema coverage: the 'write' flag is documented in the schema, while 'tag' has none. The description compensates partially by explaining the filter-by-tag behavior and append the concrete output filename, which adds meaning beyond the bare 'write' boolean. This lands at the baseline 3 given the mixed coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Render sources as BibTeX'), which is concrete enough to separate it from export_markdown in the sibling list. It does not explicitly name the sibling or contrast with it, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The word 'Optionally' hints that filtering and writing are discretionary, but there is no statement of when to use this tool versus export_markdown or the other exporters, and no prerequisites. Usage must be inferred from the parameters alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_markdownExport a Markdown bibliographyB
Render a Markdown bibliography. Set annotated to include summaries and quotes. Optionally filter by tag and/or write references.md next to the notebook.
| Name | Required | Description | Default |
|---|---|---|---|
| tag | No | ||
| title | No | ||
| write | No | Also write references.md to the notebook folder. | |
| annotated | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It discloses that 'write' produces references.md next to the notebook, which is useful, but it does not state overwrite behavior, required permissions, or what the rendered output contains beyond annotated summaries and quotes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the core action and followed by parameter-specific notes. Every sentence earns its place with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with four parameters, no annotations, no output schema, and low schema coverage, the description is too thin. It omits the 'title' parameter and any output/return details, leaving an agent incompletely equipped to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 25% (just the 'write' parameter). The description compensates for 'annotated' (include summaries and quotes) and 'tag' (filter), but never explains the 'title' parameter. This is meaningful added value but incomplete for all four parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Render a Markdown bibliography.' This distinguishes it from the sibling export_bibtex by format, but the description never names or contrasts the alternative, leaving sibling differentiation implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by noting optional filtering and writing, but it never says when to choose this tool over export_bibtex or any other sibling. Guidance is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_outlineGenerate a literature-review outlineA
Assemble your notes into a Markdown literature-review scaffold: notes grouped by theme, each threaded with the cite keys it draws on, plus a References section and a 'not yet written up' list. Optionally filter by tag and/or write outline.md next to the notebook.
| Name | Required | Description | Default |
|---|---|---|---|
| tag | No | ||
| title | No | ||
| write | No | Also write outline.md to the notebook folder. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations the description carries the burden, and it does disclose the output structure and the optional write side effect ('write outline.md next to the notebook'). It omits whether an existing outline.md is overwritten, whether the write requires permissions, and any size or rate constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence that front-loads the main action and enumerates the artifact contents in a scannable order. No filler, though the optional-filter/write clause is packed into the same sentence rather than separated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, yet the description explains what the returned scaffold contains, which is exactly what is needed. For a zero-required-parameter, read-plus-optional-write tool it is nearly complete; only the 'title' parameter and overwrite behavior are unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33% ('write' has a description). The description compensates for 'tag' (filter) and 'write', adding scenario-level meaning, but gives no hint about 'title', which is undocumented everywhere.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb ('Assemble ... into a Markdown literature-review scaffold') plus resource and a detailed enumeration of what the artifact contains (theme grouping, cite keys, References, not-yet-written-up list). Clearly distinguishable from siblings like export_markdown or list_notes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The scenario is implied โ turn existing notes into a review outline โ but no explicit when-to-use or when-not-to-use guidance, and no sibling is named even though export_markdown and notebook_stats sit in the same space and could plausibly be confused with it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_noteGet a noteBRead-only
Show the full content of one research note.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already establishes this as a safe read. The description adds the meaningful detail that the full content (not a summary) is returned, which helps distinguish it from list/search results, but says nothing about missing-note behavior or return size.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence, front-loaded with the action and resource, with no filler. It is efficient, though terse to the point of omitting needed context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description should ideally indicate what fields/format the note content takes; 'full content' gives only a partial picture. For a simple single-param getter, it is minimally adequate but does not fill the gaps left by the undocumented parameter and absent output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the single 'id' parameter has no description in either the schema or the description text. The description does not clarify whether the id is a note identifier, does not state format, and leaves the agent to infer it from the tool name alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Show') and resource ('research note') plus scope ('full content of one'), so the agent knows it's a single-item content retrieval. It does not distinguish itself from siblings like get_source or search, leaving differentiation to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus search, list_notes, or get_source. The phrase 'one research note' implies single-item lookup, but there is no explicit when/when-not or alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_sourceGet a sourceBRead-only
Show the full detail of one source, including its quotes.
| Name | Required | Description | Default |
|---|---|---|---|
| source | Yes | A source id (src-...) or its cite key (e.g. vaswani2017attention). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already tells the agent this is a safe read. The description adds that the response includes quotes, which is useful behavioral context, but it says nothing about failure modes (e.g. unknown id/cite key) or output shape. With annotations covering the safety profile, this is adequate but thin.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the scope detail (includes quotes) is placed where it is most useful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter read tool with annotation and full schema coverage, the description covers purpose and return scope adequately. No output schema exists, but 'full detail including quotes' gives a reasonable expectation of what comes back.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single parameter is fully documented in the schema, including both id and cite-key forms. The description adds nothing beyond this, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb (show) and resource (one source) plus the notable scope detail that quotes are included. It does not explicitly differentiate itself from siblings like list_sources or search, but the singular 'one source' makes the retrieval-by-id intent clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use this versus list_sources, search, or get_note. Usage can be inferred (fetch detail for a known source identifier), but no alternatives or exclusions are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_notesList notesARead-only
List research notes, optionally filtered by tag or by a linked source.
| Name | Required | Description | Default |
|---|---|---|---|
| tag | No | ||
| source | No | Only notes linked to this source id/cite key. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the safe-read profile is covered. The description adds the scoping constraint that results are notes (not sources), but says nothing about ordering, pagination, or whether an empty filter returns everything.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the resource is named first and the optional filters follow. Every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-required-parameter list tool with no output schema, the description covers purpose and filtering but omits return behavior, ordering, and pagination limits, which an agent would need to call it confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50% โ `source` is documented in the schema but `tag` is not. The description names both filters and clarifies that source means a 'linked source', adding some meaning, but it gives no matching semantics (exact tag, case sensitivity, cite key format).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (research notes) plus the filtering scope, so the agent knows exactly what this returns. It does not differentiate itself from the sibling `search` or `list_sources`, leaving the boundary to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The word 'optionally filtered' implies this is the unfiltered-enumeration entry point, but the description never states when to prefer this over `search` or when a filter is required versus optional. Usage is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_sourcesList sourcesBRead-only
List all saved sources, optionally filtered by tag.
| Name | Required | Description | Default |
|---|---|---|---|
| tag | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint=true already declaring a safe read, the description adds the filtering capability but no return format, pagination, or ordering details. Adequate given annotations cover safety, but leaves notable behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One tight sentence with the core action and the optional filter front-loaded. No waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only listing tool with one optional param and no output schema, the description is minimally viable. It's missing pagination/volume expectations and any routing context to siblings, which would help an agent choose correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With only 1 optional parameter at 0% schema description coverage, the description compensates by explaining that 'tag' acts as an optional filter. This adds meaning beyond the bare schema, though it doesn't specify format or matching semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (list) and resource (sources) with scope (all saved sources). Distinguishes from siblings like get_source (singular retrieval) and search, though it doesn't explicitly name an alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no when-to-use guidance and doesn't mention alternatives like search. An agent must infer that this is a broad listing versus targeted search or singular get.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
notebook_statsNotebook statisticsARead-only
Summarise the notebook: counts of sources, notes, quotes, tags, and types.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already establishes this is a safe read, so the description's obligation is low. It adds the useful detail that five specific aggregate categories are computed, partially standing in for the missing output schema, but it does not say which notebook is summarised (there are no parameters to scope it) or what the response shape looks like.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that names the action and then the exact quantities produced. No filler, no repetition of the title or annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-param read-only tool this is close to sufficient, but with no output schema the description is the only source for the return contract, and it does not specify the output format, the scope of the notebook being summarised, or whether counts are global or per-notebook context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is no per-parameter semantics to convey; the baseline for a parameterless tool is 4. The description does not need to compensate for any schema gap here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Summarise) plus the resource (the notebook) and enumerates exactly what is counted: sources, notes, quotes, tags, types. No sibling tool does this; the rest are list/get/add/remove/update/export operations, so an agent can distinguish it immediately.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the purpose โ you call this when you want aggregate counts rather than a listing. But there is no explicit statement of when to prefer this over list_sources/list_notes or any exclusion/alternative, so an agent must infer it from the purpose alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_noteRemove a noteCDestructive
Delete a research note.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, so the safety profile is known. The description adds nothing beyond that: it does not say whether deletion is permanent, whether it cascades to quotes or citations, or whether any confirmation/permission is required. With the annotation bar lower, this is a thin but non-contradictory entry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no waste. It is appropriately sized for the tool's simplicity, though it is arguably too terse to carry any real information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A destructive mutation with no output schema, an undocumented identifier parameter, and no annotation beyond destructiveHint. The description leaves critical questions unanswered: irreversibility, side effects on related data, and expected response.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
One parameter ('id') has 0% schema description coverage and the description never explains what kind of identifier it expects โ note id vs. source id is genuinely ambiguous given sibling tools like get_note and remove_source. The description provides no compensating detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Delete') and resource ('research note'), which cleanly separates it from siblings like remove_source, update_note, and add_note. It never names an alternative, but the purpose itself is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this instead of update_note (to clear content) or remove_source (to delete a source and its notes). No prerequisites, no warning about irreversibility, no statement of what happens to notes attached to deleted sources.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_sourceRemove a sourceADestructive
Delete a source. Any notes that linked to it keep their text; the broken link is dropped and reported.
| Name | Required | Description | Default |
|---|---|---|---|
| source | Yes | A source id (src-...) or its cite key (e.g. vaswani2017attention). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true, yet the description adds real side-effect detail beyond that: linked notes retain their text and the broken link is dropped and reported. This is exactly the kind of consequence disclosure an agent needs before calling a destructive tool. It stops short of stating permanence/undo or required permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the destructive action followed immediately by the consequence. Every clause earns its place with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter destructive tool with no output schema, the description covers the operation and its key side effect, and the annotation covers destructiveness. Minor gaps remain around reversibility and failure behavior, but an agent has enough to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single parameter is fully documented (source id or cite key) in the schema itself. The description adds no additional format or matching semantics, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ("Delete") and resource ("a source"), which cleanly separates it from siblings like remove_note, update_source, and add_source. An agent can identify the operation without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The delete semantics imply usage, but no explicit when-to-use guidance or alternatives (e.g., update_source for edits, get_source for inspection) are given. Nothing is misleading, but routing conditions are left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
searchSearch the notebookARead-only
Full-text search across sources (title, authors, journal, tags, quotes, summary) and notes (title, content, tags). Returns matching cite keys and note ids.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Text to search for. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint=true, so the safety profile is covered. The description meaningfully adds the searchable surface and the return contract (cite keys and note ids), which an agent needs to interpret results. It stops short of noting ranking order, result caps, or case/matching behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler, with the searchable facets front-loaded and the return values trailing. Every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description rightly discloses what comes back (cite keys and note ids), which is the key missing piece for a caller. For a one-parameter read tool this is nearly sufficient; only ranking/limit behavior is unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (the single 'query' param is documented as 'Text to search for.'), so the baseline is 3. The description's enumeration of which fields are matched adds useful scope context but no syntax or matching semantics beyond what the schema already conveys.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (full-text search) and enumerates the exact resource facets searched โ sources by title/authors/journal/tags/quotes/summary and notes by title/content/tags. It also names the return shape (cite keys and note ids), so an agent can distinguish it from list_sources, list_notes, and get_source/get_note without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the use case (you have a text query and want matching entities), but never states when to prefer this over the sibling list_* tools for browsing or get_* for known keys, and gives no exclusions, prerequisites, or scope limits. Adequate but leaves routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_noteUpdate a research noteB
Edit a note's title, content, tags, or linked sources. Omitted fields are unchanged.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Note id (note-...). | |
| tags | No | Lowercase topic tags. | |
| title | No | ||
| content | No | ||
| sources | No | Replaces the linked sources. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden. It helpfully discloses partial-update semantics ('Omitted fields are unchanged'), which is meaningful beyond the schema. However, it omits permission requirements, whether changes are destructive/reversible, and any response or side-effect details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action and affected fields, with no wasted wording. The partial-update rule is compactly stated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description covers the essential field list and partial-update behavior. It still leaves out permissions, error behavior, and what a successful update returns, so it is only minimally complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 60%, so the description should add meaning beyond the schema. It lists the updatable fields and adds partial-update behavior, but does not explain the required id, tag format, or that sources replacement is destructive to prior links. It is adequate but not fully compensating for the uncovered parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Edit') and resource ('a note') and enumerates the updatable fields: title, content, tags, linked sources. It clearly distinguishes update_note from read/list/add/remove sibling tools, though it does not explicitly name those siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use guidance, no prerequisites, and no alternatives. It implies mutation of an existing note but does not say when to choose update_note over update_source or other sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_sourceUpdate a sourceB
Correct or enrich a source's bibliographic fields. Omitted fields are unchanged.
| Name | Required | Description | Default |
|---|---|---|---|
| doi | No | ||
| url | No | ||
| tags | No | Lowercase topic tags. | |
| type | No | Bibliographic type. Defaults to webpage, or paper for pages with DOIs. | |
| title | No | ||
| source | Yes | A source id (src-...) or its cite key (e.g. vaswani2017attention). | |
| authors | No | ||
| summary | No | ||
| container | No | ||
| publishedDate | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral burden. It does disclose the important partial-update semantics ('Omitted fields are unchanged'), which is real value for a mutation tool. It says nothing about auth requirements, failure behavior, or whether changes are reversible.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the partial-update rule front-loaded and, in fact, stated as the second sentence where it matters most. No filler, nothing that fails to earn its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 10-parameter mutation tool with no annotations, no output schema, and 30% schema coverage, this is thin: it omits which fields are updatable, whether id-like fields (doi, url) can be changed, and any failure or permission behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 30% across 10 parameters, so the schema leaves seven fields undocumented. The description offers only the generic phrase 'bibliographic fields' with no per-field meaning, so it does not compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb set ('correct or enrich') and a clear resource ('a source's bibliographic fields'), which cleanly separates it from update_note, add_source, and get_source. It lacks any explicit sibling reference, but the resource scope is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Correct or enrich' implies this is for fixing or augmenting an existing source rather than creating one, which implicitly distinguishes it from add_source. Nothing states when to prefer update over re-adding, preconditions, or what happens if the source id is unknown.
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.
17 tool updates
v1.0.0- First observed
add_note - First observed
add_quote - First observed
add_source - First observed
cite_url - First observed
export_bibtex - First observed
export_markdown - First observed
generate_outline - First observed
get_note - First observed
get_source - First observed
list_notes - First observed
list_sources - First observed
notebook_stats - First observed
remove_note - First observed
remove_source - First observed
search - First observed
update_note - First observed
update_source
TDQS
Scored across 17 tools
Each tool has a clearly distinct purpose. Verbs like list, get, add, update, remove target specific resources (sources vs notes), and cite_url vs add_source are well-differentiated by their descriptions. No two tools appear to do the same thing.
Consistent verb_noun pattern throughout (search, remove_source, export_bibtex, get_source, list_notes, add_quote, generate_outline, etc.). Minor variation for 'search' and 'notebook_stats' but still predictable and readable.
17 tools is slightly heavy but appropriate for a research notebook's broad functionality (sources, notes, quotes, exports, outline generation). Each tool earns its place without excessive overlap.
Full CRUD lifecycle for sources and notes, plus specialized operations like cite_url, add_quote, exports, outline generation, and stats. No obvious gaps for the stated domain.
Maintenance
Related MCP Connectors
Machine Library: cited search over papers, books, patents and social posts, with agent comments.
Personal context for every AI: search, read, and write back to your private Markdown library.
AI research library. Save, organise and reuse notes and webpages as clean markdown context.
Federated search of books and papers, BibTeX/RIS citations, open-access retrieval and reading.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceEnables searching and reading full text of papers in a Zotero library by converting PDF attachments to Markdown and exposing a full-text search index to LLM tools.MIT
- AlicenseNot gradedqualityAmaintenanceTurns a folder of Markdown notes into an agent-native knowledge base, providing long-term memory with provenance, token-budgeted retrieval, and safe write-back with versioning.MIT
- AlicenseNot gradedqualityBmaintenanceEnables coding agents to maintain a folder-scoped research wiki for scientific papers by providing MCP tools for full-text search, reading, note creation, tagging, logging, and PDF ingestion, all without requiring its own LLM API key.Apache 2.0
- AlicenseBqualityBmaintenanceEnables local agents to search and retrieve cited evidence from PDFs and Markdown notes, including page-specific passages and rendered page images.6GPL 3.0