Skip to main content
Glama

Verify references

verify_references
Read-onlyIdempotent

Check a reference list or a bibliography: is each reference a real paper, the one it names, and where do its title, year, first author and DOI differ from Paper Nexus's record of it? Use it before relying on references an assistant wrote, or to check a manuscript's. Pass up to 50 references as references, each as written (a formatted reference in any style, a DOI, an arXiv, PubMed or publisher link, or a title) or as {title, authors, year, doi}; each counts as one lookup. Each comes back as found (the paper it names), conflict (its parts name different papers: a DOI or other identifier whose paper has another title, or a title whose paper has none of the authors given, the usual signs of a made-up or garbled reference), not_found, or not_checked, with what was read from it, so a misread one can be passed again as fields. A paper matched comes with the fields that agree, the differences (each with what Paper Nexus records), and notes on differences that are usually no error, such as a year apart for a preprint and its published version. Paper Nexus's record can be wrong too, so a difference is a field to check at the publisher, not proof the reference is wrong. not_found means not in Paper Nexus, which holds papers with citation data, not every publication: it is not proof that a reference was made up. Volume, issue and pages are not checked.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "references": "<references>"
    },
    "name": "verify_references"
  }
}

Input Schema

NameRequiredDescriptionDefault
referencesYesThe references to check, one per item, returned in this order

Output Schema

NameRequiredDescriptionDefault
summaryYesHow many references came back with each status, and with_differences: how many of those matched have a field that differs from Paper Nexus's record
referencesYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed12 schema fields changed
    • changedOutput schema / properties / references / items / properties / agrees / description
      Previous value: -"The fields the reference gives that agree with the paper"New value: +"The fields the reference gives that are the paper's"
    • addedOutput schema / properties / references / items / properties / conflict
      Added value: +{
      +  "description": "Why a conflict: identifier_title_differs (the identifier is a paper with another title), author_not_on_paper (the title's paper has none of the authors given)",
      +  "enum": [
      +    "identifier_title_differs",
      +    "author_not_on_paper"
      +  ],
      +  "type": "string"
      +}
    • addedOutput schema / properties / references / items / properties / differences
      Added value: +{
      +  "description": "The fields that differ from Paper Nexus's record, which can itself be wrong: check them at the publisher",
      +  "items": {
      +    "properties": {
      +      "field": {
      +        "enum": [
      +          "title",
      +          "year",
      +          "first_author",
      +          "doi"
      +        ],
      +        "type": "string"
      +      },
      +      "given": {
      +        "description": "What the reference says"
      +      },
      +      "note": {
      +        "type": "string"
      +      },
      +      "paper": {
      +        "description": "What Paper Nexus records"
      +      }
      +    },
      +    "required": [
      +      "field",
      +      "given",
      +      "paper"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • removedOutput schema / properties / references / items / properties / mismatches
      Removed value: -{
      -  "items": {
      -    "properties": {
      -      "field": {
      -        "enum": [
      -          "title",
      -          "year",
      -          "first_author",
      -          "doi"
      -        ],
      -        "type": "string"
      -      },
      -      "given": {
      -        "description": "What the reference says"
      -      },
      -      "note": {
      -        "type": "string"
      -      },
      -      "paper": {
      -        "description": "What the paper has"
      -      }
      -    },
      -    "required": [
      -      "field",
      -      "given",
      -      "paper"
      -    ],
      -    "type": "object"
      -  },
      -  "type": "array"
      -}
    • addedOutput schema / properties / references / items / properties / notes
      Added value: +{
      +  "description": "Differences that are usually no error, each with a note: a year apart, a first author who is another of the paper's authors",
      +  "items": {
      +    "properties": {
      +      "field": {
      +        "enum": [
      +          "title",
      +          "year",
      +          "first_author",
      +          "doi"
      +        ],
      +        "type": "string"
      +      },
      +      "given": {
      +        "description": "What the reference says"
      +      },
      +      "note": {
      +        "type": "string"
      +      },
      +      "paper": {
      +        "description": "What Paper Nexus records"
      +      }
      +    },
      +    "required": [
      +      "field",
      +      "given",
      +      "paper"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • changedOutput schema / properties / references / items / properties / status / enum
      Previous value: -[
      -  "verified",
      -  "mismatch",
      -  "not_found",
      -  "not_checked"
      -]New value: +[
      +  "found",
      +  "conflict",
      +  "not_found",
      +  "not_checked"
      +]
    • changedOutput schema / properties / summary / description
      Previous value: -"How many references came back with each status"New value: +"How many references came back with each status, and with_differences: how many of those matched have a field that differs from Paper Nexus's record"
    • addedOutput schema / properties / summary / properties / conflict
      Added value: +{
      +  "type": "integer"
      +}
    • addedOutput schema / properties / summary / properties / found
      Added value: +{
      +  "type": "integer"
      +}
    • removedOutput schema / properties / summary / properties / mismatch
      Removed value: -{
      -  "type": "integer"
      -}
    • removedOutput schema / properties / summary / properties / verified
      Removed value: -{
      -  "type": "integer"
      -}
    • addedOutput schema / properties / summary / properties / with_differences
      Added value: +{
      +  "type": "integer"
      +}
  2. Added

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the read-only and idempotent annotations, it discloses the lookup model (up to 50 references, each a lookup), the possible outcomes (found, conflict, not_found, not_checked), what each outcome means, how differences are reported, and critical caveats about Paper Nexus records and not_found. It also notes that volume, issue, and pages are not checked.

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?

It is front-loaded with the core purpose, then proceeds to use cases, input format, return statuses, and caveats. Despite its length, every sentence contributes to correct invocation or interpretation.

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 verification workflow, one required array parameter, rich annotations, and an output schema, the description supplies the remaining operational context: input forms, lookup limit, outcome meanings, limitations, and common false positives. Nothing essential for correct use appears missing.

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 schema already has full coverage of the single references parameter, but the description adds meaningful detail: accepted input forms include any citation style, DOI, arXiv/PubMed/publisher link, title, or structured fields, and each item counts as one lookup. There is minor imprecision around 'none of the authors given' versus the schema's note that only the first author is checked.

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: 'Check a reference list or a bibliography,' then specifies that it determines whether each reference is real, correctly named, and how its title, year, first author, and DOI differ from Paper Nexus. This clearly distinguishes it as a verification tool rather than a listing or searching tool among the siblings.

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?

It gives clear usage contexts: before relying on references written by an assistant or checking a manuscript's bibliography. It also warns against over-interpreting not_found and differences, but it does not explicitly name sibling alternatives such as search_papers or get_paper or state when to use those instead.

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.

Resources