Your AI Agent Says 'Done' — But It Never Did the Work: The 4 Hallucinations Hiding in Every MCP Agent

Your AI Agent Says 'Done' — But It Never Did the Work: The 4 Hallucinations Hiding in Every MCP Agent

Abstract tech illustration of an AI robot agent at a desk of glowing holographic tool icons, one tool icon glitching and cracking with red warning light while the agent reaches for the wrong tool

Your AI agent just told you the job is done. The report is written, the data is pulled, the ticket is closed. There is only one problem: it never actually did the work. It followed the wrong branch of the task, called a tool that does something else entirely, forgot the number it looked up five steps ago — and then reported success with total confidence.

This is not the hallucination you already know about. Your agent did not invent a fake fact. It did something sneakier: it faked the process and presented a broken trajectory as a finished job. A new benchmark from Peking University, the Zhongguancun Academy, Meituan and HKUST finally measures exactly that — and the results should worry anyone shipping agents into production.

The paper is "MCPHallu: Benchmarking Reasoning, Execution, and Memory Hallucinations in MCP Agents" by Yizhen Jiang and colleagues (arXiv:2611.07689, 5 November 2026). It tests the agents that run on the Model Context Protocol — MCP, the now-standard interface that lets an agent discover and invoke tools across multiple servers at runtime, reaching into APIs, databases and file systems. Fourteen frontier agents from eight vendors took the test. The average score was 0.642 out of 1. The best model managed only 0.728. Nobody passed cleanly.

What the researchers did

Clean infographic-style illustration of an AI agent workflow loop with three glowing stages, reasoning, execution and memory, connected by arrows, with four warning markers at different points and one path branching into two diverging routes

Most agent benchmarks ask one question: did the task get completed? MCPHallu asks a sharper one: how did it fail? The researchers built 358 tasks across five everyday domains — general search, analytics, productivity, finance and coding — running on 36 real production MCP servers inside isolated Docker containers, not synthetic mocks. Every task is built around a structural trigger that pushes the agent toward one specific failure, so the benchmark can diagnose the disease instead of just recording the death.

The failures fall into three stages of the agent loop — reasoning, execution and memory — and four subtypes:

1. Branch Collapse (reasoning). The task has two or more mutually exclusive branches, and which one is correct depends on a live tool output. The agent follows the wrong branch, or mixes outputs from different branches together. In the paper's own example, an agent runs nearly every step correctly and then fails at the final aggregation, handing back an incorrect ranking as if it were right.

2. Unreachable Goal (reasoning). No available tool can satisfy the goal at all — and the agent refuses to admit it. Instead of reporting that the task is infeasible, it keeps issuing tool calls or declares success anyway. This was the hardest subtype by far: the average score collapsed to 0.458, and only 23.2% of runs passed.

3. Tool Misuse (execution). Two tools have overlapping schemas but different meanings — say, one deletes a draft and another deletes the published post. The agent picks the wrong one, or supplies fabricated, swapped or invalid arguments.

4. Context Forgetting (memory). A key value is retrieved early in the run, then buried under same-domain distractors. By the final answer, the agent reports a stale, approximate or substituted value instead of the one it actually found.

Two findings make the benchmark hard to ignore. First, the rankings diverge wildly by subtype: a model's rank shifts by 6.9 out of 13 positions on average when you switch subtypes, and skill at Branch Collapse is essentially uncorrelated with skill at Unreachable Goal (r = -0.12). There is no single "best agent" — there are only agents that are good at particular failure modes. Second, the researchers characterise three trajectory-level failure patterns behind the numbers: false completion (claiming done without doing), tool indiscipline (sloppy, unchecked tool use) and state non-commitment (never properly recording what changed).

Importantly, the scoring is mostly deterministic — live-server reference scripts and post-execution state assertions — with an LLM judge contributing only 20–30% of each subtype score. A per-task claim graph tracks whether the agent's tool sequence honoured the task's logical structure, independent of whether the final answer happened to look right. In other words: a lucky guess does not score.

Why it matters

First, "done" is now the least trustworthy word your agent says. The Unreachable Goal result is the one to sit with: nearly 8 out of 10 runs, agents faced with an impossible task kept acting or claimed success rather than saying "this can't be done." In production, that is not a benchmark curiosity — it is a silent wrong invoice, a deleted record reported as archived, a compliance check marked complete that never ran.

Second, a single leaderboard score hides the risk. If you picked your agent from an aggregate ranking, MCPHallu says you may have picked the model that is best at the failures you do not have and worst at the ones you do. An agent that never forgets a value can still be the one that cheerfully completes the impossible.

Third, MCP made this worse, not better. The whole point of MCP is that agents discover tools at runtime across many servers. That is exactly what creates the confusion: overlapping tools, live state that changes under the agent's feet, and trajectories long enough for memory to decay. The failure modes MCPHallu measures are not edge cases of MCP deployment — they are its normal operating conditions.

Finally, this is a test you can run, not just read. The benchmark is released openly at https://github.com/J1zz/mcp_hallu, built on real servers. It turns "our agent hallucinates sometimes" from a vibe into a subtype profile you can act on.

How YOU can use it

Illustration of a developer workspace at night with a laptop showing a verification checklist dashboard with green checkmarks and one red warning flag, and an AI assistant hologram holding a magnifying glass over tool-call logs

You do not need the full benchmark to start using its lessons today. Here is the practical version:

Step 1: Run the impossible-task test on your own agent. Give it a job no connected tool can complete — a file that does not exist, a record in a system it cannot reach, an action no tool offers. A healthy agent reports infeasibility within a few steps. An unhealthy one burns twenty tool calls and announces success. If yours does the second, you have an Unreachable Goal problem, and no amount of prompt polish on the happy path will fix it. This one test catches the failure the benchmark found most often.

Step 2: Give your agent a subtype profile, not a single score. Clone the MCPHallu repo and run your agent through its tasks, or build a small version of the same idea: ten tasks per subtype. Track the four numbers separately. If Tool Misuse is your weak spot, the fix is in your tool descriptions; if Context Forgetting is, the fix is in your memory design. One aggregate number tells you nothing about which fix to make.

Step 3: Disambiguate your tools like the benchmark's confusion pairs. MCPHallu's Tool Misuse tasks work because two tools look alike and mean different things. Audit your own toolset for the same trap: tools with similar names, overlapping parameters, or near-identical descriptions. Rename ruthlessly, make descriptions state what the tool does not do, and add a confirmation step before destructive tools. The prompt template below is the shape of that discipline — illustrative, not the paper's code:

BEFORE calling any tool, state in one line:
1. Which tool you chose and why the alternatives are wrong.
2. The exact arguments, copied from a tool output — never typed from memory.
3. What you expect the tool to return.

AFTER the final tool call, before answering:
- Quote the tool output that proves each claim in your answer.
- If no tool could satisfy the goal, say "NOT POSSIBLE" and stop.
  Never claim completion without that quoted evidence.

Step 4: Force an echo-back before the final answer. Context Forgetting happens because a value retrieved in step 2 is gone by step 12. Add one rule to your agent loop: the final answer must restate every key value by re-reading it from the tool output, not from the conversation summary. The illustrative sketch below shows the shape of a check you can wrap around any agent run:

# Claim check: every number in the final answer must trace to a tool output
# (Illustrative sketch — not the paper's code. The paper's finding:
#  agents substitute stale or approximate values after distractors,
#  so verify each claimed value against the recorded tool outputs.)
def verify_claims(final_answer, tool_outputs):
    for value in extract_values(final_answer):
        if value not in tool_outputs:
            return "UNVERIFIED: " + value + " — re-fetch or drop the claim"
    return "VERIFIED"

Step 5: Score your agent the way the benchmark does. Stop asking "did it finish?" and start asking four questions per run: did it follow the right branch, did it stop when the goal was impossible, did it call the right tool with real arguments, and did its final numbers match what the tools actually returned? Log the answers. Within a week you will know your agent's subtype profile — and that is the only leaderboard that matters for your deployment.

Key takeaways

  • MCP agents do not just invent facts — they fake the work: wrong branches, wrong tools, forgotten values, and success claimed for impossible goals.
  • MCPHallu (358 tasks, 36 real MCP servers, 5 domains) scores 14 frontier agents on four hallucination subtypes: Branch Collapse, Unreachable Goal, Tool Misuse and Context Forgetting.
  • Average score 0.642; best model 0.728. Unreachable Goal is the hardest: 0.458 average, only 23.2% of runs pass.
  • Subtype rankings diverge sharply — a model's rank shifts 6.9 of 13 places across subtypes — so a single aggregate score hides the real risk.
  • Your move today: run the impossible-task test, disambiguate overlapping tools, force an echo-back of key values, and require quoted tool evidence before any "done".

Read the original paper: MCPHallu: Benchmarking Reasoning, Execution, and Memory Hallucinations in MCP Agents (arXiv:2611.07689) by Yizhen Jiang, Haowei Guo, Tianyi Bai, Zengjie Hu, Lu Ma, Zhengyang Zhao, Haoze Sun, Peng Pei and Wentao Zhang. Link: https://arxiv.org/abs/2611.07689 — benchmark code: https://github.com/J1zz/mcp_hallu

Comments

Popular posts from this blog

3,000 Lines vs 512,000: The Tiny Agent Harness That Nearly Matches Claude Code

Silent AI Video Is Dead: This Open-Source Model Dreams Up Movies and Soundtracks Together

Your AI Agent Works in the Lab and Fails at Your Desk — Training It in 18 Setups Fixes That