Skip to main content
Glama

Upload

upload
Read-only

Fastio uploads (read): upload session status (wait long-polls), active sessions, chunk status, web-import jobs, upload limits, allowed extensions, and the POST /blob sidecar details (blob-info). Writes are on upload_manage. action='describe' gives the full action/param reference.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
orgNoOrg ID for limit resolution.
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.
limitNoMax results (1-100, default 50).
actionYesOperation. Use 'describe' for full action reference.
offsetNoPagination offset.
statusNoFilter by status.
file_idNoFile ID for update context.
chunk_idNoSpecific chunk number (omit for all).
passwordNoFile Share link password (profile_type=fileshare only). Sent only as the x-ve-password header on each call, never in a URL/log; needed when the target share is password-protected.
upload_idNoUpload session ID or web upload job ID.
instance_idNoTarget workspace/share ID — also the profile_id alias for upload flows; profile_id is canonical.
action_contextNoContext: create or update.
describe_actionNoWith action='describe': return one action's params and notes instead of the action index.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed29 schema fields changed
    • changedInput schema / properties / action / enum
      Previous 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"
      -]New value: +[
      +  "describe",
      +  "status",
      +  "list-sessions",
      +  "chunk-status",
      +  "web-list",
      +  "web-status",
      +  "limits",
      +  "extensions",
      +  "blob-info"
      +]
    • removedInput schema / properties / blob_id
      Removed value: -{
      -  "description": "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.",
      -  "type": "string"
      -}
    • removedInput schema / properties / blob_ref
      Removed value: -{
      -  "description": "Alias for blob_id (deprecated). Accepted on chunk/stream/stream-upload only.",
      -  "type": "string"
      -}
    • removedInput schema / properties / chunk_number
      Removed value: -{
      -  "description": "1-indexed chunk number.",
      -  "maximum": 9007199254740991,
      -  "minimum": 1,
      -  "type": "integer"
      -}
    • removedInput schema / properties / chunk_size
      Removed value: -{
      -  "description": "Chunk size in bytes (server picks default).",
      -  "maximum": 9007199254740991,
      -  "minimum": 1,
      -  "type": "integer"
      -}
    • removedInput schema / properties / content
      Removed value: -{
      -  "description": "**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.",
      -  "type": "string"
      -}
    • removedInput schema / properties / content_base64
      Removed value: -{
      -  "description": "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.",
      -  "type": "string"
      -}
    • removedInput schema / properties / context_id
      Removed value: -{
      -  "description": "Alias for profile_id (either name works)",
      -  "minLength": 1,
      -  "type": "string"
      -}
    • removedInput schema / properties / context_type
      Removed value: -{
      -  "description": "Alias for profile_type (either name works).",
      -  "enum": [
      -    "workspace",
      -    "share",
      -    "fileshare"
      -  ],
      -  "type": "string"
      -}
    • removedInput schema / properties / creator
      Removed value: -{
      -  "description": "Client identifier echoed back (alphanumeric + hyphens).",
      -  "maxLength": 150,
      -  "minLength": 1,
      -  "type": "string"
      -}
    • changedInput schema / properties / describe_action / description
      Previous value: -"When action='describe', narrow the output to ONE action's full params/notes (e.g. 'chunk'). Omit to get the compact action index."New value: +"With action='describe': return one action's params and notes instead of the action index."
    • removedInput schema / properties / filename
      Removed value: -{
      -  "description": "File name. Optional when target_node_id is set (auto-resolved); pass to rename-on-replace.",
      -  "type": "string"
      -}
    • removedInput schema / properties / files
      Removed value: -{
      -  "description": "Batch manifest (1..200 entries). Each: filename + one of blob_id/content/content_base64.",
      -  "items": {
      -    "properties": {
      -      "blob_id": {
      -        "description": "Blob ID from POST /blob. One of blob_id/content/content_base64.",
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "content": {
      -        "description": "Inline **text** content (verbatim UTF-8; ≤4 MB). Do NOT pass base64 here.",
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "content_base64": {
      -        "description": "Inline **binary** as base64 (server-decoded; ≤4 MB).",
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "filename": {
      -        "description": "File name (1-255 characters). An over-length name is a hard ERROR — the platform no longer truncates.",
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "hash": {
      -        "description": "Hex hash digest. Both hash and hash_algo must be supplied together.",
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "hash_algo": {
      -        "description": "Hash algorithm. Pair with hash.",
      -        "enum": [
      -          "md5",
      -          "sha1",
      -          "sha256",
      -          "sha384"
      -        ],
      -        "type": "string"
      -      },
      -      "relative_path": {
      -        "description": "Sub-folder path under folder_id (trailing slash auto-added; no leading slash, no '.' or '..').",
      -        "minLength": 1,
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "filename"
      -    ],
      -    "type": "object"
      -  },
      -  "maxItems": 200,
      -  "minItems": 1,
      -  "type": "array"
      -}
    • removedInput schema / properties / filesize
      Removed value: -{
      -  "description": "Total file size in bytes.",
      -  "maximum": 9007199254740991,
      -  "minimum": 1,
      -  "type": "integer"
      -}
    • removedInput schema / properties / folder_id
      Removed value: -{
      -  "description": "Target folder OpaqueId or \"root\". Omit for instance root.",
      -  "type": "string"
      -}
    • removedInput schema / properties / hash
      Removed value: -{
      -  "description": "File hash for verification.",
      -  "type": "string"
      -}
    • removedInput schema / properties / hash_algo
      Removed value: -{
      -  "description": "Hash algorithm (e.g. 'sha256').",
      -  "type": "string"
      -}
    • removedInput schema / properties / if_version_id
      Removed value: -{
      -  "description": "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.",
      -  "minLength": 1,
      -  "type": "string"
      -}
    • removedInput schema / properties / include_hash
      Removed value: -{
      -  "description": "Compute SHA-256 client-side for entries without a hash (default true when omitted).",
      -  "type": "boolean"
      -}
    • removedInput schema / properties / max_size
      Removed value: -{
      -  "description": "Stream-body byte ceiling — aborts mid-transfer if exceeded. Always overestimate; omit to use plan limit. Stream sessions only.",
      -  "maximum": 9007199254740991,
      -  "minimum": 1,
      -  "type": "integer"
      -}
    • removedInput schema / properties / parent_node_id
      Removed value: -{
      -  "description": "Parent folder OpaqueId or \"root\". On create-session, stream-upload, and web-import, folder_id is accepted as an alias (either name works).",
      -  "type": "string"
      -}
    • 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 target share is password-protected."New value: +"File Share link password (profile_type=fileshare only). Sent only as the x-ve-password header on each call, never in a URL/log; needed when the target share is password-protected."
    • removedInput schema / properties / profile_id
      Removed value: -{
      -  "description": "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.",
      -  "type": "string"
      -}
    • removedInput schema / properties / profile_type
      Removed value: -{
      -  "description": "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).",
      -  "enum": [
      -    "workspace",
      -    "share",
      -    "fileshare"
      -  ],
      -  "type": "string"
      -}
    • removedInput schema / properties / share_id
      Removed value: -{
      -  "description": "Alias for profile_id when the profile is a share — implies profile_type=share (so profile_type may be omitted).",
      -  "type": "string"
      -}
    • removedInput schema / properties / stream
      Removed value: -{
      -  "description": "Stream mode — size optional, single POST, auto-finalizes.",
      -  "type": "boolean"
      -}
    • removedInput schema / properties / target_node_id
      Removed value: -{
      -  "description": "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).",
      -  "minLength": 1,
      -  "type": "string"
      -}
    • removedInput schema / properties / url
      Removed value: -{
      -  "description": "Source URL to import from.",
      -  "type": "string"
      -}
    • removedInput schema / properties / workspace_id
      Removed value: -{
      -  "description": "Alias for profile_id when the profile is a workspace — implies profile_type=workspace (so profile_type may be omitted).",
      -  "type": "string"
      -}
  2. 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
  3. 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
  4. 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)."
  5. 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…"
  6. 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"
      +}
  7. 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
  8. 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…"
  9. 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"
  10. 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"
  11. 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"
      +}
  12. 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"
      +}
  13. 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
  14. 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)"
  15. First observed

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered; the description still adds value by disclosing that `wait` long-polls and that blob-info is a POST /blob sidecar, which are behavioral traits an agent needs. It does not mention auth requirements, rate limits, or what the read payloads contain.

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

Conciseness5/5

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

Two dense sentences, front-loaded with the read scope and the sibling boundary, then the action reference escape hatch. Every clause maps to a capability or routing decision; nothing is padding.

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 14-parameter, multi-action read tool with no output schema, the description covers scope, sibling boundary, and points to `describe` for per-action detail, which is a sound completeness strategy. It leaves return shapes and per-action prerequisites unstated, though the describe mechanism mitigates that.

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 description coverage is 100%, so the baseline is 3, and the description earns a step above by tying key parameters to behavior: `wait` long-polling, `blob-info` for sidecar details, and action='describe' for the action/param index. It adds framing rather than raw syntax, which the schema already supplies.

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 names the specific resource (Fastio uploads) and scopes it precisely as the read half: session status, sessions, chunk status, web-import jobs, limits, extensions, blob-info. It explicitly contrasts itself with `upload_manage`, so an agent can distinguish it from its write sibling without opening either schema.

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

Usage Guidelines4/5

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

It gives an explicit boundary ("Writes are on `upload_manage`") and routes the agent to action='describe' for the full reference, which is a real usage rule. It does not say when to prefer one action (e.g. status vs chunk-status) over another, so it stops short of full when/when-not coverage.

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