{"id":"tmp_storage_grep","name":"Temporary Storage Grep","alias":"TmpStorageGrep","aliases":[],"description_short":"Search expressions in a temporary upload, line by line.","description_long":"\n    Search one or more expressions in a file stored in the project's temporary\n    upload storage. Works on HTML, JSON, JSONL, CSV, and plain text, including\n    gzip-compressed uploads.\n\n    Each match comes back with its line number and a short slice of the line\n    around it. Expressions are literal substrings by default, or RE2 regular\n    expressions. Matches do not span lines. Output is capped, so prefer a few\n    specific queries over broad ones.\n    ","description_tool_prompt":"\n    Search one or more expressions in a file stored in the project's temporary\n    upload storage. Works on HTML, JSON, JSONL, CSV, and plain text, including\n    gzip-compressed uploads.\n\n    Each match comes back with its line number and a short slice of the line\n    around it. Expressions are literal substrings by default, or RE2 regular\n    expressions. Matches do not span lines. Output is capped, so prefer a few\n    specific queries over broad ones.\n    ","source":"Temporary project storage","conversation_examples":["Find every occurrence of organic in the temporary SERP upload","Grep the regex \"price\" on the uploaded JSONL file"],"tags":["content"],"available_in_chat":true,"available_in_deepthink":true,"available_in_mcp":true,"mcp_audience":"all","config":{"type":"object","properties":{"queries":{"description":"Search queries to run against the file. Each query is processed independently. Matches never span lines.","items":{"$ref":"#/$defs/TmpStorageGrepQuery"},"maxItems":20,"minItems":1,"title":"Queries","type":"array"}},"required":["queries"],"$defs":{"TmpStorageGrepQuery":{"properties":{"expression":{"description":"Expression to search for. Interpreted as a literal substring unless `is_regex` is True.","maxLength":1000,"minLength":1,"title":"Expression","type":"string"},"n_chars":{"default":100,"description":"Number of characters of context to keep on each side of the match (at most 500), clipped to the matching line.","maximum":500,"minimum":0,"title":"N Chars","type":"integer"},"is_regex":{"default":false,"description":"If True, `expression` is a RE2 regular expression (no lookaround, no backreferences). Otherwise it is a literal substring.","title":"Is Regex","type":"boolean"},"case_sensitive":{"default":true,"description":"If True, the search is case-sensitive.","title":"Case Sensitive","type":"boolean"},"max_matches":{"default":10,"description":"Maximum number of matches returned for this query. The file is always scanned to the end, so `total_matches` counts matches past this limit.","maximum":1000,"minimum":1,"title":"Max Matches","type":"integer"}},"required":["expression"],"title":"TmpStorageGrepQuery","type":"object"}}},"item":{"type":"object","properties":{"url":{"description":"Temporary upload to search. Temporary uploaded URLs on https://app.botify.com/:organization/:project/o/storage/tmp are allowed.","title":"Url","type":"string"}},"required":["url"]},"response":{"$defs":{"TmpStorageGrepMatch":{"properties":{"match":{"description":"The exact substring that matched, cut to its first 1000 characters","title":"Match","type":"string"},"match_truncated":{"default":false,"description":"True if the match was longer than 1000","title":"Match Truncated","type":"boolean"},"line_number":{"description":"1-based line number of the match","minimum":1,"title":"Line Number","type":"integer"},"column":{"description":"0-based character offset of the match within the line","minimum":0,"title":"Column","type":"integer"},"context":{"description":"The match with up to `n_chars` characters on each side, clipped to the line","title":"Context","type":"string"}},"required":["match","line_number","column","context"],"title":"TmpStorageGrepMatch","type":"object"},"TmpStorageGrepQuery":{"properties":{"expression":{"description":"Expression to search for. Interpreted as a literal substring unless `is_regex` is True.","maxLength":1000,"minLength":1,"title":"Expression","type":"string"},"n_chars":{"default":100,"description":"Number of characters of context to keep on each side of the match (at most 500), clipped to the matching line.","maximum":500,"minimum":0,"title":"N Chars","type":"integer"},"is_regex":{"default":false,"description":"If True, `expression` is a RE2 regular expression (no lookaround, no backreferences). Otherwise it is a literal substring.","title":"Is Regex","type":"boolean"},"case_sensitive":{"default":true,"description":"If True, the search is case-sensitive.","title":"Case Sensitive","type":"boolean"},"max_matches":{"default":10,"description":"Maximum number of matches returned for this query. The file is always scanned to the end, so `total_matches` counts matches past this limit.","maximum":1000,"minimum":1,"title":"Max Matches","type":"integer"}},"required":["expression"],"title":"TmpStorageGrepQuery","type":"object"},"TmpStorageGrepQueryResult":{"properties":{"query":{"$ref":"#/$defs/TmpStorageGrepQuery","description":"The query this result corresponds to (echoed back)"},"matches":{"default":[],"description":"Matches found for this query, up to `max_matches`","items":{"$ref":"#/$defs/TmpStorageGrepMatch"},"title":"Matches","type":"array"},"total_matches":{"default":0,"description":"Total number of matches in the file for this query (may be greater than `len(matches)` when truncated).","title":"Total Matches","type":"integer"},"truncated":{"default":false,"description":"True if results were truncated by `max_matches` or by the 1000000 character cap shared by all queries.","title":"Truncated","type":"boolean"}},"required":["query"],"title":"TmpStorageGrepQueryResult","type":"object"}},"properties":{"size_bytes":{"default":0,"description":"Size of the decompressed file, in bytes","title":"Size Bytes","type":"integer"},"line_count":{"default":0,"description":"Number of lines in the decompressed file","title":"Line Count","type":"integer"},"results":{"default":[],"description":"One result per input query, in the same order as `queries`.","items":{"$ref":"#/$defs/TmpStorageGrepQueryResult"},"title":"Results","type":"array"}},"title":"TmpStorageGrepProcessedItem","type":"object"},"has_canvas":false,"open_canvas_automatically":false}