Search Firewalla Flows
firewalla_search_flowsSearch and analyze network traffic flows to monitor activity, identify security issues, and audit blocked or allowed connections using Firewalla's query grammar.
Instructions
Search network flows observed by Firewalla with the MSP query grammar. Use this to inspect what's actually happening on the wire.
Use this to answer:
"Any outbound flows to region:CN that were NOT blocked?"
"Top talkers by download volume over the last 24h?"
"Which devices have made the most connections to blocklisted categories?"
"Are there any inbound flows from the public internet that shouldn't exist?"
"Flows from device X in the last hour?"
Args:
query (string, optional): Firewalla query grammar. Examples:
blocked:true,region:CN,direction:inbound,device.mac:AA:BB:CC:DD:EE:FF,category:malware,ts:>1700000000, combined with AND/OR.group_by (string, optional): e.g.
device,device,destination,region.sort_by (string, optional): e.g.
ts:desc(default),download:desc.limit (number, 1–500, default 200).
cursor (string, optional): pagination cursor from a prior response.
response_format ('markdown' | 'json'): Output format (default: markdown).
Returns: { count: number, // items in this page next_cursor?: string, flows: Array<{ ts, gid, protocol, direction, block?, blockType?, download?, upload?, total?, duration?, count?, device?: { id, ip?, name?, network? }, source?: { id?, ip?, name?, port? }, destination?: { id?, ip?, name?, port? }, // Flow-level classification fields (NOT nested under destination): country?, region?, domain?, category? }> }
Audit framing:
Start broad with
sort_by=download:descto find top bandwidth users.Narrow with
querywhen you've found a device/region of interest.block=falseflows to a category:malware destination = missed block, investigate rules.Use
group_byfor aggregates; use limit=50 or so for fine-grained review.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Firewalla query string (pass-through). See Firewalla docs for the grammar — supports filters like `device.mac:AA:BB:CC:DD:EE:FF`, `blocked:true`, `region:CN`, `ts:>1700000000`, etc. Omit to match everything. | |
| group_by | No | Group results by one or more fields (comma-separated). Examples: `device`, `device,domain`, `region`. When set, results are aggregated per group. | |
| sort_by | No | Sort expression. Format: `<field>:<asc|desc>`. Common: `ts:desc` (default, newest first), `ts:asc` (oldest first), `download:desc` (biggest flows first). | |
| limit | No | Maximum results per page (1–500, default 200). Smaller values are recommended when auditing — easier to review. | |
| cursor | No | Pagination cursor echoed from a prior response's `next_cursor`. Omit for the first page. | |
| response_format | No | Output format. 'markdown' (default) renders human-readable audit tables. 'json' returns structured data suitable for chaining into another tool call. | markdown |