Skip to main content
Glama

storage

Destructive

Files & folders on workspaces/shares: list, search, copy, move, delete, rename, trash, transfer, versions, locks, previews, and per-node metadata (get/set/delete/extract/versions). FILES OFTEN ALREADY CARRY AI-EXTRACTED METADATA, AND IT IS SEARCHABLE — check or search metadata before reading files: it frequently answers the question without opening anything, and finds files by value without listing folders. Call action='describe' for the full action/param reference. Destructive: purge (irreversible). delete moves to trash. metadata-delete removes metadata keys. Verbosity (detail param): list/recent/trash-list default to terse (compact rows); search defaults to standard (rows keep their facts values); details defaults to full (drill-down). Pass an explicit detail to override.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
qNolist/search: alias for `query`. content: the relevance query (1-512 chars) — BM25 over THAT ONE FILE's chunks, never across the workspace, so it cannot find another file; returns every one of the top `limit` hits (default 3, max 20) with FULL text, is not byte-budgeted, and cannot be combined with `cursor`, `max_bytes`, or a page/chunk window.
keysNometadata-delete: JSON array of metadata keys to delete (omit to clear all).
nameNoName for new folder or file.
pageNocontent: read one page (1-based). A window selector.
sizeNoSize preset: "IconSmall", "IconMedium", "Preview", or custom.
typeNoFilter by node type.
limitNoMax results — 1-500, default 100 on list/search. content NARROWS it to 1-20, default 5 (3 with q); a value outside 1-20 is refused before any platform call.
queryNoSearch query — keyword, or keyword + semantic when intelligence is on.
widthNoTarget width in pixels.
actionYesOperation. Use 'describe' for full action reference.
cursorNoOpaque cursor from a previous response.
detailNoPer-node verbosity for list/recent/search/trash-list/details. Defaults: terse for list/recent/trash-list, STANDARD for search (terse drops fact values), full for details. Bump to full when you need ai.attach (files_attach preflight), virus, hashes, file_attributes, lock_info, or long-form summaries. See action='describe' for per-level field lists. Not to be confused with `details` (search-only).
heightNoTarget height in pixels.
offsetNoResults to skip (default 0).
outputNocontent-only response tier (default full). terse OMITS each chunk's `text` — every other field still comes back, so it is the cheap way to map a file's chunks before reading any. Not `detail`, the per-node tier on list/recent/search/details. EXACTLY ONE tier: markdown composition is NOT supported here, so `full,markdown` is rejected before the request is built.
detailsNoSearch-only. Return fully-hydrated node objects per result (default limit drops to 10). Distinct from `detail` — call action='describe' for the contrast.
node_idNoStorage tree node opaque ID. Both files and folders are nodes — use this name regardless of which. Storage node opaque ID, or 'root'. On `list`, the target folder may also be given as parent_node_id or parent_id (aliases), and defaults to 'root' (the storage top level) when all three are omitted.
sort_byNoSort column (default: name).
chunk_toNocontent: last chunk `position` of a chunk range (0-based, >= chunk_from, and under 10000). Requires chunk_from.
durationNolock-acquire only — how long the lock should hold, in seconds (60-3600). Omit for the platform default, which is SHORT: measured at 300s (5 minutes) on dev1.
max_sizeNoMax read-content bytes (default 512000, max 1048576).
new_nameNoNew name for file or folder.
node_idsNoStorage node opaque IDs (details: 1-25 max).
share_idNoFor add-link: the target share to link (workspace-only). For the dual-type actions (list/details/copy/move/etc.): a profile alias implying profile_type=share — the share you are operating in (so profile_type may be omitted).
sort_dirNoSort direction (default: asc).
max_bytesNocontent, ORDERED reads only: UTF-8 byte budget for the returned passages (1024-262144, default 32768). Text is never cut inside a chunk — the page stops BEFORE the chunk that would exceed the budget. Refused alongside q: a relevance read is unbudgeted.
node_typeNorename-only OPTIONAL hint: the node's type, when the caller already knows it. Notes route to a dedicated endpoint, so supplying node_type lets rename skip the /details/ type-probe round-trip. Omit to have rename probe automatically. Distinct from the list/recent `type` filter.
parent_idNoAlias for node_id on `list` (the folder whose contents to list), or 'root'. `list` defaults to 'root' when omitted.
search_inNofilename | content | both (DEFAULT). filename = name only, find-style. content = the AI's summary + semantic, NOT grep. OMIT unless you mean it — sending it changes the response shape (adds a search_metadata block); omitting reproduces today's behavior byte-for-byte. Pair filename with name_match.
upload_idNoOpaque ID of completed upload session.
chunk_fromNocontent: start of an inclusive chunk `position` range (0-based, a chunk's ordinal in read order, under 10000). LEGAL ALONE — it reads on from that position; chunk_from=N chunk_to=N reads one chunk in full.
context_idNoAlias for profile_id (either name works)
key_valuesNometadata-set: JSON object of field-name -> value, max 100 entries, matching the workspace field VOCABULARY (list names with `metadata action=fields-list`) — NOT template fields; templates were removed. ADDITIVE: send ONLY the fields you are changing, and note it CANNOT clear a field (use metadata-delete with an explicit `keys` list).
lock_tokenNolock-release only — the token returned by lock-acquire. REQUIRED to release a lock.
name_matchNoauto (DEFAULT) | exact | prefix | contains | glob. exact = whole name; prefix = starts with; contains = substring — those three are LITERAL (* and ? are ordinary chars). glob = wildcards over the WHOLE name: *.pdf, report-*.xlsx. Do NOT pre-escape. Applies when search_in is filename or both; auto keeps today's relevance. Precise modes cap the pattern at 256 chars, reject an empty one.
profile_idNoPolymorphic context ID (pair with profile_type=workspace|share). Typed aliases let you omit profile_type: workspace_id (⇒ workspace) / share_id (⇒ share, on dual-type actions); also context_id / instance_id. 19-digit workspace or share ID, or custom name.
version_idNoVersion ID to restore.
as_markdownNoOpt-in (list/recent/search/details/trash-list): when true, the platform renders the response as GitHub-flavored Markdown (?output=<detail>,markdown) for compact, human/agent-readable output instead of JSON. Omit (default) for the unchanged JSON shape with web_url enrichment + _next hints. Markdown is a passthrough — no client-side reshaping.
files_scopeNoScope semantic search to file versions. See describe for full constraints.
instance_idNoAlias for profile_id (REST/how-to name; profile_id is canonical).
template_idNoRETIRED — metadata templates were removed, so there is no template to scope to. Supplying it FAILS the request: the platform hard-refuses it on metadata-extract, metadata-set and the search routes alike, and OPTIONS does not advertise it. Node metadata is written as facts against the workspace field vocabulary — use key_values to write, and extract_fields to scope an extraction.
context_typeNoAlias for profile_type (either name works)
preview_typeNoType of preview to generate. See describe for which preview_types apply to which file categories.
profile_typeNoProfile type: "workspace" or "share".
workspace_idNoAlias for profile_id when the profile is a workspace — implies profile_type=workspace (so profile_type may be omitted). Valid on every storage action.
display_limitNoHow many items to return. Default 10, max 500. The MCP trims post-fetch; backend cache stays warm. Used by: list, recent, search. list/recent paginate via the `cursor` param; search paginates via `offset` (increase offset by the page size) for additional pages.
folders_scopeNoScope semantic search to folders via BFS. See describe for full constraints.
output_formatNoOutput format: "png", "jpg", "webp".
transfer_modeNo'copy' (default) or 'move'. 'move' invalid for node_id 'root'.
case_sensitiveNoCase-sensitive matching for exact/prefix/contains/glob. Default false (like find -iname), which folds non-ASCII too. Ignored under name_match=auto.
dest_parent_idNoDestination parent folder opaque ID, or 'root'. Primary param for transfer (the parent in the OTHER instance). For copy/move within the same instance use target_parent_id — dest_parent_id is also accepted there as an alias.
extract_fieldsNometadata-extract: JSON array of field names (e.g. `["vendor","amount"]`); omit for a full-row extract. WITH a template bound it narrows extraction to those fields. WITHOUT one it is NOT a filter: the request may be REFUSED, and where accepted the names act only as a re-run key — the file is still read in full, other fields are still written, and named fields are not guaranteed to return.
parent_node_idNoParent folder opaque ID, or 'root'. (On `list`, also accepted as an alias for node_id — the folder to list; `list` defaults to 'root' when omitted.)
transform_nameNoTransform name, e.g. "image" for resize/crop/format.
describe_actionNoWhen action='describe', narrow the output to ONE action's full params/notes (e.g. 'list'). Omit to get the compact action index.
dest_instance_idNoDestination workspace or share profile ID.
metadata_filtersNosearch: JSON array of metadata predicates, e.g. '[{"field":"category","operator":"=","value":"Legal"}]'. Narrows to files whose metadata satisfies EVERY predicate BEFORE the query ranks — see describe.
target_parent_idNoDestination folder opaque ID, or 'root'.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / detail / description
      Previous value: -"Per-node verbosity for list/recent/search/trash-list/details. Defaults: terse for list/recent/search/trash-list, full for details. Bump to full when you need ai.attach (files_attach preflight), virus, hashes, file_attributes, lock_info, or long-form summaries. See action='describe' for per-level field lists. Not to be confused with `details` (search-only)."New value: +"Per-node verbosity for list/recent/search/trash-list/details. Defaults: terse for list/recent/trash-list, STANDARD for search (terse drops fact values), full for details. Bump to full when you need ai.attach (files_attach preflight), virus, hashes, file_attributes, lock_info, or long-form summaries. See action='describe' for per-level field lists. Not to be confused with `details` (search-only)."
  2. Changed8 schema fields changed
    • changedInput schema / properties / action / enum
      Previous value: -[
      -  "describe",
      -  "list",
      -  "recent",
      -  "details",
      -  "search",
      -  "trash-list",
      -  "create-folder",
      -  "copy",
      -  "move",
      -  "delete",
      -  "rename",
      -  "purge",
      -  "restore",
      -  "add-file",
      -  "add-link",
      -  "transfer",
      -  "version-list",
      -  "version-restore",
      -  "lock-acquire",
      -  "lock-status",
      -  "lock-release",
      -  "preview-url",
      -  "preview-transform",
      -  "read-content",
      -  "metadata-facts",
      -  "metadata-get",
      -  "metadata-set",
      -  "metadata-delete",
      -  "metadata-extract",
      -  "metadata-extract-all",
      -  "metadata-versions"
      -]New value: +[
      +  "describe",
      +  "list",
      +  "recent",
      +  "details",
      +  "search",
      +  "trash-list",
      +  "create-folder",
      +  "copy",
      +  "move",
      +  "delete",
      +  "rename",
      +  "purge",
      +  "restore",
      +  "add-file",
      +  "add-link",
      +  "transfer",
      +  "version-list",
      +  "version-restore",
      +  "lock-acquire",
      +  "lock-status",
      +  "lock-release",
      +  "preview-url",
      +  "preview-transform",
      +  "read-content",
      +  "content",
      +  "metadata-facts",
      +  "metadata-get",
      +  "metadata-set",
      +  "metadata-delete",
      +  "metadata-extract",
      +  "metadata-extract-all",
      +  "metadata-versions"
      +]
    • addedInput schema / properties / chunk_from
      Added value: +{
      +  "description": "content: start of an inclusive chunk `position` range (0-based, a chunk's ordinal in read order, under 10000). LEGAL ALONE — it reads on from that position; chunk_from=N chunk_to=N reads one chunk in full.",
      +  "maximum": 9007199254740991,
      +  "minimum": 0,
      +  "type": "integer"
      +}
    • addedInput schema / properties / chunk_to
      Added value: +{
      +  "description": "content: last chunk `position` of a chunk range (0-based, >= chunk_from, and under 10000). Requires chunk_from.",
      +  "maximum": 9007199254740991,
      +  "minimum": 0,
      +  "type": "integer"
      +}
    • changedInput schema / properties / limit / description
      Previous value: -"Max results (1-500, default 100)."New value: +"Max results — 1-500, default 100 on list/search. content NARROWS it to 1-20, default 5 (3 with q); a value outside 1-20 is refused before any platform call."
    • addedInput schema / properties / max_bytes
      Added value: +{
      +  "description": "content, ORDERED reads only: UTF-8 byte budget for the returned passages (1024-262144, default 32768). Text is never cut inside a chunk — the page stops BEFORE the chunk that would exceed the budget. Refused alongside q: a relevance read is unbudgeted.",
      +  "maximum": 262144,
      +  "minimum": 1024,
      +  "type": "integer"
      +}
    • addedInput schema / properties / output
      Added value: +{
      +  "description": "content-only response tier (default full). terse OMITS each chunk's `text` — every other field still comes back, so it is the cheap way to map a file's chunks before reading any. Not `detail`, the per-node tier on list/recent/search/details. EXACTLY ONE tier: markdown composition is NOT supported here, so `full,markdown` is rejected before the request is built.",
      +  "enum": [
      +    "terse",
      +    "standard",
      +    "full"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / page
      Added value: +{
      +  "description": "content: read one page (1-based). A window selector.",
      +  "maximum": 9007199254740991,
      +  "minimum": 1,
      +  "type": "integer"
      +}
    • changedInput schema / properties / q / description
      Previous value: -"Alias for query."New value: +"list/search: alias for `query`. content: the relevance query (1-512 chars) — BM25 over THAT ONE FILE's chunks, never across the workspace, so it cannot find another file; returns every one of the top `limit` hits (default 3, max 20) with FULL text, is not byte-budgeted, and cannot be combined with `cursor`, `max_bytes`, or a page/chunk window."
  3. Changed9 schema fields changed
    • changedInput schema / properties / action / enum
      Previous value: -[
      -  "describe",
      -  "list",
      -  "recent",
      -  "details",
      -  "search",
      -  "trash-list",
      -  "create-folder",
      -  "copy",
      -  "move",
      -  "delete",
      -  "rename",
      -  "purge",
      -  "restore",
      -  "add-file",
      -  "add-link",
      -  "transfer",
      -  "version-list",
      -  "version-restore",
      -  "lock-acquire",
      -  "lock-status",
      -  "lock-release",
      -  "preview-url",
      -  "preview-transform",
      -  "read-content",
      -  "metadata-get",
      -  "metadata-set",
      -  "metadata-delete",
      -  "metadata-extract",
      -  "metadata-versions",
      -  "metadata-list-files",
      -  "metadata-list-templates-in-use"
      -]New value: +[
      +  "describe",
      +  "list",
      +  "recent",
      +  "details",
      +  "search",
      +  "trash-list",
      +  "create-folder",
      +  "copy",
      +  "move",
      +  "delete",
      +  "rename",
      +  "purge",
      +  "restore",
      +  "add-file",
      +  "add-link",
      +  "transfer",
      +  "version-list",
      +  "version-restore",
      +  "lock-acquire",
      +  "lock-status",
      +  "lock-release",
      +  "preview-url",
      +  "preview-transform",
      +  "read-content",
      +  "metadata-facts",
      +  "metadata-get",
      +  "metadata-set",
      +  "metadata-delete",
      +  "metadata-extract",
      +  "metadata-extract-all",
      +  "metadata-versions"
      +]
    • addedInput schema / properties / duration
      Added value: +{
      +  "description": "lock-acquire only — how long the lock should hold, in seconds (60-3600). Omit for the platform default, which is SHORT: measured at 300s (5 minutes) on dev1.",
      +  "maximum": 3600,
      +  "minimum": 60,
      +  "type": "integer"
      +}
    • changedInput schema / properties / extract_fields / description
      Previous value: -"metadata-extract: JSON array of field names to extract (e.g. `[\"vendor\",\"amount\"]`); omit/null for full row."New value: +"metadata-extract: JSON array of field names (e.g. `[\"vendor\",\"amount\"]`); omit for a full-row extract. WITH a template bound it narrows extraction to those fields. WITHOUT one it is NOT a filter: the request may be REFUSED, and where accepted the names act only as a re-run key — the file is still read in full, other fields are still written, and named fields are not guaranteed to return."
    • changedInput schema / properties / key_values / description
      Previous value: -"metadata-set: JSON object of key-value pairs matching template fields."New value: +"metadata-set: JSON object of field-name -> value, max 100 entries, matching the workspace field VOCABULARY (list names with `metadata action=fields-list`) — NOT template fields; templates were removed. ADDITIVE: send ONLY the fields you are changing, and note it CANNOT clear a field (use metadata-delete with an explicit `keys` list)."
    • changedInput schema / properties / lock_token / description
      Previous value: -"lock-release/lock-heartbeat only — the token returned by lock-acquire. REQUIRED to release or refresh a lock."New value: +"lock-release only — the token returned by lock-acquire. REQUIRED to release a lock."
    • changedInput schema / properties / metadata_filters / description
      Previous value: -"metadata-list-files: JSON filter criteria for the metadata file listing."New value: +"search: JSON array of metadata predicates, e.g. '[{\"field\":\"category\",\"operator\":\"=\",\"value\":\"Legal\"}]'. Narrows to files whose metadata satisfies EVERY predicate BEFORE the query ranks — see describe."
    • removedInput schema / properties / order_by
      Removed value: -{
      -  "description": "metadata-list-files: field key to sort by.",
      -  "type": "string"
      -}
    • removedInput schema / properties / order_desc
      Removed value: -{
      -  "description": "metadata-list-files: sort descending ('true' or 'false').",
      -  "type": "string"
      -}
    • changedInput schema / properties / template_id / description
      Previous value: -"Metadata template ID (e.g. mt_abc123). Required for metadata-set/metadata-list-files. The template SYSTEM (CRUD/assign/AI-extraction) lives on the `metadata` tool."New value: +"RETIRED — metadata templates were removed, so there is no template to scope to. Supplying it FAILS the request: the platform hard-refuses it on metadata-extract, metadata-set and the search routes alike, and OPTIONS does not advertise it. Node metadata is written as facts against the workspace field vocabulary — use key_values to write, and extract_fields to scope an extraction."
  4. Changed1 schema field changed
    • addedInput schema / properties / lock_token
      Added value: +{
      +  "description": "lock-release/lock-heartbeat only — the token returned by lock-acquire. REQUIRED to release or refresh a lock.",
      +  "type": "string"
      +}
  5. Changed12 schema fields changed
    • changedInput schema / properties / as_markdown / description
      Previous value: -"Opt-in (list/recent/search/details/trash-list): when true, the platform renders the response as GitHub-flavored Markdown (?output=<detail>,markdown) for…"New value: +"Opt-in (list/recent/search/details/trash-list): when true, the platform renders the response as GitHub-flavored Markdown (?output=<detail>,markdown) for compact, human/agent-readable output instead of JSON. Omit (default) for the unchanged JSON shape with web_url enrichment + _next hints. Markdown is a passthrough — no client-side reshaping."
    • addedInput schema / properties / case_sensitive
      Added value: +{
      +  "description": "Case-sensitive matching for exact/prefix/contains/glob. Default false (like find -iname), which folds non-ASCII too. Ignored under name_match=auto.",
      +  "type": "boolean"
      +}
    • changedInput schema / properties / dest_parent_id / description
      Previous value: -"Destination parent folder opaque ID, or 'root'. Primary param for transfer (the parent in the OTHER instance). For copy/move within the same instance use…"New value: +"Destination parent folder opaque ID, or 'root'. Primary param for transfer (the parent in the OTHER instance). For copy/move within the same instance use target_parent_id — dest_parent_id is also accepted there as an alias."
    • changedInput schema / properties / detail / description
      Previous value: -"Per-node verbosity for list/recent/search/trash-list/details. Defaults: terse for list/recent/search/trash-list, full for details. Bump to full when you need…"New value: +"Per-node verbosity for list/recent/search/trash-list/details. Defaults: terse for list/recent/search/trash-list, full for details. Bump to full when you need ai.attach (files_attach preflight), virus, hashes, file_attributes, lock_info, or long-form summaries. See action='describe' for per-level field lists. Not to be confused with `details` (search-only)."
    • changedInput schema / properties / display_limit / description
      Previous value: -"How many items to return. Default 10, max 500. The MCP trims post-fetch; backend cache stays warm. Used by: list, recent, search. list/recent paginate via the…"New value: +"How many items to return. Default 10, max 500. The MCP trims post-fetch; backend cache stays warm. Used by: list, recent, search. list/recent paginate via the `cursor` param; search paginates via `offset` (increase offset by the page size) for additional pages."
    • addedInput schema / properties / name_match
      Added value: +{
      +  "description": "auto (DEFAULT) | exact | prefix | contains | glob. exact = whole name; prefix = starts with; contains = substring — those three are LITERAL (* and ? are ordinary chars). glob = wildcards over the WHOLE name: *.pdf, report-*.xlsx. Do NOT pre-escape. Applies when search_in is filename or both; auto keeps today's relevance. Precise modes cap the pattern at 256 chars, reject an empty one.",
      +  "enum": [
      +    "auto",
      +    "exact",
      +    "prefix",
      +    "contains",
      +    "glob"
      +  ],
      +  "type": "string"
      +}
    • changedInput schema / properties / node_id / description
      Previous value: -"Storage tree node opaque ID. Both files and folders are nodes — use this name regardless of which. Storage node opaque ID, or 'root'. On `list`, the target…"New value: +"Storage tree node opaque ID. Both files and folders are nodes — use this name regardless of which. Storage node opaque ID, or 'root'. On `list`, the target folder may also be given as parent_node_id or parent_id (aliases), and defaults to 'root' (the storage top level) when all three are omitted."
    • changedInput schema / properties / node_type / description
      Previous value: -"rename-only OPTIONAL hint: the node's type, when the caller already knows it. Notes route to a dedicated endpoint, so supplying node_type lets rename skip the…"New value: +"rename-only OPTIONAL hint: the node's type, when the caller already knows it. Notes route to a dedicated endpoint, so supplying node_type lets rename skip the /details/ type-probe round-trip. Omit to have rename probe automatically. Distinct from the list/recent `type` filter."
    • changedInput schema / properties / profile_id / description
      Previous value: -"Polymorphic context ID (pair with profile_type=workspace|share). Typed aliases let you omit profile_type: workspace_id (⇒ workspace) / share_id (⇒ share, on…"New value: +"Polymorphic context ID (pair with profile_type=workspace|share). Typed aliases let you omit profile_type: workspace_id (⇒ workspace) / share_id (⇒ share, on dual-type actions); also context_id / instance_id. 19-digit workspace or share ID, or custom name."
    • addedInput schema / properties / search_in
      Added value: +{
      +  "description": "filename | content | both (DEFAULT). filename = name only, find-style. content = the AI's summary + semantic, NOT grep. OMIT unless you mean it — sending it changes the response shape (adds a search_metadata block); omitting reproduces today's behavior byte-for-byte. Pair filename with name_match.",
      +  "enum": [
      +    "filename",
      +    "content",
      +    "both"
      +  ],
      +  "type": "string"
      +}
    • changedInput schema / properties / share_id / description
      Previous value: -"For add-link: the target share to link (workspace-only). For the dual-type actions (list/details/copy/move/etc.): a profile alias implying profile_type=share —…"New value: +"For add-link: the target share to link (workspace-only). For the dual-type actions (list/details/copy/move/etc.): a profile alias implying profile_type=share — the share you are operating in (so profile_type may be omitted)."
    • changedInput schema / properties / template_id / description
      Previous value: -"Metadata template ID (e.g. mt_abc123). Required for metadata-set/metadata-list-files. The template SYSTEM (CRUD/assign/AI-extraction) lives on the `metadata`…"New value: +"Metadata template ID (e.g. mt_abc123). Required for metadata-set/metadata-list-files. The template SYSTEM (CRUD/assign/AI-extraction) lives on the `metadata` tool."
  6. Changed2 schema fields changed
    • changedInput schema / properties / parent_id / description
      Previous value: -"Alias for node_id on `list` (the folder whose contents to list), or 'root'."New value: +"Alias for node_id on `list` (the folder whose contents to list), or 'root'. `list` defaults to 'root' when omitted."
    • changedInput schema / properties / parent_node_id / description
      Previous value: -"Parent folder opaque ID, or 'root'. (On `list`, also accepted as an alias for node_id — the folder to list.)"New value: +"Parent folder opaque ID, or 'root'. (On `list`, also accepted as an alias for node_id — the folder to list; `list` defaults to 'root' when omitted.)"
  7. Changed3 schema fields changed
    • changedInput schema / properties / node_id / description
      Previous value: -"Storage tree node opaque ID. Both files and folders are nodes — use this name regardless of which. Storage node opaque ID, or 'root'."New value: +"Storage tree node opaque ID. Both files and folders are nodes — use this name regardless of which. Storage node opaque ID, or 'root'. On `list`, the target…"
    • addedInput schema / properties / parent_id
      Added value: +{
      +  "description": "Alias for node_id on `list` (the folder whose contents to list), or 'root'.",
      +  "type": "string"
      +}
    • changedInput schema / properties / parent_node_id / description
      Previous value: -"Parent folder opaque ID, or 'root'."New value: +"Parent folder opaque ID, or 'root'. (On `list`, also accepted as an alias for node_id — the folder to list.)"
  8. Changed3 schema fields changed
    • 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. 19-digit workspace or share ID, or…"New value: +"Polymorphic context ID (pair with profile_type=workspace|share). Typed aliases let you omit profile_type: workspace_id (⇒ workspace) / share_id (⇒ share, on…"
    • changedInput schema / properties / share_id / description
      Previous value: -"Share identifier to link (workspace-only)."New value: +"For add-link: the target share to link (workspace-only). For the dual-type actions (list/details/copy/move/etc.): a profile alias implying profile_type=share —…"
    • 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). Valid on every storage action.",
      +  "type": "string"
      +}
  9. Changed1 schema field changed
    • addedInput schema / properties / instance_id
      Added value: +{
      +  "description": "Alias for profile_id (REST/how-to name; profile_id is canonical).",
      +  "minLength": 1,
      +  "type": "string"
      +}
  10. Changed1 schema field changed
    • changedInput schema / properties / dest_parent_id / description
      Previous value: -"Destination parent folder opaque ID, or 'root'."New value: +"Destination parent folder opaque ID, or 'root'. Primary param for transfer (the parent in the OTHER instance). For copy/move within the same instance use…"
  11. Changed14 schema fields changed
    • changedInput schema / properties / action / enum
      Previous value: -[
      -  "describe",
      -  "list",
      -  "recent",
      -  "details",
      -  "search",
      -  "trash-list",
      -  "create-folder",
      -  "copy",
      -  "move",
      -  "delete",
      -  "rename",
      -  "purge",
      -  "restore",
      -  "add-file",
      -  "add-link",
      -  "transfer",
      -  "version-list",
      -  "version-restore",
      -  "lock-acquire",
      -  "lock-status",
      -  "lock-release",
      -  "preview-url",
      -  "preview-transform",
      -  "read-content"
      -]New value: +[
      +  "describe",
      +  "list",
      +  "recent",
      +  "details",
      +  "search",
      +  "trash-list",
      +  "create-folder",
      +  "copy",
      +  "move",
      +  "delete",
      +  "rename",
      +  "purge",
      +  "restore",
      +  "add-file",
      +  "add-link",
      +  "transfer",
      +  "version-list",
      +  "version-restore",
      +  "lock-acquire",
      +  "lock-status",
      +  "lock-release",
      +  "preview-url",
      +  "preview-transform",
      +  "read-content",
      +  "metadata-get",
      +  "metadata-set",
      +  "metadata-delete",
      +  "metadata-extract",
      +  "metadata-versions",
      +  "metadata-list-files",
      +  "metadata-list-templates-in-use"
      +]
    • addedInput schema / properties / as_markdown
      Added value: +{
      +  "description": "Opt-in (list/recent/search/details/trash-list): when true, the platform renders the response as GitHub-flavored Markdown (?output=<detail>,markdown) for…",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / describe_action
      Added value: +{
      +  "description": "When action='describe', narrow the output to ONE action's full params/notes (e.g. 'list'). Omit to get the compact action index.",
      +  "type": "string"
      +}
    • changedInput schema / properties / detail / description
      Previous value: -"Per-node verbosity for list/recent/search/trash-list/details. Defaults: terse for list/recent/search/trash-list, full for details. Bump to full when you need ai.attach (files_attach preflight), virus, hashes, file_attributes, lock_info, or long-form summaries. See action='describe' for per-level field lists. Not to be confused with `details` (search-only)."New value: +"Per-node verbosity for list/recent/search/trash-list/details. Defaults: terse for list/recent/search/trash-list, full for details. Bump to full when you need…"
    • changedInput schema / properties / display_limit / description
      Previous value: -"How many items to return. Default 10, max 500. The MCP trims post-fetch; backend cache stays warm. Used by: list, recent, search. Cursor pagination via `cursor` param for additional pages."New value: +"How many items to return. Default 10, max 500. The MCP trims post-fetch; backend cache stays warm. Used by: list, recent, search. list/recent paginate via the…"
    • addedInput schema / properties / extract_fields
      Added value: +{
      +  "description": "metadata-extract: JSON array of field names to extract (e.g. `[\"vendor\",\"amount\"]`); omit/null for full row.",
      +  "type": "string"
      +}
    • addedInput schema / properties / key_values
      Added value: +{
      +  "description": "metadata-set: JSON object of key-value pairs matching template fields.",
      +  "type": "string"
      +}
    • addedInput schema / properties / keys
      Added value: +{
      +  "description": "metadata-delete: JSON array of metadata keys to delete (omit to clear all).",
      +  "type": "string"
      +}
    • addedInput schema / properties / metadata_filters
      Added value: +{
      +  "description": "metadata-list-files: JSON filter criteria for the metadata file listing.",
      +  "type": "string"
      +}
    • addedInput schema / properties / node_type
      Added value: +{
      +  "description": "rename-only OPTIONAL hint: the node's type, when the caller already knows it. Notes route to a dedicated endpoint, so supplying node_type lets rename skip the…",
      +  "enum": [
      +    "file",
      +    "folder",
      +    "link",
      +    "note"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / order_by
      Added value: +{
      +  "description": "metadata-list-files: field key to sort by.",
      +  "type": "string"
      +}
    • addedInput schema / properties / order_desc
      Added value: +{
      +  "description": "metadata-list-files: sort descending ('true' or 'false').",
      +  "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. 19-digit workspace or share ID, or custom name."New value: +"Polymorphic context ID. Pair with profile_type=workspace|share|org. Use workspace_id instead when only workspaces are valid. 19-digit workspace or share ID, or…"
    • addedInput schema / properties / template_id
      Added value: +{
      +  "description": "Metadata template ID (e.g. mt_abc123). Required for metadata-set/metadata-list-files. The template SYSTEM (CRUD/assign/AI-extraction) lives on the `metadata`…",
      +  "type": "string"
      +}
  12. Changed24 schema fields changed
    • removedInput schema / properties / display_limit / anyOf
      Removed value: -[
      -  {
      -    "maximum": 500,
      -    "minimum": 1,
      -    "type": "integer"
      -  },
      -  {
      -    "pattern": "^-?\\d+$",
      -    "type": "string"
      -  }
      -]
    • addedInput schema / properties / display_limit / maximum
      Added value: +500
    • addedInput schema / properties / display_limit / minimum
      Added value: +1
    • addedInput schema / properties / display_limit / type
      Added value: +"integer"
    • removedInput schema / properties / height / anyOf
      Removed value: -[
      -  {
      -    "maximum": 9007199254740991,
      -    "minimum": 1,
      -    "type": "integer"
      -  },
      -  {
      -    "pattern": "^-?\\d+$",
      -    "type": "string"
      -  }
      -]
    • addedInput schema / properties / height / maximum
      Added value: +9007199254740991
    • addedInput schema / properties / height / minimum
      Added value: +1
    • addedInput schema / properties / height / type
      Added value: +"integer"
    • removedInput schema / properties / limit / anyOf
      Removed value: -[
      -  {
      -    "maximum": 500,
      -    "minimum": 1,
      -    "type": "integer"
      -  },
      -  {
      -    "pattern": "^-?\\d+$",
      -    "type": "string"
      -  }
      -]
    • addedInput schema / properties / limit / maximum
      Added value: +500
    • 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": 1048576,
      -    "minimum": 1,
      -    "type": "integer"
      -  },
      -  {
      -    "pattern": "^-?\\d+$",
      -    "type": "string"
      -  }
      -]
    • addedInput schema / properties / max_size / maximum
      Added value: +1048576
    • 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 / width / anyOf
      Removed value: -[
      -  {
      -    "maximum": 9007199254740991,
      -    "minimum": 1,
      -    "type": "integer"
      -  },
      -  {
      -    "pattern": "^-?\\d+$",
      -    "type": "string"
      -  }
      -]
    • addedInput schema / properties / width / maximum
      Added value: +9007199254740991
    • addedInput schema / properties / width / minimum
      Added value: +1
    • addedInput schema / properties / width / type
      Added value: +"integer"
  13. Changed48 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: -[
      -  "list",
      -  "recent",
      -  "details",
      -  "search",
      -  "trash-list",
      -  "create-folder",
      -  "copy",
      -  "move",
      -  "delete",
      -  "rename",
      -  "purge",
      -  "restore",
      -  "add-file",
      -  "add-link",
      -  "transfer",
      -  "version-list",
      -  "version-restore",
      -  "lock-acquire",
      -  "lock-status",
      -  "lock-release",
      -  "preview-url",
      -  "preview-transform",
      -  "read-content"
      -]New value: +[
      +  "describe",
      +  "list",
      +  "recent",
      +  "details",
      +  "search",
      +  "trash-list",
      +  "create-folder",
      +  "copy",
      +  "move",
      +  "delete",
      +  "rename",
      +  "purge",
      +  "restore",
      +  "add-file",
      +  "add-link",
      +  "transfer",
      +  "version-list",
      +  "version-restore",
      +  "lock-acquire",
      +  "lock-status",
      +  "lock-release",
      +  "preview-url",
      +  "preview-transform",
      +  "read-content"
      +]
    • changedInput schema / properties / cursor / description
      Previous value: -"Opaque cursor from a previous response for next page (used by: list, recent)"New value: +"Opaque cursor from a previous response."
    • changedInput schema / properties / dest_instance_id / description
      Previous value: -"Destination workspace or share profile ID (required for: transfer)"New value: +"Destination workspace or share profile ID."
    • changedInput schema / properties / dest_parent_id / description
      Previous value: -"Destination parent folder opaque ID, or 'root' (required for: transfer)"New value: +"Destination parent folder opaque ID, or 'root'."
    • addedInput schema / properties / detail
      Added value: +{
      +  "description": "Per-node verbosity for list/recent/search/trash-list/details. Defaults: terse for list/recent/search/trash-list, full for details. Bump to full when you need ai.attach (files_attach preflight), virus, hashes, file_attributes, lock_info, or long-form summaries. See action='describe' for per-level field lists. Not to be confused with `details` (search-only).",
      +  "enum": [
      +    "terse",
      +    "standard",
      +    "full"
      +  ],
      +  "type": "string"
      +}
    • changedInput schema / properties / details / description
      Previous value: -"Return full node details per result (previews, AI state, metadata, versions). Default limit drops to 10 when enabled. (used by: search)"New value: +"Search-only. Return fully-hydrated node objects per result (default limit drops to 10). Distinct from `detail` — call action='describe' for the contrast."
    • addedInput schema / properties / display_limit
      Added value: +{
      +  "anyOf": [
      +    {
      +      "maximum": 500,
      +      "minimum": 1,
      +      "type": "integer"
      +    },
      +    {
      +      "pattern": "^-?\\d+$",
      +      "type": "string"
      +    }
      +  ],
      +  "description": "How many items to return. Default 10, max 500. The MCP trims post-fetch; backend cache stays warm. Used by: list, recent, search. Cursor pagination via `cursor` param for additional pages."
      +}
    • changedInput schema / properties / files_scope / description
      Previous value: -"Scope semantic search to specific file versions. Comma-separated nodeId:versionId pairs (max 100). Requires intelligence enabled; silently ignored otherwise. OMIT to search all files. (used by: search)"New value: +"Scope semantic search to file versions. See describe for full constraints."
    • changedInput schema / properties / folders_scope / description
      Previous value: -"Scope semantic search to specific folders via BFS. Comma-separated nodeId:depth pairs (depth 1-10, max 100). Requires intelligence enabled; silently ignored otherwise. OMIT to search all files. (used by: search)"New value: +"Scope semantic search to folders via BFS. See describe for full constraints."
    • addedInput schema / properties / height / anyOf
      Added value: +[
      +  {
      +    "maximum": 9007199254740991,
      +    "minimum": 1,
      +    "type": "integer"
      +  },
      +  {
      +    "pattern": "^-?\\d+$",
      +    "type": "string"
      +  }
      +]
    • changedInput schema / properties / height / description
      Previous value: -"Target height in pixels (used by: preview-transform)"New value: +"Target height in pixels."
    • removedInput schema / properties / height / type
      Removed value: -"number"
    • addedInput schema / properties / limit / anyOf
      Added value: +[
      +  {
      +    "maximum": 500,
      +    "minimum": 1,
      +    "type": "integer"
      +  },
      +  {
      +    "pattern": "^-?\\d+$",
      +    "type": "string"
      +  }
      +]
    • changedInput schema / properties / limit / description
      Previous value: -"Maximum number of results to return (default: 100) (used by: search, trash-list)"New value: +"Max results (1-500, default 100)."
    • removedInput schema / properties / limit / type
      Removed value: -"number"
    • addedInput schema / properties / max_size / anyOf
      Added value: +[
      +  {
      +    "maximum": 1048576,
      +    "minimum": 1,
      +    "type": "integer"
      +  },
      +  {
      +    "pattern": "^-?\\d+$",
      +    "type": "string"
      +  }
      +]
    • changedInput schema / properties / max_size / description
      Previous value: -"Maximum content size in bytes for read-content (default: 512000, max: 1048576) (used by: read-content)"New value: +"Max read-content bytes (default 512000, max 1048576)."
    • removedInput schema / properties / max_size / type
      Removed value: -"number"
    • changedInput schema / properties / name / description
      Previous value: -"Name for new folder or file (required for: create-folder, add-file)"New value: +"Name for new folder or file."
    • changedInput schema / properties / new_name / description
      Previous value: -"New name for file or folder (required for: rename)"New value: +"New name for file or folder."
    • changedInput schema / properties / node_id / description
      Previous value: -"Storage node opaque ID, or 'root' for root folder"New value: +"Storage tree node opaque ID. Both files and folders are nodes — use this name regardless of which. Storage node opaque ID, or 'root'."
    • changedInput schema / properties / node_ids / description
      Previous value: -"Array of storage node opaque IDs (used by: copy, move, delete, restore, details). For details, accepts 1-25 IDs from the same workspace/share; >25 is rejected."New value: +"Storage node opaque IDs (details: 1-25 max)."
    • addedInput schema / properties / offset / anyOf
      Added value: +[
      +  {
      +    "maximum": 9007199254740991,
      +    "minimum": 0,
      +    "type": "integer"
      +  },
      +  {
      +    "pattern": "^-?\\d+$",
      +    "type": "string"
      +  }
      +]
    • changedInput schema / properties / offset / description
      Previous value: -"Number of results to skip (default: 0) (used by: search, trash-list)"New value: +"Results to skip (default 0)."
    • removedInput schema / properties / offset / type
      Removed value: -"number"
    • changedInput schema / properties / output_format / description
      Previous value: -"Output format: \"png\", \"jpg\", \"webp\" (used by: preview-transform)"New value: +"Output format: \"png\", \"jpg\", \"webp\"."
    • removedInput schema / properties / page_size
      Removed value: -{
      -  "description": "Items per page: 100, 250, or 500 (default: 100) (used by: list, recent)",
      -  "type": "number"
      -}
    • changedInput schema / properties / parent_node_id / description
      Previous value: -"Parent folder opaque ID, or 'root' for root (required for: create-folder, add-file, add-link)"New value: +"Parent folder opaque ID, or 'root'."
    • changedInput schema / properties / preview_type / description
      Previous value: -"Type of preview to generate (required for: preview-url)"New value: +"Type of preview to generate. See describe for which preview_types apply to which file categories."
    • changedInput schema / properties / preview_type / enum
      Previous value: -[
      -  "binary",
      -  "thumbnail",
      -  "image",
      -  "pdf",
      -  "hlsstream",
      -  "audio",
      -  "spreadsheet"
      -]New value: +[
      +  "thumbnail",
      +  "image",
      +  "pdf",
      +  "hlsstream",
      +  "spreadsheet"
      +]
    • changedInput schema / properties / profile_id / description
      Previous value: -"19-digit workspace or share ID, or custom name (also accepted as context_id)"New value: +"Polymorphic context ID. Pair with profile_type=workspace|share|org. Use workspace_id instead when only workspaces are valid. 19-digit workspace or share ID, or custom name."
    • changedInput schema / properties / profile_type / description
      Previous value: -"Profile type: \"workspace\" or \"share\" (also accepted as context_type)"New value: +"Profile type: \"workspace\" or \"share\"."
    • addedInput schema / properties / q
      Added value: +{
      +  "description": "Alias for query.",
      +  "type": "string"
      +}
    • changedInput schema / properties / query / description
      Previous value: -"Search query string — performs keyword search, or keyword + semantic search when workspace intelligence is enabled. (required for: search)"New value: +"Search query — keyword, or keyword + semantic when intelligence is on."
    • changedInput schema / properties / share_id / description
      Previous value: -"Share identifier to link (required for: add-link, workspace-only)"New value: +"Share identifier to link (workspace-only)."
    • changedInput schema / properties / size / description
      Previous value: -"Size preset: \"IconSmall\", \"IconMedium\", \"Preview\", or custom with width/height (used by: preview-transform)"New value: +"Size preset: \"IconSmall\", \"IconMedium\", \"Preview\", or custom."
    • changedInput schema / properties / sort_by / description
      Previous value: -"Sort column (default: name) (used by: list)"New value: +"Sort column (default: name)."
    • changedInput schema / properties / sort_dir / description
      Previous value: -"Sort direction (default: asc) (used by: list)"New value: +"Sort direction (default: asc)."
    • changedInput schema / properties / target_parent_id / description
      Previous value: -"Destination folder opaque ID, or 'root' for root (required for: copy, move)"New value: +"Destination folder opaque ID, or 'root'."
    • changedInput schema / properties / transfer_mode / description
      Previous value: -"Transfer mode: 'copy' (default) keeps source, 'move' copies then trashes source. Cannot use 'move' with node_id 'root'. (optional for: transfer)"New value: +"'copy' (default) or 'move'. 'move' invalid for node_id 'root'."
    • changedInput schema / properties / transform_name / description
      Previous value: -"Transform name, e.g. \"image\" for resize/crop/format conversion (required for: preview-transform)"New value: +"Transform name, e.g. \"image\" for resize/crop/format."
    • changedInput schema / properties / type / description
      Previous value: -"Filter by node type (used by: recent)"New value: +"Filter by node type."
    • changedInput schema / properties / upload_id / description
      Previous value: -"Opaque ID of the completed upload session (required for: add-file)"New value: +"Opaque ID of completed upload session."
    • changedInput schema / properties / version_id / description
      Previous value: -"Version ID to restore (required for: version-restore)"New value: +"Version ID to restore."
    • addedInput schema / properties / width / anyOf
      Added value: +[
      +  {
      +    "maximum": 9007199254740991,
      +    "minimum": 1,
      +    "type": "integer"
      +  },
      +  {
      +    "pattern": "^-?\\d+$",
      +    "type": "string"
      +  }
      +]
    • changedInput schema / properties / width / description
      Previous value: -"Target width in pixels (used by: preview-transform)"New value: +"Target width in pixels."
    • removedInput schema / properties / width / type
      Removed value: -"number"
  14. Changed1 schema field changed
    • changedInput schema / properties / node_ids / description
      Previous value: -"Array of storage node opaque IDs (used by: copy, move, delete, restore)"New value: +"Array of storage node opaque IDs (used by: copy, move, delete, restore, details). For details, accepts 1-25 IDs from the same workspace/share; >25 is rejected."
  15. First observed

TDQS

A4.1/5.0
Behavior5/5

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

Despite annotations already flagging destructiveHint=true and readOnlyHint=false, the description goes well beyond them by specifying which operations are destructive and what they actually do: "purge (irreversible). delete moves to trash. metadata-delete removes metadata keys." It also discloses the searchable metadata behavior and the verbosity default tiers per action. This is exactly the kind of beyond-annotation context the dimension rewards.

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?

The description is front-loaded with the tool's scope, then gives high-value usage hints, destructive warnings, and verbosity defaults in a compact block. Despite covering a 31-action tool, every sentence carries distinct, decision-relevant information and there is no filler or redundancy.

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 58-parameter, 31-action tool with no output schema, the description provides an efficient high-level orientation, flags safety-critical destructive behavior, and points to action='describe' for the full action/parameter reference. The richly documented schema covers the remaining invocation details, so the combination is sufficient for correct selection and safe initial use.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds a small amount of parameter context by explaining the `detail` parameter defaults and the action='describe' reference for full parameter docs, but it does not meaningfully enrich parameter semantics beyond the already very detailed per-parameter schema descriptions.

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

Purpose4/5

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

The description opens with a precise resource and verb set: "Files & folders on workspaces/shares: list, search, copy, move, delete, rename, trash, transfer, versions, locks, previews, and per-node metadata". This is specific and clearly distinguishes the tool's scope from a mere tautology. However, it does not explicitly position itself against overlapping sibling tools like find, metadata, share, or upload/download, so it misses the top criterion of sibling differentiation.

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?

The description provides clear, actionable workflow guidance: "check or search metadata before reading files" and explicitly warns about destructive actions (purge vs delete vs metadata-delete). It also explains verbosity defaults and how to override them. Still, it names no sibling tools or when-not-to-use conditions, so it falls short of the explicit exclusions/alternatives required for a 5.

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