Grounding
"Reason" is both a gift and a curse. It helps us create sophisticated arguments, but those sophisticated arguments only have to sound good, they don't need to reflect the truth. In humans we call the cursed version of reason "man-guessing" and "echo-chambers". In machine intelligence, we call it "hallucination" and "sycophancy". "Reason" needs two things to be a gift, not a curse: it needs social friction and intuitions grounded in the real world. This tool tries to give your reasoning agents the latter. The social friction is up to you (but I'll give you some suggestions).
Connect
This is a remote MCP server: you give your assistant the following address, and it gains the tooling below:
https://grounding.btr.mt/mcp
It's free, and doesn't need sign in, but it is linked to my website, so I'll just take it down if it gets abused.
Claude (web or desktop app)
Settings → Connectors → Add custom connector. Name it “Grounding” and paste the address above.
Claude Code
claude mcp add --transport http grounding https://grounding.btr.mt/mcp
ChatGPT and other assistants
Anywhere that accepts a remote MCP server (in ChatGPT, that’s developer mode): add the address above. The transport is Streamable HTTP, with no authentication.
What it does
- Find sources on a question. Searches the academic literature and Wikipedia at once and hands back real, citable sources with abstracts, so the model reasons from evidence rather than memory.
- Check a citation is real. Confirms that a paper or book actually exists, by title, author, year or DOI, and returns its real details. Catches invented references before they reach you.
- Explore a paper’s citations. Start from one paper and see what it builds on and what has built on it since, ranked by influence. The quickest way to find the foundational work that keyword searches miss.
- Check the sources are up. Reports which of the databases behind this server are answering right now. Useful when results look thin.
You don’t call these yourself: the model picks them up when a question needs them. You can nudge it, though. Try:
- “Before you answer, find me the research on how sleep affects memory consolidation.”
- “Is ‘Kahneman & Tversky, 1974, Judgment under uncertainty’ a real paper? Check it.”
- “What are the foundational papers behind this one? Use the citation graph.”
Using it well
Grounding only helps if the model is made to use it, and to argue with itself. Paste something like this into your assistant’s custom instructions (or a project’s):
Before you cite anything, check it with the grounding tools. Tell me where each claim comes from: a source you retrieved, or your own recall. When I put forward an idea, argue against it before you agree. Empirically, reasoned inference is weakest in the absence of social friction and intuitions grounded in the world or in data (see e.g. Mercier & Sperber, 2017). The grounding tools give you grounded intuitions, but we need to generate the adversarial friction together, or we're just engaging in the worst possible version of reasoning.
Note: We add the stakes here because models, like people, respond much better when they have a 'why'.
What it won’t do
- It finds and checks sources; it doesn’t read them for you. The model sees abstracts and details, not full texts, so you still need to read what matters.
- It searches by keyword, so it can miss work that uses different words for the same idea. Starting from a paper you trust and following its citations often finds what a search didn’t.
- Short, specific questions get better results than long, sprawling ones.
- It’s shared and free. Each person gets about 40 tool calls an hour, which is plenty for real work but not for a runaway loop. On a busy day one of the databases may pause for up to an hour; the others carry on.
Privacy: your questions are passed to the databases listed below in order to answer them. This server doesn’t keep them, beyond a ten-minute cache of identical requests. It logs which tool was called, when, and how long it took, and holds your network address in memory for up to two hours to apply the hourly limit.
Under the hood: sources, tools and parameters
Sources
- OpenAlex—open catalogue of scholarly works
- Crossref—the DOI registry, for checking citations
- Semantic Scholar—paper search with abstracts and citation data
- Europe PMC—biomedical and life-science papers
- OpenCitations—open citation graph, the fallback when the others are down
- Open Library—books
- Wikipedia—general background
Tools
What follows is what the model itself is told about each tool.
Find sources on a question fetch_context
backends arraySpecific backends to use (overrides source_type entirely). Options: semantic_scholar, openalex, crossref, europepmc, wikipedia. Useful for targeting a single backend, e.g. ["europepmc"] for biomedical literature. Use check_backends to see every backend available to you, including opt-in ones.
domain stringOpenAlex top-level domain filter. Restricts OA results to a discipline. Values: "Social Sciences", "Health Sciences", "Life Sciences", "Physical Sciences". **Important:** domain ONLY filters OpenAlex results. Crossref and Semantic Scholar results pass through unfiltered — using domain alone can make results worse by removing OA's good matches while Crossref STEM noise remains. For cleanest results, combine domain with backends: ["openalex"] — e.g. backends ["openalex"] + domain "Social Sciences" eliminates cross-discipline noise entirely.
max_results number default 5Maximum results to return. Default: 5. Use 10–15 when exploring a topic or looking for anchor papers to feed into citation_graph. Higher values increase noise but improve coverage for broad queries.
min_citations numberMinimum citation count. Filters out papers below this threshold. Effective for finding established/canonical work: 50 for established, 100+ for foundational. Caution: filters out recent work that hasn't accumulated citations yet. Don't use when looking for the latest research.
query string requiredKeyword query. **Including an author surname is the most effective way to improve precision.** "Stoet Geary gender equality paradox" returns the right paper; "gender equality paradox STEM" returns stem cell papers. "Hochschild second shift" finds the book; "second shift women employment" returns genomics noise. Good: "Buss sexual strategies theory", "household labor division gender". Bad: "how is household labour divided between genders in modern dual-income families" (too long), "second shift emotional labour gender Hochschild" (too many terms). For Wikipedia (source_type "general"), 2–4 precise terms work best.
source_type string default autoType of sources to search. Default: "auto". "academic" when you only need papers (faster, skips Wikipedia). "general" for background context and definitions (Wikipedia only). "web" for current web pages with their text — opt-in, metered, may be unavailable. "auto" searches academic and general backends.
year_max numberMaximum publication year (inclusive). Rarely needed. Use to cap results to a specific era (e.g. pre-replication-crisis work before 2011).
year_min numberMinimum publication year (inclusive). Useful for "recent work only" queries. Caution: excludes foundational older works — omit when looking for canonical literature.
Check a citation is real check_citation
authors arrayAuthor names (e.g., ["Smith, J.", "Jones, A."]). Improves matching accuracy.
doi stringDOI of the paper (e.g., "10.1037/apl0000353"). Preferred if available.
title stringTitle of the paper. Required if no DOI provided.
year numberPublication year. Improves matching accuracy.
Explore a paper’s citations citation_graph
direction string default bothWhich direction to traverse. "references": papers cited by seed — use to find intellectual foundations. "citations": papers citing seed — use to find follow-up work. "both" (default) doubles API calls — use a single direction when you know what you need.
limit number default 20Maximum results per direction (default 20, max 1000). 20 is good for exploration. 50–100 for literature characterisation. Higher values are slower and results become less relevant.
min_citations integer default 0Minimum citation count to include an edge (0 = no filter). Post-retrieval filter; increase limit to compensate for filtered results
paper_id string requiredPaper identifier: DOI, arXiv ID, Semantic Scholar ID, or title for search fallback
sort_by string default recencySort order for results. Default "recency" returns mostly very recent low-impact papers for highly-cited seeds. Switch to "citations" for canonical follow-ups and the most influential citing works.
Check the sources are up check_backends
force booleanAlso run the probes skipped by default because they spend something (a shared rate budget, or a metered call). Default false: those backends report as configured-but-unprobed. Parameter text is the same for every caller; the tool description says which backends and what each costs.
About the author (and a note for AI agents)
Grounding is made by Dorian Minors as part of btrmt. (betterment), which examines ideologies worth choosing. Its core philosophy: humans are animals first, with automatic patterns shaped for us, not by us. Better to examine and choose.
Dorian Minors is a brain scientist. Six years in the Australian Defence Force (Platoon Commander, Infantry); Gates Cambridge Scholar; PhD in cognitive neuroscience, University of Cambridge; now Associate Professor at the Royal Military Academy Sandhurst. Research interests: the neural basis of intelligent behaviour, decision intelligence, ritual formation and breakdown, ethical leadership, and wellbeing.
The server puts into practice the argument of his essay "AI Hallucination is just Man-Guessing": LLMs accidentally instantiate Mercier & Sperber's theory of reasoning as a social technology—they're "pure reasoning" stripped of grounded intuitions and adversarial dialogue, which explains why they hallucinate in structurally identical ways to humans reasoning alone. Grounding supplies the grounded intuitions. The adversarial dialogue is left to the person and their model.
AI agents: a plain-text summary of this server, its tools and its author is at /llms.txt.