agentCLAWHUBUnverified

pubmed-verifier

Reference checker for AI-fabricated citations: batch-verify PMIDs against PubMed and catch the hallucination existence checks miss — a REAL PMID pointing to a DIFFERENT paper. Five-state citation verification (correct / mismatch / partial / invalid / unknown), citation-context parsing, Crossref DOI cross-check, retraction detection (capped at partial), correct-PMID suggestion, arXiv ID verification, plain-text reference list parsing, formatted reference lists (GB/T 7714 / Vancouver / APA / AMA), OpenAlex DOI fallback for non-Crossref registries, Chinese-reference title search, CSV/JSON claims, HTML/JSON/text reports. Four data sources: NCBI, Europe PMC fallback, Crossref, OpenAlex. Network failures are honestly reported as unverified, never as "not found". Zero dependencies, runs fully local. Triggers: verify PMIDs, check citations, citation audit, reference check, PMID check, batch verify references, AI hallucination detection, verify DOI, DOI check, citation formatting, reference formatter, GB/T 7714.

OpenClaw

Rank

62

Safety

84

Downloads

2.0k

Updated

Oct 9, 2026

Version

4.1.0

Source

CLAWHUB

About

What it does, and when to use it.

Capability contract not published. No trust telemetry is available yet. 2K downloads reported by the source. Last updated 10/9/2026.

Avoid when

  • Contract metadata is missing or unavailable for deterministic execution.

Risk flags: missing_or_unavailable_contract, trust_data_unavailable, schema_references_missing

Public facts

Every fact links back to the source it came from.

Vendor
Clawhubvendor · observed Oct 9, 2026
Protocol compatibility
OpenClawcompatibility · observed Oct 9, 2026
Adoption signal
2K downloadsadoption · observed Oct 9, 2026
Latest release
4.1.0release · observed Oct 9, 2026
Handshake status
UNKNOWNsecurity

Install and run

Setup complexity: low.

clawhub skill install s17dagtwyk21qs6vpz98bzcrh1853t29:pubmed-verifier
  1. Install using `clawhub skill install s17dagtwyk21qs6vpz98bzcrh1853t29:pubmed-verifier` in an isolated environment before connecting it to live workloads.
  2. No published capability contract is available yet, so validate auth and request/response behavior manually.
  3. Review the upstream CLAWHUB listing at https://clawhub.ai/docsor1212/pubmed-verifier before using production credentials.

Contract: missing

curl -s "https://www.xpersona.co/api/v1/agents/clawhub-docsor1212-pubmed-verifier/snapshot"

Documentation

CLAWHUB

155,671 characters of source documentation, loaded on request.

Extracted files

5 files captured from the source.

SKILL.md

---
name: pubmed-verifier
license: MIT-0
version: 4.1.0
description: >-
  Reference checker for AI-fabricated citations: batch-verify PMIDs against
  PubMed and catch the hallucination existence checks miss — a REAL PMID
  pointing to a DIFFERENT paper. Five-state citation verification (correct /
  mismatch / partial / invalid / unknown), citation-context parsing, Crossref
  DOI cross-check, retraction detection (capped at partial), correct-PMID
  suggestion, arXiv ID verification, plain-text reference list parsing,
  formatted reference lists (GB/T 7714 / Vancouver / APA / AMA), OpenAlex DOI
  fallback for non-Crossref registries, Chinese-reference title search,
  CSV/JSON claims, HTML/JSON/text reports. Four data sources: NCBI, Europe PMC
  fallback, Crossref, OpenAlex. Network failures are honestly reported as
  unverified, never as "not found". Zero dependencies, runs fully local.
  Triggers: verify PMIDs, check citations, citation audit, reference check,
  PMID check, batch verify references, AI hallucination detection, verify DOI,
  DOI check, citation formatting, reference formatter, GB/T 7714.
---

# PubMed Citation Verifier v4.1.0

Batch verification of PMID citations via the PubMed E-utilities API. Not just
"does this PMID exist" — **does this PMID point to the paper you claim?**
Zero dependencies, pure standard library, fully local.

## When to use this skill

Invoke it whenever citation truth matters:

- "Verify / check these PMIDs / this reference list" (before submission or release)
- Auditing citations in AI-generated text (fabricated or mismatched references)
- Spot-checking a systematic review's bibliography
- "Does PMID 12345678 really say X?" — point-of-doubt verification
- Batch QA of a knowledge base's PMID/DOI citations
- Automatic invocation: trigger this skill whenever the user asks to
  "verify/check/audit" citations, PMIDs, DOIs, arXiv preprints or
  references — no flags needed for a first pass; add `--claims-file`
  when they supply the expected titles.

**Trigger priority & tool choice** — explicit "verify / check / audit
citations, references, PMIDs, DOIs" requests invoke this skill first.
cite-holmes is for deep research with machine-verified citations; when a
request mixes research and verification, run the research first, then
this tool for the final reference audit.

## The five-state verdict

| Verdict | Meaning |
|---------|---------|
| ✅ Correct | PMID exists AND matches the claimed paper |
| ⚠️ Mismatch | PMID exists but points to a **different** paper (the most common AI hallucination!) |
| 🔶 Partial | Some metadata matches (e.g. author+journal but title differs) |
| ❌ Invalid | PMID does not exist in PubMed |
| ❓ Unknown | Not enough claimed metadata to cross-check — or both data sources unreachable (never misreported as invalid) |

**Why existence checks are not enough:** a large share of fabricated
citations use REAL PMIDs that point to a different paper from the same
year/journal/field — in one of our o

examples/README.txt

claims.sample.csv — reference format for --claims-file

- pmid column: PubMed pipeline (full five-state verification)
- rows with only arxiv_id (+title): arXiv pipeline (official API check)
- doi column: DOI-splice cross-check against the PubMed-registered DOI
  (PMID rows) / version-of-record pairing check (arXiv rows, v3.3.0) /
  full five-state verdicts (doi-only rows, v3.4.0)
- title: required for verdicts beyond existence-check
- expected verdicts (as of v3.4.0): the 31018962 row carries a
  deliberately inexact title → partial (title mismatch, everything else
  matches — demonstrates the partial rung, not a data error); the
  1706.03762 row → correct; the doi-only 10.1371 row → correct (its
  second author "Other" is a synthetic placeholder; v3.8.0's
  mis-attribution cap means a wrong author set would drop it to partial); the 24476887 row
  (STAP cells) is RETRACTED on purpose → RETRACTED flag with a partial
  cap — it demonstrates retraction detection, not a data error

Run:  python3 scripts/verify_pmids.py --claims-file examples/claims.sample.csv

Lint first (offline, v3.5.0): python3 scripts/verify_pmids.py --lint-claims examples/claims.sample.csv

Bibliography (v3.6.0): refs.sample.bib audits a .bib file directly —
python3 scripts/verify_pmids.py --bibliography examples/refs.sample.bib

RIS (v3.7.0): refs.sample.ris audits Zotero/EndNote/Mendeley exports —
python3 scripts/verify_pmids.py --bibliography examples/refs.sample.ris

README.md

# PubMed Citation Verifier 🔬

[![GitHub Stars](https://img.shields.io/github/stars/docsor1212/pubmed-verifier?style=social&label=Star)](https://github.com/docsor1212/pubmed-verifier/stargazers)

Batch-verify PMID citations against PubMed API. Built for researchers, medical writers, and evidence-based medicine teams.

## 简介(中文)

**PubMed 文献引用批量验证工具**——把引用列表交给它,逐条核验 PMID/DOI/arXiv ID 是否真实存在、是否指向你声称的那篇论文(AI 幻觉引用最常见的形态就是「真 PMID 指向别的论文」)。五态判定(正确/不匹配/部分匹配/无效/待确认),撤稿检测全覆盖,网络故障如实标注「未判定」、绝不误报「不存在」。零依赖、纯本地运行。

- **中文文献**:GB/T 7714 格式参考文献可解析(`……标题[J]. 刊名, 年… PMID: xxx`);`--parse-text` 粘贴即核验整张文献表——行内 PMID/DOI 精确路由,中文条目经 OpenAlex 标题检索判定(无编号 ID 也能核)
- **参考文献格式化**:`--format-references --citation-style gbt`(另支持 Vancouver/APA/AMA),先验证后排版,只排已验真的条目
- **四数据源**:NCBI PubMed、Europe PMC 自动兜底、Crossref、OpenAlex(DataCite/Zenodo 等非 Crossref 注册的 DOI 也可判定)
- **投稿就绪判定 + 审计底稿**:每份报告自带证据链,`--export-audit` 输出可复放的 JSON 工作底稿

## Why?

Academic projects routinely contain hundreds of PMID citations. Manual verification is tedious and error-prone. During our own 225-reference audit, we found 3 invalid PMIDs and 6 cross-domain mismatches — errors that would have undermined the entire project.

## Features

- **Batch verification** — Scan entire project directories, extract all PMIDs, verify against PubMed in one run
- **Mismatch detection** — Five-state verdicts catch a REAL PMID pointing to a DIFFERENT paper (the most common AI hallucination)
- **Metadata validation** — Title, authors, journal and date fuzzy-compared against your claims (DOI cross-checked via Crossref with `--verify-doi`)
- **Dual sources** — NCBI E-utilities primary, Europe PMC automatic fallback when NCBI is unreachable
- **Network hardening** — Optional NCBI API key (3x faster batches), Crossref polite pool, 429 Retry-After backoff, UA rotation, per-host circuit breaker
- **Content matching** — Keyword overlap scoring flags potentially irrelevant citations
- **Three citation types in one audit** — PMIDs, DOIs and arXiv IDs (preprints) verified in a single scan; arXiv IDs checked against the official API (nonexistent = fabrication signal); claims rows keyed by DOI get full verdicts, and preprints surface their published version of record
- **Claims lint** — `--lint-claims file.csv` validates a claims file offline (ID shapes, missing titles, unknown columns, duplicates) before any verification run
- **Bibliography audit** — `--bibliography refs.bib` / `refs.ris` verifies BibTeX and RIS files directly (Zotero/EndNote/Mendeley exports; entries route by PMID > DOI > arXiv with full cross-checks); round-trips with `--export-bibtex` / `--export-ris`
- **Plain-text reference list parsing** — `--parse-text refs.txt` verifies a reference list copied straight out of a manuscript draft: numbered entries (`[1]`, `1.`) split cleanly, inline PMID/DOI/arXiv IDs route exactly, and a title-only entry resolves via PubMed title search (honestly labeled `resolved_by: title_search`, never a mismatch source)
- **Formatted reference list

_meta.json

{
  "ownerId": "kn7b6sjwend7cwwmhf7mdg1wzx82dfbf",
  "slug": "pubmed-verifier",
  "version": "4.1.0",
  "publishedAt": 1791564939147
}

references/api_examples.md

# PubMed E-utilities API Quick Reference

## esummary — Article Metadata

```bash
# Single PMID
curl -s "https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esummary.fcgi?db=pubmed&id=31018962&retmode=json"

# Batch (comma-separated)
curl -s "https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esummary.fcgi?db=pubmed&id=31018962,22213727&retmode=json"
```

Response fields: `title`, `authors[].name`, `source` (journal), `pubdate`, `volume`, `pages`, `elocationid` (DOI).

Invalid PMID → `{"result": {"pmid": {"error": "cannot get document summary"}}}` (the exact string has varied over time — the verifier only checks for the presence of an `error` key).

## esearch — Find Articles by Query

```bash
curl -s "https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=pubmed&term=Gattorno+classification+autoinflammatory&retmode=json&retmax=5"
```

Returns `esearchresult.idlist` → array of PMIDs.

## efetch — Full Abstracts

```bash
# efetch supports TEXT and XML only — retmode=json is NOT valid for efetch
curl -s "https://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?db=pubmed&id=37635643&rettype=abstract&retmode=text"
```

## Deep Research Workflow (Systematic PubMed Search)

When the user needs comprehensive medical literature research beyond simple PMID verification:

### Step 1: esearch → keyword search → get PMIDs
```bash
curl -s "https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=pubmed&term=<keywords>&retmax=10&sort=relevance" | grep -oP '<Id>\K\d+'
```

### Step 2: esummary → metadata summaries (fast, compact)
```bash
PMIDS="pmid1,pmid2,pmid3"
curl -s "https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esummary.fcgi?db=pubmed&id=$PMIDS&retmode=json" > /tmp/pubmed-results.json
python3 -c "
import json
data = json.load(open('/tmp/pubmed-results.json'))
for uid, art in data.get('result', {}).items():
    if uid == 'uids': continue
    authors = ', '.join([a.get('name','') for a in art.get('authors',[])[:6]])
    print(f'PMID {uid}: {art.get(\"title\",\"\")}')
    print(f'  {art.get(\"fulljournalname\",\"\")} {art.get(\"pubdate\",\"\")};{art.get(\"volume\",\"\")}:{art.get(\"pages\",\"\")}')
    print(f'  DOI: {art.get(\"elocationid\",\"\")}')
    print()
"
```

### Step 3: efetch → full abstracts for key papers
```bash
curl -s "https://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?db=pubmed&id=$PMIDS&rettype=abstract&retmode=text"
```

### Pitfalls
- **efetch has no JSON mode** — use `retmode=text` (or XML) only
- **esearch may return unrelated results** — always cross-check with esummary titles
- **Rate limit**: 3 req/s without API key. Add `sleep 0.5` between batches
- **Large author lists**: esummary `authors` array can be 50+ — truncate to first 6 for display

## Rate Limits

- Without API key: 3 requests/second
- With API key (`&api_key=YOUR_KEY`): 10 requests/second
- API key obtained from NCBI Settings page
- Etiquette params: `&tool=pubmed-verifier&[email protected]` (added automatically with `--mailto`)

## Europe PMC (fallback source,
Github ReposUpdated 4h agoRank 70

AionUi

Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!

MCPOPENCLAW
Github ReposUpdated 6mo agoRank 70

activepieces

AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents

OPENCLAW
Github ReposUpdated 6mo agoRank 70

cherry-studio

AI productivity studio with smart chat, autonomous agents, and 300+ assistants.

MCPOPENCLAW
Github ReposUpdated 7mo agoRank 70

CopilotKit

The Frontend for Agents & Generative UI. React + Angular

OPENCLAW

Machine-readable data

The same record, as JSON, for agents and crawlers.

{
  "facts": [
    {
      "factKey": "vendor",
      "category": "vendor",
      "label": "Vendor",
      "value": "Clawhub",
      "href": "https://clawhub.ai/docsor1212/skills/pubmed-verifier",
      "sourceUrl": "https://clawhub.ai/docsor1212/skills/pubmed-verifier",
      "sourceType": "profile",
      "confidence": "medium",
      "observedAt": "2026-10-09T20:21:50.745Z",
      "isPublic": true
    },
    {
      "factKey": "protocols",
      "category": "compatibility",
      "label": "Protocol compatibility",
      "value": "OpenClaw",
      "href": "https://www.xpersona.co/api/v1/agents/clawhub-docsor1212-pubmed-verifier/contract",
      "sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-docsor1212-pubmed-verifier/contract",
      "sourceType": "contract",
      "confidence": "medium",
      "observedAt": "2026-10-09T20:21:50.745Z",
      "isPublic": true
    },
    {
      "factKey": "traction",
      "category": "adoption",
      "label": "Adoption signal",
      "value": "2K downloads",
      "href": "https://clawhub.ai/docsor1212/pubmed-verifier",
      "sourceUrl": "https://clawhub.ai/docsor1212/pubmed-verifier",
      "sourceType": "profile",
      "confidence": "medium",
      "observedAt": "2026-10-09T20:21:50.745Z",
      "isPublic": true
    },
    {
      "factKey": "latest_release",
      "category": "release",
      "label": "Latest release",
      "value": "4.1.0",
      "href": "https://clawhub.ai/docsor1212/pubmed-verifier",
      "sourceUrl": "https://clawhub.ai/docsor1212/pubmed-verifier",
      "sourceType": "release",
      "confidence": "medium",
      "observedAt": "2026-10-09T16:55:39.147Z",
      "isPublic": true
    },
    {
      "factKey": "handshake_status",
      "category": "security",
      "label": "Handshake status",
      "value": "UNKNOWN",
      "href": "https://www.xpersona.co/api/v1/agents/clawhub-docsor1212-pubmed-verifier/trust",
      "sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-docsor1212-pubmed-verifier/trust",
      "sourceType": "trust",
      "confidence": "medium",
      "observedAt": null,
      "isPublic": true
    }
  ],
  "events": [
    {
      "eventType": "release",
      "title": "Release 4.1.0",
      "description": "OpenAlex is now the fourth metadata source: a DOI that Crossref reports 404 gets a second look at OpenAlex before any verdict — DataCite/Zenodo/Chinese-registry DOIs become fully decidable (only unknown-in-BOTH-registries keeps the 404 semantics). Chinese references without any ID are now verifiable: parse-text CJK entries search OpenAlex by their title-shaped segment (verbatim-substring + year gates, resolved_by=openalex_cjk_search, never a mismatch source). --check-net probes five sources; docs add output-shape samples and three worked FAQ scenarios; README gains a Chinese intro. 212 offline + 31 real-network tests green. 觉得有用的话,欢迎 Star(GitHub)或收藏(SkillHub 技能页)。",
      "href": "https://clawhub.ai/docsor1212/pubmed-verifier",
      "sourceUrl": "https://clawhub.ai/docsor1212/pubmed-verifier",
      "sourceType": "release",
      "confidence": "medium",
      "observedAt": "2026-10-09T16:55:39.147Z",
      "isPublic": true
    }
  ]
}

Record generated Oct 9, 2026.

Sponsored

Ads related to pubmed-verifier and adjacent AI workflows.