Auto-instrument every Model Context Protocol tool call, list_tools, call_tool, and read_resource, with zero code changes. Fluiq also caches repeated MCP tool results, eliminating redundant server round-trips.
Free tier · No credit card · 2-minute setup
Every call_tool invocation is a traced span with the MCP server URL, tool name, input arguments, response, and end-to-end latency including server processing time.
Fluiq caches repeated call_tool and list_tools responses keyed by server URL and arguments, identical requests are served instantly without a round-trip to the MCP server.
list_tools calls are traced and cached so agents that enumerate available tools on every turn stop paying the network cost after the first request.
import fluiq
fluiq.instrument(api_key="fl_...") # patches MCP client automatically
fluiq.optimize() # also caches repeated tool results
from mcp import ClientSession
from mcp.client.stdio import stdio_client
import asyncio
async def run():
async with stdio_client(server_params) as (read, write):
async with ClientSession(read, write) as session:
await session.initialize()
# list_tools is traced + cached after first call:
tools = await session.list_tools()
# call_tool is traced + cached by (tool_name, args):
result = await session.call_tool(
"search", {"query": "LLM observability"}
)
asyncio.run(run())Every call to these methods is automatically traced, no decorators, no wrappers, no manual spans.
ClientSession.list_tools()ClientSession.call_tool()ClientSession.list_resources()ClientSession.read_resource()ClientSession.list_prompts()ClientSession.get_prompt()Free tier. No credit card. Full traces, security scanning, and evals on your first MCP call.
50,000 free traces / month · 1,000 evals / month · 14-day retention