Skip to main content
Glama
pvliesdonk

scholar-mcp

by pvliesdonk

Generate Citations

generate_citations
Read-only

Generate formatted citations for papers in BibTeX, CSL-JSON, or RIS format, resolving via Semantic Scholar and optionally enriching with OpenAlex metadata.

Instructions

Generate formatted citations for one or more papers.

Resolves papers via Semantic Scholar, optionally enriches with OpenAlex metadata, and formats as BibTeX, CSL-JSON, or RIS.

Enrichment fans out per paper, so a large batch can take a while; such a call answers with a job handle to poll using get_job_result instead of the citations themselves.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
enrichNoIf True, attempt OpenAlex enrichment for missing venue data when a DOI is available.
paper_idsYesList of paper identifiers (S2 IDs, DOIs, arXiv IDs, etc.). Maximum 100.
citation_formatNoOutput format — bibtex, csl-json, or ris.bibtex

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed4 schema fields changedv1.10.0
    • addedOutput schema / additionalProperties
      Added value: +true
    • removedOutput schema / properties
      Removed value: -{
      -  "result": {
      -    "type": "string"
      -  }
      -}
    • removedOutput schema / required
      Removed value: -[
      -  "result"
      -]
    • removedOutput schema / x-fastmcp-wrap-result
      Removed value: -true
  2. First observedv1.9.0

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, and the description is consistent with these (generating formatted output is non-destructive). Beyond that, the description adds genuinely useful behavioral context: enrichment fans out per paper, large batches can be slow, and such calls respond with a job handle rather than the citations themselves. This discloses the async/polling behavior that annotations do not capture. No contradiction with 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 front-loaded with the purpose, then the resolution/format pipeline, then the edge-case behavioral note. Every sentence earns its place; there is no filler. The async handling is placed last, which is correct since it only applies to large batches. Compact and well-structured for a tool with this many options.

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 definition covers the purpose, the multi-source resolution pipeline, the three output formats, and the job-handle behavior tied to get_job_result. The output schema exists, so return values need not be explained. The only minor gap is that the description does not explicitly differentiate itself from close siblings like batch_resolve or get_citations, leaving some selection reasoning to the 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 each parameter (paper_ids, enrichment, citation_format) is already documented in the schema, including the enum values and defaults. The description adds marginal reinforcement by naming the resolution sources (Semantic Scholar/OpenAlex) and listing the output formats, which maps to the enrichment and citation_format parameters, but it does not add meaning beyond what the schema already conveys. 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 opens with a specific verb+resource: 'Generate formatted citations for one or more papers,' and clarifies the pipeline (Semantic Scholar resolution, optional OpenAlex enrichment, output in BibTeX/CSL-JSON/RIS). It is clearly distinct from the sibling get_citations (which retrieves inbound citations, not formatted output), though that distinction is implied by the format emphasis rather than named explicitly.

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 gives concrete operational guidance: for large batches, enrichment fans out, so the call returns a job handle to poll via get_job_result instead of the citations. This tells the agent when to expect async behavior and points to the correct sibling. However, it never states when to prefer this tool over batch_resolve or enrich_paper, nor when not to use it — the routing to alternatives is left to inference.

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