SuperAPI AI Directory

citation-verify

General & other

View repository

Updated 10-16 06:48

About this skill

citation-verify: Reference Verification Closed Loop

Purpose

Perform machine verification on a set of reference entries, distinguishing each item among four states: "pass / identifier conflict / not found / temporarily unable to verify", and provide a three-tier disposition conclusion (auto-accept / needs author confirmation / revision recommended), ultimately producing a verification report, revision suggestions, and a structured review conclusion.

Verification principles (must be internalized and reflected item by item in the wording of conclusions):

  • Identifier conflict ≠ not found: the DOI resolves but the returned metadata does not match the entry, which often means a mismatched reference—the entry genuinely exists, but the wrong object was cited. This is a more dangerous error than "not found" and must be listed separately as a key item.
  • Not found ≠ fabricated: failure to retrieve may stem from database coverage gaps, spelling differences, or the work being too new or too old. It is strictly forbidden to directly conclude "fabricated / forged"; it may only be marked [待人工核实] and a manual verification path must be provided.
  • Structured failure: rate limiting and authentication failure mean "verification was not completed this time", not "the entry has a problem"; the two must be presented separately in the report.
  • Non-destructive: do not directly modify the user's original file; revision suggestions are written separately and changes are made only after the user confirms.

Pre-checks

  1. Confirm that the bibverify MCP server is available: the current tool list contains verify_bib_file / doi_to_bibtex / rank_lookup_sources / explain_update_diff. If unavailable, tell the user to start it with uvx bibverify mcp and register it in the MCP configuration, then retry; when unavailable, do not produce any output that "pretends to verify".
  2. Confirm that the input exists and is readable: a .bib file, or a draft containing a "References / References / Bibliography" section (.md / .tex / plain text).
  3. Confirm that the network is available: verification depends on DOI resolution and literature database queries; in an offline environment, directly state "currently unable to verify online" and terminate; do not cache old conclusions to pass them off as new results.
  4. Compute the slug: take the verification topic (usually the input filename without its extension) and normalize it— Unicode NFKC normalization, convert to lowercase, trim leading and trailing whitespace, collapse consecutive whitespace into a single space— then take the first 8 characters of the sha1 hexadecimal digest as the artifact directory name.

Procedure

1. Collect entries to be verified

  • If the input is a .bib file: parse all entries, recording for each the citekey, entrytype, and key fields title / author / year / journal (or booktitle) / doi / url.
  • If the input is a paper draft: locate the "References / References / Bibliography" section, and split it entry by entry according to numbered entries ([1] …) or author-year entries, retaining the original lines as evidence.
  • If the draft's references section cannot be reliably split (chaotic formatting, a serious mismatch between the number of entries and the number of in-text citations), record a warn in the report and suggest that the user instead upload a .bib file.
  • If the number of entries is 0, terminate early and report "no verifiable reference entries found".

2. Call verify_bib_file

  • Submit the compiled BibTeX entry text to bibverify MCP's verify_bib_file tool.
  • When there are many entries (e.g., more than 50), call in batches to avoid a single oversized request triggering rate limiting; pause briefly between batches.
  • Save the raw status and evidence fields returned for each entry as the sole source for the report's "Evidence" column; do not fill in evidence from memory.

3. Interpret verification status item by item

Status Meaning Handling stance
verified Identifier resolves and metadata is consistent auto-accept, pass directly
identifier_conflict DOI resolves, but metadata does not match the entry (authors / year / title / journal do not correspond) List prominently: suspected mismatch, enter "Suggested revision" or "Needs author confirmation"
no_match The entry cannot be found in any source Mark [待人工核实], strictly forbidden to judge as fabricated; provide a manual verification path
rate_limited Data source rate limiting triggered, verification not completed this time Retry later; must not be treated as a failure or problem conclusion
auth_error Data source authentication failed (e.g., missing API key) Prompt to check bibverify configuration; likewise not an entry problem

For identifier_conflict entries, list conflicts field by field (value claimed by the entry vs value resolved from the identifier), for example "the entry authors are Zhang et al., but the authors resolved from DOI 10.xxxx are Li et al.", so the user can see at a glance where the mismatch is.

4. Three-tier handling

  • auto-accept:verified entries, no action needed.
  • Needs author confirmation: minor discrepancies or situations the machine cannot decide—for example, a 1-year difference may simply be the difference between online-first publication and the formal volume/issue, or differences in author abbreviation format. List the discrepancy points and ask the author to judge, without making the decision on their behalf.
  • Suggested revision:identifier_conflict for cases where the discrepancy is significant and it can basically be determined that the entry is wrong. Use doi_to_bibtex to fetch the correct BibTeX entry corresponding to that DOI, then use explain_update_diff to generate a field-level difference description of "old entry → new entry", and write it into the revision suggestion.
  • Manual verification(no_match): in the suggestion, provide three manual paths— search Google Scholar by title; search CNKI / Wanfang by title + author (Chinese literature); locate by volume, issue, and page number on the journal's official website. You can use rank_lookup_sources to rank and recommend query sources for that entry, minimizing the cost of manual verification.
  • Retry(rate_limited / auth_error): wait and rerun this skill; if the retry still fails, truthfully mark in the report "could not be verified this time", and do not enter any handling level.

5. Output artifacts

Directory:output/citation-verify/<slug>/latest/(each complete re-verification overwrites latest; old rounds from multiple iterations are archived by evidence-loop to the <round>/ directory):

  • report.md: verification report (template see below), with ```review block appended at the end.
  • revision-suggestions.md: revision suggestions, generated only when there are "Suggested revision / Needs author confirmation / Pending manual verification" entries; includes the correct BibTeX entry and field-level diff.
  • review.json: structured conclusion identical to the ```review block content at the end of the report, for programmatic consumption.

6. Non-destructive writing

  • Under no circumstances directly rewrite the user's original .bib / draft files.
  • Only after the user explicitly confirms the revision suggestions, write the confirmed entries back to the original file, and append an "applied" record (time, entry, old and new values) to the report.

Output template

Verification report table (main body of report.md)

# Entry (citekey) Verdict Evidence Suggestion
1 zhang2023deep verified DOI 10.1000/xyz resolved metadata matches the entry auto-accept
2 li2022survey identifier_conflict Entry year 2022, DOI resolves to 2021; journal name does not match Suggest revision (see revision-suggestions.md #2)
3 wang2020method no_match Neither OpenAlex nor Crossref returned a match [pending manual verification] Google Scholar / CNKI / journal website

review block (output both at the end of the report and in the final reply)

[
  {"level": "ok", "check": "citation", "title": "zhang2023deep 核验通过",
   "evidence": "DOI 10.1000/xyz 解析元数据与条目一致", "note": "auto-accept"},
  {"level": "error", "check": "citation", "title": "li2022survey 标识符冲突",
   "evidence": "条目年份 2022 / DOI 解析 2021,期刊名称不符",
   "note": "建议修订,正确条目见 revision-suggestions.md"},
  {"level": "warn", "check": "citation", "title": "wang2020method 未检索到",
   "evidence": "OpenAlex、Crossref 均无匹配",
   "note": "[待人工核实],非伪造结论"}
]

level conventions:identifier_conflict is error;no_match, and if it still rate_limited / auth_error after retry is warn;verified is ok.

What this skill does not do

  • Does not judge no_match as fabricated, invented, or academic misconduct—only marks [待人工核实]。
  • Does not directly modify the user's .bib files or paper drafts; revision suggestions are written separately and applied only after confirmation.
  • Does not evaluate the academic value, relevance, or importance of the references (that is for the review and writing stage).
  • Does not check whether claims in the body text are supported by citations (leave that to claim-check).
  • Does not actively search for new references to complete the evidence chain (leave that to evidence-loop / literature-search).
  • Does not draw any conclusion about the entry itself when rate_limited / auth_error .

Wrap-up and next steps

  1. Summary statistics: give a summary of no more than 5 lines at the start of the reply with the total count and how many entries are verified / identifier_conflict / no_match / rate_limited / auth_error, and attach the ```review block.
  2. Point to the artifact path output/citation-verify/<slug>/latest/。
  3. Suggested next steps:
    • If there are "requires author confirmation / suggested revision" entries → ask the user to confirm before applying revisions, then verify once more;
    • If there are [待人工核实] entries → after manual verification by the user, they can be changed and uploaded as .bib for re-verification;
    • If body-text claims also need to be checked → run claim-check or evidence-loop.