Agentic Platform
Documentation API reference Tools Skills

Tools

Temporary Storage Grep

tmp_storage_grep MCP Content

Search expressions in a temporary upload, line by line.

Search one or more expressions in a file stored in the project's temporary upload storage. Works on HTML, JSON, JSONL, CSV, and plain text, including gzip-compressed uploads. Each match comes back with its line number and a short slice of the line around it. Expressions are literal substrings by default, or RE2 regular expressions. Matches do not span lines. Output is capped, so prefer a few specific queries over broad ones.

Playground

POST
item
url required

Temporary upload to search. Temporary uploaded URLs on https://app.botify.com/:organization/:project/o/storage/tmp are allowed.

config
queries required

Search queries to run against the file. Each query is processed independently. Matches never span lines.

Credits

Fixed cost per file searched. The search runs inside Botify against a file you already uploaded, so nothing further is billed.

These usage SKUs can be charged on a call.

SKU Credits Description
Tool call 1 per request Charged once per successful item.

Schemas

item is what you send, config how the tool behaves, and the response is what you get back.

Item

object
Properties
url string required

Temporary upload to search. Temporary uploaded URLs on https://app.botify.com/:organization/:project/o/storage/tmp are allowed.

Example
{
  "url": "string"
}

Configuration

object
Properties
queries array required

Search queries to run against the file. Each query is processed independently. Matches never span lines.

Items: TmpStorageGrepQuery

min items 1, max items 20

Example
{
  "queries": [
    {
      "expression": "string",
      "n_chars": 100,
      "is_regex": false,
      "case_sensitive": true,
      "max_matches": 10
    }
  ]
}

Type Definitions

1 type

These are the available sub-object types that can be used in the properties above.

TmpStorageGrepQuery object
#
expression string required

Expression to search for. Interpreted as a literal substring unless `is_regex` is True.

min length 1, max length 1000

n_chars integer

Number of characters of context to keep on each side of the match (at most 500), clipped to the matching line.

Default: 100

min 0, max 500

is_regex boolean

If True, `expression` is a RE2 regular expression (no lookaround, no backreferences). Otherwise it is a literal substring.

Default: false

case_sensitive boolean

If True, the search is case-sensitive.

Default: true

max_matches integer

Maximum number of matches returned for this query. The file is always scanned to the end, so `total_matches` counts matches past this limit.

Default: 10

min 1, max 1000

Response

object
Properties
size_bytes integer

Size of the decompressed file, in bytes

Default: 0

line_count integer

Number of lines in the decompressed file

Default: 0

results array

One result per input query, in the same order as `queries`.

Items: TmpStorageGrepQueryResult

Default: []

Example
{
  "size_bytes": 0,
  "line_count": 0,
  "results": []
}

Type Definitions

3 types

These are the available sub-object types that can be used in the properties above.

TmpStorageGrepMatch object
#
match string required

The exact substring that matched, cut to its first 1000 characters

match_truncated boolean

True if the match was longer than 1000

Default: false

line_number integer required

1-based line number of the match

min 1

column integer required

0-based character offset of the match within the line

min 0

context string required

The match with up to `n_chars` characters on each side, clipped to the line

TmpStorageGrepQuery object
#
expression string required

Expression to search for. Interpreted as a literal substring unless `is_regex` is True.

min length 1, max length 1000

n_chars integer

Number of characters of context to keep on each side of the match (at most 500), clipped to the matching line.

Default: 100

min 0, max 500

is_regex boolean

If True, `expression` is a RE2 regular expression (no lookaround, no backreferences). Otherwise it is a literal substring.

Default: false

case_sensitive boolean

If True, the search is case-sensitive.

Default: true

max_matches integer

Maximum number of matches returned for this query. The file is always scanned to the end, so `total_matches` counts matches past this limit.

Default: 10

min 1, max 1000

TmpStorageGrepQueryResult object
#
query TmpStorageGrepQuery required

The query this result corresponds to (echoed back)

Type: TmpStorageGrepQuery

matches array

Matches found for this query, up to `max_matches`

Items: TmpStorageGrepMatch

Default: []

total_matches integer

Total number of matches in the file for this query (may be greater than `len(matches)` when truncated).

Default: 0

truncated boolean

True if results were truncated by `max_matches` or by the 1000000 character cap shared by all queries.

Default: false

Endpoints

POST http://agents.botify.com/{organization}/{project}/tmp_storage_grep/process
POST http://agents.botify.com/{organization}/{project}/tmp_storage_grep/batch_process
POST http://agents.botify.com/{organization}/{project}/tmp_storage_grep/async_process
POST http://agents.botify.com/{organization}/{project}/tmp_storage_grep/async_batch_process

See running a long job in the background for the polling flow.

cURL

curl -X POST "http://agents.botify.com/{organization}/{project}/tmp_storage_grep/process" \
  -H "Authorization: Bearer $BOTIFY_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "item": {
    "url": "<url>"
  },
  "config": {
    "queries": []
  }
}'

Over MCP

This tool is exposed as the MCP tool tmp_storage_grep. An MCP client passes organization, project and item as tool arguments. Set up MCP →

Raw metadata