DEV Community

gentic news
gentic news

Posted on • Originally published at gentic.news

MCP Agents Log 'Success: True' While Tasks Go Nowhere — Protocol Bug

MCP returns null results inside HTTP 200 responses, causing agents to log success while tasks never run. Vouqis proxy catches this with structured audit logs.

MCP returns null results inside HTTP 200 responses, and agents treat status codes as truth. A tools/call with null result propagates silently, logging success while the task never executed According to Your MCP Agent is Logging.

Key facts

  • MCP returns null results inside HTTP 200 responses.
  • Three failure patterns: null propagation, retry masking, schema drift.
  • Vouqis proxy writes structured audit logs as NDJSON.
  • Null result causes agent to log success while task never runs.
  • 54% of 39,762 MCP servers have zero community adoption.

MCP is built on JSON-RPC 2.0 over HTTP. The error surface splits across two layers: HTTP carries transport status, JSON-RPC carries application status. They do not have to agree, and often they do not. A well-behaved MCP error includes a JSON-RPC error object; a silent failure returns {"result": null} with HTTP 200. Most agent frameworks check res.ok or the status code and move on, discarding the null body entirely.

Key Takeaways

  • MCP returns null results inside HTTP 200 responses, causing agents to log success while tasks never run.
  • Vouqis proxy catches this with structured audit logs.

Three failure patterns worth knowing

Building AI Agents with Model Context Protocol (MCP) Usi…

1. Null result propagation — A tools/call returns {"result": null} with HTTP 200. The agent logs the call as complete. The downstream system never receives the expected payload. This is the most common pattern and the hardest to catch because every layer reports success.

2. Retry masking — The agent retries a timed-out tools/call. The upstream MCP server sits behind a deduplication layer that executes the mutation once and acknowledges subsequent requests silently. The agent sees success on attempt four. Your audit log shows six calls. The task ran once but the agent has no idea which attempt was real.

3. Content schema drift — MCP's tools/call result schema requires a content array where each item has a type field. Servers written quickly omit type. The consuming agent deserializes the array, tries to route by type, finds undefined, and either silently drops the item or throws an uncaught exception swallowed by an outer try-catch. The agent logs success. The data was there. The schema was wrong.

Vouqis: a proxy that validates responses

How Agent Cards & Tasks Transform Multi-Agent Development in Agent-to ...

Vouqis sits between your agent and your MCP server. Every request and response passes through it. It validates both sides and writes a structured audit log as NDJSON with timestamp, method, tool name, latency, attempt number, and reason. The agent points at http://127.0.0.1:4444 instead of the MCP server directly. When a null result arrives, the proxy blocks it and logs: "decision": "block", "reason": "tools/call result is null or missing". That is the event you would have wanted at 10:04 AM instead of finding out from a customer complaint at 10:37 AM.

The project is at vouqis.tech. The source is on GitHub.

What to watch

Watch for Anthropic to address this in the MCP specification — either by mandating non-null results or adding a required status field. Also watch whether LangGraph and other agent frameworks add built-in null-checking for MCP tools/call responses.


Source: dev.to


Originally published on gentic.news

Top comments (0)