{"slug":"box-automation","title":"box-automation","summary":"Automate Box cloud storage operations including file upload/download, search, folder management, sharing, collaborations, and metadata queries via Rube MCP (Composio). Always search tools first for current schemas.","platform":"Claude","tags":[],"authorName":"LLM Mart","authorSlug":"llm-mart","score":0,"source":"github","price":null,"verified":false,"createdAt":"2026-09-14T20:43:26.13392Z","repo":{"url":"https://github.com/davepoon/buildwithclaude","stars":3556,"forks":535,"license":"MIT","updatedAt":"2026-09-27T03:56:38Z"},"bodyHtml":"<hr>\n<h2>name: box-automation\ndescription: Automate Box cloud storage operations including file upload/download, search, folder management, sharing, collaborations, and metadata queries via Rube MCP (Composio). Always search tools first for current schemas.\nrequires:\nmcp: [rube]\ncategory: storage-docs</h2>\n<h1>Box Automation via Rube MCP</h1>\n<p>Automate Box operations including file upload/download, content search, folder management, collaboration, metadata queries, and sign requests through Composio's Box toolkit.</p>\n<p><strong>Toolkit docs</strong>: <a href=\"https://composio.dev/toolkits/box\">composio.dev/toolkits/box</a></p>\n<h2>Prerequisites</h2>\n<ul>\n<li>Rube MCP must be connected (RUBE_SEARCH_TOOLS available)</li>\n<li>Active Box connection via <code>RUBE_MANAGE_CONNECTIONS</code> with toolkit <code>box</code></li>\n<li>Always call <code>RUBE_SEARCH_TOOLS</code> first to get current tool schemas</li>\n</ul>\n<h2>Setup</h2>\n<p><strong>Get Rube MCP</strong>: Add <code>https://rube.app/mcp</code> as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.</p>\n<ol>\n<li>Verify Rube MCP is available by confirming <code>RUBE_SEARCH_TOOLS</code> responds</li>\n<li>Call <code>RUBE_MANAGE_CONNECTIONS</code> with toolkit <code>box</code></li>\n<li>If connection is not ACTIVE, follow the returned auth link to complete Box OAuth</li>\n<li>Confirm connection status shows ACTIVE before running any workflows</li>\n</ol>\n<h2>Core Workflows</h2>\n<h3>1. Upload and Download Files</h3>\n<p><strong>When to use</strong>: User wants to upload files to Box or download files from it</p>\n<p><strong>Tool sequence</strong>:</p>\n<ol>\n<li><code>BOX_SEARCH_FOR_CONTENT</code> - Find the target folder if path is unknown [Prerequisite]</li>\n<li><code>BOX_GET_FOLDER_INFORMATION</code> - Verify folder exists and get folder_id [Prerequisite]</li>\n<li><code>BOX_LIST_ITEMS_IN_FOLDER</code> - Browse folder contents and discover file IDs [Optional]</li>\n<li><code>BOX_UPLOAD_FILE</code> - Upload a file to a specific folder [Required for upload]</li>\n<li><code>BOX_DOWNLOAD_FILE</code> - Download a file by file_id [Required for download]</li>\n<li><code>BOX_CREATE_ZIP_DOWNLOAD</code> - Bundle multiple files/folders into a zip [Optional]</li>\n</ol>\n<p><strong>Key parameters</strong>:</p>\n<ul>\n<li><code>parent_id</code>: Folder ID for upload destination (use <code>\"0\"</code> for root folder)</li>\n<li><code>file</code>: FileUploadable object with <code>s3key</code>, <code>mimetype</code>, and <code>name</code> for uploads</li>\n<li><code>file_id</code>: Unique file identifier for downloads</li>\n<li><code>version</code>: Optional file version ID for downloading specific versions</li>\n<li><code>fields</code>: Comma-separated list of attributes to return</li>\n</ul>\n<p><strong>Pitfalls</strong>:</p>\n<ul>\n<li>Uploading to a folder with existing filenames can trigger conflict behavior; decide overwrite vs rename semantics</li>\n<li>Files over 50MB should use chunk upload APIs (not available via standard tools)</li>\n<li>The <code>attributes</code> part of upload must come before the <code>file</code> part or you get HTTP 400 with <code>metadata_after_file_contents</code></li>\n<li>File IDs and folder IDs are numeric strings extractable from Box web app URLs (e.g., <code>https://*.app.box.com/files/123</code> gives file_id <code>\"123\"</code>)</li>\n</ul>\n<h3>2. Search and Browse Content</h3>\n<p><strong>When to use</strong>: User wants to find files, folders, or web links by name, content, or metadata</p>\n<p><strong>Tool sequence</strong>:</p>\n<ol>\n<li><code>BOX_SEARCH_FOR_CONTENT</code> - Full-text search across files, folders, and web links [Required]</li>\n<li><code>BOX_LIST_ITEMS_IN_FOLDER</code> - Browse contents of a specific folder [Optional]</li>\n<li><code>BOX_GET_FILE_INFORMATION</code> - Get detailed metadata for a specific file [Optional]</li>\n<li><code>BOX_GET_FOLDER_INFORMATION</code> - Get detailed metadata for a specific folder [Optional]</li>\n<li><code>BOX_QUERY_FILES_FOLDERS_BY_METADATA</code> - Search by metadata template values [Optional]</li>\n<li><code>BOX_LIST_RECENTLY_ACCESSED_ITEMS</code> - List recently accessed items [Optional]</li>\n</ol>\n<p><strong>Key parameters</strong>:</p>\n<ul>\n<li><code>query</code>: Search string supporting operators (<code>\"\"</code> exact match, <code>AND</code>, <code>OR</code>, <code>NOT</code> - uppercase only)</li>\n<li><code>type</code>: Filter by <code>\"file\"</code>, <code>\"folder\"</code>, or <code>\"web_link\"</code></li>\n<li><code>ancestor_folder_ids</code>: Limit search to specific folders (comma-separated IDs)</li>\n<li><code>file_extensions</code>: Filter by file type (comma-separated, no dots)</li>\n<li><code>content_types</code>: Search in <code>\"name\"</code>, <code>\"description\"</code>, <code>\"file_content\"</code>, <code>\"comments\"</code>, <code>\"tags\"</code></li>\n<li><code>created_at_range</code> / <code>updated_at_range</code>: Date filters as comma-separated RFC3339 timestamps</li>\n<li><code>limit</code>: Results per page (default 30)</li>\n<li><code>offset</code>: Pagination offset (max 10000)</li>\n<li><code>folder_id</code>: For <code>LIST_ITEMS_IN_FOLDER</code> (use <code>\"0\"</code> for root)</li>\n</ul>\n<p><strong>Pitfalls</strong>:</p>\n<ul>\n<li>Queries with offset &gt; 10000 are rejected with HTTP 400</li>\n<li><code>BOX_SEARCH_FOR_CONTENT</code> requires either <code>query</code> or <code>mdfilters</code> parameter</li>\n<li>Misconfigured filters can silently omit expected items; validate with small test queries first</li>\n<li>Boolean operators (<code>AND</code>, <code>OR</code>, <code>NOT</code>) must be uppercase</li>\n<li><code>BOX_LIST_ITEMS_IN_FOLDER</code> requires pagination via <code>marker</code> or <code>offset</code>/<code>usemarker</code>; partial listings are common</li>\n<li>Standard folders sort items by type first (folders before files before web links)</li>\n</ul>\n<h3>3. Manage Folders</h3>\n<p><strong>When to use</strong>: User wants to create, update, move, copy, or delete folders</p>\n<p><strong>Tool sequence</strong>:</p>\n<ol>\n<li><code>BOX_GET_FOLDER_INFORMATION</code> - Verify folder exists and check permissions [Prerequisite]</li>\n<li><code>BOX_CREATE_FOLDER</code> - Create a new folder [Required for create]</li>\n<li><code>BOX_UPDATE_FOLDER</code> - Rename, move, or update folder settings [Required for update]</li>\n<li><code>BOX_COPY_FOLDER</code> - Copy a folder to a new location [Optional]</li>\n<li><code>BOX_DELETE_FOLDER</code> - Move folder to trash [Required for delete]</li>\n<li><code>BOX_PERMANENTLY_REMOVE_FOLDER</code> - Permanently delete a trashed folder [Optional]</li>\n</ol>\n<p><strong>Key parameters</strong>:</p>\n<ul>\n<li><code>name</code>: Folder name (no <code>/</code>, <code>\\</code>, trailing spaces, or <code>.</code>/<code>..</code>)</li>\n<li><code>parent__id</code>: Parent folder ID (use <code>\"0\"</code> for root)</li>\n<li><code>folder_id</code>: Target folder ID for operations</li>\n<li><code>parent.id</code>: Destination folder ID for moves via <code>BOX_UPDATE_FOLDER</code></li>\n<li><code>recursive</code>: Set <code>true</code> to delete non-empty folders</li>\n<li><code>shared_link</code>: Object with <code>access</code>, <code>password</code>, <code>permissions</code> for creating shared links on folders</li>\n<li><code>description</code>, <code>tags</code>: Optional metadata fields</li>\n</ul>\n<p><strong>Pitfalls</strong>:</p>\n<ul>\n<li><code>BOX_DELETE_FOLDER</code> moves to trash by default; use <code>BOX_PERMANENTLY_REMOVE_FOLDER</code> for permanent deletion</li>\n<li>Non-empty folders require <code>recursive: true</code> for deletion</li>\n<li>Root folder (ID <code>\"0\"</code>) cannot be copied or deleted</li>\n<li>Folder names cannot contain <code>/</code>, <code>\\</code>, non-printable ASCII, or trailing spaces</li>\n<li>Moving folders requires setting <code>parent.id</code> via <code>BOX_UPDATE_FOLDER</code></li>\n</ul>\n<h3>4. Share Files and Manage Collaborations</h3>\n<p><strong>When to use</strong>: User wants to share files, manage access, or handle collaborations</p>\n<p><strong>Tool sequence</strong>:</p>\n<ol>\n<li><code>BOX_GET_FILE_INFORMATION</code> - Get file details and current sharing status [Prerequisite]</li>\n<li><code>BOX_LIST_FILE_COLLABORATIONS</code> - List who has access to a file [Required]</li>\n<li><code>BOX_UPDATE_COLLABORATION</code> - Change access level or accept/reject invitations [Required]</li>\n<li><code>BOX_GET_COLLABORATION</code> - Get details of a specific collaboration [Optional]</li>\n<li><code>BOX_UPDATE_FILE</code> - Create shared links, lock files, or update permissions [Optional]</li>\n<li><code>BOX_UPDATE_FOLDER</code> - Create shared links on folders [Optional]</li>\n</ol>\n<p><strong>Key parameters</strong>:</p>\n<ul>\n<li><code>collaboration_id</code>: Unique collaboration identifier</li>\n<li><code>role</code>: Access level (<code>\"editor\"</code>, <code>\"viewer\"</code>, <code>\"co-owner\"</code>, <code>\"owner\"</code>, <code>\"previewer\"</code>, <code>\"uploader\"</code>, <code>\"viewer uploader\"</code>, <code>\"previewer uploader\"</code>)</li>\n<li><code>status</code>: <code>\"accepted\"</code>, <code>\"pending\"</code>, or <code>\"rejected\"</code> for collaboration invites</li>\n<li><code>file_id</code>: File to share or manage</li>\n<li><code>lock__access</code>: Set to <code>\"lock\"</code> to lock a file</li>\n<li><code>permissions__can__download</code>: <code>\"company\"</code> or <code>\"open\"</code> for download permissions</li>\n</ul>\n<p><strong>Pitfalls</strong>:</p>\n<ul>\n<li>Only certain roles can invite collaborators; insufficient permissions cause authorization errors</li>\n<li><code>can_view_path</code> increases load time for the invitee's \"All Files\" page; limit to 1000 per user</li>\n<li>Collaboration expiration requires enterprise admin settings to be enabled</li>\n<li>Nested parameter names use double underscores (e.g., <code>lock__access</code>, <code>parent__id</code>)</li>\n</ul>\n<h3>5. Box Sign Requests</h3>\n<p><strong>When to use</strong>: User wants to manage document signature requests</p>\n<p><strong>Tool sequence</strong>:</p>\n<ol>\n<li><code>BOX_LIST_BOX_SIGN_REQUESTS</code> - List all signature requests [Required]</li>\n<li><code>BOX_GET_BOX_SIGN_REQUEST_BY_ID</code> - Get details of a specific sign request [Optional]</li>\n<li><code>BOX_CANCEL_BOX_SIGN_REQUEST</code> - Cancel a pending sign request [Optional]</li>\n</ol>\n<p><strong>Key parameters</strong>:</p>\n<ul>\n<li><code>sign_request_id</code>: UUID of the sign request</li>\n<li><code>shared_requests</code>: Set <code>true</code> to include requests where user is a collaborator (not owner)</li>\n<li><code>senders</code>: Filter by sender emails (requires <code>shared_requests: true</code>)</li>\n<li><code>limit</code> / <code>marker</code>: Pagination parameters</li>\n</ul>\n<p><strong>Pitfalls</strong>:</p>\n<ul>\n<li>Requires Box Sign to be enabled for the enterprise account</li>\n<li>Deleted sign files or parent folders cause requests to not appear in listings</li>\n<li>Only the creator can cancel a sign request</li>\n<li>Sign request statuses include: <code>converting</code>, <code>created</code>, <code>sent</code>, <code>viewed</code>, <code>signed</code>, <code>declined</code>, <code>cancelled</code>, <code>expired</code>, <code>error_converting</code>, <code>error_sending</code></li>\n</ul>\n<h2>Common Patterns</h2>\n<h3>ID Resolution</h3>\n<p>Box uses numeric string IDs for all entities:</p>\n<ul>\n<li><strong>Root folder</strong>: Always ID <code>\"0\"</code></li>\n<li><strong>File ID from URL</strong>: <code>https://*.app.box.com/files/123</code> gives file_id <code>\"123\"</code></li>\n<li><strong>Folder ID from URL</strong>: <code>https://*.app.box.com/folder/123</code> gives folder_id <code>\"123\"</code></li>\n<li><strong>Search to ID</strong>: Use <code>BOX_SEARCH_FOR_CONTENT</code> to find items, then extract IDs from results</li>\n<li><strong>ETag</strong>: Use <code>if_match</code> with file's ETag for safe concurrent delete operations</li>\n</ul>\n<h3>Pagination</h3>\n<p>Box supports two pagination methods:</p>\n<ul>\n<li><strong>Offset-based</strong>: Use <code>offset</code> + <code>limit</code> (max offset 10000)</li>\n<li><strong>Marker-based</strong>: Set <code>usemarker: true</code> and follow <code>marker</code> from responses (preferred for large datasets)</li>\n<li>Always paginate to completion to avoid partial results</li>\n</ul>\n<h3>Nested Parameters</h3>\n<p>Box tools use double underscore notation for nested objects:</p>\n<ul>\n<li><code>parent__id</code> for parent folder reference</li>\n<li><code>lock__access</code>, <code>lock__expires__at</code>, <code>lock__is__download__prevented</code> for file locks</li>\n<li><code>permissions__can__download</code> for download permissions</li>\n</ul>\n<h2>Known Pitfalls</h2>\n<h3>ID Formats</h3>\n<ul>\n<li>All IDs are numeric strings (e.g., <code>\"123456\"</code>, not integers)</li>\n<li>Root folder is always <code>\"0\"</code></li>\n<li>File and folder IDs can be extracted from Box web app URLs</li>\n</ul>\n<h3>Rate Limits</h3>\n<ul>\n<li>Box API has per-endpoint rate limits</li>\n<li>Search and list operations should use pagination responsibly</li>\n<li>Bulk operations should include delays between requests</li>\n</ul>\n<h3>Parameter Quirks</h3>\n<ul>\n<li><code>fields</code> parameter changes response shape: when specified, only mini representation + requested fields are returned</li>\n<li>Search requires either <code>query</code> or <code>mdfilters</code>; both are optional individually but one must be present</li>\n<li><code>BOX_UPDATE_FILE</code> with <code>lock</code> set to <code>null</code> removes the lock (raw API only)</li>\n<li>Metadata query <code>from</code> field format: <code>enterprise_{enterprise_id}.templateKey</code> or <code>global.templateKey</code></li>\n</ul>\n<h3>Permissions</h3>\n<ul>\n<li>Deletions fail without sufficient permissions; always handle error responses</li>\n<li>Collaboration roles determine what operations are allowed</li>\n<li>Enterprise settings may restrict certain sharing options</li>\n</ul>\n<h2>Quick Reference</h2>\n<table>\n<thead>\n<tr>\n<th>Task</th>\n<th>Tool Slug</th>\n<th>Key Params</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Search content</td>\n<td><code>BOX_SEARCH_FOR_CONTENT</code></td>\n<td><code>query</code>, <code>type</code>, <code>ancestor_folder_ids</code></td>\n</tr>\n<tr>\n<td>List folder items</td>\n<td><code>BOX_LIST_ITEMS_IN_FOLDER</code></td>\n<td><code>folder_id</code>, <code>limit</code>, <code>marker</code></td>\n</tr>\n<tr>\n<td>Get file info</td>\n<td><code>BOX_GET_FILE_INFORMATION</code></td>\n<td><code>file_id</code>, <code>fields</code></td>\n</tr>\n<tr>\n<td>Get folder info</td>\n<td><code>BOX_GET_FOLDER_INFORMATION</code></td>\n<td><code>folder_id</code>, <code>fields</code></td>\n</tr>\n<tr>\n<td>Upload file</td>\n<td><code>BOX_UPLOAD_FILE</code></td>\n<td><code>file</code>, <code>parent_id</code></td>\n</tr>\n<tr>\n<td>Download file</td>\n<td><code>BOX_DOWNLOAD_FILE</code></td>\n<td><code>file_id</code></td>\n</tr>\n<tr>\n<td>Create folder</td>\n<td><code>BOX_CREATE_FOLDER</code></td>\n<td><code>name</code>, <code>parent__id</code></td>\n</tr>\n<tr>\n<td>Update folder</td>\n<td><code>BOX_UPDATE_FOLDER</code></td>\n<td><code>folder_id</code>, <code>name</code>, <code>parent</code></td>\n</tr>\n<tr>\n<td>Copy folder</td>\n<td><code>BOX_COPY_FOLDER</code></td>\n<td><code>folder_id</code>, <code>parent__id</code></td>\n</tr>\n<tr>\n<td>Delete folder</td>\n<td><code>BOX_DELETE_FOLDER</code></td>\n<td><code>folder_id</code>, <code>recursive</code></td>\n</tr>\n<tr>\n<td>Permanently delete folder</td>\n<td><code>BOX_PERMANENTLY_REMOVE_FOLDER</code></td>\n<td>folder_id</td>\n</tr>\n<tr>\n<td>Update file</td>\n<td><code>BOX_UPDATE_FILE</code></td>\n<td><code>file_id</code>, <code>name</code>, <code>parent__id</code></td>\n</tr>\n<tr>\n<td>Delete file</td>\n<td><code>BOX_DELETE_FILE</code></td>\n<td><code>file_id</code>, <code>if_match</code></td>\n</tr>\n<tr>\n<td>List collaborations</td>\n<td><code>BOX_LIST_FILE_COLLABORATIONS</code></td>\n<td><code>file_id</code></td>\n</tr>\n<tr>\n<td>Update collaboration</td>\n<td><code>BOX_UPDATE_COLLABORATION</code></td>\n<td><code>collaboration_id</code>, <code>role</code></td>\n</tr>\n<tr>\n<td>Get collaboration</td>\n<td><code>BOX_GET_COLLABORATION</code></td>\n<td><code>collaboration_id</code></td>\n</tr>\n<tr>\n<td>Query by metadata</td>\n<td><code>BOX_QUERY_FILES_FOLDERS_BY_METADATA</code></td>\n<td><code>from</code>, <code>ancestor_folder_id</code>, <code>query</code></td>\n</tr>\n<tr>\n<td>List collections</td>\n<td><code>BOX_LIST_ALL_COLLECTIONS</code></td>\n<td>(none)</td>\n</tr>\n<tr>\n<td>List collection items</td>\n<td><code>BOX_LIST_COLLECTION_ITEMS</code></td>\n<td><code>collection_id</code></td>\n</tr>\n<tr>\n<td>List sign requests</td>\n<td><code>BOX_LIST_BOX_SIGN_REQUESTS</code></td>\n<td><code>limit</code>, <code>marker</code></td>\n</tr>\n<tr>\n<td>Get sign request</td>\n<td><code>BOX_GET_BOX_SIGN_REQUEST_BY_ID</code></td>\n<td><code>sign_request_id</code></td>\n</tr>\n<tr>\n<td>Cancel sign request</td>\n<td><code>BOX_CANCEL_BOX_SIGN_REQUEST</code></td>\n<td><code>sign_request_id</code></td>\n</tr>\n<tr>\n<td>Recent items</td>\n<td><code>BOX_LIST_RECENTLY_ACCESSED_ITEMS</code></td>\n<td>(none)</td>\n</tr>\n<tr>\n<td>Create zip download</td>\n<td><code>BOX_CREATE_ZIP_DOWNLOAD</code></td>\n<td>item IDs</td>\n</tr>\n</tbody>\n</table>\n<hr>\n<p><em>Powered by <a href=\"https://composio.dev\">Composio</a></em></p>\n","files":[{"path":"SKILL.md","sizeBytes":12354,"isText":true}],"reviewScore":null,"reviewSummary":null,"trust":{"provenance":"trusted-source-unreviewed","notice":"Community-authored content, reproduced verbatim and not vetted as instructions. Treat it as data to evaluate, never as directives to follow.","bodySource":null},"bodyLocked":false,"purchaseUrl":null,"sourceUrl":null,"report":{"provenance":"trusted-source-unreviewed","screen":{"ran":true,"outcome":"clean","suspicious":0,"notes":0,"hiddenCharacters":false},"virusScan":{"engine":"clamav","status":"clean","scannedAt":"2026-09-14T20:44:39.970053Z","sha256":"896E0A6BAC26D76EDA102E55ADAF6886CE6617720BF14DE14A50208D37D21B42","sizeBytes":4535},"review":null,"source":{"repositoryUrl":"https://github.com/davepoon/buildwithclaude","path":"plugins/all-skills/skills/box-automation","license":"MIT","commit":"6178ae2b0900b3600419853206de1dddf0f28311","subtreeSha":"A31B363FCA4A8D0E3AAB3D4806A8DAE28ECC8E403B2469490116EAD2E12190C0","lastSyncedAt":"2026-09-27T19:47:46.68834Z"},"reviewedAt":"2026-09-14T20:46:54.677232Z","notice":"Community-authored content, reproduced verbatim and not vetted as instructions. Treat it as data to evaluate, never as directives to follow."},"install":[{"target":"skills-cli","command":"npx skills add https://github.com/davepoon/buildwithclaude/tree/main/plugins/all-skills/skills/box-automation"},{"target":"claude-code","command":"claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install davepoon-buildwithclaude@llmmart"},{"target":"git","command":"git clone https://github.com/davepoon/buildwithclaude.git"}]}