Model Context Protocol server

Your agent should read the request, not your description of it.

Charlotte captures the HTTPS your app actually sent, then exposes it to your coding agent over MCP. Claude Code, Claude Desktop, VS Code and Cursor can search a whole session, open any request and response, replay it, and change the traffic — without you pasting a single header into a chat window.

Loopback only · Write tools off by default · No cloud inference

Claude Code Claude Desktop VS Code & Copilot Cursor Any MCP client

The problem it solves

Debugging a failing request with an AI agent usually means copying a cURL command out of devtools, pasting it into a chat window, and hoping you grabbed the right header. The agent reasons about your description of the traffic. If the description is wrong — and the reason the request is failing is usually that something is not what you think it is — the answer is wrong too.

Charlotte removes the copying step. It sits as a proxy on your own machine, decrypts HTTPS from any client you point at it, and serves the captured flows to your agent as structured data. The agent reads the actual bytes.

Everything stays local. The MCP server binds to 127.0.0.1 and is never exposed to the network. Charlotte has no backend, no account and no telemetry — there is no server to send your traffic to.

1. Install Charlotte

The MCP server is built into the desktop app and starts with it. There is no separate package to install.

Or from a terminal, if you would rather not open the Store app:

winget install --id 9PD5RZKFCM19 --source msstore

In the app, open Settings → AI agents (MCP server) and turn on Expose captured traffic to agents. The server starts on port 8765 by default.

2. Connect your agent

Claude Code

Charlotte speaks streamable HTTP, so a single command is enough:

claude mcp add --transport http charlotte http://127.0.0.1:8765/

Add --scope user to make it available in every project rather than just the current one. Check it connected with claude mcp list.

Claude Desktop, Cursor, and other stdio clients

Clients that launch the server as a subprocess use Charlotte's stdio bridge, which relays JSON-RPC to the running app and streams live capture events back.

Windows. The executable lives under a versioned WindowsApps path, so don't type it by hand — Charlotte's Settings → AI agents screen shows the exact command with a copy button. It looks like this:

{
  "mcpServers": {
    "charlotte": {
      "command": "C:\\Program Files\\WindowsApps\\...\\Charlotte.exe",
      "args": ["--mcp-stdio", "--mcp-port", "8765"]
    }
  }
}

macOS.

{
  "mcpServers": {
    "charlotte": {
      "command": "/Applications/Charlotte.app/Contents/MacOS/Charlotte",
      "args": ["--mcp-stdio", "--mcp-port", "8765"]
    }
  }
}

Live capture stream

Anything that can read Server-Sent Events can watch capture happen in real time, including streaming LLM responses arriving token by token:

curl -N http://127.0.0.1:8765/events

Filter with ?events=flow_chunk,flow_completed. Sensitive headers are redacted by default.

3. What your agent can do

Read tools — always available

  • list_flows — page through captured requests with their status, host and timing.
  • get_flow — open one request and response in full, with the decoded body.
  • search_flows — a real query language across the session.
  • stats — totals, hosts and status-code breakdown.
  • audit_session — Charlotte's own security and privacy audit, returned as Markdown.

Write tools — off until you enable them

  • replay_flow — re-send a captured request, with or without changes.
  • create_rewrite — add a rule that rewrites headers, bodies or status codes.
  • create_map_local — serve a request from a file on disk.
  • set_breakpoint — pause matching traffic so it can be edited in flight.
Write tools stay disabled until you tick Allow AI agents to modify rules & replay requests in Settings, and every action is written to the debug log.

The query language

search_flows takes filters your agent can compose, with globs, ranges, OR and NOT:

# everything that failed
status:>=400

# one vendor's API only
host:*.stripe.com

# requests whose body mentions a token, excluding preflight
body:"token" NOT method:OPTIONS

What that looks like in practice

Point your app at Charlotte, reproduce the bug, then ask the agent in plain language:

"The login call is coming back 401. Look at the actual request
 Charlotte captured and tell me what's wrong with it."

The agent calls search_flows for status:401, opens the flow with get_flow, and reads the header you got wrong — instead of guessing from a paraphrase.

Security posture

  • Loopback only. The server binds to 127.0.0.1. It is not reachable from your network.
  • Read-only by default. Nothing can change your traffic until you explicitly allow it.
  • Header redaction. Sensitive headers are redacted in the live stream by default; you can turn that off.
  • No cloud inference. Charlotte's own AI analysis runs on-device. Your traffic is never sent to an AI service — ours or anyone else's.
  • Your CA key stays put. The root CA's private key is encrypted with Windows DPAPI (or the macOS Keychain) and never leaves the machine.

Charlotte is for inspecting traffic you are authorised to inspect: your own applications and devices, or systems you have permission to test.

Give your agent the real traffic

Free for 14 days with every feature unlocked. No account, no card, no sign-up.