Skip to main content
Glama

Scholar Feed

Annotate Paper

annotate_paper

Record YOUR verdict on a paper — why it matters for your work, when to use it, or why you ruled it out. One note per paper, upserted (writing again replaces it), so it is safe to call repeatedly. Requires SF_API_KEY. WHY IT MATTERS: this note is the only thing that survives between sessions. list_library returns note_text on every saved paper, so a verdict written now is what a future session reads INSTEAD of re-reading the paper and re-deriving the same conclusion. WRITE A JUDGMENT, NOT A SUMMARY — the paper already carries llm_summary and an abstract, so restating what the paper says adds nothing. Write what those cannot: how it bears on YOUR problem. Prefer a claim someone could later prove wrong ("needs a labeled trace log we don't have", "our baseline — beat this on the 7B setting") over an unfalsifiable verdict ("interesting", "not very relevant"), because a mechanism can be re-checked when circumstances change and a sentiment cannot. State the basis when it is thin: a verdict formed from the abstract alone deserves "(abstract only)", since fetch_fulltext defaults to ~800 characters of the results section rather than the whole paper. Pass action='get' to read the existing note before overwriting it — worth doing when a prior session may already have judged this paper. To correct a note, just write the corrected text (it replaces).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
actionNo'upsert' (default) writes/replaces the note. 'get' returns the current note without changing it. There is deliberately no delete: a wrong note is corrected by overwriting it, which keeps this tool non-destructive.upsert
arxiv_idYesarXiv ID of the paper to annotate, e.g. '2407.15831'.
note_textNoYour verdict (max 5000 chars). Required for the default upsert; ignored for action='get'.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
okNoTrue when the operation succeeded.
watchNoThe created/affected watch, when applicable.
actionNoMachine label: saved | no_change | removed | liked | created | updated | deleted.
messageNoHuman-readable summary of the outcome.
arxiv_idNo
collectionNoThe created/affected collection, when applicable.

Schema Changelog

Changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. First observed

TDQS

A4.9/5.0
Behavior5/5

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

Despite annotations already stating readOnlyHint=false and destructiveHint=false, the description adds material behavioral context: the upsert semantics ('writing again replaces it'), repeated-call safety, deliberate lack of delete, the SF_API_KEY requirement, and the get action that returns without modifying. These details go well beyond the structured annotations.

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 long but tightly organized with clear section markers (WHY IT MATTERS, WRITE A JUDGMENT) and every sentence adds operational or strategic value. The core purpose is front-loaded in the first sentence, and no content is redundant with the input schema or annotations.

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 tool that is conceptually simple but operationally nuanced, the description covers everything an agent needs: what to write, why it matters, when to use get, how to correct, auth requirements, and the relationship to list_library. The output schema exists, so return-value detail is not needed, and the guidance is complete enough to invoke correctly in a wide range of session contexts.

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%, so the baseline is 3, but the description adds significant parameter-level context: it explains when action='get' should be used, that note_text is ignored for get, and that overwriting is the correction mechanism. It does not repeat schema types but clarifies intent and interplay between 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 opens with a specific verb and resource: 'Record YOUR verdict on a paper' and immediately clarifies the scope ('why it matters for your work, when to use it, or why you ruled it out'). It also contrasts itself with the paper's existing llm_summary and abstract, which clearly separates it from sibling tools like fetch_fulltext or get_paper.

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 when-to-use guidance, including the cross-session persistence rationale and the fact that list_library surfaces note_text on every saved paper. It explicitly tells the agent what not to do ('WRITE A JUDGMENT, NOT A SUMMARY') and when to read first via action='get', making the call decision unambiguous.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

TDQS

A4.3/5.0
Disambiguation4/5

Most tools target a distinct resource and action — search vs. saved-library synthesis vs. citation analysis vs. article metadata — and the descriptions explicitly cross-reference one another to reduce confusion. A few retrieval/analysis tools (get_field_orientation, get_foundational_lineage, get_citations, check_drift) have adjacent purposes and could be misselected without reading their descriptions carefully.

Naming Consistency4/5

The overwhelming majority follow a clear verb_noun snake_case pattern: create_watch, delete_watch, list_library, save_paper, annotate_paper, fetch_fulltext, search_papers. Minor deviations like co_author_graph and the interchangeable retrieval verbs (search, find, get, check, ask) create slight inconsistency, but the overall convention is predictable.

Tool Count3/5

27 tools is on the heavy side, but the server covers several coherent subdomains: search/discovery, library/collection management, watches, annotations, and research analysis. The count is justifiable for the broad purpose, though some of the discovery/analysis tools could likely be consolidated or split into a separate server.

Completeness4/5

The tool surface covers the core lifecycle well: search, fetch, save, organize into collections, annotate, watch for new papers, and analyze citations/authors/gaps. Minor gaps exist — there is no collection deletion/rename, no explicit mark-as-read tool, and no unlike operation — but these are workable edge cases rather than blocking omissions.