Agentic Platform
Documentation API reference Tools Skills

Tools

Tables Load

tables_load MCP

Load a CSV or TSV file into the current project's editable BigQuery catalog

Load a CSV or TSV file into the project's editable BigQuery catalog. The file can be provided by a public HTTP(S) URL or Base64 content. For a local file, upload it at https://app.botify.com/:organization/:project/o/storage/tmp and pass the returned URL as source_url. CSV/TSV files may be gzip compressed. The operation fails when the destination table exists unless replace_existing is explicitly enabled.

Playground

Your organization, project and token stay in this browser's local storage and are sent straight to the API — this page never sees them.

POST
item
table_name required Destination table name in the editable catalog; must not match a managed table family
table_description Optional BigQuery table description
source_url HTTP(S) URL of the source file. Temporary uploaded URLs on https://app.botify.com/:organization/:project/o/storage/tmp are allowed.
content_base64 Base64-encoded file content. Prefer source_url for large files.
format Delimited input format, or auto-detect from the filename
columns Optional explicit BigQuery schema. When omitted, BigQuery infers the schema from the file header and rows.
replace_existing Replace an existing table. Disabled by default to prevent unintentional data loss.

Billing

Fixed cost per item requested. Loading a file reads no existing data, so no data-scanned charge applies.

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
table_name string required

Destination table name in the editable catalog; must not match a managed table family

pattern "^[A-Za-z_][A-Za-z0-9_]{0,1023}$"

table_description string | null

Optional BigQuery table description

Default: null

source_url string | null

HTTP(S) URL of the source file. Temporary uploaded URLs on https://app.botify.com/:organization/:project/o/storage/tmp are allowed.

Default: null

content_base64 string | null

Base64-encoded file content. Prefer source_url for large files.

Default: null

format DelimitedFormat

Delimited input format, or auto-detect from the filename

Type: DelimitedFormat

Default: "auto"

columns ColumnDefinition

Optional explicit BigQuery schema. When omitted, BigQuery infers the schema from the file header and rows.

Items: ColumnDefinition

Default: null

replace_existing boolean

Replace an existing table. Disabled by default to prevent unintentional data loss.

Default: false

Example
{
  "table_name": "string",
  "table_description": null,
  "source_url": null,
  "content_base64": null,
  "format": "auto",
  "columns": null,
  "replace_existing": false
}

Type Definitions

2 types

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

ColumnDefinition object
#

Definition of a column in the table.

name string required

Name of the column

type string required

BigQuery column type

Values: STRING BYTES INTEGER INT64 FLOAT FLOAT64 NUMERIC BIGNUMERIC BOOLEAN BOOL TIMESTAMP DATE TIME DATETIME GEOGRAPHY RECORD STRUCT JSON

mode string

Column mode

Values: NULLABLE REQUIRED REPEATED

Default: "NULLABLE"

description string | null

Optional description of the column

Default: null

fields ColumnDefinition

Nested fields for RECORD type columns

Items: ColumnDefinition

Default: null

DelimitedFormat string
#

Values: auto csv tsv

Response

object
Properties
table_name string required

Created or loaded table name

rows_loaded integer required

Number of rows loaded

format string required

Detected file format

replaced_existing boolean required

Whether an existing table was replaced

Example
{
  "table_name": "string",
  "rows_loaded": 0,
  "format": "string",
  "replaced_existing": true
}

Endpoints

POST http://agents.botify.com/{organization}/{project}/tables_load/process
POST http://agents.botify.com/{organization}/{project}/tables_load/batch_process
POST http://agents.botify.com/{organization}/{project}/tables_load/async_process
POST http://agents.botify.com/{organization}/{project}/tables_load/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}/tables_load/process" \
  -H "Authorization: Bearer $BOTIFY_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "item": {
    "table_name": "<table_name>"
  }
}'

Over MCP

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

Raw metadata