Skip to main content
Glama

upload

Destructive

File upload: stream-upload (one-shot — auto-finalizes, no filesize needed), chunked (create-session → chunk → finalize, for files over the 100 MB blob cap), web URL import, and batch (many small files). Call action='describe' for the full action/param reference. Side effects: finalize/stream/stream-upload/web-import/batch create files and consume storage credits. Same-name uploads to a folder OVERWRITE the existing node in place (preserved as a recoverable version). BYTES → SERVER: the DEFAULT for every file/binary is the POST /blob sidecar — a plain HTTP POST outside the MCP pipe (the create-session/blob-info response hands you a ready-to-run curl command) carrying RAW BYTES — no base64 inflation, no MCP size limit, up to 100 MB. stream-upload forwards them to the platform as a raw octet stream; chunk and batch send them as multipart. Either way the bytes never pass through base64. It returns a blob_id you pass to stream-upload/chunk/batch. ⚠️ content_base64 is a LAST RESORT, NOT a peer option — ~33% inflation plus a few-MB MCP transport cap means it FAILS for all but the smallest files. If you cannot reach POST /blob, that is almost always a CLIENT-SIDE FIREWALL/PROXY/EGRESS restriction: tell the user to allow the /blob endpoint rather than degrading to base64. content is for text you are composing ON THE FLY through the MCP (verbatim UTF-8) — not a file-upload fallback. UPLOAD STRATEGY (read top-to-bottom, pick the FIRST that matches): (1) Have a URL? → web-import (single call). (2) EVERYTHING ELSE up to 100 MB → POST /blob, then stream-upload with blob_id (single call, auto-finalizes, NO filesize required). Use this EVEN WHEN THE EXACT BYTE COUNT IS KNOWN — knowing the size does not make the chunked path better, it only makes it possible, and it costs 3+ round-trips plus the 10522 mismatch trap. If /blob seems unreachable, CHECK FIREWALL/SECURITY SETTINGS FIRST — falling back to content_base64 will fail for anything but a tiny file. (3) Over the 100 MB blob cap (must split across several blobs), or you need the session id between calls → create-session + chunk(blob_id) + finalize. filesize must match the bytes you actually upload — mismatch causes finalize to fail with code 10522 and you must cancel the session. (4) Multiple small files (≤4 MB each, ≤200 total) into one folder? → batch. Use blob_id (POST /blob) for every file/binary upload. If /blob is unreachable, raise the client-side firewall/proxy restriction with the user — content_base64 is a last resort that fails above a few MB, not a substitute. Do NOT guess filesize for generated content — use stream-upload. max_size is a hard ceiling that aborts mid-transfer — always overestimate or omit (server uses plan limit).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
orgNoOrg ID for limit resolution.
urlNoSource URL to import from.
hashNoFile hash for verification.
planNoOverride billing plan to check (e.g. free, pro).
waitNoLong-poll wait in SECONDS, 1-590 (NOT milliseconds; 0/omitted returns immediately). The server holds the connection until the upload reaches a terminal status. Sending a millisecond value here would hold for minutes and blow past the tool-call timeout.
filesNoBatch manifest (1..200 entries). Each: filename + one of blob_id/content/content_base64.
limitNoMax results (1-100, default 50).
actionYesOperation. Use 'describe' for full action reference.
offsetNoPagination offset.
statusNoFilter by status.
streamNoStream mode — size optional, single POST, auto-finalizes.
blob_idNoBlob ID from POST /blob — the **default source** for all file & binary uploads (no base64, no MCP size limit, up to 100 MB). Single-use.
contentNo**Text only** — stored verbatim UTF-8. This is for writing content you are composing **on the fly** directly through the MCP (a note, a generated report, a snippet you just produced) — NOT a fallback for uploading an existing file. Do NOT pass base64 here (use content_base64). One of content/content_base64/blob_id.
creatorNoClient identifier echoed back (alphanumeric + hyphens).
file_idNoFile ID for update context.
blob_refNoAlias for blob_id (deprecated). Accepted on chunk/stream/stream-upload only.
chunk_idNoSpecific chunk number (omit for all).
filenameNoFile name. Optional when target_node_id is set (auto-resolved); pass to rename-on-replace.
filesizeNoTotal file size in bytes.
max_sizeNoStream-body byte ceiling — aborts mid-transfer if exceeded. Always overestimate; omit to use plan limit. Stream sessions only.
passwordNoFile Share link password (profile_type=fileshare only). Forwarded ONLY as the x-ve-password header on every upload phase — never in a URL/log. Supply when the target share is password-protected.
share_idNoAlias for profile_id when the profile is a share — implies profile_type=share (so profile_type may be omitted).
folder_idNoTarget folder OpaqueId or "root". Omit for instance root.
hash_algoNoHash algorithm (e.g. 'sha256').
upload_idNoUpload session ID or web upload job ID.
chunk_sizeNoChunk size in bytes (server picks default).
context_idNoAlias for profile_id (either name works)
profile_idNoPolymorphic context ID (pair with profile_type=workspace|share|fileshare). Typed aliases let you omit profile_type: workspace_id (⇒ workspace) / share_id (⇒ share); also context_id / instance_id. Target workspace/share ID, or the File Share id for a fileshare write-back. fileshare has NO typed alias — pass profile_type=fileshare explicitly.
instance_idNoTarget workspace/share ID — also the profile_id alias for upload flows; profile_id is canonical.
chunk_numberNo1-indexed chunk number.
context_typeNoAlias for profile_type (either name works).
include_hashNoCompute SHA-256 client-side for entries without a hash (default true when omitted).
profile_typeNoTarget type: workspace | share | fileshare (alias: context_type). Use `fileshare` ONLY for content write-back to a File Share's bound file (requires target_node_id = the bound node id from `fileshare details`; create-style new-file flows are rejected for fileshare).
workspace_idNoAlias for profile_id when the profile is a workspace — implies profile_type=workspace (so profile_type may be omitted).
if_version_idNoCompare-and-swap base for an overwrite. Enforced on EVERY update target — workspace, share and File Share. Pass the version id your edit was based on; record it on create-session/stream-upload (finalize does NOT read it). On a stale base the session ends assembly_failed with CONFLICT_VERSION_MISMATCH:<id> — rebase and retry. Omitting it is last-write-wins. See action=describe.
action_contextNoContext: create or update.
content_base64NoBase64-encoded **binary**, server-decoded. ⚠️ **LAST RESORT — expect FAILURE above a few MB** (~33% inflation + MCP transport cap). If POST /blob is unreachable that is almost always a CLIENT-SIDE FIREWALL/PROXY restriction, not a server limit — have the user allow /blob instead of falling back here. Use `blob_id` for any real file.
parent_node_idNoParent folder OpaqueId or "root". On create-session, stream-upload, and web-import, folder_id is accepted as an alias (either name works).
target_node_idNoOverwrite this specific node (preserves node_id; new version). When set, parent_node_id is ignored and filename is optional (auto-resolved). Must be a file node. REQUIRED for profile_type=fileshare write-back — set it to the File Share's bound node id (from `fileshare details` → fileshare.file.id).
describe_actionNoWhen action='describe', narrow the output to ONE action's full params/notes (e.g. 'chunk'). Omit to get the compact action index.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed4 schema fields changed
    • changedInput schema / properties / content / description
      Previous value: -"**Text only** — stored verbatim UTF-8. Do NOT pass base64 here (use content_base64). One of content/content_base64/blob_id."New value: +"**Text only** — stored verbatim UTF-8. This is for writing content you are composing **on the fly** directly through the MCP (a note, a generated report, a snippet you just produced) — NOT a fallback for uploading an existing file. Do NOT pass base64 here (use content_base64). One of content/content_base64/blob_id."
    • changedInput schema / properties / content_base64 / description
      Previous value: -"Base64-encoded **binary**, server-decoded (whitespace stripped). **Fallback only** — capped a few MB by the MCP transport. Prefer `blob_id` (POST /blob) for any file/binary; use this only when your client cannot make the POST /blob call."New value: +"Base64-encoded **binary**, server-decoded. ⚠️ **LAST RESORT — expect FAILURE above a few MB** (~33% inflation + MCP transport cap). If POST /blob is unreachable that is almost always a CLIENT-SIDE FIREWALL/PROXY restriction, not a server limit — have the user allow /blob instead of falling back here. Use `blob_id` for any real file."
    • changedInput schema / properties / if_version_id / description
      Previous value: -"File Share write-back compare-and-swap (profile_type=fileshare only). Pass the version id your edit was based on (from fileshare details / versions-list). If the file advanced, NOTHING is written — the session ends assembly_failed with CONFLICT_VERSION_MISMATCH:<id>; rebase and retry. Omitting it is last-write-wins. See action=describe."New value: +"Compare-and-swap base for an overwrite. Enforced on EVERY update target — workspace, share and File Share. Pass the version id your edit was based on; record it on create-session/stream-upload (finalize does NOT read it). On a stale base the session ends assembly_failed with CONFLICT_VERSION_MISMATCH:<id> — rebase and retry. Omitting it is last-write-wins. See action=describe."
    • addedInput schema / properties / if_version_id / minLength
      Added value: +1
  2. Changed2 schema fields changed
    • changedInput schema / properties / wait / description
      Previous value: -"Long-poll duration ms (0 = return immediately)."New value: +"Long-poll wait in SECONDS, 1-590 (NOT milliseconds; 0/omitted returns immediately). The server holds the connection until the upload reaches a terminal status. Sending a millisecond value here would hold for minutes and blow past the tool-call timeout."
    • changedInput schema / properties / wait / maximum
      Previous value: -9007199254740991New value: +590
  3. Changed9 schema fields changed
    • changedInput schema / properties / content_base64 / description
      Previous value: -"Base64-encoded **binary**, server-decoded (whitespace stripped). **Fallback only** — capped a few MB by the MCP transport. Prefer `blob_id` (POST /blob) for…"New value: +"Base64-encoded **binary**, server-decoded (whitespace stripped). **Fallback only** — capped a few MB by the MCP transport. Prefer `blob_id` (POST /blob) for any file/binary; use this only when your client cannot make the POST /blob call."
    • changedInput schema / properties / files / items / properties / filename / description
      Previous value: -"File name (1-255 chars; server truncates >100 chars while preserving extension)."New value: +"File name (1-255 characters). An over-length name is a hard ERROR — the platform no longer truncates."
    • removedInput schema / properties / files / items / properties / filename / maxLength
      Removed value: -255
    • removedInput schema / properties / files / items / properties / relative_path / maxLength
      Removed value: -8192
    • changedInput schema / properties / if_version_id / description
      Previous value: -"File Share write-back compare-and-swap (profile_type=fileshare only). Pass the version id the edit was based on (from `fileshare details` / `fileshare…"New value: +"File Share write-back compare-and-swap (profile_type=fileshare only). Pass the version id your edit was based on (from fileshare details / versions-list). If the file advanced, NOTHING is written — the session ends assembly_failed with CONFLICT_VERSION_MISMATCH:<id>; rebase and retry. Omitting it is last-write-wins. See action=describe."
    • changedInput schema / properties / password / description
      Previous value: -"File Share link password (profile_type=fileshare only). Forwarded ONLY as the x-ve-password header on every upload phase — never in a URL/log. Supply when the…"New value: +"File Share link password (profile_type=fileshare only). Forwarded ONLY as the x-ve-password header on every upload phase — never in a URL/log. Supply when the target share is password-protected."
    • changedInput schema / properties / profile_id / description
      Previous value: -"Polymorphic context ID (pair with profile_type=workspace|share|fileshare). Typed aliases let you omit profile_type: workspace_id (⇒ workspace) / share_id (⇒…"New value: +"Polymorphic context ID (pair with profile_type=workspace|share|fileshare). Typed aliases let you omit profile_type: workspace_id (⇒ workspace) / share_id (⇒ share); also context_id / instance_id. Target workspace/share ID, or the File Share id for a fileshare write-back. fileshare has NO typed alias — pass profile_type=fileshare explicitly."
    • changedInput schema / properties / profile_type / description
      Previous value: -"Target type: workspace | share | fileshare (alias: context_type). Use `fileshare` ONLY for content write-back to a File Share's bound file (requires…"New value: +"Target type: workspace | share | fileshare (alias: context_type). Use `fileshare` ONLY for content write-back to a File Share's bound file (requires target_node_id = the bound node id from `fileshare details`; create-style new-file flows are rejected for fileshare)."
    • changedInput schema / properties / target_node_id / description
      Previous value: -"Overwrite this specific node (preserves node_id; new version). When set, parent_node_id is ignored and filename is optional (auto-resolved). Must be a file…"New value: +"Overwrite this specific node (preserves node_id; new version). When set, parent_node_id is ignored and filename is optional (auto-resolved). Must be a file node. REQUIRED for profile_type=fileshare write-back — set it to the File Share's bound node id (from `fileshare details` → fileshare.file.id)."
  4. Changed2 schema fields changed
    • changedInput schema / properties / blob_id / description
      Previous value: -"Blob ID from POST /blob. Preferred for binary/large files. Single-use."New value: +"Blob ID from POST /blob — the **default source** for all file & binary uploads (no base64, no MCP size limit, up to 100 MB). Single-use."
    • changedInput schema / properties / content_base64 / description
      Previous value: -"Base64-encoded **binary** — server decodes before writing. Whitespace stripped. Practical cap a few MB; use blob_id for larger."New value: +"Base64-encoded **binary**, server-decoded (whitespace stripped). **Fallback only** — capped a few MB by the MCP transport. Prefer `blob_id` (POST /blob) for…"
  5. Changed3 schema fields changed
    • changedInput schema / properties / profile_id / description
      Previous value: -"Polymorphic context ID. Pair with profile_type=workspace|share|org, or =fileshare for File Share write-back. Use workspace_id instead when only workspaces are…"New value: +"Polymorphic context ID (pair with profile_type=workspace|share|fileshare). Typed aliases let you omit profile_type: workspace_id (⇒ workspace) / share_id (⇒…"
    • addedInput schema / properties / share_id
      Added value: +{
      +  "description": "Alias for profile_id when the profile is a share — implies profile_type=share (so profile_type may be omitted).",
      +  "type": "string"
      +}
    • addedInput schema / properties / workspace_id
      Added value: +{
      +  "description": "Alias for profile_id when the profile is a workspace — implies profile_type=workspace (so profile_type may be omitted).",
      +  "type": "string"
      +}
  6. Changed2 schema fields changed
    • changedInput schema / properties / instance_id / description
      Previous value: -"Target workspace/share ID."New value: +"Target workspace/share ID — also the profile_id alias for upload flows; profile_id is canonical."
    • addedInput schema / properties / instance_id / minLength
      Added value: +1
  7. Changed10 schema fields changed
    • changedInput schema / properties / blob_ref / description
      Previous value: -"Alias for blob_id (deprecated)."New value: +"Alias for blob_id (deprecated). Accepted on chunk/stream/stream-upload only."
    • changedInput schema / properties / context_type / description
      Previous value: -"Alias for profile_type (either name works)"New value: +"Alias for profile_type (either name works)."
    • changedInput schema / properties / context_type / enum
      Previous value: -[
      -  "workspace",
      -  "share"
      -]New value: +[
      +  "workspace",
      +  "share",
      +  "fileshare"
      +]
    • addedInput schema / properties / describe_action
      Added value: +{
      +  "description": "When action='describe', narrow the output to ONE action's full params/notes (e.g. 'chunk'). Omit to get the compact action index.",
      +  "type": "string"
      +}
    • addedInput schema / properties / if_version_id
      Added value: +{
      +  "description": "File Share write-back compare-and-swap (profile_type=fileshare only). Pass the version id the edit was based on (from `fileshare details` / `fileshare…",
      +  "type": "string"
      +}
    • addedInput schema / properties / password
      Added value: +{
      +  "description": "File Share link password (profile_type=fileshare only). Forwarded ONLY as the x-ve-password header on every upload phase — never in a URL/log. Supply when the…",
      +  "type": "string"
      +}
    • changedInput schema / properties / profile_id / description
      Previous value: -"Polymorphic context ID. Pair with profile_type=workspace|share|org. Use workspace_id instead when only workspaces are valid. Target workspace/share ID (alias: context_id)."New value: +"Polymorphic context ID. Pair with profile_type=workspace|share|org, or =fileshare for File Share write-back. Use workspace_id instead when only workspaces are…"
    • changedInput schema / properties / profile_type / description
      Previous value: -"Target type: workspace or share (alias: context_type)."New value: +"Target type: workspace | share | fileshare (alias: context_type). Use `fileshare` ONLY for content write-back to a File Share's bound file (requires…"
    • changedInput schema / properties / profile_type / enum
      Previous value: -[
      -  "workspace",
      -  "share"
      -]New value: +[
      +  "workspace",
      +  "share",
      +  "fileshare"
      +]
    • changedInput schema / properties / target_node_id / description
      Previous value: -"Overwrite this specific node (preserves node_id; new version). When set, parent_node_id is ignored and filename is optional (auto-resolved). Must be a file node."New value: +"Overwrite this specific node (preserves node_id; new version). When set, parent_node_id is ignored and filename is optional (auto-resolved). Must be a file…"
  8. Changed37 schema fields changed
    • removedInput schema / properties / chunk_id / anyOf
      Removed value: -[
      -  {
      -    "maximum": 9007199254740991,
      -    "minimum": 1,
      -    "type": "integer"
      -  },
      -  {
      -    "pattern": "^-?\\d+$",
      -    "type": "string"
      -  }
      -]
    • addedInput schema / properties / chunk_id / maximum
      Added value: +9007199254740991
    • addedInput schema / properties / chunk_id / minimum
      Added value: +1
    • addedInput schema / properties / chunk_id / type
      Added value: +"integer"
    • removedInput schema / properties / chunk_number / anyOf
      Removed value: -[
      -  {
      -    "maximum": 9007199254740991,
      -    "minimum": 1,
      -    "type": "integer"
      -  },
      -  {
      -    "pattern": "^-?\\d+$",
      -    "type": "string"
      -  }
      -]
    • addedInput schema / properties / chunk_number / maximum
      Added value: +9007199254740991
    • addedInput schema / properties / chunk_number / minimum
      Added value: +1
    • addedInput schema / properties / chunk_number / type
      Added value: +"integer"
    • removedInput schema / properties / chunk_size / anyOf
      Removed value: -[
      -  {
      -    "maximum": 9007199254740991,
      -    "minimum": 1,
      -    "type": "integer"
      -  },
      -  {
      -    "pattern": "^-?\\d+$",
      -    "type": "string"
      -  }
      -]
    • addedInput schema / properties / chunk_size / maximum
      Added value: +9007199254740991
    • addedInput schema / properties / chunk_size / minimum
      Added value: +1
    • addedInput schema / properties / chunk_size / type
      Added value: +"integer"
    • removedInput schema / properties / creator / pattern
      Removed value: -"^[A-Za-z0-9-]+$"
    • removedInput schema / properties / files / items / properties / hash / pattern
      Removed value: -"^[0-9a-fA-F]+$"
    • removedInput schema / properties / filesize / anyOf
      Removed value: -[
      -  {
      -    "maximum": 9007199254740991,
      -    "minimum": 1,
      -    "type": "integer"
      -  },
      -  {
      -    "pattern": "^-?\\d+$",
      -    "type": "string"
      -  }
      -]
    • addedInput schema / properties / filesize / maximum
      Added value: +9007199254740991
    • addedInput schema / properties / filesize / minimum
      Added value: +1
    • addedInput schema / properties / filesize / type
      Added value: +"integer"
    • removedInput schema / properties / include_hash / default
      Removed value: -true
    • changedInput schema / properties / include_hash / description
      Previous value: -"Compute SHA-256 client-side for entries without a hash (default true)."New value: +"Compute SHA-256 client-side for entries without a hash (default true when omitted)."
    • removedInput schema / properties / limit / anyOf
      Removed value: -[
      -  {
      -    "maximum": 100,
      -    "minimum": 1,
      -    "type": "integer"
      -  },
      -  {
      -    "pattern": "^-?\\d+$",
      -    "type": "string"
      -  }
      -]
    • addedInput schema / properties / limit / maximum
      Added value: +100
    • addedInput schema / properties / limit / minimum
      Added value: +1
    • addedInput schema / properties / limit / type
      Added value: +"integer"
    • removedInput schema / properties / max_size / anyOf
      Removed value: -[
      -  {
      -    "maximum": 9007199254740991,
      -    "minimum": 1,
      -    "type": "integer"
      -  },
      -  {
      -    "pattern": "^-?\\d+$",
      -    "type": "string"
      -  }
      -]
    • addedInput schema / properties / max_size / maximum
      Added value: +9007199254740991
    • addedInput schema / properties / max_size / minimum
      Added value: +1
    • addedInput schema / properties / max_size / type
      Added value: +"integer"
    • removedInput schema / properties / offset / anyOf
      Removed value: -[
      -  {
      -    "maximum": 9007199254740991,
      -    "minimum": 0,
      -    "type": "integer"
      -  },
      -  {
      -    "pattern": "^-?\\d+$",
      -    "type": "string"
      -  }
      -]
    • addedInput schema / properties / offset / maximum
      Added value: +9007199254740991
    • addedInput schema / properties / offset / minimum
      Added value: +0
    • addedInput schema / properties / offset / type
      Added value: +"integer"
    • removedInput schema / properties / url / format
      Removed value: -"uri"
    • removedInput schema / properties / wait / anyOf
      Removed value: -[
      -  {
      -    "maximum": 9007199254740991,
      -    "minimum": 0,
      -    "type": "integer"
      -  },
      -  {
      -    "pattern": "^-?\\d+$",
      -    "type": "string"
      -  }
      -]
    • addedInput schema / properties / wait / maximum
      Added value: +9007199254740991
    • addedInput schema / properties / wait / minimum
      Added value: +0
    • addedInput schema / properties / wait / type
      Added value: +"integer"
  9. Changed73 schema fields changed
    • changedInput schema / properties / action / description
      Previous value: -"Operation to perform"New value: +"Operation. Use 'describe' for full action reference."
    • changedInput schema / properties / action / enum
      Previous value: -[
      -  "create-session",
      -  "stream-upload",
      -  "batch",
      -  "chunk",
      -  "stream",
      -  "finalize",
      -  "status",
      -  "cancel",
      -  "list-sessions",
      -  "cancel-all",
      -  "chunk-status",
      -  "chunk-delete",
      -  "web-import",
      -  "web-list",
      -  "web-cancel",
      -  "web-status",
      -  "limits",
      -  "extensions",
      -  "blob-info"
      -]New value: +[
      +  "describe",
      +  "create-session",
      +  "stream-upload",
      +  "batch",
      +  "chunk",
      +  "stream",
      +  "finalize",
      +  "status",
      +  "cancel",
      +  "list-sessions",
      +  "cancel-all",
      +  "chunk-status",
      +  "chunk-delete",
      +  "web-import",
      +  "web-list",
      +  "web-cancel",
      +  "web-status",
      +  "limits",
      +  "extensions",
      +  "blob-info"
      +]
    • changedInput schema / properties / action_context / description
      Previous value: -"Context action: create or update (used by: limits)"New value: +"Context: create or update."
    • changedInput schema / properties / blob_id / description
      Previous value: -"Blob ID from POST /blob response. The standard method for uploading file data — avoids base64 overhead and MCP transport limits. Consumed (deleted) after use. (used by: chunk, stream, stream-upload as one of content/content_base64/blob_id)"New value: +"Blob ID from POST /blob. Preferred for binary/large files. Single-use."
    • changedInput schema / properties / blob_ref / description
      Previous value: -"Alias for blob_id (deprecated — use blob_id instead)"New value: +"Alias for blob_id (deprecated)."
    • addedInput schema / properties / chunk_id / anyOf
      Added value: +[
      +  {
      +    "maximum": 9007199254740991,
      +    "minimum": 1,
      +    "type": "integer"
      +  },
      +  {
      +    "pattern": "^-?\\d+$",
      +    "type": "string"
      +  }
      +]
    • changedInput schema / properties / chunk_id / description
      Previous value: -"Specific chunk number to retrieve (omit for all) (used by: chunk-status)"New value: +"Specific chunk number (omit for all)."
    • removedInput schema / properties / chunk_id / maximum
      Removed value: -9007199254740991
    • removedInput schema / properties / chunk_id / minimum
      Removed value: -1
    • removedInput schema / properties / chunk_id / type
      Removed value: -"integer"
    • addedInput schema / properties / chunk_number / anyOf
      Added value: +[
      +  {
      +    "maximum": 9007199254740991,
      +    "minimum": 1,
      +    "type": "integer"
      +  },
      +  {
      +    "pattern": "^-?\\d+$",
      +    "type": "string"
      +  }
      +]
    • changedInput schema / properties / chunk_number / description
      Previous value: -"1-indexed chunk number (required for: chunk, chunk-delete)"New value: +"1-indexed chunk number."
    • removedInput schema / properties / chunk_number / maximum
      Removed value: -9007199254740991
    • removedInput schema / properties / chunk_number / minimum
      Removed value: -1
    • removedInput schema / properties / chunk_number / type
      Removed value: -"integer"
    • addedInput schema / properties / chunk_size / anyOf
      Added value: +[
      +  {
      +    "maximum": 9007199254740991,
      +    "minimum": 1,
      +    "type": "integer"
      +  },
      +  {
      +    "pattern": "^-?\\d+$",
      +    "type": "string"
      +  }
      +]
    • changedInput schema / properties / chunk_size / description
      Previous value: -"Chunk size in bytes (optional, server picks default) (used by: create-session)"New value: +"Chunk size in bytes (server picks default)."
    • removedInput schema / properties / chunk_size / exclusiveMinimum
      Removed value: -0
    • removedInput schema / properties / chunk_size / maximum
      Removed value: -9007199254740991
    • removedInput schema / properties / chunk_size / type
      Removed value: -"integer"
    • changedInput schema / properties / content / description
      Previous value: -"Small **text** content (code snippets, JSON, plain text). Stored verbatim as UTF-8 bytes — do NOT pass base64 here, it will be saved as a base64 string and corrupt the file. For binary data inside MCP transport limits, use `content_base64`. For larger files, use POST /blob + `blob_id`. (used by: chunk, stream, stream-upload as one of content/content_base64/blob_id)"New value: +"**Text only** — stored verbatim UTF-8. Do NOT pass base64 here (use content_base64). One of content/content_base64/blob_id."
    • changedInput schema / properties / content_base64 / description
      Previous value: -"Small **binary** content as a base64-encoded string — the server decodes it before writing. Useful for sandboxed agents that can produce base64 in JSON but cannot reach the POST /blob sidecar. Whitespace and newlines are stripped automatically. Practical cap is bounded by the MCP transport message size (a few MB); use POST /blob + `blob_id` for files larger than that. (used by: chunk, stream, stream-upload as one of content/content_base64/blob_id; batch uses the per-entry `files[].content_base64` field instead)"New value: +"Base64-encoded **binary** — server decodes before writing. Whitespace stripped. Practical cap a few MB; use blob_id for larger."
    • changedInput schema / properties / creator / description
      Previous value: -"Optional client identifier echoed back in the response (1-150 chars, alphanumeric and hyphens only). (used by: batch)"New value: +"Client identifier echoed back (alphanumeric + hyphens)."
    • changedInput schema / properties / file_id / description
      Previous value: -"File ID for update context (required if action_context=update) (used by: limits)"New value: +"File ID for update context."
    • changedInput schema / properties / filename / description
      Previous value: -"Name of the file to upload. Required for create-session and stream-upload unless target_node_id is provided (in which case it's optional — omit to keep the existing node's name, auto-resolved via a storage details lookup; pass to rename-on-replace). Optional for web-import."New value: +"File name. Optional when target_node_id is set (auto-resolved); pass to rename-on-replace."
    • changedInput schema / properties / files / description
      Previous value: -"Manifest of files to upload in a single batch (1..200 entries). Each entry needs filename + exactly one of blob_id|content|content_base64. (required for: batch)"New value: +"Batch manifest (1..200 entries). Each: filename + one of blob_id/content/content_base64."
    • changedInput schema / properties / files / items / properties / blob_id / description
      Previous value: -"Blob ID from POST /blob. Exactly one of blob_id|content|content_base64 per entry; empty strings rejected."New value: +"Blob ID from POST /blob. One of blob_id/content/content_base64."
    • changedInput schema / properties / files / items / properties / content / description
      Previous value: -"Inline **text** content for small files (stored verbatim as UTF-8 bytes — do NOT pass base64 here, use `content_base64` for binary). Exactly one of blob_id|content|content_base64 per entry; empty strings rejected (most plans reject zero-byte uploads server-side anyway). Resolved bytes must be ≤ 4 MB."New value: +"Inline **text** content (verbatim UTF-8; ≤4 MB). Do NOT pass base64 here."
    • changedInput schema / properties / files / items / properties / content_base64 / description
      Previous value: -"Inline **binary** content as a base64-encoded string — the server decodes it before writing. Useful for sandboxed agents that cannot reach POST /blob. Whitespace/newlines stripped automatically. Exactly one of blob_id|content|content_base64 per entry. Decoded bytes must be ≤ 4 MB."New value: +"Inline **binary** as base64 (server-decoded; ≤4 MB)."
    • changedInput schema / properties / files / items / properties / filename / description
      Previous value: -"File name for this manifest entry (1-255 chars; the server truncates names over 100 chars while preserving the extension)."New value: +"File name (1-255 chars; server truncates >100 chars while preserving extension)."
    • changedInput schema / properties / files / items / properties / hash / description
      Previous value: -"Hex hash digest (lowercase or uppercase, at least 1 char). Both hash and hash_algo must be provided together if supplied; caller-supplied digests are forwarded verbatim without local verification."New value: +"Hex hash digest. Both hash and hash_algo must be supplied together."
    • changedInput schema / properties / files / items / properties / hash_algo / description
      Previous value: -"Hash algorithm. Both hash and hash_algo must be provided together if supplied."New value: +"Hash algorithm. Pair with hash."
    • changedInput schema / properties / files / items / properties / relative_path / description
      Previous value: -"Sub-folder path under folder_id (1-8192 UTF-8 chars). Trailing slash required — normalized if missing. Must not start with \"/\" or contain \".\" / \"..\" segments. Auto-created on upload if the sub-folder doesn't exist."New value: +"Sub-folder path under folder_id (trailing slash auto-added; no leading slash, no '.' or '..')."
    • addedInput schema / properties / filesize / anyOf
      Added value: +[
      +  {
      +    "maximum": 9007199254740991,
      +    "minimum": 1,
      +    "type": "integer"
      +  },
      +  {
      +    "pattern": "^-?\\d+$",
      +    "type": "string"
      +  }
      +]
    • changedInput schema / properties / filesize / description
      Previous value: -"Total file size in bytes (required for: create-session when stream=false; optional when stream=true)"New value: +"Total file size in bytes."
    • removedInput schema / properties / filesize / exclusiveMinimum
      Removed value: -0
    • removedInput schema / properties / filesize / maximum
      Removed value: -9007199254740991
    • removedInput schema / properties / filesize / type
      Removed value: -"integer"
    • changedInput schema / properties / folder_id / description
      Previous value: -"Batch-level target folder OpaqueId or \"root\". All files land under this folder. Omit to upload to the root of the instance. (used by: batch)"New value: +"Target folder OpaqueId or \"root\". Omit for instance root."
    • changedInput schema / properties / hash / description
      Previous value: -"File hash for verification (used by: stream, stream-upload)"New value: +"File hash for verification."
    • changedInput schema / properties / hash_algo / description
      Previous value: -"Hash algorithm (e.g. 'sha256') (used by: stream, stream-upload)"New value: +"Hash algorithm (e.g. 'sha256')."
    • changedInput schema / properties / include_hash / description
      Previous value: -"When true (default), SHA-256 is computed client-side for each entry that doesn't already carry hash/hash_algo. Server validates the digest and rejects truncated/corrupt transfers with a per-file error. Set false to skip hashing. (used by: batch)"New value: +"Compute SHA-256 client-side for entries without a hash (default true)."
    • changedInput schema / properties / instance_id / description
      Previous value: -"Target workspace/share ID (required if action_context=create) (used by: limits)"New value: +"Target workspace/share ID."
    • addedInput schema / properties / limit / anyOf
      Added value: +[
      +  {
      +    "maximum": 100,
      +    "minimum": 1,
      +    "type": "integer"
      +  },
      +  {
      +    "pattern": "^-?\\d+$",
      +    "type": "string"
      +  }
      +]
    • changedInput schema / properties / limit / description
      Previous value: -"Max results (1-100, default 50) (used by: web-list)"New value: +"Max results (1-100, default 50)."
    • removedInput schema / properties / limit / maximum
      Removed value: -100
    • removedInput schema / properties / limit / minimum
      Removed value: -1
    • removedInput schema / properties / limit / type
      Removed value: -"integer"
    • addedInput schema / properties / max_size / anyOf
      Added value: +[
      +  {
      +    "maximum": 9007199254740991,
      +    "minimum": 1,
      +    "type": "integer"
      +  },
      +  {
      +    "pattern": "^-?\\d+$",
      +    "type": "string"
      +  }
      +]
    • changedInput schema / properties / max_size / description
      Previous value: -"Ceiling for the stream body in bytes. Upload fails mid-transfer if actual bytes exceed this value — always overestimate, never undershoot. There is no penalty for setting it too high. Safest default: omit this parameter and the server uses your plan's file-size limit. Note: streaming uploads via MCP are also bounded by the `POST /blob` sidecar (100 MB cap per blob); for larger files use the chunked flow instead, and call `upload` action `limits` first to confirm plan headroom. Applies to stream sessions only (create-session with stream=true, or any stream-upload call). (used by: create-session, stream-upload)"New value: +"Stream-body byte ceiling — aborts mid-transfer if exceeded. Always overestimate; omit to use plan limit. Stream sessions only."
    • removedInput schema / properties / max_size / exclusiveMinimum
      Removed value: -0
    • removedInput schema / properties / max_size / maximum
      Removed value: -9007199254740991
    • removedInput schema / properties / max_size / type
      Removed value: -"integer"
    • addedInput schema / properties / offset / anyOf
      Added value: +[
      +  {
      +    "maximum": 9007199254740991,
      +    "minimum": 0,
      +    "type": "integer"
      +  },
      +  {
      +    "pattern": "^-?\\d+$",
      +    "type": "string"
      +  }
      +]
    • changedInput schema / properties / offset / description
      Previous value: -"Pagination offset (used by: web-list)"New value: +"Pagination offset."
    • removedInput schema / properties / offset / maximum
      Removed value: -9007199254740991
    • removedInput schema / properties / offset / minimum
      Removed value: -0
    • removedInput schema / properties / offset / type
      Removed value: -"integer"
    • changedInput schema / properties / org / description
      Previous value: -"Organization ID for limit resolution (used by: limits)"New value: +"Org ID for limit resolution."
    • changedInput schema / properties / parent_node_id / description
      Previous value: -"Parent folder OpaqueId or \"root\" (required for: create-session, stream-upload, web-import)"New value: +"Parent folder OpaqueId or \"root\". On create-session, stream-upload, and web-import, folder_id is accepted as an alias (either name works)."
    • changedInput schema / properties / plan / description
      Previous value: -"Override billing plan to check (e.g. free, pro) (used by: extensions)"New value: +"Override billing plan to check (e.g. free, pro)."
    • changedInput schema / properties / profile_id / description
      Previous value: -"Target workspace/share profile ID (also accepted as context_id) (required for: create-session, stream-upload, web-import)"New value: +"Polymorphic context ID. Pair with profile_type=workspace|share|org. Use workspace_id instead when only workspaces are valid. Target workspace/share ID (alias: context_id)."
    • changedInput schema / properties / profile_type / description
      Previous value: -"Target type: workspace or share (also accepted as context_type) (required for: create-session, stream-upload, web-import)"New value: +"Target type: workspace or share (alias: context_type)."
    • changedInput schema / properties / status / description
      Previous value: -"Filter by status (used by: web-list)"New value: +"Filter by status."
    • changedInput schema / properties / stream / description
      Previous value: -"Enable stream mode — size becomes optional, upload via single POST to /upload/{id}/stream/ instead of chunking. Auto-finalizes on completion. (used by: create-session)"New value: +"Stream mode — size optional, single POST, auto-finalizes."
    • changedInput schema / properties / target_node_id / description
      Previous value: -"When provided, overwrite this specific node_id (creating a new version). Overrides filename+parent matching — use this when you need a deterministic overwrite target (e.g., the filename may have drifted or the file lives in a folder you don't want to re-resolve). Preserves node_id; version-list shows prior versions. Must reference an existing file node (not a folder). When set, the API uses action=update and file_id=target_node_id; parent_node_id is ignored and filename is optional (if omitted, the tool auto-resolves the node's current name from storage details; pass filename only when renaming). (used by: create-session, stream-upload)"New value: +"Overwrite this specific node (preserves node_id; new version). When set, parent_node_id is ignored and filename is optional (auto-resolved). Must be a file node."
    • changedInput schema / properties / upload_id / description
      Previous value: -"Upload session ID or web upload job ID (required for: chunk, stream, finalize, status, cancel, chunk-status, chunk-delete, web-cancel, web-status)"New value: +"Upload session ID or web upload job ID."
    • changedInput schema / properties / url / description
      Previous value: -"Source URL to import from (required for: web-import)"New value: +"Source URL to import from."
    • addedInput schema / properties / wait / anyOf
      Added value: +[
      +  {
      +    "maximum": 9007199254740991,
      +    "minimum": 0,
      +    "type": "integer"
      +  },
      +  {
      +    "pattern": "^-?\\d+$",
      +    "type": "string"
      +  }
      +]
    • changedInput schema / properties / wait / description
      Previous value: -"Long-poll duration in milliseconds (0 = return immediately). Server holds connection until status changes or wait expires. (used by: status)"New value: +"Long-poll duration ms (0 = return immediately)."
    • removedInput schema / properties / wait / maximum
      Removed value: -9007199254740991
    • removedInput schema / properties / wait / minimum
      Removed value: -0
    • removedInput schema / properties / wait / type
      Removed value: -"integer"
  10. Changed7 schema fields changed
    • changedInput schema / properties / blob_id / description
      Previous value: -"Blob ID from POST /blob response. The standard method for uploading file data — avoids base64 overhead and MCP transport limits. Consumed (deleted) after use. (used by: chunk, stream, stream-upload as one of content/blob_id)"New value: +"Blob ID from POST /blob response. The standard method for uploading file data — avoids base64 overhead and MCP transport limits. Consumed (deleted) after use. (used by: chunk, stream, stream-upload as one of content/content_base64/blob_id)"
    • changedInput schema / properties / content / description
      Previous value: -"Small text content for a chunk (code snippets, JSON, etc.). For larger text files, use POST /blob + blob_id instead. (used by: chunk, stream, stream-upload as one of content/blob_id)"New value: +"Small **text** content (code snippets, JSON, plain text). Stored verbatim as UTF-8 bytes — do NOT pass base64 here, it will be saved as a base64 string and corrupt the file. For binary data inside MCP transport limits, use `content_base64`. For larger files, use POST /blob + `blob_id`. (used by: chunk, stream, stream-upload as one of content/content_base64/blob_id)"
    • addedInput schema / properties / content_base64
      Added value: +{
      +  "description": "Small **binary** content as a base64-encoded string — the server decodes it before writing. Useful for sandboxed agents that can produce base64 in JSON but cannot reach the POST /blob sidecar. Whitespace and newlines are stripped automatically. Practical cap is bounded by the MCP transport message size (a few MB); use POST /blob + `blob_id` for files larger than that. (used by: chunk, stream, stream-upload as one of content/content_base64/blob_id; batch uses the per-entry `files[].content_base64` field instead)",
      +  "type": "string"
      +}
    • changedInput schema / properties / files / description
      Previous value: -"Manifest of files to upload in a single batch (1..200 entries). Each entry needs filename + exactly one of blob_id|content. (required for: batch)"New value: +"Manifest of files to upload in a single batch (1..200 entries). Each entry needs filename + exactly one of blob_id|content|content_base64. (required for: batch)"
    • changedInput schema / properties / files / items / properties / blob_id / description
      Previous value: -"Blob ID from POST /blob. Exactly one of blob_id|content per entry; empty strings rejected."New value: +"Blob ID from POST /blob. Exactly one of blob_id|content|content_base64 per entry; empty strings rejected."
    • changedInput schema / properties / files / items / properties / content / description
      Previous value: -"Inline text content for small files. Exactly one of blob_id|content per entry; empty strings rejected (most plans reject zero-byte uploads server-side anyway). Resolved bytes must be ≤ 4 MB."New value: +"Inline **text** content for small files (stored verbatim as UTF-8 bytes — do NOT pass base64 here, use `content_base64` for binary). Exactly one of blob_id|content|content_base64 per entry; empty strings rejected (most plans reject zero-byte uploads server-side anyway). Resolved bytes must be ≤ 4 MB."
    • addedInput schema / properties / files / items / properties / content_base64
      Added value: +{
      +  "description": "Inline **binary** content as a base64-encoded string — the server decodes it before writing. Useful for sandboxed agents that cannot reach POST /blob. Whitespace/newlines stripped automatically. Exactly one of blob_id|content|content_base64 per entry. Decoded bytes must be ≤ 4 MB.",
      +  "minLength": 1,
      +  "type": "string"
      +}
  11. Changed5 schema fields changed
    • changedInput schema / properties / action / enum
      Previous value: -[
      -  "create-session",
      -  "stream-upload",
      -  "chunk",
      -  "stream",
      -  "finalize",
      -  "status",
      -  "cancel",
      -  "list-sessions",
      -  "cancel-all",
      -  "chunk-status",
      -  "chunk-delete",
      -  "web-import",
      -  "web-list",
      -  "web-cancel",
      -  "web-status",
      -  "limits",
      -  "extensions",
      -  "blob-info"
      -]New value: +[
      +  "create-session",
      +  "stream-upload",
      +  "batch",
      +  "chunk",
      +  "stream",
      +  "finalize",
      +  "status",
      +  "cancel",
      +  "list-sessions",
      +  "cancel-all",
      +  "chunk-status",
      +  "chunk-delete",
      +  "web-import",
      +  "web-list",
      +  "web-cancel",
      +  "web-status",
      +  "limits",
      +  "extensions",
      +  "blob-info"
      +]
    • addedInput schema / properties / creator
      Added value: +{
      +  "description": "Optional client identifier echoed back in the response (1-150 chars, alphanumeric and hyphens only). (used by: batch)",
      +  "maxLength": 150,
      +  "minLength": 1,
      +  "pattern": "^[A-Za-z0-9-]+$",
      +  "type": "string"
      +}
    • addedInput schema / properties / files
      Added value: +{
      +  "description": "Manifest of files to upload in a single batch (1..200 entries). Each entry needs filename + exactly one of blob_id|content. (required for: batch)",
      +  "items": {
      +    "properties": {
      +      "blob_id": {
      +        "description": "Blob ID from POST /blob. Exactly one of blob_id|content per entry; empty strings rejected.",
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "content": {
      +        "description": "Inline text content for small files. Exactly one of blob_id|content per entry; empty strings rejected (most plans reject zero-byte uploads server-side anyway). Resolved bytes must be ≤ 4 MB.",
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "filename": {
      +        "description": "File name for this manifest entry (1-255 chars; the server truncates names over 100 chars while preserving the extension).",
      +        "maxLength": 255,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "hash": {
      +        "description": "Hex hash digest (lowercase or uppercase, at least 1 char). Both hash and hash_algo must be provided together if supplied; caller-supplied digests are forwarded verbatim without local verification.",
      +        "minLength": 1,
      +        "pattern": "^[0-9a-fA-F]+$",
      +        "type": "string"
      +      },
      +      "hash_algo": {
      +        "description": "Hash algorithm. Both hash and hash_algo must be provided together if supplied.",
      +        "enum": [
      +          "md5",
      +          "sha1",
      +          "sha256",
      +          "sha384"
      +        ],
      +        "type": "string"
      +      },
      +      "relative_path": {
      +        "description": "Sub-folder path under folder_id (1-8192 UTF-8 chars). Trailing slash required — normalized if missing. Must not start with \"/\" or contain \".\" / \"..\" segments. Auto-created on upload if the sub-folder doesn't exist.",
      +        "maxLength": 8192,
      +        "minLength": 1,
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "filename"
      +    ],
      +    "type": "object"
      +  },
      +  "maxItems": 200,
      +  "minItems": 1,
      +  "type": "array"
      +}
    • addedInput schema / properties / folder_id
      Added value: +{
      +  "description": "Batch-level target folder OpaqueId or \"root\". All files land under this folder. Omit to upload to the root of the instance. (used by: batch)",
      +  "type": "string"
      +}
    • addedInput schema / properties / include_hash
      Added value: +{
      +  "default": true,
      +  "description": "When true (default), SHA-256 is computed client-side for each entry that doesn't already carry hash/hash_algo. Server validates the digest and rejects truncated/corrupt transfers with a per-file error. Set false to skip hashing. (used by: batch)",
      +  "type": "boolean"
      +}
  12. Changed3 schema fields changed
    • changedInput schema / properties / filename / description
      Previous value: -"Name of the file to upload (required for: create-session, stream-upload unless target_node_id is provided; optional for: web-import)"New value: +"Name of the file to upload. Required for create-session and stream-upload unless target_node_id is provided (in which case it's optional — omit to keep the existing node's name, auto-resolved via a storage details lookup; pass to rename-on-replace). Optional for web-import."
    • changedInput schema / properties / target_node_id / description
      Previous value: -"When provided, overwrite this specific node_id (creating a new version). Overrides filename+parent matching — use this when you need a deterministic overwrite target (e.g., the filename may have drifted or the file lives in a folder you don't want to re-resolve). Preserves node_id; version-list shows prior versions. Must reference an existing file node (not a folder). When set, the API uses action=update and file_id=target_node_id; parent_node_id is ignored and filename is optional (server keeps the existing name unless you pass one). (used by: create-session, stream-upload)"New value: +"When provided, overwrite this specific node_id (creating a new version). Overrides filename+parent matching — use this when you need a deterministic overwrite target (e.g., the filename may have drifted or the file lives in a folder you don't want to re-resolve). Preserves node_id; version-list shows prior versions. Must reference an existing file node (not a folder). When set, the API uses action=update and file_id=target_node_id; parent_node_id is ignored and filename is optional (if omitted, the tool auto-resolves the node's current name from storage details; pass filename only when renaming). (used by: create-session, stream-upload)"
    • addedInput schema / properties / target_node_id / minLength
      Added value: +1
  13. Changed11 schema fields changed
    • changedInput schema / properties / action / enum
      Previous value: -[
      -  "create-session",
      -  "chunk",
      -  "stream",
      -  "finalize",
      -  "status",
      -  "cancel",
      -  "list-sessions",
      -  "cancel-all",
      -  "chunk-status",
      -  "chunk-delete",
      -  "web-import",
      -  "web-list",
      -  "web-cancel",
      -  "web-status",
      -  "limits",
      -  "extensions",
      -  "blob-info"
      -]New value: +[
      +  "create-session",
      +  "stream-upload",
      +  "chunk",
      +  "stream",
      +  "finalize",
      +  "status",
      +  "cancel",
      +  "list-sessions",
      +  "cancel-all",
      +  "chunk-status",
      +  "chunk-delete",
      +  "web-import",
      +  "web-list",
      +  "web-cancel",
      +  "web-status",
      +  "limits",
      +  "extensions",
      +  "blob-info"
      +]
    • changedInput schema / properties / blob_id / description
      Previous value: -"Blob ID from POST /blob response. The standard method for uploading file data — avoids base64 overhead and MCP transport limits. Consumed (deleted) after use. (used by: chunk, stream as one of content/blob_id)"New value: +"Blob ID from POST /blob response. The standard method for uploading file data — avoids base64 overhead and MCP transport limits. Consumed (deleted) after use. (used by: chunk, stream, stream-upload as one of content/blob_id)"
    • changedInput schema / properties / content / description
      Previous value: -"Small text content for a chunk (code snippets, JSON, etc.). For larger text files, use POST /blob + blob_id instead. (used by: chunk, stream as one of content/blob_id)"New value: +"Small text content for a chunk (code snippets, JSON, etc.). For larger text files, use POST /blob + blob_id instead. (used by: chunk, stream, stream-upload as one of content/blob_id)"
    • changedInput schema / properties / filename / description
      Previous value: -"Name of the file to upload (required for: create-session unless target_node_id is provided; optional for: web-import)"New value: +"Name of the file to upload (required for: create-session, stream-upload unless target_node_id is provided; optional for: web-import)"
    • changedInput schema / properties / hash / description
      Previous value: -"File hash for verification (used by: stream)"New value: +"File hash for verification (used by: stream, stream-upload)"
    • changedInput schema / properties / hash_algo / description
      Previous value: -"Hash algorithm (e.g. 'sha256') (used by: stream)"New value: +"Hash algorithm (e.g. 'sha256') (used by: stream, stream-upload)"
    • changedInput schema / properties / max_size / description
      Previous value: -"Maximum bytes the stream may contain. Defaults to plan file size limit if omitted. Only used when stream=true. (used by: create-session)"New value: +"Ceiling for the stream body in bytes. Upload fails mid-transfer if actual bytes exceed this value — always overestimate, never undershoot. There is no penalty for setting it too high. Safest default: omit this parameter and the server uses your plan's file-size limit. Note: streaming uploads via MCP are also bounded by the `POST /blob` sidecar (100 MB cap per blob); for larger files use the chunked flow instead, and call `upload` action `limits` first to confirm plan headroom. Applies to stream sessions only (create-session with stream=true, or any stream-upload call). (used by: create-session, stream-upload)"
    • changedInput schema / properties / parent_node_id / description
      Previous value: -"Parent folder OpaqueId or \"root\" (required for: create-session, web-import)"New value: +"Parent folder OpaqueId or \"root\" (required for: create-session, stream-upload, web-import)"
    • changedInput schema / properties / profile_id / description
      Previous value: -"Target workspace/share profile ID (also accepted as context_id) (required for: create-session, web-import)"New value: +"Target workspace/share profile ID (also accepted as context_id) (required for: create-session, stream-upload, web-import)"
    • changedInput schema / properties / profile_type / description
      Previous value: -"Target type: workspace or share (also accepted as context_type) (required for: create-session, web-import)"New value: +"Target type: workspace or share (also accepted as context_type) (required for: create-session, stream-upload, web-import)"
    • changedInput schema / properties / target_node_id / description
      Previous value: -"When provided, overwrite this specific node_id (creating a new version). Overrides filename+parent matching — use this when you need a deterministic overwrite target (e.g., the filename may have drifted or the file lives in a folder you don't want to re-resolve). Preserves node_id; version-list shows prior versions. Must reference an existing file node (not a folder). When set, the API uses action=update and file_id=target_node_id; parent_node_id is ignored and filename is optional (server keeps the existing name unless you pass one). (used by: create-session)"New value: +"When provided, overwrite this specific node_id (creating a new version). Overrides filename+parent matching — use this when you need a deterministic overwrite target (e.g., the filename may have drifted or the file lives in a folder you don't want to re-resolve). Preserves node_id; version-list shows prior versions. Must reference an existing file node (not a folder). When set, the API uses action=update and file_id=target_node_id; parent_node_id is ignored and filename is optional (server keeps the existing name unless you pass one). (used by: create-session, stream-upload)"
  14. First observed

TDQS

A4.6/5.0
Behavior5/5

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

Annotations only say readOnlyHint=false and destructiveHint=true, but the description adds substantial behavioral context: overwriting same-name uploads in place while preserving a recoverable version, consuming storage credits on certain actions, the 10522 filesize mismatch failure, max_size aborting mid-transfer, wait being in seconds, and password being sent only as a header. This goes far beyond what annotations reveal and matches the destructiveHint of overwrites and credit consumption.

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

Conciseness2/5

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

The description is very long and contains notable redundancy: the content_base64-is-a-last-resort and firewall advice is repeated multiple times, and the 'no base64, no MCP size limit, up to 100 MB' claim appears more than once. Although the UPLOAD STRATEGY section is well-structured and front-loaded, the overall block is far from concise, and some sentences restate earlier warnings.

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

Completeness5/5

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

For a tool with 40 parameters, 20 actions, and no output schema, this description is remarkably complete: it covers the full decision tree, side effects, failure modes, error codes, CAS semantics, profile aliases, and the POST /blob sidecar flow. It also tells the agent to call action='describe' for the full per-action reference, covering remaining gaps in an actionable way.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds meaningful semantics beyond the schema for key parameters: blob_id is the default single-use source for file uploads, content_base64 is a last resort likely to fail above a few MB, content is only for on-the-fly text, filesize must match uploaded bytes to avoid the 10522 trap, and max_size should be overestimated. Not every one of the 40 parameters gets extra treatment, but the critical ambiguous ones are clarified substantially.

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

Purpose5/5

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

The description opens with a specific verb and resource — "File upload" — and immediately enumerates the distinct modes: stream-upload, chunked, web URL import, and batch. This clearly differentiates the tool from siblings like download, storage, and fileshare, and gives an agent a precise mental model of what the tool does.

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

Usage Guidelines5/5

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

The description provides an explicit, top-to-bottom UPLOAD STRATEGY with numbered decision rules: use web-import when a URL is available, prefer POST /blob + stream-upload for everything up to 100 MB, switch to chunked only over the cap or when a session id is needed, and use batch for many small files. It also explicitly warns when NOT to use content_base64 and tells the agent to check firewall settings instead, giving clear guidance versus alternatives.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources