All nodes/Data/DataFrame Ops
DataFrame Tool
Connects a set of DataFrame tools to the AI Agent: CSV/XLSX loading, filtering, merging, aggregation, saving. Requires a connected file_store for read/write operations.
Type in the graph: dataframe_tool
Tool
Try it
Minimal working workflow
- Execute + Data
- Extension
- LLM
- Memory
- Execute + Data + Streaming
Runs as pasted
When to use it
Gives an AI agent a set of table tools: the model decides which file to open, what to filter by, what to join with what, and where to save the result. This is the answer to requests like “look at the export and tell me who is overdue”, where nobody knows in advance which columns will be needed.
If the sequence of operations is known, build it from the df_* nodes instead: they spend no
tokens, do not depend on the model’s judgement, and repeat identically run after run. The tool
earns its place where the steps are chosen mid-conversation.
The node connects to the agent’s Extensions port with a link_extension edge and is not an
execution step of its own: outside an agent it does nothing.
How it works
Tables never travel through the conversation. A tool that produces a table stores it in the run
and returns the model a short identifier (df_…) plus a preview — the schema and a few rows.
The next call refers to that identifier.
Identifiers live for one agent turn. Once the agent has answered, the store is cleared, and an
old df_… is no longer found in the next message.
The “Enabled tools” list offers: loading CSV and XLSX, describing a table, filtering rows, selecting columns, joining, grouping with aggregates, exporting to JSON, and saving to CSV or XLSX. Sorting, updating, stacking and de-duplication are not among them — those exist only as nodes.
Files are read and written through a file store. “From the run context” uses this workspace’s
store, and “Subfolder” narrows it to one directory (the field takes templates, so
sessions/{{ variables.session_id }} works). “External connection” exposes the “File store”
port for a store config node.
Common mistakes
- Expecting a table on the graph’s output. The node has no data output. Only what the model puts into its answer, or the file it saves, leaves the agent.
- Referring to an identifier from an earlier message. The tool answers that no such table exists; the file has to be loaded again.
- Load and save tools with no store configured. They return an error to the model, while the rest keep working.
Inputs
| Port | Wire | Payload | Notes |
|---|---|---|---|
File storefile_store | Datadata | — | shown when connection_source ≠ "auto" |
Outputs
| Port | Wire | Payload | Notes |
|---|---|---|---|
tool_out | Extensionlink_extension | — |
Configuration
| Field | Type | Default | Description |
|---|---|---|---|
Connection sourceconnection_source | string | auto | Where this node gets its connection. 'From the run context' uses what the platform already knows (the Telegram bot this workflow is deployed to / this workspace's own file store) and needs no wiring. 'External connection' shows the resource port so a config node can be wired into it. Options: |
Subfolderstore_subfolder | string | "" | Optional folder inside this workspace's store to treat as the root, e.g. `reports` or `sessions/{{ variables.session_id }}`. Blank = the store root. supports templates shown when connection_source = auto |
Enabled toolsenabled_tools | array<string> | ["df_load_csv","df_load_xlsx","df_describe","df_query","df_select","df_merge"… | Which DataFrame tools the agent may call. |