Aurelius
Aurelius is a fact-checked research MCP server that helps you conduct rigorous, citation-verified academic research through a structured workflow. It operates primarily in a host-driven mode where the connected application's LLM handles reasoning and writing, so no LLM API key is required for most operations.
Screen research topics: Evaluate whether a topic is acceptable under Aurelius's admission policy before drafting — returns a heuristic flag and the full policy for a final accept/reject decision.
Retrieve research policy: Fetch the full list of accepted vs. restricted research domains at any time.
Generate academic outlines: Scaffold a standard academic structure (Abstract → Introduction → ... → References) for any topic.
Search the web for evidence: Query live web sources via Tavily to find supporting evidence for factual claims, with options to limit results or filter to academic sources only (requires a Tavily API key).
Verify citations: Check whether a specific academic citation exists in reputable sources, catching hallucinated or misattributed references before they appear in a final draft (requires a Tavily API key).
Save research drafts: Persist a Markdown-formatted research draft to the output directory.
Save verification reports: Persist a fact-checking report with a status line (VERIFIED/REJECTED) and full details.
Run autonomous research loops: Execute the entire pipeline — screen → draft → fact-check → revise — automatically using Aurelius's own LLM, configurable by model, provider, and revision rounds (requires an OpenAI, Anthropic, or Google API key).
Integrates with Google Gemini CLI to provide fact-checked research capabilities, including topic screening, web search, citation verification, and report generation.
Integrates with ChatGPT (via remote deployment) to provide fact-checked research capabilities, including topic screening, web search, citation verification, and report generation.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@AureliusResearch the health effects of microplastics in drinking water and verify all citations."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Aurelius
A fact-checked research MCP server. Aurelius gives any MCP-capable app — Claude (Desktop / Code / claude.ai), Gemini CLI, Cursor, and (via a remote deployment) ChatGPT — a set of research tools that verify every citation against real scholarly databases (OpenAlex, Crossref — DOI-backed and retraction-aware) and every claim against live web sources before presenting it. No more hallucinated papers, no more silently-cited retracted studies.
Aurelius grew out of a multi-agent research framework and distills its best idea into a portable tool server: screen a topic → draft → fact-check → revise.
Why this design solves the "API cost" problem
By default Aurelius runs in host-driven mode: the app you connect it to (Claude, Gemini,
etc.) uses its own model to reason and write, and Aurelius just supplies the research and
fact-checking tools. That means Aurelius needs no LLM API key of its own — the tokens are
covered by your existing Claude/Gemini/ChatGPT subscription. Citation verification runs
against OpenAlex and Crossref — both
free, both keyless. The only optional key is Tavily, used for general
web_search and as a fallback when a citation isn't indexed in either scholarly database
(free tier available).
There's also an optional autonomous mode (autonomous_research / aurelius-research)
where Aurelius drives its own LLM — that one needs an LLM API key with quota.
Related MCP server: truth-anchor-agent
Install
pip install aurelius-mcpThe bare name
aureliuswas already taken on PyPI, so the package ships asaurelius-mcp. The import name (import aurelius) and the CLI command (aurelius) are unchanged.
This provides two commands:
aurelius— launch the MCP server (stdio). This is what MCP clients run.aurelius-research "<topic>"— run one autonomous research job from the terminal.
If
aureliusisn't found (the pip scripts dir may not be on your PATH — common on Windows), use the equivalent module form anywhere acommandis expected:"command": "python", "args": ["-m", "aurelius"].
Get a Tavily key (optional — for general web search)
Citation verification (verify_citation, verify_claims) needs no key — it runs against
the free, keyless OpenAlex and Crossref APIs. A Tavily key is only needed for web_search
(general factual-claim evidence) and as a fallback when a citation isn't indexed in either
scholarly database. Create a free key at https://tavily.com and expose it as
TAVILY_API_KEY (see the config snippets below, which inject it into the server's environment).
Connect it to your app (local / stdio)
Claude Desktop
Edit claude_desktop_config.json (Settings → Developer → Edit Config):
{
"mcpServers": {
"aurelius": {
"command": "aurelius",
"env": { "TAVILY_API_KEY": "tvly-your-key" }
}
}
}Restart Claude Desktop. See examples/claude_desktop_config.json.
Claude Code
claude mcp add aurelius --env TAVILY_API_KEY=tvly-your-key -- aureliusCursor
Add to ~/.cursor/mcp.json (or the project .cursor/mcp.json):
{
"mcpServers": {
"aurelius": { "command": "aurelius", "env": { "TAVILY_API_KEY": "tvly-your-key" } }
}
}Gemini CLI
Add to ~/.gemini/settings.json:
{
"mcpServers": {
"aurelius": { "command": "aurelius", "env": { "TAVILY_API_KEY": "tvly-your-key" } }
}
}Then just ask: "Use Aurelius to research the historical correlation between GDP growth and unemployment, and verify every citation."
Seeing it catch a bad citation
A real run on "the historical correlation between GDP growth and unemployment (Okun's law)":
Claude drafted the paper, then called verify_citation on every reference.
Citation | Verdict |
Okun, A. M. (1962). Potential GNP: Its Measurement and Significance. | ✅ Verified — corroborated by arXiv and Federal Reserve sources |
Knotek, E. S. II (2007). How Useful is Okun's Law? | ✅ Verified — Federal Reserve Bank of Kansas City |
A third citation with a misattributed author | ✏️ Caught and corrected before the draft was finalized |
Nothing unverifiable made it into the final draft. That's the whole point.
Seeing it catch a retracted paper
verify_citation doesn't just check that a paper exists — it checks OpenAlex's live
retraction registry. A real call against the (in)famous Wakefield MMR-autism paper:
verify_citation("Wakefield, A. J. et al. (1998). Ileal-lymphoid-nodular hyperplasia, "
"non-specific colitis, and pervasive developmental disorder in children."){
"verdict": "retracted",
"is_retracted": true,
"confidence": "high",
"source": "openalex",
"matched_work": {
"title": "RETRACTED: Ileal-lymphoid-nodular hyperplasia, non-specific colitis, ...",
"doi": "10.1016/s0140-6736(97)11096-0",
"year": 1998
},
"notes": "Retracted work — flagged by openalex. Do not cite."
}is_retracted is always a top-level field — impossible for a host model to miss or
rationalize past. A scholarly index can return several records for the same paper (the
original, a retraction notice, clean-looking duplicates); Aurelius specifically resolves
ties in favor of surfacing the retraction rather than picking whichever record looks cleanest.
Seeing it catch a mis-attributed citation
A title match alone is not a verification. Aurelius corroborates the cited author and year against the matched record, so it catches the subtle case a title-only checker waves through:
verify_citation("Okun, A. M. (1962). Potential GNP: Its Measurement and Significance."){
"verdict": "unverified",
"author_match": false,
"match_score": 1.0,
"matched_work": { "authors": ["Charles I. Plosser", "G. William Schwert"], "year": 1979 },
"notes": "Found a work with this title but different authors (found: Plosser, Schwert; cited: Okun) — likely not the paper you cited."
}The title matches perfectly (1.00), but the only indexed record with that title is a 1979
paper by Plosser & Schwert — not Okun's 1962 original. A title-only checker reports ✓;
Aurelius reports the truth and hands back the corrected_citation for the record it actually
found. When a citation carries a DOI or arXiv id, it's looked up directly for an exact match.
Tools
Tool | What it does | Needs |
| Screen a topic against the restricted-domain policy | — |
| Return the accept/reject policy | — |
| Standard academic (Markdown) outline scaffold | — |
| Section-by-section word budget for long-form papers | — |
| Verify against OpenAlex/Crossref/arXiv/Semantic Scholar — DOI-precise, retraction- & author-aware; returns a corrected citation + BibTeX | — (Tavily optional, fallback only) |
| Batch-verify citations/claims into a scored Evidence Ledger | — (Tavily optional, fallback only) |
| Verify a whole References block; returns a scored ledger + cleaned BibTeX | — (Tavily optional, fallback only) |
| Verify a statistic ('GDP grew 2.5% in 2023') against World Bank data | — (Tavily optional, fallback only) |
| Search the web for evidence about a factual claim | Tavily key |
| Style/readability pass on already-verified content | — (LLM key only if |
| Mermaid scaffold: flowchart / architecture / sequence | — |
| Compile-ready LaTeX article skeleton + BibTeX stub | — |
| Save (or append to) the Markdown draft | — |
| Save | — |
| Save the verification report | — |
| Run the whole loop itself | LLM key |
Outputs are written to ~/aurelius_output/ in your home directory (override with
AURELIUS_OUTPUT_DIR) — never to the process's current working directory, since MCP
clients often launch the server from a location you can't write to.
Long-form papers (20–80+ pages)
Call plan_paper_length(target_pages=40) for a section-by-section word-count budget, then
draft and verify_claims one section at a time, appending each with
save_draft(content, filename, append=True) so the host model never has to resend the whole
accumulated document. See SKILL.md for the full workflow.
A note on polish_prose
It's a readability pass on already-verified content — it fixes stiff, repetitive LLM phrasing (hedging chains, transition-word stacking, tricolon padding) while preserving every citation, number, and claim verbatim. It is explicitly not an AI-detector-evasion tool; pairing that with long-form academic paper generation would enable academic dishonesty, which is out of scope for a project whose entire premise is showing verifiable receipts.
The Claude skill
skill/aurelius/SKILL.md teaches a host model the exact
screen → plan → draft → verify → polish → save workflow, including the long-form
(section-by-section) path. Drop it into your Claude Code/Agent skills so the model uses the
tools rigorously.
Autonomous mode (optional, needs an LLM key)
export OPENAI_API_KEY=sk-... # or ANTHROPIC_API_KEY / GOOGLE_API_KEY
export TAVILY_API_KEY=tvly-...
aurelius-research "Health effects of microplastics in drinking water" --model gpt-4o-mini-2024-07-18 --rounds 2Provider is auto-detected from the model name (gpt-* → OpenAI, claude-* → Anthropic,
gemini-* → Google).
Platform support (honest status)
Platform | Status |
Claude Desktop / Code | ✅ Local stdio |
Gemini CLI, Cursor | ✅ Local stdio |
ChatGPT | ⚠️ Needs a remote (HTTP/SSE) deployment — on the roadmap |
Perplexity | ❌ No user-added MCP servers yet |
License
MIT
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/vibhorxpandey/Aurelius'
If you have feedback or need assistance with the MCP directory API, please join our Discord server