Owner-scoped files and tables#
Files registers creation, reading and stored-table queries. Separate HTTP upload/delete actions use files.upload and files.delete. Ownership and web session/file permission checks apply.
Table presentation#
Provider-declared tables can be stored before full rows enter LLM history. Stored tables support browsing and Excel export. AI labels remain separate from authoritative data. Optional large-report offload uses 50 rows or 12000 serialized characters; it is not universal for every result.
Exact registered tools#
files.createfiles.create
Create downloadable chat files owned by the current user. TXT/CSV/MD/JSON/DOCX use filename/content; ZIP uses existing owned file_ids. For Excel XLSX or an interactive JSON/CSV table, use filename, columns (labels or key/label/type objects), and rows (arrays or objects); preserve numbers as numbers and identifiers as strings. Or pass source_file_id of an owned CSV/XLS/XLSX/XLSM/table JSON to copy its data internally without resending rows. XLSX opens as an interactive table in chat. Returns real file/download URLs, not the full dataset. Does not run on a remote PC.
Registration: RiskLevel.CHANGE / ApprovalMode.POLICY · enabled
owner-scoped file/table data or download/preview descriptors Runtime RBAC can raise deny or force approval even where metadata says NEVER/POLICY; static metadata is not final policy.
Exact input schema
{
"type": "object",
"required": [
"filename"
],
"additionalProperties": false,
"properties": {
"filename": {
"type": "string",
"minLength": 1,
"maxLength": 240
},
"content": {
"type": "string",
"minLength": 1,
"maxLength": 250000
},
"file_ids": {
"type": "array",
"minItems": 1,
"maxItems": 20,
"items": {
"type": "string"
}
},
"columns": {
"type": "array",
"minItems": 1,
"maxItems": 256,
"items": {
"anyOf": [
{
"type": "string"
},
{
"type": "object",
"required": [
"key",
"label"
],
"additionalProperties": false,
"properties": {
"key": {
"type": "string"
},
"label": {
"type": "string"
},
"type": {
"type": "string",
"enum": [
"auto",
"text",
"number",
"boolean",
"date",
"datetime"
]
}
}
}
]
}
},
"rows": {
"type": "array",
"maxItems": 100000,
"items": {
"anyOf": [
{
"type": "array",
"items": {
"type": [
"string",
"number",
"boolean",
"null"
]
}
},
{
"type": "object",
"additionalProperties": {
"type": [
"string",
"number",
"boolean",
"null"
]
}
}
]
}
},
"source_file_id": {
"type": "string",
"minLength": 1,
"maxLength": 128
},
"title": {
"type": "string",
"maxLength": 240
}
}
}files.readfiles.read
List the current user's stored files and download links, or return one existing file's download link by file_id (documents, archives, photos). Defaults to this chat session; session_only=false lists the user's other files. Does not read arbitrary server/endpoint paths. Reading one photo file_id also displays its image preview in chat; CSV/Excel files display interactive tables.
Registration: RiskLevel.READ / ApprovalMode.NEVER · enabled
owner-scoped file/table data or download/preview descriptors Runtime RBAC can raise deny or force approval even where metadata says NEVER/POLICY; static metadata is not final policy.
Exact input schema
{
"type": "object",
"required": [],
"additionalProperties": false,
"properties": {
"file_id": {
"type": "string",
"minLength": 1
},
"session_only": {
"type": "boolean",
"default": true
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 20
}
}
}files.query_tablefiles.read
Query an owned stored table entirely on the server. Returns counts and aggregates; limit=0 (default) sends NO rows to the model, up to 20 for details. Use exact column keys, filters are AND/case-insensitive. Identifiers stay text. sum/avg/min/max require numeric cells. group_by groups server-side. show=true displays the complete resulting view in chat, regardless of preview limit. Zero-row results return counts without an empty table/file. Use show=false while refining filters and show=true for the final view. Derived views require files.create; reading/showing the original requires files.read. Reuse file_id returned by any module's table result. No source-system query or LLM call.
Registration: RiskLevel.READ / ApprovalMode.NEVER · enabled
owner-scoped file/table data or download/preview descriptors Runtime RBAC can raise deny or force approval even where metadata says NEVER/POLICY; static metadata is not final policy.
Exact input schema
{
"type": "object",
"required": [
"file_id"
],
"additionalProperties": false,
"properties": {
"file_id": {
"type": "string",
"minLength": 1,
"maxLength": 128
},
"filters": {
"type": "array",
"maxItems": 20,
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"column",
"op",
"value"
],
"properties": {
"column": {
"type": "string"
},
"op": {
"type": "string",
"enum": [
"eq",
"ne",
"contains",
"gt",
"gte",
"lt",
"lte",
"in",
"is_null"
]
},
"value": {
"anyOf": [
{
"source_expression": "scalar"
},
{
"type": "array",
"maxItems": 100,
"items": {
"source_expression": "scalar"
}
}
]
}
}
}
},
"columns": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 256
},
"group_by": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 3
},
"aggregates": {
"type": "array",
"maxItems": 12,
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"op"
],
"properties": {
"op": {
"type": "string",
"enum": [
"count",
"sum",
"avg",
"min",
"max"
]
},
"column": {
"type": "string"
},
"name": {
"type": "string",
"maxLength": 100
}
}
}
},
"sort_by": {
"type": "string"
},
"direction": {
"type": "string",
"enum": [
"asc",
"desc"
]
},
"offset": {
"type": "integer",
"minimum": 0,
"maximum": 100000
},
"limit": {
"type": "integer",
"minimum": 0,
"maximum": 20,
"default": 0
},
"schema_offset": {
"type": "integer",
"minimum": 0,
"maximum": 255
},
"show": {
"type": "boolean",
"default": false
}
}
}