Loop is a remote MCP server. Mistral speaks MCP in two places — Le Chat supports custom MCP connectors, and the Mistral Agents API registers remote MCP servers through the mistralaiPython SDK. Either way, Loop’s four tools let Mistral search, verify, and act on real local businesses in Kreuzberg, Berlin.
In Le Chat, open the Connectors page, click + Add Connector, and switch to the Custom MCP Connector tab. Adding a connector is an administrator-only action — on Free, Pro, and Student plans the account owner is the administrator by default.
Set the connector name to loop (no spaces) and paste the server URL below. Loop needs no authentication for anonymous access, so click Connectand you’re done.
https://stayinloop.dev/mcpEnable the loop connector for a chat. Mistral can now call search, get_details, verify, and report against real Kreuzberg restaurants.
Custom MCP connectors are a current Mistral feature; exact labels in the Le Chat UI can change. If a button name differs from what you see here, look for the equivalent Add Connector → Custom MCP flow. See Mistral’s MCP connector docs for the canonical steps.
The MCP helpers live behind the agents extra of the mistralai package.
pip install "mistralai[agents]"
Mistral connects remote MCP servers with MCPClientSSE and SSEServerParams from mistralai.extra.mcp.sse. Register the client on a RunContext, then run a conversation — Loop’s tools are exposed to the agent automatically.
import asyncio import os from mistralai.client import Mistral from mistralai.extra.run.context import RunContext from mistralai.extra.mcp.sse import MCPClientSSE, SSEServerParams MODEL = "mistral-medium-latest" async def main(): client = Mistral(api_key=os.environ["MISTRAL_API_KEY"]) # Loop is a remote, streamable-HTTP MCP server. The mistralai SDK's # remote-MCP helper (MCPClientSSE) speaks the SSE/HTTP transport. loop = MCPClientSSE( sse_params=SSEServerParams(url="https://stayinloop.dev/mcp", timeout=100) ) async with RunContext(model=MODEL) as run_ctx: await run_ctx.register_mcp_client(mcp_client=loop) result = await client.beta.conversations.run_async( run_ctx=run_ctx, inputs="Find a vegan-friendly restaurant with outdoor seating in Kreuzberg, verify how fresh the data is, and report the outcome.", ) print(result.output_as_text) if __name__ == "__main__": asyncio.run(main())
Note: the mistralai SDK’s remote-MCP client is named MCPClientSSE (it speaks the SSE/HTTP transport); there is no separate MCPClientStreamableHTTPclass in the current SDK. Loop’s endpoint works over this transport. This mirrors Mistral’s own remote-MCP example; see the Mistral MCP docs for the full Agents API reference.
Have an API key?
A free key roughly doubles your rate limits (60 reads/min vs 30 for anonymous). In Le Chat, append ?key=sk_live_… to the connector URL:
https://stayinloop.dev/mcp?key=sk_live_YOUR_KEYIn the Python SDK, pass it as an Authorization header instead:
loop = MCPClientSSE( sse_params=SSEServerParams( url="https://stayinloop.dev/mcp", headers={"Authorization": "Bearer sk_live_YOUR_KEY"}, timeout=100, ) )
Get a free key at stayinloop.dev/#pricing — no credit card, instant.
“Find me a quiet restaurant with outdoor seating and vegan options in Kreuzberg tonight — then verify how fresh the data is, and report back whether the result was correct.”
This exercises all four tools: search finds candidates, verify re-checks freshness live, and report records the outcome — updating the record’s confidence for every future agent that calls Loop.