Send a thought, get one metathought that makes your agent inspect its own assumptions. Keyless.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
We haven't yet run this listing's install command through our automated sandbox check. This isn't a red flag β we're steadily working through the catalog.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
A question your agent would not think to ask itself.
An agent sends a thought, or a description of the task it is working on. It gets back one metathought: a short, abstract question that turns the agent's attention back onto its own task and assumptions before it continues. Not advice, not an answer. A question.
Keyless, free, deterministic. No LLM, no embeddings, no semantic similarity. Selection is a small heuristic over an open CSV you can read in five minutes, and the code that answers api.ejentum.com/self-inspect is the code in this repo. A test proves the two cannot drift.
Agents move forward. That is the whole problem. Left to itself, an agent:
None of these are knowledge failures. The model already knows better. They are attention failures: the agent never stops to ask the one question that would have caught it.
And it cannot reliably ask that question itself. Whatever picks what to reflect on is the same process that is already committed, so an agent that "double-checks" tends to re-run its own bias and call it confidence. Acknowledging a trap is not escaping it.
Self-Inspect is the external question. It returns a metathought the agent would not have produced on its own: What is assumed? What is fixed? What does not follow? What is missing? When would this not hold? What confidence is warranted? The agent still does the thinking. The tool just makes it look.
Put it in the loop at the moments an agent would otherwise barrel through:
Send a thought, get a metathought, answer it to yourself, continue with more awareness. It always returns a question (there is no "no result" case), one call, no model in the loop, no key.
Self-inspect hands back the one question that names the assumption your claim is quietly resting on. Answer it with a concrete counterexample and rebuild the claim around what breaks; do not just acknowledge the question and move on. Call it only at a genuine wall you cannot get past on your own, never on a schedule: forcing it every step manufactures fake corrections that read worse than using nothing. (This recipe is what separated the strongest runs from the weakest in our own evaluation.)
From a multi-run benchmark (a small model and a frontier model, 40-turn open-ended reasoning, blind order-swapped judging):
Send a thought, get a metathought. No key.
REST (any language):
MCP, Claude Code:
MCP, Claude Desktop / Cursor / any HTTP-MCP client:
The MCP server exposes one tool, self_inspect, that takes a thought and returns the metathought. No install, no key.
Python (single file, zero dependencies):
For Python environments, dist/self_inspect.py is the whole engine in one file β the CSV is inlined, stdlib only, nothing to install. It runs the exact published selector locally (~2 ms per call, no network):
A cross-language parity test (test/parity.python.test.mjs) holds it byte-identical to the JS engine β same thought, same metathought, in Python, JS, or against the hosted endpoint.
| Surface | Endpoint | Auth | Returns |
|---|---|---|---|
| REST | POST https://api.ejentum.com/self-inspect | keyless, per-IP rate limit (120/min) | [{ label, metathought }] |
| MCP over HTTP | https://api.ejentum.com/self-inspect-mcp (Streamable HTTP) | keyless, per-IP rate limit (60/min) | tool self_inspect -> metathought text |
| MCP stdio / offline | the mcp/ package; SELF_INSPECT_LOCAL=1 runs the selector locally | keyless | tool self_inspect (npx self-inspect-mcp) |
Both hosted endpoints are keyless and protected by per-IP rate limiting plus standard security headers (HSTS, nosniff, frame-deny).
select(thought, rows) (src/selector.js) routes in two levels, deterministically, over the data in selfinspect.csv:
src/normalize.js).input_type): 3 x (type-name tokens present in the thought) + 1 x (distinct content tokens from that lens's questions present). Content tokens are the meta_thought words minus a small visible stopword list. Evidence aggregates across all of a lens's questions, so a lens can win on signal spread across several of its rows.strict over booster, then lexicographic lens name.operator_rank (the canonical question). matched: true.matched: false.Self-Inspect always returns a metathought. There is always a worthwhile question an agent can ask about its own task and assumptions, so the tool never returns null. The matched flag distinguishes a routed lens (true) from a universal default (false); the metathought is never empty. Deterministic: the same input always returns the same metathought. (To make more inputs route to a specific lens, add wording to the CSV, or a future triggers column, never a model.)
selfinspect.csv (~50 lenses, 137 questions):
| column | role | shipped to caller |
|---|---|---|
input_type | the cognitive lens; its name tokens are routing keys, weighted x3 | as part of id |
operator_rank | order within the lens (1 = canonical); tiebreak | as part of id |
runtime_tier | strict (core) or booster (perceptual); strict preferred on ties | no |
meta_thought | the returned text (verbatim) AND a source of content routing tokens | yes |
The returned id is input_type-operator_rank (e.g. confidence-4). To add or change a metathought, edit the CSV. Do not edit dist/backend.cjs or the deployed copy by hand.
npm run build regenerates dist/backend.cjs (the engine behind the hosted endpoint) and dist/self_inspect.py (the single-file Python port) from selfinspect.csv + src/normalize.js + src/selector.js (build/generate.mjs).
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/self-inspect-mcp)<a href="https://allmcps.com/mcp/self-inspect-mcp"><img src="https://allmcps.com/api/badge/self-inspect-mcp?style=directory" alt="Self Inspect MCP on AllMCPs" /></a>