Panda Research MCP: Stop Your Agent Citing Fake Papers avatar

Panda Research MCP: Stop Your Agent Citing Fake Papers

Pricing

Pay per event + usage

Go to Apify Store
Panda Research MCP: Stop Your Agent Citing Fake Papers

Panda Research MCP: Stop Your Agent Citing Fake Papers

MCP server for AI agents: verify citations, catch fake and retracted papers, find real ones in OpenAlex and PubMed, and format references in APA, MLA, IEEE or Vancouver.

Pricing

Pay per event + usage

Rating

0.0

(0)

Developer

Panda Federation

Panda Federation

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

19 hours ago

Last modified

Share

One MCP server that lets Claude, Cursor or any AI agent check its citations, catch retracted papers, find real sources and format references, before it answers.

Language models invent references. They look right, with plausible authors, a real journal and a DOI, and they don't exist. Panda Research MCP gives your agent four tools that look everything up in Crossref, OpenAlex, Unpaywall and PubMed, and answer with the status every Panda Federation tool uses:

StatusMeaningWhat the agent should do
OKVerified against a real recordSafe to cite
CHECKReal, but details differ, or there's a correction, expression of concern or preprint flagRead the note first
FIXNot found, wrong paper, or retractedDon't cite it as written

What the agent gets

ToolWhat it doesPer call
check_referencesVerifies up to 10 references (full citations, DOIs or titles). Flags fabricated, mismatched and retracted papers, with the matched DOI and each difference$0.01
format_citationsTurns up to 10 DOIs, arXiv IDs, PMIDs, ISBNs, titles or messy references into APA 7, MLA 9, Chicago, Harvard, IEEE or Vancouver, plus optional BibTeX$0.01
search_literatureFinds up to 20 real papers in 250M+ OpenAlex works, with citation counts, free PDF links from Unpaywall and retraction flags$0.02
pubmed_evidence_tableSearches PubMed and returns up to 20 articles with study design, sample size (only when it can be quoted from the abstract), retraction status, PRISMA counts and optional RIS$0.02

You pay only for calls that succeed. Calls with bad input, failed lookups, or searches that find nothing are free. There are no other per-item fees.

Connect it

MCP URL: https://pandadad0214--panda-research-mcp.apify.actor/mcp

Authenticate with your Apify API token as a Bearer token. Charges go to your Apify account.

Claude Desktop / Claude Code / Cursor (claude_desktop_config.json, .cursor/mcp.json, or ~/.cursor/mcp.json):

{
"mcpServers": {
"panda-research": {
"url": "https://pandadad0214--panda-research-mcp.apify.actor/mcp",
"headers": { "Authorization": "Bearer YOUR_APIFY_TOKEN" }
}
}
}

If your client only speaks stdio (older Claude Desktop builds), bridge it with mcp-remote:

{
"mcpServers": {
"panda-research": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://pandadad0214--panda-research-mcp.apify.actor/mcp",
"--header", "Authorization:${AUTH_HEADER}"],
"env": { "AUTH_HEADER": "Bearer YOUR_APIFY_TOKEN" }
}
}
}

Claude Code CLI:

claude mcp add --transport http panda-research https://pandadad0214--panda-research-mcp.apify.actor/mcp \
--header "Authorization: Bearer YOUR_APIFY_TOKEN"

Python (FastMCP client):

from fastmcp import Client
from fastmcp.client.transports import StreamableHttpTransport
url = "https://pandadad0214--panda-research-mcp.apify.actor/mcp"
async with Client(StreamableHttpTransport(url, headers={"Authorization": f"Bearer {token}"})) as c:
r = await c.call_tool("check_references", {"references": ["LeCun Y, Bengio Y, Hinton G. Deep learning. Nature. 2015;521:436-444."]})
print(r.structured_content["results"][0]["status"]) # OK

A tip for system prompts: "Before you give any citation, call check_references on it. Never show a reference with status FIX."

Example: check_references

Input:

{"references": [
"Wakefield AJ, et al. Ileal-lymphoid-nodular hyperplasia, non-specific colitis, and pervasive developmental disorder in children. Lancet. 1998;351:637-41.",
"Smith J, Patel R. Quantum transformers cure seasonal allergies in toddlers. Journal of Imaginary Medicine. 2021;12(3):45-67.",
"10.1056/NEJMoa2307563"
]}

Output (shortened):

{
"summary": {"checked": 3, "OK": 1, "CHECK": 0, "FIX": 2},
"results": [
{"index": 1, "status": "FIX", "verdict": "verified", "note": "RETRACTED. Do not cite it as supporting evidence. Matches a real record.",
"doi": "10.1016/s0140-6736(97)11096-0", "integrity": {"status": "retracted", "notices": [{"type": "retraction", "date": "2010-02-06"}]}},
{"index": 2, "status": "FIX", "verdict": "not-found", "note": "No matching record in Crossref or OpenAlex. It may be fabricated, or too obscure to index."},
{"index": 3, "status": "OK", "verdict": "verified", "doi": "10.1056/nejmoa2307563",
"matched": {"title": "Semaglutide and Cardiovascular Outcomes in Obesity without Diabetes", "year": 2023, "journal": "New England Journal of Medicine"}}
]
}

Example: pubmed_evidence_table

{"query": "semaglutide cardiovascular outcomes", "study_designs": ["rct"], "max_results": 5}

Returns each article's Vancouver citation, study design (from PubMed publication types), sample size with the quoted sentence and a confidence level (for example 17604 patients, high: "A total of 17,604 patients were enrolled"), retraction status and PubMed/DOI/PMC links, plus PRISMA counts such as 1008 identified, 929 excluded by the RCT filter, 79 after filters, 5 returned.

Limits, honestly

  • "Not found" isn't proof of fabrication. Very new, local or grey-literature items may not be indexed. The note says so.
  • Sample size is left blank unless it can be quoted. Outcomes, effect sizes and risk of bias are never extracted. A human reviewer does that.
  • Per call: 10 references, or 20 search results. For bulk jobs (hundreds of references or thousands of papers, with Excel, BibTeX and RIS files), use the standalone Actors below.
  • Retraction data comes from Crossref (including Retraction Watch), OpenAlex and PubMed. It's as current as those sources.
  • Not for writing coursework or ghostwriting. It checks and finds sources. It doesn't write papers for anyone.

Pricing

Pay per event, charged only for successful calls:

  • $0.01 per check_references or format_citations call (up to 10 references)
  • $0.02 per search_literature or pubmed_evidence_table call that returns results (up to 20 papers)

Example: an agent that checks 5 citations in one call and runs 2 searches pays $0.05 in tool fees. As with every Standby Actor, Apify can also bill normal platform usage while the server run is up (it stops 2 minutes after the last call). See Apify's Standby billing notes.

FAQ

Is my data stored? No. Tool calls aren't written to datasets. References are sent only to the public scholarly APIs listed below.

Does it call other Actors? No. The four tools run the same code as the standalone Panda Federation Actors inside this server, so there are no second runs and no extra per-item charges.

Which clients work? Any MCP client with Streamable HTTP and custom headers: Claude Desktop, Claude Code, Cursor, VS Code, Windsurf, the OpenAI Agents SDK, LangChain and others. Clients that only speak stdio can use mcp-remote.

Data sources and credits


Built by Panda Federation

Self-healing, local-first AI systems and data tools that run themselves.

The Panda Federation research toolkit:

More from Panda Federation on Apify · GitHub

Build slow. Build steady. Build sovereign.