The split worth learning is rules against values: rules say what whistle rewrites, values hold reusable payloads a rule can point at, and both have their own create, rename, group and delete tools. Replay is asynchronous by design — replayRequest returns before the response exists, so the outcome comes from a follow-up getInterceptInfo call on the same URL, and bodies arrive base64-encoded either way. getAllValues can return a large payload, which is why the index-and-name listing exists next to it.
A server over a whistle proxy's admin interface — rules and rule groups, named values, the proxy's own switches, captured traffic for a URL, and request replay.
- Rules created, renamed, updated, enabled, disabled and deleted one at a time, or switched together with setAllRulesState
- Rule groups as real objects: create a group, then move rules into and out of it
- Named values with a size-aware read path — getValueList returns index and name only, getValue returns one value with its data, and getAllValues returns the lot
- Five switches under tool control: the proxy itself, HTTP interception, HTTPS interception, HTTP/2 and multi-rule mode
- Captured traffic for a URL through getInterceptInfo, filtered by start time and count, with request and response returned base64-encoded
- replayRequest to re-send a captured request with your own method, headers, body and optional HTTP/2
A whistle proxy already running for the server to talk to. No account and no key. MIT.
One command — npx -y whistle-mcp-tool
