Skip to main content
Glama

Panda Research Tools

Scholarly integrity and papers: citation checks, literature and PubMed search, academic experts, PDF tables.

Focused MCP server (6 tools) from the Panda Federation public-data toolkit. Prefer this over the 23-tool mega-server for better Tool Definition Quality Score (TDQS) / Glama coherence.

Umbrella Apify Store License: MIT

Install / Use

Needs a free Apify API token and uv.

uvx --from panda-federation-tools panda-research-tools

Same entry point from this repo:

uvx --from git+https://github.com/pandadad0214/panda-research-tools panda-research-tools

Cursor / Claude / VS Code: command uvx, args ["--from", "panda-federation-tools", "panda-research-tools"], env APIFY_TOKEN.

Related MCP server: ColabAI MCP Server

Tools (6)

  • reference_checker

  • citation_formatter

  • literature_search

  • pubmed_evidence_table

  • researcher_expert_finder

  • pdf_table_extractor

Each tool runs one Apify Actor on your account. Empty runs are not charged per result; every call is capped by run_max_charge_usd. Full schemas and prices: umbrella README.

Sibling domain servers

  • panda-public-funding-tools — US federal money and filings: grants, contracts, SBIR/STTR topics, SEC financials, clinical trials.

  • panda-leads-tools — Public leads and enrichment: NPI providers, podcasts, local businesses, hiring signals, website enrichment, team pages, topic trends, trucking carriers.

  • panda-web-security-tools — Site, email and agent safety: SPF/DKIM/DMARC audits, AI/SEO readiness, website change monitoring, hidden AI instructions scanner.

Index / compatibility mega-server: panda-federation-tools (use only when you truly need every tool).

TDQS standard

New tools join this domain only while the count stays in the 3–15 band. Descriptions follow the checklist in the umbrella repo. See tdqs-standard / project docs.

Built by Panda Federation. MIT licensed.

Available Tools

6 tools
citation_formatterCitation Generator API: DOI to APA, MLA, Chicago & BibTeXA
Read-only

Convert DOIs, ISBNs, PMIDs, arXiv IDs, titles or messy reference strings into checked citations in APA 7, MLA 9, Chicago, Harvard, IEEE, Vancouver, BibTeX and RIS. Unlike reference_checker, it formats rather than audits: unresolved items are listed, not diagnosed as fake or retracted. Use when you need a clean bibliography or .bib/.ris export. Do not use to find papers (use literature_search) or to prove references are genuine (use reference_checker first). Parameters: pass references (one per line) or paste a whole list or .bib/.ris contents in text. All styles are one price, so request every style you might need in one call rather than calling again. Text lookups below minMatchScore stay unresolved; DOIs and IDs resolve exactly. Only formatted citations are billed. Returns per item: summary, status, one field per style (apa, mla, ...), inText, bibtex, ris, doi, title, authors, year, containerTitle; combined bibliography files stay in the run's Apify key-value store.

Behavior: read-only; runs the Apify Actor pandadad0214/citation-formatter (https://apify.com/pandadad0214/citation-formatter) on your own Apify account. Price: $0.003 per citation formatted. Runs that find nothing are not charged per result, and spending is capped per call by run_max_charge_usd (default $0.50). run_max_items (default 50) limits items returned and fills maxReferences when you leave it unset, so it also limits what is billed; setting maxReferences higher can bill more than is returned. Most calls finish in 5-15 s for a few inputs; large inputs or crawls can take minutes, so raise run_timeout_secs (max 300) or shrink the input after a timeout error. Returns JSON {actor, count, items}; long text output is trimmed to whole items, with all items in structuredContent.

NameRequiredDescriptionDefault
textNoPaste a reference list or file contents. Optional. Paste a whole bibliography (numbered, one per line, or blank-line separated), or the contents of a .bib (BibTeX) or .ris file. BibTeX/RIS entries are converted directly without a lookup.
stylesNoCitation styles. Styles to output. All six are included in the price, so pick as many as you like.
includeRisNoRIS export. Add an RIS entry per reference and a combined .ris file (Zotero, Mendeley, EndNote, Rayyan). Default: on.
referencesNoReferences (one per line). DOIs, DOI links, ISBNs, arXiv IDs, PMIDs ("PMID: 123"), paper titles, or messy reference strings in any style. Each one is looked up and formatted.
contactEmailNoContact email for Crossref (optional). Optional. Sent to Crossref and NCBI as the contact so requests use their faster 'polite' pools. Never shared elsewhere.
includeBibtexNoBibTeX export. Add a BibTeX entry per reference and a combined .bib file (LaTeX, Overleaf, JabRef). Default: on.
maxReferencesNoMax references per run. Safety cap. Only formatted citations are billed. Whole number, 1 to 20,000 references; default 1,000.
minMatchScoreNoMinimum match score for text lookups (50-100). How closely a search result must match a free-text reference (title, authors, year) to be used. DOIs and ISBNs are exact lookups and are not affected. Whole number, 50 to 100; default 80.
run_max_itemsNoOptional. Most results to return from this call (default from PANDA_MAX_ITEMS, 50). Also limits how many results the Actor produces and charges for, unless you set its own max field.
fixAllCapsTitlesNoFix ALL-CAPS titles. Some registry records store titles in capitals. Convert them to sentence case. Default: on.
run_timeout_secsNoOptional. Seconds to wait for results (default from PANDA_TIMEOUT_SECS, 120; max 300).
run_max_charge_usdNoOptional. Hard spending cap for this call in USD (default from PANDA_MAX_CHARGE_USD, 0.50).
sentenceCaseTitlesNoSentence-case article and book titles. APA, Harvard, IEEE and Vancouver use sentence case ("Deep residual learning for image recognition"). Registries often store Title Case, so we convert it; acronyms like CVPR, mRNA and COVID-19 are kept. MLA and Chicago re-capitalise automatically. Check proper nouns (names, places) in converted titles. Default: on.
listUnresolvedInFilesNoList unresolved references in the bibliography files. Append references we could not find to the end of each bibliography file, marked [UNRESOLVED - check manually], so nothing silently disappears. They are never charged. Default: on.

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only cover the read-only/open-world profile; the description adds substantial context beyond that: price ($0.003 per formatted citation), what is not billed (unresolved items, empty runs), a per-call spending cap via run_max_charge_usd, expected latency, and that bibliography files are written to the run's Apify key-value store rather than returned inline. It also discloses the minMatchScore resolution rule (exact for DOIs/IDs, fuzzy for text).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Structure is excellent — purpose, differentiation, cost, latency, return shape — and the routing guidance is front-loaded. There is some avoidable repetition: 'Only formatted citations are billed' appears twice, and 'all styles are one price' duplicates the styles field text, which costs it the top score.

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?

For a 14-parameter, zero-required-parameter actor wrapper with no output schema, the description is thorough: it describes the return envelope ({actor, count, items}), lists per-item fields, notes truncation behaviour and structuredContent, and covers pricing, caps, and timeouts. An agent has everything needed to size, budget, and interpret a call.

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?

Schema coverage is 100%, so the baseline is 3; the description earns extra by explaining cross-parameter interaction that the schema only hints at — run_max_items also limits what is billed and 'fills maxReferences when you leave it unset, so setting maxReferences higher can bill more than is returned'. It also states run_timeout_secs should be raised after timeout errors. Minor gap: it does not restate what minMatchScore or listUnresolvedInFiles do beyond the field docs.

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 opening sentence names a specific verb (Convert) and enumerates the accepted inputs (DOIs, ISBNs, PMIDs, arXiv IDs, titles, messy strings) and outputs (APA 7, MLA 9, Chicago, Harvard, IEEE, Vancouver, BibTeX, RIS). It explicitly distinguishes itself from reference_checker ('formats rather than audits') and literature_search, so an agent can route correctly without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives positive triggers ('Use when you need a clean bibliography or .bib/.ris export') and explicit exclusions with named alternatives ('Do not use to find papers (use literature_search) or to prove references are genuine (use reference_checker first)'). It also advises on call batching (request every style in one call) and on timeout recovery.

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

pdf_table_extractorPDF Table Extractor: PDF to Excel & CSV Converter with OCRA
Read-only

Extract every table from PDF files (by URL or from an Apify key-value store) into structured rows, Excel and CSV, with optional OCR for scanned pages. Unlike sec_financials_excel (standardized XBRL financials straight from SEC filings), this reads whatever tables a PDF contains. Use when the data you need is locked in PDF tables: reports, statements, government releases. Do not use for SEC-listed company financials (use sec_financials_excel, which is exact) or to find papers (use literature_search). Parameters: billing is per page analysed plus per table extracted, so pages and maxPagesPerPdf are the real cost levers; run_max_items does not cap pages. ocrScannedPages=false skips and lists scanned pages; turning it on adds the per-OCR-page price up to maxOcrPagesPerPdf, and is much slower. detection=auto tries ruled-grid then whitespace detection; force lattice or stream only if auto merges or splits columns. Files over 150 MB fail and are not charged. Returns per item (one per table): summary, pages, header, row and column counts and cell data; Excel/CSV files stay in the run's Apify key-value store.

Behavior: read-only; runs the Apify Actor pandadad0214/pdf-table-extractor (https://apify.com/pandadad0214/pdf-table-extractor) on your own Apify account. Price: $0.001 per page analysed; $0.003 per table extracted; $0.02 per scanned page ocr. Runs that find nothing are not charged per result, and spending is capped per call by run_max_charge_usd (default $0.50). run_max_items (default 50) limits items returned but does not limit what the Actor bills; use the tool's own limits and run_max_charge_usd. Most calls finish in 5-15 s for a few inputs; large inputs or crawls can take minutes, so raise run_timeout_secs (max 300) or shrink the input after a timeout error. Returns JSON {actor, count, items}; long text output is trimmed to whole items, with all items in structuredContent.

NameRequiredDescriptionDefault
pagesNoPages. Optional. Only these pages, e.g. 1-5, 8, 12-end. Leave empty for all pages (up to the page limit below).
pdfUrlsNoPDF URLs. Direct links to PDF files. Google Drive and Dropbox share links are converted to direct downloads automatically. Up to 150 MB per file.
pdfStoreNoKey-value store with PDFs. Optional. Pick a key-value store in your account that holds PDFs. The Actor gets read access to this store only.
detectionNoTable detection. Auto tries ruled-grid detection first and switches to whitespace (column alignment) detection when that recovers more of the table. Pick one mode if you know your PDF's style. Choices: auto = Auto (recommended); lattice = Ruled tables only (cell borders); stream = Whitespace tables only (no borders).auto
pdfStoreKeysNoRecord keys in that store. Optional. Keys of the PDFs to process (e.g. REPORT.pdf). Leave empty to process every PDF record in the store (up to 50).
run_max_itemsNoOptional. Most results to return from this call (default from PANDA_MAX_ITEMS, 50). Also limits how many results the Actor produces and charges for, unless you set its own max field.
maxPagesPerPdfNoMaximum pages per PDF. Caps cost and run time on very long documents. You pay per page analysed. Whole number, 1 to 2,000 pages; default 100.
headerDetectionNoHeader row. Auto finds header rows above the first data row (multi-line headers are joined). First row = always use row 1. None = generic Column 1, Column 2… names. Choices: auto = Auto-detect; firstRow = Always the first row; none = No header.auto
ocrScannedPagesNoOCR scanned pages (beta). Pages with no text layer (scans, photos) are always detected. Off (default): they are skipped, listed in SUMMARY and on the Index sheet, and cost nothing. On: they are read with Tesseract OCR (English) and their tables are marked 'verify'. OCR is slow (about a minute per page) and can misread digits and dot leaders, so use it for clean scans and check the numbers.
mergeAcrossPagesNoJoin tables that continue on the next page. When a table carries on over a page break with the same columns, output it as one table with a page range. Default: on.
mergeWrappedRowsNoMerge wrapped rows. Join labels that wrap onto a second line back into one row, so numbers stay on the right line. Default: on.
numbersAsNumbersNoNumbers as numbers in Excel. Write 1,234 / (56) / 4.2% as real Excel numbers (parentheses = negative) so you can sum and chart them. CSV and dataset keep the text exactly as printed. Default: on.
run_timeout_secsNoOptional. Seconds to wait for results (default from PANDA_TIMEOUT_SECS, 120; max 300).
maxOcrPagesPerPdfNoMaximum OCR pages per PDF. OCR has its own cap because it is slow and priced per page. Extra scanned pages are flagged, not charged. Whole number, 0 to 100 pages; default 10.
run_max_charge_usdNoOptional. Hard spending cap for this call in USD (default from PANDA_MAX_CHARGE_USD, 0.50).

TDQS

A4.8/5.0
Behavior5/5

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

Goes well beyond the supplied annotations (readOnlyHint/openWorldHint/destructiveHint), disclosing the full cost model ($0.001/page, $0.003/table, $0.02/OCR page), the hard cap via run_max_charge_usd, the 150 MB failure-and-no-charge rule, and the 5-15 s typical / 300 s max runtime with timeout remediation. It also warns that OCR is slow and error-prone on digits. This is exactly the context annotations cannot carry.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose, differentiation, and use/don't-use routing before the operational detail, which is the right order. It is long but nearly every sentence carries distinct information; the main waste is pricing stated twice (prose 'billing is per page analysed plus per table extracted' then the explicit price list) and the run_max_items caveat repeated.

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?

With 15 optional parameters and no output schema, the description carries the burden well: it describes the return payload ({actor, count, items}, per-item summary/pages/header/row and column counts/cell data), notes that Excel/CSV artifacts remain in the run's key-value store, and mentions structuredContent trimming. An agent has enough to call it correctly and interpret the result without an output schema.

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?

Schema coverage is already 100%, yet the description adds cross-parameter meaning the schema cannot: which knobs actually drive cost ('pages and maxPagesPerPdf are the real cost levers'), that OCR cost scales up to maxOcrPagesPerPdf, and the detection-mode decision rule. It loses a point for conflicting with the schema on run_max_items, which the description says 'does not limit what the Actor bills' while the schema says it 'also limits how many results the Actor produces and charges for.'

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 opening sentence gives a specific verb and resource ('Extract every table from PDF files ... into structured rows, Excel and CSV, with optional OCR'), plus both input sources (URL or Apify key-value store). It explicitly differentiates from named alternatives ('Unlike sec_financials_excel ... this reads whatever tables a PDF contains') and names literature_search, so an agent can place it against siblings without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

States the positive case ('Use when the data you need is locked in PDF tables: reports, statements, government releases') and two explicit exclusions with redirects ('Do not use for SEC-listed company financials (use sec_financials_excel) or to find papers (use literature_search)'). It also gives conditional selection guidance inside the tool, e.g. 'force lattice or stream only if auto merges or splits columns.'

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

pubmed_evidence_tablePubMed Scraper: Articles, Abstracts & Evidence Table to ExcelA
Read-only

Run one or more PubMed queries and return a screening-ready evidence table: one row per article with PMID, journal, study design, sample size, retraction status and citation, plus PRISMA-style counts for the whole search. Unlike literature_search (all disciplines, OpenAlex ranking, citation-network walks), this uses native PubMed syntax and MeSH and is built for systematic-review screening. Use when the question is biomedical/clinical and you need reproducible PubMed queries or design filters (RCT, meta-analysis, cohort). Do not use for non-biomedical topics (use literature_search), for trial registrations (use clinical_trial_leads) or to verify a reference list (use reference_checker). Parameters: queries accept PubMed field tags ([tiab], [mh], [pt]) and Boolean operators; several queries are de-duplicated into one table. Filters (studyDesigns, excludeAnimalOnly, hasAbstract, freeFullTextOnly, excludePreprints) run before billing, and PRISMA counts still report what they removed. retractedArticles=flag bills retracted rows marked FIX; exclude drops them unbilled. sampleSize is parsed from the abstract and comes with sampleSizeConfidence; treat low confidence as unverified. Returns per item: summary, status, pmid, title, year, journal, studyDesign, sampleSize, sampleSizeConfidence, retractionStatus, retracted, citation. Excel, PRISMA and RIS/Rayyan import files stay in the run's Apify key-value store.

Behavior: read-only; runs the Apify Actor pandadad0214/pubmed-evidence-table (https://apify.com/pandadad0214/pubmed-evidence-table) on your own Apify account. Price: $0.004 per article found. Runs that find nothing are not charged per result, and spending is capped per call by run_max_charge_usd (default $0.50). run_max_items (default 50) limits items returned and fills maxResults when you leave it unset, so it also limits what is billed; setting maxResults higher can bill more than is returned. Most calls finish in 5-15 s for a few inputs; large inputs or crawls can take minutes, so raise run_timeout_secs (max 300) or shrink the input after a timeout error. Returns JSON {actor, count, items}; long text output is trimmed to whole items, with all items in structuredContent.

NameRequiredDescriptionDefault
dateToNoPublished to. Optional. 2025, 2025-12 or 2025-12-31.
sortByNoOrder. Order of the table. PubMed best match or most recent first. Choices: relevance = Best match (PubMed relevance); newest = Most recent.relevance
queriesYesPubMed search strings. One or more PubMed queries, written exactly as you would in PubMed (field tags like [tiab], [mh], [pt] and AND / OR / NOT work). Records found by more than one query are counted once and reported as duplicates.
dateFromNoPublished from. Optional. 2020, 2020-06 or 2020-06-30 (publication date).
languagesNoLanguages. Optional, e.g. english, spanish. Leave empty for all.
maxResultsNoMaximum articles. You pay per returned article ($0.004 each), so this also caps the cost. Counts for everything not included are still reported. Whole number, 1 to 10,000 results; default 200.
hasAbstractNoOnly records with an abstract. Removes records without an abstract (often letters, editorials and older records). Default: off.
contactEmailNoContact email for NCBI / Crossref (optional). Sent to NCBI and Crossref as the contact for this tool. Leave empty to use ours.
studyDesignsNoStudy designs. Keep only these designs (PubMed publication types / MeSH). Leave empty for all.
citationStyleNoCitation style. Style for the citation column and the CITATIONS file. Formatted by citeproc-js with the official CSL style. Choices: vancouver = Vancouver (NLM); apa = APA 7th edition; ieee = IEEE; harvard = Harvard (Cite Them Right); chicago = Chicago author-date; mla = MLA 9th edition.vancouver
run_max_itemsNoOptional. Most results to return from this call (default from PANDA_MAX_ITEMS, 50). Also limits how many results the Actor produces and charges for, unless you set its own max field.
excludePreprintsNoExclude preprints. Removes records with the Preprint publication type. Default: off.
freeFullTextOnlyNoFree full text only. Keep only records PubMed links to a free full text. Default: off.
includeAbstractsNoInclude abstracts. Include the abstract in the table and import files (recommended for screening). Default: on.
run_timeout_secsNoOptional. Seconds to wait for results (default from PANDA_TIMEOUT_SECS, 120; max 300).
excludeAnimalOnlyNoExclude animal-only studies. Removes records indexed with Animals but not Humans. Records not yet indexed are kept. Default: off.
retractedArticlesNoRetracted articles. Flag keeps them in the table, marked FIX (charged as returned articles). Exclude removes them before they are returned (not charged) and counts them in PRISMA. Choices: flag = Flag them (FIX); exclude = Exclude them.flag
run_max_charge_usdNoOptional. Hard spending cap for this call in USD (default from PANDA_MAX_CHARGE_USD, 0.50).

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare read-only, non-destructive, open-world, non-idempotent, so the description focuses on what annotations cannot carry: per-article pricing, which filters are applied before billing, that PRISMA counts still report removed records, the run_max_items vs maxResults billing interaction, the 300s timeout ceiling, and that long text output is trimmed to whole items. The only gap is no statement about how failures or partial results surface beyond the timeout hint.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose, then alternatives, then parameter behavior, then runtime/cost — a sensible order for an 18-parameter tool, and nearly every sentence carries information. It is long and repeats billing language already present in the maxResults and retractedArticles schema descriptions, which costs it a point.

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?

For an 18-parameter tool with no output schema, the description supplies the return field list, the envelope shape {actor, count, items}, the structuredContent trimming rule, latency expectations, and where Excel/PRISMA/RIS artifacts are stored. Combined with full schema coverage and annotations, an agent has everything needed to call it and interpret the result.

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?

Schema coverage is 100%, so baseline is 3, but the description adds genuinely non-obvious semantics: queries accept field tags and are de-duplicated across queries, retractedArticles=flag bills flagged rows while exclude does not, and sampleSizeConfidence should be treated as unverified at low values. The subtle warning that raising maxResults can bill more than run_max_items returns is the kind of interaction the schema alone cannot convey.

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?

Specific verb and resource: 'Run one or more PubMed queries and return a screening-ready evidence table', with the row schema (PMID, journal, study design, sample size, retraction status) enumerated. It explicitly distinguishes itself from literature_search, clinical_trial_leads and reference_checker by scope and data source, so an agent can route between them without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

States the positive condition ('biomedical/clinical and you need reproducible PubMed queries or design filters') and four explicit when-not cases with the sibling to use instead. Nothing about selection 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.

reference_checkerReference Checker: Fake, AI-Hallucinated & Retracted CitationsA
Read-only

Verify an existing bibliography against Crossref: flags fake (AI-hallucinated), miscited and retracted references, one row per reference. Unlike citation_formatter, it judges whether a reference is real and accurate; it does not produce formatted styles. Use when you must audit a reference list, DOIs or titles before submission or review. Do not use to discover new papers (use literature_search or pubmed_evidence_table) or to restyle citations (use citation_formatter). Parameters: give bibliography, dois or titles (at least one). Lowering minMatchScore finds more but risks false matches; includeCandidates adds audit detail without extra charge. mode=monitor re-checks the DOIs/ORCID works against the state saved under monitorName and reports only new problems, so reuse the same monitorName on scheduled runs. Each reference checked is billed, so maxReferences/run_max_items cap cost on long lists. Returns per item: summary, status (OK/CHECK/FIX), verdict, matchedDoi, matchScore, mismatches (cited vs actual), integrity.status (retracted, corrected, expression-of-concern), openAccessUrl, warnings.

Behavior: read-only; runs the Apify Actor pandadad0214/reference-checker (https://apify.com/pandadad0214/reference-checker) on your own Apify account. Price: $0.01 per reference checked. Runs that find nothing are not charged per result, and spending is capped per call by run_max_charge_usd (default $0.50). run_max_items (default 50) limits items returned and fills maxReferences when you leave it unset, so it also limits what is billed; setting maxReferences higher can bill more than is returned. Most calls finish in 5-15 s for a few inputs; large inputs or crawls can take minutes, so raise run_timeout_secs (max 300) or shrink the input after a timeout error. Returns JSON {actor, count, items}; long text output is trimmed to whole items, with all items in structuredContent.

NameRequiredDescriptionDefault
doisNoDOIs. DOIs to check (bare 10.xxxx/..., doi: prefix or https://doi.org/ URLs).
modeNoMode. 'check' = the normal one-off check. 'monitor' = re-check the DOIs (and/or ORCID works) and compare with the previous run's saved state. Choices: check = Check references (one-off); monitor = Monitor DOIs / ORCID for new retractions (schedule it).check
orcidNoORCID iD (monitor mode). Optional. Monitor every DOI on this researcher's public ORCID record (plus Crossref works tagged with it), e.g. 0000-0002-1825-0097. Combined with the DOIs list.
titlesNoPaper titles. Article titles to look up when you have no full reference.
monitorNameNoMonitor name (monitor mode). Optional. Name of the key-value store in your account that keeps state between runs (letters, digits, hyphens). Use a different name for each list you monitor. Default: refcheck-monitor-, or refcheck-monitor.
bibliographyNoBibliography / reference list. Paste a reference list in any common style (APA, MLA, Chicago, Vancouver, IEEE, Harvard). One reference per line, numbered ([1], 1.), or separated by blank lines.
contactEmailNoContact email for Crossref (optional). Optional. Sent to Crossref as the mailto contact so requests use its faster 'polite' pool. Never shared elsewhere.
maxReferencesNoMax references per run. Safety cap on references checked (each is billed). Whole number, 1 to 20,000 references; default 1,000.
minMatchScoreNoMinimum match score (0-100). How close a Crossref record must be (title, authors, year) to count as found. Lower finds more but risks false matches. Whole number, 50 to 100; default 80.
run_max_itemsNoOptional. Most results to return from this call (default from PANDA_MAX_ITEMS, 50). Also limits how many results the Actor produces and charges for, unless you set its own max field.
checkOpenAccessNoFind open-access links. Look up free legal full-text links via OpenAlex. Default: on.
run_timeout_secsNoOptional. Seconds to wait for results (default from PANDA_TIMEOUT_SECS, 120; max 300).
includeCandidatesNoInclude candidate matches. Also output the top Crossref candidates and their scores for each reference (useful for auditing). Default: off.
run_max_charge_usdNoOptional. Hard spending cap for this call in USD (default from PANDA_MAX_CHARGE_USD, 0.50).

TDQS

A4.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true, destructiveHint=false and idempotentHint=false, and the description is consistent with all of them ('read-only'). It adds real value beyond them: the Apify actor and account it runs under, $0.01-per-reference billing, the run_max_charge_usd cap, that finding nothing is not charged, timeout behavior (5-15 s typical, raise run_timeout_secs to 300), and that monitor mode persists state in a key-value store. That is substantive operational context, though it is packed into a single dense block rather than organized by concern.

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?

Purpose and sibling differentiation are front-loaded, followed by usage, then parameters, then runtime/billing behavior, then return shape — a sensible ordering. The prose is dense but nearly every sentence carries non-obvious information (billing mechanics, monitor state, timeout escalation) rather than restating the schema.

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?

For a 14-parameter, zero-required, billed, open-world tool with no output schema, the description covers what an agent needs: at least one of bibliography/dois/titles is required, cost and cap mechanics, timeout escalation, persisted monitor state, and an explicit per-item return field list (status, verdict, matchedDoi, matchScore, mismatches, integrity.status, openAccessUrl, warnings). Little is left to inference.

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 coverage is 100%, so the schema already documents all 14 parameters and the baseline of 3 applies. The description does add cross-parameter meaning the schema cannot: lowering minMatchScore trades recall for false matches, includeCandidates is free, run_max_items fills maxReferences when unset, and setting maxReferences higher can bill more than is returned — genuine semantic value, but scattered and not systematic.

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 opening sentence gives a specific verb and resource ('Verify an existing bibliography against Crossref') plus the failure classes it detects (fake/hallucinated, miscited, retracted) and the output shape ('one row per reference'). It then explicitly contrasts itself with citation_formatter ('judges whether a reference is real and accurate; it does not produce formatted styles'), so an agent can separate it from siblings without reading schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It states the trigger ('Use when you must audit a reference list, DOIs or titles before submission or review') and both exclusions with named alternatives: discovery goes to literature_search or pubmed_evidence_table, restyling goes to citation_formatter. Monitor-mode usage (reuse the same monitorName on scheduled runs) is also specified.

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

researcher_expert_finderGoogle Scholar Author Alternative: Find Experts & KOLs by TopicA
Read-only

Rank the academic experts and key opinion leaders on a research topic from OpenAlex, with institution, ORCID, h-index, topic paper counts and their recent topic papers. Unlike literature_search (returns papers) this returns people; unlike company_team_finder (staff listed on a company website) it covers academics by publication record. Use when you need reviewers, KOLs, collaborators or speakers for a topic, optionally by country or institution. Do not use for company contacts (use company_team_finder) or for papers themselves (use literature_search). Parameters: the ranked pool is the 200 authors with the most matching papers, so maxResults above 200 adds nothing. maxAuthorsPerPaper ignores mega-collaboration papers that would inflate everyone on them; raise it only for physics-style fields. yearFrom/yearTo limit which papers count, while activeSince filters people. includeOrcid adds employment and bio at no extra charge. Returns per item: expert score, name, ORCID, current institution and country, h-index, total and topic works/citations, recent topic papers (title, year, DOI, citations), summary.

Behavior: read-only; runs the Apify Actor pandadad0214/researcher-expert-finder (https://apify.com/pandadad0214/researcher-expert-finder) on your own Apify account. Price: $0.0025 per expert found. Runs that find nothing are not charged per result, and spending is capped per call by run_max_charge_usd (default $0.50). run_max_items (default 50) limits items returned and fills maxResults when you leave it unset, so it also limits what is billed; setting maxResults higher can bill more than is returned. Most calls finish in 5-15 s for a few inputs; large inputs or crawls can take minutes, so raise run_timeout_secs (max 300) or shrink the input after a timeout error. Returns JSON {actor, count, items}; long text output is trimmed to whole items, with all items in structuredContent.

NameRequiredDescriptionDefault
topicYesResearch topic. What the experts work on, e.g. perovskite solar cells, antimicrobial resistance, large language models in healthcare. Matched against paper titles and abstracts. Use quotes for exact phrases ("machine learning") and AND / OR / NOT for Boolean searches.perovskite solar cells
sortByNoSort. Expert score (default) blends matching papers, their citations and h-index. Or sort by a single number. Choices: expertScore = Expert score; topicWorks = Matching papers; topicCitations = Citations of top matching papers; citations = Total citations; hIndex = h-index.expertScore
yearToNoPapers to year. Optional. Only count matching papers published up to this year. Whole number, 1900 or more.
minWorksNoMinimum total works. Optional. Total works on the person's OpenAlex profile. Whole number, 0 or more works.
yearFromNoPapers from year. Optional. Only count matching papers published in or after this year, e.g. 2020 for people active in the field recently. Whole number, 1900 or more.
countriesNoCountries. Optional 2-letter ISO country codes (US, GB, DE, IN, AU…). Keeps experts whose current institution is in one of these countries, and counts only papers with an author in them.
minHIndexNoMinimum h-index. Optional. Whole number, 0 or more.
maxResultsNoMaximum experts. You pay per expert returned, so this also caps the cost. Up to 200 (the ranked pool is the 200 authors with the most matching papers). Whole number, 1 to 200 results; default 25.
activeSinceNoActive since (year). Optional. Only keep people who published anything in or after this year (uses OpenAlex yearly counts for the last ~10 years). Whole number, 1900 or more.
institutionNoInstitution. Optional. University, hospital, lab or company name (e.g. Stanford University), a ROR ID or an OpenAlex institution ID (I…). Sub-units count too: a university includes its schools and hospitals. The matched institution is shown in the search log.
includeOrcidNoAdd ORCID details. For experts with an ORCID iD, add current employment and role, keywords, websites and a short biography from the public ORCID record. Default: on.
minCitationsNoMinimum total citations. Optional. Whole number, 0 or more citations.
minTopicWorksNoMinimum matching papers. Each expert must have at least this many papers on your topic. Whole number, 1 or more papers; default 2.
run_max_itemsNoOptional. Most results to return from this call (default from PANDA_MAX_ITEMS, 50). Also limits how many results the Actor produces and charges for, unless you set its own max field.
papersPerExpertNoRecent papers per expert. How many of each expert's newest matching papers to list (title, year, DOI, citations). 0 to skip. Whole number, 0 to 10 papers; default 3.
run_timeout_secsNoOptional. Seconds to wait for results (default from PANDA_TIMEOUT_SECS, 120; max 300).
maxAuthorsPerPaperNoIgnore papers with more authors than. Large collaboration papers (hundreds of authors) would make everyone on them look like an expert. Papers with more authors than this are not counted. Whole number, 1 or more authors; default 50.
run_max_charge_usdNoOptional. Hard spending cap for this call in USD (default from PANDA_MAX_CHARGE_USD, 0.50).

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already declare read-only and non-destructive, so the description correctly spends its words on what the annotations cannot say: the Apify Actor it runs, $0.0025 per expert pricing, the no-charge-on-empty-runs rule, the per-call spending cap, and realistic 5-15 s latency with timeout remediation. It also clarifies the run_max_items / maxResults billing interaction, which is a genuine behavioral gotcha.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose and sibling differentiation before mechanics, and every section (use, don't use, params, behavior, returns) is labeled implicitly by position. The parameter recap paragraph is somewhat long given 100% schema coverage and repeats a few schema facts, which keeps it from a 5.

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?

For an 18-parameter tool with no output schema, the description supplies the return envelope ({actor, count, items}), the per-item field list (score, ORCID, institution, h-index, recent papers), and the structuredContent trimming behavior. Combined with cost, latency, and timeout guidance, an agent has everything needed to call it and interpret results.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3; the description earns above that by adding cross-parameter semantics the schema does not spell out, notably that the ranked pool is capped at 200 authors so maxResults above 200 adds nothing, and that run_max_items fills maxResults and therefore bounds billing while a larger maxResults can bill more than is returned. The yearFrom/yearTo-vs-activeSince and maxAuthorsPerPaper notes largely restate the schema, so this sits at 5 rather than higher.

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?

Opens with a specific verb and resource ("Rank the academic experts and key opinion leaders on a research topic from OpenAlex") and immediately disambiguates against the sibling literature_search ("returns people" vs "returns papers"). An agent can pick this tool without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete use cases (reviewers, KOLs, collaborators, speakers), states the optional country/institution dimension, and adds explicit exclusions with named alternatives ("Do not use for company contacts (use company_team_finder) or for papers themselves (use literature_search)"). Nothing 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.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 6 tool updatesv0.1.0
    • First observedcitation_formatter
    • First observedliterature_search
    • First observedpdf_table_extractor
    • First observedpubmed_evidence_table
    • First observedreference_checker
    • First observedresearcher_expert_finder

TDQS

A4.6/5.0

Scored across 6 tools

Disambiguation5/5

Each tool occupies a distinct slot in the research workflow: discover papers (literature_search), screen biomedical literature (pubmed_evidence_table), format citations (citation_formatter), audit references (reference_checker), find people (researcher_expert_finder), and pull tables from PDFs (pdf_table_extractor). Descriptions explicitly name the nearest neighbour and give a 'Do not use X, use Y' rule for the only genuinely close pairs (check vs. format, OpenAlex vs. PubMed). The residual overlap of literature_search/pubmed returning ready-made citations is a side output, not a competing use case.

Naming Consistency5/5

All six names follow the same snake_case <subject>_<function> compound pattern (reference_checker, citation_formatter, literature_search, researcher_expert_finder, pdf_table_extractor, pubmed_evidence_table). No mixing of camelCase, verb-first, or vague one-word names; each name states the resource and the operation.

Tool Count5/5

Six tools is well within the sweet spot and each maps to a clearly separate stage of a literature/research pipeline, so nothing feels redundant or padded. No obvious missing capability is being papered over by splitting or merging tools.

Completeness4/5

The surface covers the discovery → screening → verification → formatting loop plus two adjacent needs (expert finding, PDF table extraction), which is strong lifecycle coverage for a research toolkit. Minor gaps remain: no full-text/abstract-level reading or data-extraction tool for a specific paper, and no library/deduplication management across result sets, but agents can work around these via literature_search output and pdf_table_extractor.

Maintenance

ActivityMaintained
ResponsivenessNo recent community issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Provides MCP tools to check reference lists for retracted or problematic citations, retrieve nuanced editorial statuses with evidence, and monitor institutions for newly flagged papers using open data from OpenAlex, Retraction Watch, and Crossref.
    3
    24 PyPI
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Enables AI agents and LLM tools to verify academic citations against real literature, detect hallucinated references, retrieve authoritative metadata and DOIs, generate BibTeX/APA/IEEE citations, and search over 200M+ scientific publications via MCP tools.
    3
    17 npm
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables academic integrity auditing, manuscript preparation, literature search, journal formatting, and submission packaging through local MCP tools.
    -
  • F
    license
    Not graded
    quality
    B
    maintenance
    Enables users to audit academic citation contexts, calculate scientific consensus ratios, and generate credibility badge indexes for verified citations through MCP-compliant tools.
    8
    -