Skip to main content
Glama

Upload files

upload_brain_files
Destructive

Upload up to 25 PDF, Word, PowerPoint, Excel, or text files to a Brain source; indexing starts after upload, and rejected files are returned.

Instructions

Upload up to 25 files as multipart/form-data parts named files. Accepted types are PDF, Word, PowerPoint, Excel, and text formats (.txt, .md, .html, .csv, .rtf), each up to 25 MB.

Indexing starts on its own after the upload: an active source indexes and bills immediately, a draft source runs a credit estimate instead (see Retrieve estimate). Poll List files until each file's status is indexed.

Files the upload policy refuses (unsupported type, too large, empty) are returned in rejected with a 201; the request is a 400 no_files_accepted only when every file was refused. Explicit confirmation is required for this exact account operation. Runs can spend credits or trigger downstream actions; never resubmit unknown outcomes automatically.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
filesNo
accountNoNamed private Gumloop account; selects private credentials and user/team identity.
confirmNoSet true only when the user asked for exactly this action.
payloadNoComplete JSON request body instead of body flags. Preserves current endpoint fields and values.
source_idYesThe source id.
payload_fileNoRegular local JSON body file, at most 5 MB. Cannot be mixed with body flags or payload.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed14 schema fields changedv3.0.0
    • addedInput schema / $defs / files
      Added value: +{
      +  "description": "Regular local file paths, not base64; each file and total upload at most 5 MiB. Paths cannot be symlinks.",
      +  "items": {
      +    "minLength": 1,
      +    "type": "string"
      +  },
      +  "maxItems": 25,
      +  "minItems": 1,
      +  "type": "array"
      +}
    • changedInput schema / properties / confirm / description
      Previous value: -"Must be true for this exact requested account change, agent/flow execution, upload or deletion."New value: +"Set true only when the user asked for exactly this action."
    • addedInput schema / properties / files / $ref
      Added value: +"#/$defs/files"
    • removedInput schema / properties / files / description
      Removed value: -"Regular local file paths, not base64; each file and total upload at most 5 MiB. Paths cannot be symlinks."
    • removedInput schema / properties / files / items
      Removed value: -{
      -  "minLength": 1,
      -  "type": "string"
      -}
    • removedInput schema / properties / files / maxItems
      Removed value: -25
    • removedInput schema / properties / files / minItems
      Removed value: -1
    • removedInput schema / properties / files / type
      Removed value: -"array"
    • addedInput schema / properties / payload / properties / files / $ref
      Added value: +"#/$defs/files"
    • removedInput schema / properties / payload / properties / files / description
      Removed value: -"Regular local file paths, not base64; each file and total upload at most 5 MiB. Paths cannot be symlinks."
    • removedInput schema / properties / payload / properties / files / items
      Removed value: -{
      -  "minLength": 1,
      -  "type": "string"
      -}
    • removedInput schema / properties / payload / properties / files / maxItems
      Removed value: -25
    • removedInput schema / properties / payload / properties / files / minItems
      Removed value: -1
    • removedInput schema / properties / payload / properties / files / type
      Removed value: -"array"
  2. First observedv2.0.1

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations by disclosing billing behavior (active bill immediately, draft estimates credits), the partial-rejection semantics (rejected array with 201 vs 400 no_files_accepted), and the confirmation requirement for a destructive/open-world write. This is real value-add over destructiveHint/openWorldHint alone. Minor deduction because the stated 25 MB per-file limit conflicts with the schema's 5 MiB, undermining trust in the behavioral claims.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the core action and limits, then explains post-upload behavior and error semantics in scannable sentences. Slightly long, and the space spent on a size limit that contradicts the schema is wasted, but every other sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 6-parameter, nested-object mutation tool with no output schema, the description covers outcome behavior (rejection arrays, status codes, polling) that the schema cannot convey. It leaves gaps around the payload/payload_file alternative body mechanisms and the account parameter, but the agent has enough to call the primary path correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 83%, so the baseline is 3, and the description does add genuine param context: the multipart part name `files` and the accepted file extensions. However, it silently omits source_id, account, payload, and payload_file, and its per-file size figure (25 MB) directly contradicts the schema's 'at most 5 MiB', which is worse than saying nothing.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Upload up to 25 files as multipart/form-data parts named `files`', plus the accepted formats and the source-indexing consequence. An agent can tell it is the brain-source upload tool, but the description never distinguishes it from the sibling upload_files / upload_file / upload_session_file tools, so the sibling differentiation required for a 5 is absent.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives useful context on what happens after the call (draft vs active indexing, poll List files until status is `indexed`) and that explicit confirmation is required. It stops short of stating when to choose this tool over upload_files or upload_session_file, so usage is implied rather than directed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Deploy Server

Other Tools