{"id":"har-summarize","version":"1.0.0","description":"Summarize a HAR 1.2 JSON log into deterministic request, status, MIME, host, timing, size, and redaction counts.","supported_operations":["summarize HAR file","aggregate HTTP archive requests","count HAR status codes","group HAR requests by host","summarize HAR MIME types","total HAR transfer sizes","aggregate HAR timings"],"unsupported_operations":["emit individual URLs or sensitive values","replay requests","analyze WebSocket frames"],"semantics":["Input is a HAR 1.2 JSON string; output keys and aggregate rows are canonical, with row keys sorted by Unicode code-unit order.","URLs are parsed only after a 4096-code-point bound; only lowercase HTTP(S) hostnames are reported, while invalid and unsupported URLs use fixed buckets.","Transfer size uses nonnegative integer response.bodySize, otherwise nonnegative integer response.content.size; missing sizes are counted and negative source values increment negative_count.","Timing uses nonnegative finite entry.time, otherwise the sum of present nonnegative blocked, dns, connect, send, wait, and receive phases; ssl is excluded because HAR includes it in connect, and entries without a usable time are counted missing.","Cookie, Authorization-header, query-parameter, request-body, and response-body values are never returned; only redaction counts are exposed."],"limits":{"max_input_bytes":1000000,"max_entries":2000,"max_counted_items":2000,"max_url_chars":4096},"pricing":{"status":"unpriced","charge_usd":null},"input_schema":{"type":"object","additionalProperties":false,"required":["har_json"],"properties":{"har_json":{"type":"string","minLength":1,"maxLength":1000000}}},"output_schema":{"type":"object","additionalProperties":false,"required":["request_count","methods","statuses","mime_types","hosts","timing","transfer","redaction_counts"],"properties":{"request_count":{"type":"integer","minimum":0,"maximum":2000},"methods":{"type":"array","maxItems":2000,"items":{"type":"object","additionalProperties":false,"required":["key","count"],"properties":{"key":{"type":"string"},"count":{"type":"integer","minimum":1}}}},"statuses":{"type":"array","maxItems":2000,"items":{"type":"object","additionalProperties":false,"required":["key","count"],"properties":{"key":{"type":"string"},"count":{"type":"integer","minimum":1}}}},"mime_types":{"type":"array","maxItems":2000,"items":{"type":"object","additionalProperties":false,"required":["key","count"],"properties":{"key":{"type":"string"},"count":{"type":"integer","minimum":1}}}},"hosts":{"type":"array","maxItems":2000,"items":{"type":"object","additionalProperties":false,"required":["key","count"],"properties":{"key":{"type":"string"},"count":{"type":"integer","minimum":1}}}},"timing":{"type":"object","additionalProperties":false,"required":["known_count","missing_count","total_ms","min_ms","max_ms","mean_ms"],"properties":{"known_count":{"type":"integer","minimum":0},"missing_count":{"type":"integer","minimum":0},"total_ms":{"type":"number","minimum":0},"min_ms":{"type":["number","null"],"minimum":0},"max_ms":{"type":["number","null"],"minimum":0},"mean_ms":{"type":["number","null"],"minimum":0}}},"transfer":{"type":"object","additionalProperties":false,"required":["known_count","missing_count","negative_count","total_bytes"],"properties":{"known_count":{"type":"integer","minimum":0},"missing_count":{"type":"integer","minimum":0},"negative_count":{"type":"integer","minimum":0},"total_bytes":{"type":"integer","minimum":0}}},"redaction_counts":{"type":"object","additionalProperties":false,"required":["cookies","authorization_headers","query_parameters","request_bodies","response_bodies"],"properties":{"cookies":{"type":"integer","minimum":0},"authorization_headers":{"type":"integer","minimum":0},"query_parameters":{"type":"integer","minimum":0},"request_bodies":{"type":"integer","minimum":0},"response_bodies":{"type":"integer","minimum":0}}}}},"examples":[{"input":{"har_json":"{\"log\":{\"entries\":[]}}"},"output":{"request_count":0,"methods":[],"statuses":[],"mime_types":[],"hosts":[],"timing":{"known_count":0,"missing_count":0,"total_ms":0,"min_ms":null,"max_ms":null,"mean_ms":null},"transfer":{"known_count":0,"missing_count":0,"negative_count":0,"total_bytes":0},"redaction_counts":{"cookies":0,"authorization_headers":0,"query_parameters":0,"request_bodies":0,"response_bodies":0}}},{"input":{"har_json":"{\"log\":{\"entries\":[{\"request\":{\"method\":\"GET\",\"url\":\"https://example.com/x?a=secret\",\"queryString\":[{\"name\":\"a\",\"value\":\"secret\"}]},\"response\":{\"status\":200,\"bodySize\":12,\"content\":{\"mimeType\":\"text/plain\",\"text\":\"secret\"}},\"time\":5}]}}"},"output":{"request_count":1,"methods":[{"key":"GET","count":1}],"statuses":[{"key":"200","count":1}],"mime_types":[{"key":"text/plain","count":1}],"hosts":[{"key":"example.com","count":1}],"timing":{"known_count":1,"missing_count":0,"total_ms":5,"min_ms":5,"max_ms":5,"mean_ms":5},"transfer":{"known_count":1,"missing_count":0,"negative_count":0,"total_bytes":12},"redaction_counts":{"cookies":0,"authorization_headers":0,"query_parameters":1,"request_bodies":0,"response_bodies":1}}}],"execute_url":"/v1/tools/har-summarize/versions/1.0.0/execute"}