Explore a paper's citation lineage, as a webapp and as an MCP tool for agents
Citation Lens defines 2 tools with basic schemas and descriptions, but falls short of production quality. Both tools have descriptions (good), but parameter descriptions are minimal or absent. search_papers has a single string parameter with no description. get_citation_lineage has two parameters with descriptions present but sparse. Neither tool documents output schemas, pagination, or error recovery paths. No tool annotations (readOnlyHint, etc.) despite both being read-only. Naming is verb-forward (search_, get_) but descriptions lack WHEN/WHY context and don't guide LLM selection vs. similar tools.
Given a paper (by title or Semantic Scholar paperId), return the papers it builds on (references) and the papers that cite it, ranked by influence.
Search academic papers using Semantic Scholar
Missing parameter descriptions: search_papers.query has no description explaining what kind of query is accepted (title, author, keywords, DOI?). LLMs cannot infer intent.
No output schema documented for either tool. Callers cannot know what fields to expect (e.g., does search_papers return paperId, title, authors, year, abstract?). LLMs must guess structure.
Tool descriptions lack WHEN/WHY context. 'Search academic papers using Semantic Scholar' does not explain when to use search_papers vs. get_citation_lineage, or what the LLM should do with results.
No error handling guidance. If Semantic Scholar API returns 429 (rate limit), 404 (paper not found), or timeout, the tools provide no recovery hints. LLMs cannot self-correct.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 52 | 2026-07-28+ | v2 |
Missing tool annotations. Both tools are read-only (Risk: READ_ONLY noted in metadata), but no readOnlyHint in schema. Agents cannot infer safety without explicit annotation.