Skip to main content
Glama

batch_documents

Destructive

Apply the same action to 1–25 explicitly selected documents: move, categorize, tag, trash, restore, or refresh indexing; returns per-document results with partial success possible.

Instructions

Use for multiple explicitly selected documents that need the same action; for one document prefer the matching single-document tool. Accepts 1–25 IDs for automation compatibility. Supports move, set_category, add_tag, remove_tag, trash, restore, or refresh_index. Processes sequentially through the existing API with a permission check per document and a per-ID result; partial success is possible. Stops after authentication or rate-limit failure. Never expands a search result or permanently purges documents; version restore is separate.

Input Schema

NameRequiredDescriptionDefault
tagIdNo
actionNo
folderIdNoDestination folder UUID, or null for no folder.
categoryIdNoCategory UUID, or null to clear explicit category.
documentIdsNoOne to 25 distinct document UUIDs, explicitly selected by the user; no search expansion.
workspaceIdNoWorkspace UUID from list_workspace_structure(kind=workspaces). Required for ambiguous creates and structure changes; omit to search all granted scopes.

Output Schema

NameRequiredDescriptionDefault
totalYes
actionYes
failedYes
abortedYes
resultsYes
succeededYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed6 schema fields changedv2.1.1
    • removedInput schema / properties / documentIds / anyOf
      Removed value: -[
      -  {
      -    "description": "One to 25 distinct document UUIDs, explicitly selected by the user; no search expansion.",
      -    "items": {
      -      "description": "UUID of an item visible to the active API key.",
      -      "format": "uuid",
      -      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      -      "type": "string"
      -    },
      -    "maxItems": 25,
      -    "minItems": 1,
      -    "type": "array"
      -  },
      -  {
      -    "description": "One to 25 distinct document UUIDs, explicitly selected by the user; no search expansion.",
      -    "items": {
      -      "description": "UUID of an item visible to the active API key.",
      -      "format": "uuid",
      -      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      -      "type": "string"
      -    },
      -    "maxItems": 25,
      -    "minItems": 1,
      -    "type": "array"
      -  },
      -  {
      -    "description": "One to 25 distinct document UUIDs, explicitly selected by the user; no search expansion.",
      -    "items": {
      -      "description": "UUID of an item visible to the active API key.",
      -      "format": "uuid",
      -      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      -      "type": "string"
      -    },
      -    "maxItems": 25,
      -    "minItems": 1,
      -    "type": "array"
      -  },
      -  {
      -    "description": "One to 25 distinct document UUIDs, explicitly selected by the user; no search expansion.",
      -    "items": {
      -      "description": "UUID of an item visible to the active API key.",
      -      "format": "uuid",
      -      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      -      "type": "string"
      -    },
      -    "maxItems": 25,
      -    "minItems": 1,
      -    "type": "array"
      -  },
      -  {
      -    "description": "One to 25 distinct document UUIDs, explicitly selected by the user; no search expansion.",
      -    "items": {
      -      "description": "UUID of an item visible to the active API key.",
      -      "format": "uuid",
      -      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      -      "type": "string"
      -    },
      -    "maxItems": 25,
      -    "minItems": 1,
      -    "type": "array"
      -  },
      -  {
      -    "description": "One to 25 distinct document UUIDs, explicitly selected by the user; no search expansion.",
      -    "items": {
      -      "description": "UUID of an item visible to the active API key.",
      -      "format": "uuid",
      -      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      -      "type": "string"
      -    },
      -    "maxItems": 25,
      -    "minItems": 1,
      -    "type": "array"
      -  },
      -  {
      -    "description": "One to 25 distinct document UUIDs, explicitly selected by the user; no search expansion.",
      -    "items": {
      -      "description": "UUID of an item visible to the active API key.",
      -      "format": "uuid",
      -      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      -      "type": "string"
      -    },
      -    "maxItems": 25,
      -    "minItems": 1,
      -    "type": "array"
      -  }
      -]
    • addedInput schema / properties / documentIds / description
      Added value: +"One to 25 distinct document UUIDs, explicitly selected by the user; no search expansion."
    • addedInput schema / properties / documentIds / items
      Added value: +{
      +  "description": "UUID of an item visible to the active API key.",
      +  "format": "uuid",
      +  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      +  "type": "string"
      +}
    • addedInput schema / properties / documentIds / maxItems
      Added value: +25
    • addedInput schema / properties / documentIds / minItems
      Added value: +1
    • addedInput schema / properties / documentIds / type
      Added value: +"array"
  2. Changed2 schema fields changedv2.0.4
    • changedInput schema / oneOf
      Previous value: -[
      -  {
      -    "allOf": [
      -      {
      -        "not": {
      -          "anyOf": [
      -            {
      -              "required": [
      -                "categoryId"
      -              ]
      -            },
      -            {
      -              "required": [
      -                "tagId"
      -              ]
      -            }
      -          ]
      -        }
      -      }
      -    ],
      -    "properties": {
      -      "action": {
      -        "const": "move",
      -        "description": "Move each document to the same folder.",
      -        "type": "string"
      -      },
      -      "documentIds": {
      -        "description": "One to 25 distinct document UUIDs, explicitly selected by the user; no search expansion.",
      -        "items": {
      -          "description": "UUID of an item visible to the active API key.",
      -          "format": "uuid",
      -          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      -          "type": "string"
      -        },
      -        "maxItems": 25,
      -        "minItems": 1,
      -        "type": "array"
      -      },
      -      "folderId": {
      -        "anyOf": [
      -          {
      -            "description": "UUID of an item visible to the active API key.",
      -            "format": "uuid",
      -            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "Destination folder UUID, or null for no folder."
      -      }
      -    },
      -    "required": [
      -      "documentIds",
      -      "action",
      -      "folderId"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "allOf": [
      -      {
      -        "not": {
      -          "anyOf": [
      -            {
      -              "required": [
      -                "folderId"
      -              ]
      -            },
      -            {
      -              "required": [
      -                "tagId"
      -              ]
      -            }
      -          ]
      -        }
      -      }
      -    ],
      -    "properties": {
      -      "action": {
      -        "const": "set_category",
      -        "description": "Set one explicit category on every document.",
      -        "type": "string"
      -      },
      -      "categoryId": {
      -        "anyOf": [
      -          {
      -            "description": "UUID of an item visible to the active API key.",
      -            "format": "uuid",
      -            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "Category UUID, or null to clear explicit category."
      -      },
      -      "documentIds": {
      -        "description": "One to 25 distinct document UUIDs, explicitly selected by the user; no search expansion.",
      -        "items": {
      -          "description": "UUID of an item visible to the active API key.",
      -          "format": "uuid",
      -          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      -          "type": "string"
      -        },
      -        "maxItems": 25,
      -        "minItems": 1,
      -        "type": "array"
      -      }
      -    },
      -    "required": [
      -      "documentIds",
      -      "action",
      -      "categoryId"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "allOf": [
      -      {
      -        "not": {
      -          "anyOf": [
      -            {
      -              "required": [
      -                "folderId"
      -              ]
      -            },
      -            {
      -              "required": [
      -                "categoryId"
      -              ]
      -            }
      -          ]
      -        }
      -      }
      -    ],
      -    "properties": {
      -      "action": {
      -        "const": "add_tag",
      -        "description": "Assign one existing tag to every document.",
      -        "type": "string"
      -      },
      -      "documentIds": {
      -        "description": "One to 25 distinct document UUIDs, explicitly selected by the user; no search expansion.",
      -        "items": {
      -          "description": "UUID of an item visible to the active API key.",
      -          "format": "uuid",
      -          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      -          "type": "string"
      -        },
      -        "maxItems": 25,
      -        "minItems": 1,
      -        "type": "array"
      -      },
      -      "tagId": {
      -        "description": "Existing tag UUID to assign to each document.",
      -        "format": "uuid",
      -        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "documentIds",
      -      "action",
      -      "tagId"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "allOf": [
      -      {
      -        "not": {
      -          "anyOf": [
      -            {
      -              "required": [
      -                "folderId"
      -              ]
      -            },
      -            {
      -              "required": [
      -                "categoryId"
      -              ]
      -            }
      -          ]
      -        }
      -      }
      -    ],
      -    "properties": {
      -      "action": {
      -        "const": "remove_tag",
      -        "description": "Remove one tag assignment from every document.",
      -        "type": "string"
      -      },
      -      "documentIds": {
      -        "description": "One to 25 distinct document UUIDs, explicitly selected by the user; no search expansion.",
      -        "items": {
      -          "description": "UUID of an item visible to the active API key.",
      -          "format": "uuid",
      -          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      -          "type": "string"
      -        },
      -        "maxItems": 25,
      -        "minItems": 1,
      -        "type": "array"
      -      },
      -      "tagId": {
      -        "description": "Existing tag UUID to unassign from each document.",
      -        "format": "uuid",
      -        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "documentIds",
      -      "action",
      -      "tagId"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "allOf": [
      -      {
      -        "not": {
      -          "anyOf": [
      -            {
      -              "required": [
      -                "folderId"
      -              ]
      -            },
      -            {
      -              "required": [
      -                "categoryId"
      -              ]
      -            },
      -            {
      -              "required": [
      -                "tagId"
      -              ]
      -            }
      -          ]
      -        }
      -      }
      -    ],
      -    "properties": {
      -      "action": {
      -        "const": "trash",
      -        "description": "Move every document to trash without permanent deletion.",
      -        "type": "string"
      -      },
      -      "documentIds": {
      -        "description": "One to 25 distinct document UUIDs, explicitly selected by the user; no search expansion.",
      -        "items": {
      -          "description": "UUID of an item visible to the active API key.",
      -          "format": "uuid",
      -          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      -          "type": "string"
      -        },
      -        "maxItems": 25,
      -        "minItems": 1,
      -        "type": "array"
      -      }
      -    },
      -    "required": [
      -      "documentIds",
      -      "action"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "allOf": [
      -      {
      -        "not": {
      -          "anyOf": [
      -            {
      -              "required": [
      -                "folderId"
      -              ]
      -            },
      -            {
      -              "required": [
      -                "categoryId"
      -              ]
      -            },
      -            {
      -              "required": [
      -                "tagId"
      -              ]
      -            }
      -          ]
      -        }
      -      }
      -    ],
      -    "properties": {
      -      "action": {
      -        "const": "restore",
      -        "description": "Restore every selected document from trash.",
      -        "type": "string"
      -      },
      -      "documentIds": {
      -        "description": "One to 25 distinct document UUIDs, explicitly selected by the user; no search expansion.",
      -        "items": {
      -          "description": "UUID of an item visible to the active API key.",
      -          "format": "uuid",
      -          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      -          "type": "string"
      -        },
      -        "maxItems": 25,
      -        "minItems": 1,
      -        "type": "array"
      -      }
      -    },
      -    "required": [
      -      "documentIds",
      -      "action"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "allOf": [
      -      {
      -        "not": {
      -          "anyOf": [
      -            {
      -              "required": [
      -                "folderId"
      -              ]
      -            },
      -            {
      -              "required": [
      -                "categoryId"
      -              ]
      -            },
      -            {
      -              "required": [
      -                "tagId"
      -              ]
      -            }
      -          ]
      -        }
      -      }
      -    ],
      -    "properties": {
      -      "action": {
      -        "const": "refresh_index",
      -        "description": "Request explicit indexing retry for every document.",
      -        "type": "string"
      -      },
      -      "documentIds": {
      -        "description": "One to 25 distinct document UUIDs, explicitly selected by the user; no search expansion.",
      -        "items": {
      -          "description": "UUID of an item visible to the active API key.",
      -          "format": "uuid",
      -          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      -          "type": "string"
      -        },
      -        "maxItems": 25,
      -        "minItems": 1,
      -        "type": "array"
      -      }
      -    },
      -    "required": [
      -      "documentIds",
      -      "action"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "allOf": [
      +      {
      +        "not": {
      +          "anyOf": [
      +            {
      +              "required": [
      +                "categoryId"
      +              ]
      +            },
      +            {
      +              "required": [
      +                "tagId"
      +              ]
      +            }
      +          ]
      +        }
      +      }
      +    ],
      +    "properties": {
      +      "action": {
      +        "const": "move",
      +        "description": "Move each document to the same folder.",
      +        "type": "string"
      +      },
      +      "documentIds": {
      +        "description": "One to 25 distinct document UUIDs, explicitly selected by the user; no search expansion.",
      +        "items": {
      +          "description": "UUID of an item visible to the active API key.",
      +          "format": "uuid",
      +          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      +          "type": "string"
      +        },
      +        "maxItems": 25,
      +        "minItems": 1,
      +        "type": "array"
      +      },
      +      "folderId": {
      +        "anyOf": [
      +          {
      +            "description": "UUID of an item visible to the active API key.",
      +            "format": "uuid",
      +            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Destination folder UUID, or null for no folder."
      +      },
      +      "workspaceId": {
      +        "$schema": "https://json-schema.org/draft/2020-12/schema",
      +        "description": "Workspace UUID from list_workspace_structure(kind=workspaces). Required for ambiguous creates and structure changes; omit to search all granted scopes.",
      +        "format": "uuid",
      +        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "documentIds",
      +      "action",
      +      "folderId"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "allOf": [
      +      {
      +        "not": {
      +          "anyOf": [
      +            {
      +              "required": [
      +                "folderId"
      +              ]
      +            },
      +            {
      +              "required": [
      +                "tagId"
      +              ]
      +            }
      +          ]
      +        }
      +      }
      +    ],
      +    "properties": {
      +      "action": {
      +        "const": "set_category",
      +        "description": "Set one explicit category on every document.",
      +        "type": "string"
      +      },
      +      "categoryId": {
      +        "anyOf": [
      +          {
      +            "description": "UUID of an item visible to the active API key.",
      +            "format": "uuid",
      +            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Category UUID, or null to clear explicit category."
      +      },
      +      "documentIds": {
      +        "description": "One to 25 distinct document UUIDs, explicitly selected by the user; no search expansion.",
      +        "items": {
      +          "description": "UUID of an item visible to the active API key.",
      +          "format": "uuid",
      +          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      +          "type": "string"
      +        },
      +        "maxItems": 25,
      +        "minItems": 1,
      +        "type": "array"
      +      },
      +      "workspaceId": {
      +        "$schema": "https://json-schema.org/draft/2020-12/schema",
      +        "description": "Workspace UUID from list_workspace_structure(kind=workspaces). Required for ambiguous creates and structure changes; omit to search all granted scopes.",
      +        "format": "uuid",
      +        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "documentIds",
      +      "action",
      +      "categoryId"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "allOf": [
      +      {
      +        "not": {
      +          "anyOf": [
      +            {
      +              "required": [
      +                "folderId"
      +              ]
      +            },
      +            {
      +              "required": [
      +                "categoryId"
      +              ]
      +            }
      +          ]
      +        }
      +      }
      +    ],
      +    "properties": {
      +      "action": {
      +        "const": "add_tag",
      +        "description": "Assign one existing tag to every document.",
      +        "type": "string"
      +      },
      +      "documentIds": {
      +        "description": "One to 25 distinct document UUIDs, explicitly selected by the user; no search expansion.",
      +        "items": {
      +          "description": "UUID of an item visible to the active API key.",
      +          "format": "uuid",
      +          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      +          "type": "string"
      +        },
      +        "maxItems": 25,
      +        "minItems": 1,
      +        "type": "array"
      +      },
      +      "tagId": {
      +        "description": "Existing tag UUID to assign to each document.",
      +        "format": "uuid",
      +        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      +        "type": "string"
      +      },
      +      "workspaceId": {
      +        "$schema": "https://json-schema.org/draft/2020-12/schema",
      +        "description": "Workspace UUID from list_workspace_structure(kind=workspaces). Required for ambiguous creates and structure changes; omit to search all granted scopes.",
      +        "format": "uuid",
      +        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "documentIds",
      +      "action",
      +      "tagId"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "allOf": [
      +      {
      +        "not": {
      +          "anyOf": [
      +            {
      +              "required": [
      +                "folderId"
      +              ]
      +            },
      +            {
      +              "required": [
      +                "categoryId"
      +              ]
      +            }
      +          ]
      +        }
      +      }
      +    ],
      +    "properties": {
      +      "action": {
      +        "const": "remove_tag",
      +        "description": "Remove one tag assignment from every document.",
      +        "type": "string"
      +      },
      +      "documentIds": {
      +        "description": "One to 25 distinct document UUIDs, explicitly selected by the user; no search expansion.",
      +        "items": {
      +          "description": "UUID of an item visible to the active API key.",
      +          "format": "uuid",
      +          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      +          "type": "string"
      +        },
      +        "maxItems": 25,
      +        "minItems": 1,
      +        "type": "array"
      +      },
      +      "tagId": {
      +        "description": "Existing tag UUID to unassign from each document.",
      +        "format": "uuid",
      +        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      +        "type": "string"
      +      },
      +      "workspaceId": {
      +        "$schema": "https://json-schema.org/draft/2020-12/schema",
      +        "description": "Workspace UUID from list_workspace_structure(kind=workspaces). Required for ambiguous creates and structure changes; omit to search all granted scopes.",
      +        "format": "uuid",
      +        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "documentIds",
      +      "action",
      +      "tagId"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "allOf": [
      +      {
      +        "not": {
      +          "anyOf": [
      +            {
      +              "required": [
      +                "folderId"
      +              ]
      +            },
      +            {
      +              "required": [
      +                "categoryId"
      +              ]
      +            },
      +            {
      +              "required": [
      +                "tagId"
      +              ]
      +            }
      +          ]
      +        }
      +      }
      +    ],
      +    "properties": {
      +      "action": {
      +        "const": "trash",
      +        "description": "Move every document to trash without permanent deletion.",
      +        "type": "string"
      +      },
      +      "documentIds": {
      +        "description": "One to 25 distinct document UUIDs, explicitly selected by the user; no search expansion.",
      +        "items": {
      +          "description": "UUID of an item visible to the active API key.",
      +          "format": "uuid",
      +          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      +          "type": "string"
      +        },
      +        "maxItems": 25,
      +        "minItems": 1,
      +        "type": "array"
      +      },
      +      "workspaceId": {
      +        "$schema": "https://json-schema.org/draft/2020-12/schema",
      +        "description": "Workspace UUID from list_workspace_structure(kind=workspaces). Required for ambiguous creates and structure changes; omit to search all granted scopes.",
      +        "format": "uuid",
      +        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "documentIds",
      +      "action"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "allOf": [
      +      {
      +        "not": {
      +          "anyOf": [
      +            {
      +              "required": [
      +                "folderId"
      +              ]
      +            },
      +            {
      +              "required": [
      +                "categoryId"
      +              ]
      +            },
      +            {
      +              "required": [
      +                "tagId"
      +              ]
      +            }
      +          ]
      +        }
      +      }
      +    ],
      +    "properties": {
      +      "action": {
      +        "const": "restore",
      +        "description": "Restore every selected document from trash.",
      +        "type": "string"
      +      },
      +      "documentIds": {
      +        "description": "One to 25 distinct document UUIDs, explicitly selected by the user; no search expansion.",
      +        "items": {
      +          "description": "UUID of an item visible to the active API key.",
      +          "format": "uuid",
      +          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      +          "type": "string"
      +        },
      +        "maxItems": 25,
      +        "minItems": 1,
      +        "type": "array"
      +      },
      +      "workspaceId": {
      +        "$schema": "https://json-schema.org/draft/2020-12/schema",
      +        "description": "Workspace UUID from list_workspace_structure(kind=workspaces). Required for ambiguous creates and structure changes; omit to search all granted scopes.",
      +        "format": "uuid",
      +        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "documentIds",
      +      "action"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "allOf": [
      +      {
      +        "not": {
      +          "anyOf": [
      +            {
      +              "required": [
      +                "folderId"
      +              ]
      +            },
      +            {
      +              "required": [
      +                "categoryId"
      +              ]
      +            },
      +            {
      +              "required": [
      +                "tagId"
      +              ]
      +            }
      +          ]
      +        }
      +      }
      +    ],
      +    "properties": {
      +      "action": {
      +        "const": "refresh_index",
      +        "description": "Request explicit indexing retry for every document.",
      +        "type": "string"
      +      },
      +      "documentIds": {
      +        "description": "One to 25 distinct document UUIDs, explicitly selected by the user; no search expansion.",
      +        "items": {
      +          "description": "UUID of an item visible to the active API key.",
      +          "format": "uuid",
      +          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      +          "type": "string"
      +        },
      +        "maxItems": 25,
      +        "minItems": 1,
      +        "type": "array"
      +      },
      +      "workspaceId": {
      +        "$schema": "https://json-schema.org/draft/2020-12/schema",
      +        "description": "Workspace UUID from list_workspace_structure(kind=workspaces). Required for ambiguous creates and structure changes; omit to search all granted scopes.",
      +        "format": "uuid",
      +        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "documentIds",
      +      "action"
      +    ],
      +    "type": "object"
      +  }
      +]
    • addedInput schema / properties / workspaceId
      Added value: +{
      +  "$schema": "https://json-schema.org/draft/2020-12/schema",
      +  "description": "Workspace UUID from list_workspace_structure(kind=workspaces). Required for ambiguous creates and structure changes; omit to search all granted scopes.",
      +  "format": "uuid",
      +  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      +  "type": "string"
      +}
  3. Changed3 schema fields changedv1.0.3
    • addedInput schema / additionalProperties
      Added value: +false
    • changedInput schema / oneOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "action": {
      -        "const": "move",
      -        "description": "Move each document to the same folder.",
      -        "type": "string"
      -      },
      -      "documentIds": {
      -        "description": "One to 25 distinct document UUIDs, explicitly selected by the user; no search expansion.",
      -        "items": {
      -          "description": "UUID of an item visible to the active API key.",
      -          "format": "uuid",
      -          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      -          "type": "string"
      -        },
      -        "maxItems": 25,
      -        "minItems": 1,
      -        "type": "array"
      -      },
      -      "folderId": {
      -        "anyOf": [
      -          {
      -            "description": "UUID of an item visible to the active API key.",
      -            "format": "uuid",
      -            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "Destination folder UUID, or null for no folder."
      -      }
      -    },
      -    "required": [
      -      "documentIds",
      -      "action",
      -      "folderId"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "action": {
      -        "const": "set_category",
      -        "description": "Set one explicit category on every document.",
      -        "type": "string"
      -      },
      -      "categoryId": {
      -        "anyOf": [
      -          {
      -            "description": "UUID of an item visible to the active API key.",
      -            "format": "uuid",
      -            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "Category UUID, or null to clear explicit category."
      -      },
      -      "documentIds": {
      -        "description": "One to 25 distinct document UUIDs, explicitly selected by the user; no search expansion.",
      -        "items": {
      -          "description": "UUID of an item visible to the active API key.",
      -          "format": "uuid",
      -          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      -          "type": "string"
      -        },
      -        "maxItems": 25,
      -        "minItems": 1,
      -        "type": "array"
      -      }
      -    },
      -    "required": [
      -      "documentIds",
      -      "action",
      -      "categoryId"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "action": {
      -        "const": "add_tag",
      -        "description": "Assign one existing tag to every document.",
      -        "type": "string"
      -      },
      -      "documentIds": {
      -        "description": "One to 25 distinct document UUIDs, explicitly selected by the user; no search expansion.",
      -        "items": {
      -          "description": "UUID of an item visible to the active API key.",
      -          "format": "uuid",
      -          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      -          "type": "string"
      -        },
      -        "maxItems": 25,
      -        "minItems": 1,
      -        "type": "array"
      -      },
      -      "tagId": {
      -        "description": "Existing tag UUID to assign to each document.",
      -        "format": "uuid",
      -        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "documentIds",
      -      "action",
      -      "tagId"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "action": {
      -        "const": "remove_tag",
      -        "description": "Remove one tag assignment from every document.",
      -        "type": "string"
      -      },
      -      "documentIds": {
      -        "description": "One to 25 distinct document UUIDs, explicitly selected by the user; no search expansion.",
      -        "items": {
      -          "description": "UUID of an item visible to the active API key.",
      -          "format": "uuid",
      -          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      -          "type": "string"
      -        },
      -        "maxItems": 25,
      -        "minItems": 1,
      -        "type": "array"
      -      },
      -      "tagId": {
      -        "description": "Existing tag UUID to unassign from each document.",
      -        "format": "uuid",
      -        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "documentIds",
      -      "action",
      -      "tagId"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "action": {
      -        "const": "trash",
      -        "description": "Move every document to trash without permanent deletion.",
      -        "type": "string"
      -      },
      -      "documentIds": {
      -        "description": "One to 25 distinct document UUIDs, explicitly selected by the user; no search expansion.",
      -        "items": {
      -          "description": "UUID of an item visible to the active API key.",
      -          "format": "uuid",
      -          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      -          "type": "string"
      -        },
      -        "maxItems": 25,
      -        "minItems": 1,
      -        "type": "array"
      -      }
      -    },
      -    "required": [
      -      "documentIds",
      -      "action"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "action": {
      -        "const": "restore",
      -        "description": "Restore every selected document from trash.",
      -        "type": "string"
      -      },
      -      "documentIds": {
      -        "description": "One to 25 distinct document UUIDs, explicitly selected by the user; no search expansion.",
      -        "items": {
      -          "description": "UUID of an item visible to the active API key.",
      -          "format": "uuid",
      -          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      -          "type": "string"
      -        },
      -        "maxItems": 25,
      -        "minItems": 1,
      -        "type": "array"
      -      }
      -    },
      -    "required": [
      -      "documentIds",
      -      "action"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "action": {
      -        "const": "refresh_index",
      -        "description": "Request explicit indexing retry for every document.",
      -        "type": "string"
      -      },
      -      "documentIds": {
      -        "description": "One to 25 distinct document UUIDs, explicitly selected by the user; no search expansion.",
      -        "items": {
      -          "description": "UUID of an item visible to the active API key.",
      -          "format": "uuid",
      -          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      -          "type": "string"
      -        },
      -        "maxItems": 25,
      -        "minItems": 1,
      -        "type": "array"
      -      }
      -    },
      -    "required": [
      -      "documentIds",
      -      "action"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "allOf": [
      +      {
      +        "not": {
      +          "anyOf": [
      +            {
      +              "required": [
      +                "categoryId"
      +              ]
      +            },
      +            {
      +              "required": [
      +                "tagId"
      +              ]
      +            }
      +          ]
      +        }
      +      }
      +    ],
      +    "properties": {
      +      "action": {
      +        "const": "move",
      +        "description": "Move each document to the same folder.",
      +        "type": "string"
      +      },
      +      "documentIds": {
      +        "description": "One to 25 distinct document UUIDs, explicitly selected by the user; no search expansion.",
      +        "items": {
      +          "description": "UUID of an item visible to the active API key.",
      +          "format": "uuid",
      +          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      +          "type": "string"
      +        },
      +        "maxItems": 25,
      +        "minItems": 1,
      +        "type": "array"
      +      },
      +      "folderId": {
      +        "anyOf": [
      +          {
      +            "description": "UUID of an item visible to the active API key.",
      +            "format": "uuid",
      +            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Destination folder UUID, or null for no folder."
      +      }
      +    },
      +    "required": [
      +      "documentIds",
      +      "action",
      +      "folderId"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "allOf": [
      +      {
      +        "not": {
      +          "anyOf": [
      +            {
      +              "required": [
      +                "folderId"
      +              ]
      +            },
      +            {
      +              "required": [
      +                "tagId"
      +              ]
      +            }
      +          ]
      +        }
      +      }
      +    ],
      +    "properties": {
      +      "action": {
      +        "const": "set_category",
      +        "description": "Set one explicit category on every document.",
      +        "type": "string"
      +      },
      +      "categoryId": {
      +        "anyOf": [
      +          {
      +            "description": "UUID of an item visible to the active API key.",
      +            "format": "uuid",
      +            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Category UUID, or null to clear explicit category."
      +      },
      +      "documentIds": {
      +        "description": "One to 25 distinct document UUIDs, explicitly selected by the user; no search expansion.",
      +        "items": {
      +          "description": "UUID of an item visible to the active API key.",
      +          "format": "uuid",
      +          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      +          "type": "string"
      +        },
      +        "maxItems": 25,
      +        "minItems": 1,
      +        "type": "array"
      +      }
      +    },
      +    "required": [
      +      "documentIds",
      +      "action",
      +      "categoryId"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "allOf": [
      +      {
      +        "not": {
      +          "anyOf": [
      +            {
      +              "required": [
      +                "folderId"
      +              ]
      +            },
      +            {
      +              "required": [
      +                "categoryId"
      +              ]
      +            }
      +          ]
      +        }
      +      }
      +    ],
      +    "properties": {
      +      "action": {
      +        "const": "add_tag",
      +        "description": "Assign one existing tag to every document.",
      +        "type": "string"
      +      },
      +      "documentIds": {
      +        "description": "One to 25 distinct document UUIDs, explicitly selected by the user; no search expansion.",
      +        "items": {
      +          "description": "UUID of an item visible to the active API key.",
      +          "format": "uuid",
      +          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      +          "type": "string"
      +        },
      +        "maxItems": 25,
      +        "minItems": 1,
      +        "type": "array"
      +      },
      +      "tagId": {
      +        "description": "Existing tag UUID to assign to each document.",
      +        "format": "uuid",
      +        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "documentIds",
      +      "action",
      +      "tagId"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "allOf": [
      +      {
      +        "not": {
      +          "anyOf": [
      +            {
      +              "required": [
      +                "folderId"
      +              ]
      +            },
      +            {
      +              "required": [
      +                "categoryId"
      +              ]
      +            }
      +          ]
      +        }
      +      }
      +    ],
      +    "properties": {
      +      "action": {
      +        "const": "remove_tag",
      +        "description": "Remove one tag assignment from every document.",
      +        "type": "string"
      +      },
      +      "documentIds": {
      +        "description": "One to 25 distinct document UUIDs, explicitly selected by the user; no search expansion.",
      +        "items": {
      +          "description": "UUID of an item visible to the active API key.",
      +          "format": "uuid",
      +          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      +          "type": "string"
      +        },
      +        "maxItems": 25,
      +        "minItems": 1,
      +        "type": "array"
      +      },
      +      "tagId": {
      +        "description": "Existing tag UUID to unassign from each document.",
      +        "format": "uuid",
      +        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "documentIds",
      +      "action",
      +      "tagId"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "allOf": [
      +      {
      +        "not": {
      +          "anyOf": [
      +            {
      +              "required": [
      +                "folderId"
      +              ]
      +            },
      +            {
      +              "required": [
      +                "categoryId"
      +              ]
      +            },
      +            {
      +              "required": [
      +                "tagId"
      +              ]
      +            }
      +          ]
      +        }
      +      }
      +    ],
      +    "properties": {
      +      "action": {
      +        "const": "trash",
      +        "description": "Move every document to trash without permanent deletion.",
      +        "type": "string"
      +      },
      +      "documentIds": {
      +        "description": "One to 25 distinct document UUIDs, explicitly selected by the user; no search expansion.",
      +        "items": {
      +          "description": "UUID of an item visible to the active API key.",
      +          "format": "uuid",
      +          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      +          "type": "string"
      +        },
      +        "maxItems": 25,
      +        "minItems": 1,
      +        "type": "array"
      +      }
      +    },
      +    "required": [
      +      "documentIds",
      +      "action"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "allOf": [
      +      {
      +        "not": {
      +          "anyOf": [
      +            {
      +              "required": [
      +                "folderId"
      +              ]
      +            },
      +            {
      +              "required": [
      +                "categoryId"
      +              ]
      +            },
      +            {
      +              "required": [
      +                "tagId"
      +              ]
      +            }
      +          ]
      +        }
      +      }
      +    ],
      +    "properties": {
      +      "action": {
      +        "const": "restore",
      +        "description": "Restore every selected document from trash.",
      +        "type": "string"
      +      },
      +      "documentIds": {
      +        "description": "One to 25 distinct document UUIDs, explicitly selected by the user; no search expansion.",
      +        "items": {
      +          "description": "UUID of an item visible to the active API key.",
      +          "format": "uuid",
      +          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      +          "type": "string"
      +        },
      +        "maxItems": 25,
      +        "minItems": 1,
      +        "type": "array"
      +      }
      +    },
      +    "required": [
      +      "documentIds",
      +      "action"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "allOf": [
      +      {
      +        "not": {
      +          "anyOf": [
      +            {
      +              "required": [
      +                "folderId"
      +              ]
      +            },
      +            {
      +              "required": [
      +                "categoryId"
      +              ]
      +            },
      +            {
      +              "required": [
      +                "tagId"
      +              ]
      +            }
      +          ]
      +        }
      +      }
      +    ],
      +    "properties": {
      +      "action": {
      +        "const": "refresh_index",
      +        "description": "Request explicit indexing retry for every document.",
      +        "type": "string"
      +      },
      +      "documentIds": {
      +        "description": "One to 25 distinct document UUIDs, explicitly selected by the user; no search expansion.",
      +        "items": {
      +          "description": "UUID of an item visible to the active API key.",
      +          "format": "uuid",
      +          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      +          "type": "string"
      +        },
      +        "maxItems": 25,
      +        "minItems": 1,
      +        "type": "array"
      +      }
      +    },
      +    "required": [
      +      "documentIds",
      +      "action"
      +    ],
      +    "type": "object"
      +  }
      +]
    • addedInput schema / properties
      Added value: +{
      +  "action": {
      +    "anyOf": [
      +      {
      +        "const": "move",
      +        "description": "Move each document to the same folder.",
      +        "type": "string"
      +      },
      +      {
      +        "const": "set_category",
      +        "description": "Set one explicit category on every document.",
      +        "type": "string"
      +      },
      +      {
      +        "const": "add_tag",
      +        "description": "Assign one existing tag to every document.",
      +        "type": "string"
      +      },
      +      {
      +        "const": "remove_tag",
      +        "description": "Remove one tag assignment from every document.",
      +        "type": "string"
      +      },
      +      {
      +        "const": "trash",
      +        "description": "Move every document to trash without permanent deletion.",
      +        "type": "string"
      +      },
      +      {
      +        "const": "restore",
      +        "description": "Restore every selected document from trash.",
      +        "type": "string"
      +      },
      +      {
      +        "const": "refresh_index",
      +        "description": "Request explicit indexing retry for every document.",
      +        "type": "string"
      +      }
      +    ]
      +  },
      +  "categoryId": {
      +    "anyOf": [
      +      {
      +        "description": "UUID of an item visible to the active API key.",
      +        "format": "uuid",
      +        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      +        "type": "string"
      +      },
      +      {
      +        "type": "null"
      +      }
      +    ],
      +    "description": "Category UUID, or null to clear explicit category."
      +  },
      +  "documentIds": {
      +    "anyOf": [
      +      {
      +        "description": "One to 25 distinct document UUIDs, explicitly selected by the user; no search expansion.",
      +        "items": {
      +          "description": "UUID of an item visible to the active API key.",
      +          "format": "uuid",
      +          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      +          "type": "string"
      +        },
      +        "maxItems": 25,
      +        "minItems": 1,
      +        "type": "array"
      +      },
      +      {
      +        "description": "One to 25 distinct document UUIDs, explicitly selected by the user; no search expansion.",
      +        "items": {
      +          "description": "UUID of an item visible to the active API key.",
      +          "format": "uuid",
      +          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      +          "type": "string"
      +        },
      +        "maxItems": 25,
      +        "minItems": 1,
      +        "type": "array"
      +      },
      +      {
      +        "description": "One to 25 distinct document UUIDs, explicitly selected by the user; no search expansion.",
      +        "items": {
      +          "description": "UUID of an item visible to the active API key.",
      +          "format": "uuid",
      +          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      +          "type": "string"
      +        },
      +        "maxItems": 25,
      +        "minItems": 1,
      +        "type": "array"
      +      },
      +      {
      +        "description": "One to 25 distinct document UUIDs, explicitly selected by the user; no search expansion.",
      +        "items": {
      +          "description": "UUID of an item visible to the active API key.",
      +          "format": "uuid",
      +          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      +          "type": "string"
      +        },
      +        "maxItems": 25,
      +        "minItems": 1,
      +        "type": "array"
      +      },
      +      {
      +        "description": "One to 25 distinct document UUIDs, explicitly selected by the user; no search expansion.",
      +        "items": {
      +          "description": "UUID of an item visible to the active API key.",
      +          "format": "uuid",
      +          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      +          "type": "string"
      +        },
      +        "maxItems": 25,
      +        "minItems": 1,
      +        "type": "array"
      +      },
      +      {
      +        "description": "One to 25 distinct document UUIDs, explicitly selected by the user; no search expansion.",
      +        "items": {
      +          "description": "UUID of an item visible to the active API key.",
      +          "format": "uuid",
      +          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      +          "type": "string"
      +        },
      +        "maxItems": 25,
      +        "minItems": 1,
      +        "type": "array"
      +      },
      +      {
      +        "description": "One to 25 distinct document UUIDs, explicitly selected by the user; no search expansion.",
      +        "items": {
      +          "description": "UUID of an item visible to the active API key.",
      +          "format": "uuid",
      +          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      +          "type": "string"
      +        },
      +        "maxItems": 25,
      +        "minItems": 1,
      +        "type": "array"
      +      }
      +    ]
      +  },
      +  "folderId": {
      +    "anyOf": [
      +      {
      +        "description": "UUID of an item visible to the active API key.",
      +        "format": "uuid",
      +        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      +        "type": "string"
      +      },
      +      {
      +        "type": "null"
      +      }
      +    ],
      +    "description": "Destination folder UUID, or null for no folder."
      +  },
      +  "tagId": {
      +    "anyOf": [
      +      {
      +        "description": "Existing tag UUID to assign to each document.",
      +        "format": "uuid",
      +        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      +        "type": "string"
      +      },
      +      {
      +        "description": "Existing tag UUID to unassign from each document.",
      +        "format": "uuid",
      +        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      +        "type": "string"
      +      }
      +    ]
      +  }
      +}
  4. Addedv0.1.3

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare destructive=true and idempotent=false, but the description adds genuinely new context: sequential processing with a per-document permission check, per-ID results, partial success, and stopping on auth/rate-limit failure. The one gap is it doesn't say what trashing vs. permanent deletion means for recovery timing.

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

Conciseness4/5

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

One dense paragraph, front-loaded with the selection rule and alternatives before behavioral detail. Slightly long, and the ID-count sentence duplicates the schema, but nothing is padding.

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

Completeness5/5

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

Given an output schema exists and per-ID results are described, the description covers the failure model, concurrency model, and action scope needed to invoke a complex multi-action tool correctly.

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

Parameters3/5

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

Schema coverage is 67% and the schema already documents each action's const, documentIds bounds, and workspaceId sourcing. The description's '1–25 IDs' restates the schema's minItems/maxItems rather than adding new meaning.

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?

States a specific verb+resource combination (batch actions on explicitly selected documents) and enumerates the seven supported actions. It is immediately distinguishable from single-document siblings, which it explicitly points to.

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

Usage Guidelines5/5

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

Gives an explicit selection rule: use for multiple explicitly selected documents, prefer the matching single-document tool for one. It also rules out search expansion and version restore, routing those to other tools.

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