Panda Research MCP: Stop Your Agent Citing Fake Papers
Pricing
Pay per event + usage
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
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
19 hours ago
Last modified
Categories
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:
| Status | Meaning | What the agent should do |
|---|---|---|
| OK | Verified against a real record | Safe to cite |
| CHECK | Real, but details differ, or there's a correction, expression of concern or preprint flag | Read the note first |
| FIX | Not found, wrong paper, or retracted | Don't cite it as written |
What the agent gets
| Tool | What it does | Per call |
|---|---|---|
check_references | Verifies 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_citations | Turns 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_literature | Finds up to 20 real papers in 250M+ OpenAlex works, with citation counts, free PDF links from Unpaywall and retraction flags | $0.02 |
pubmed_evidence_table | Searches 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 Clientfrom fastmcp.client.transports import StreamableHttpTransporturl = "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_referencesorformat_citationscall (up to 10 references) - $0.02 per
search_literatureorpubmed_evidence_tablecall 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
- Crossref metadata and notices, including Retraction Watch data
- OpenAlex (CC0) for search, matching and citation counts
- Unpaywall for legal open-access PDFs
- PubMed / MEDLINE via NCBI E-utilities. Not affiliated with or endorsed by NLM/NCBI
- DataCite and Open Library for datasets, preprints and books
- citeproc-js and the CSL project styles (CC BY-SA 3.0)
Built by Panda Federation
Self-healing, local-first AI systems and data tools that run themselves.
The Panda Federation research toolkit:
- Panda Research MCP: all four tools for AI agents, over MCP
- Reference Checker: fake citations and retracted papers, found
- Citation Formatter: DOIs, ISBNs and messy references to APA, MLA, Chicago, Harvard, IEEE, Vancouver, BibTeX and RIS
- Literature Search: a Google Scholar alternative across 250M+ papers, with retraction screening
- PubMed Evidence Table: screening-ready evidence tables from PubMed
More from Panda Federation on Apify · GitHub
Build slow. Build steady. Build sovereign.