MCP Server Box
The MCP Server Box is a Python-based server that integrates with the Box API to manage, process, and query files and folders with AI capabilities.
Authorization: Authorize the Box app and check connection status
Search & Read: Search for files based on criteria (name, content, extensions) and read file content
AI Operations: Query Box AI about file content and extract specific data fields in JSON format
Folder Management: Locate folders by name and list folder contents (with recursive option)
Automation: Integrate Box functionalities into broader systems and workflows using Python
Enables comprehensive Box file and folder management through the Box API, offering tools for file search, text extraction, AI-based querying, and data extraction. Features include user authentication, file content reading, AI-powered file analysis, folder navigation, and structured data extraction from files.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MCP Server Box search for files containing 'Q4 report' in the marketing folder"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Box MCP Server
This repository is discontinued and no longer maintained. Box now provides an officially supported hosted MCP server with the best experience and full functionality. Please migrate to the hosted MCP server: Set up the Box MCP Server →
Quick Start
Clone the repository:
git clone https://github.com/box-community/mcp-server-box.git
cd mcp-server-boxOptional but recommended uv installation for virtual environment and dependency management:
Homebrew (macOS)
brew install uvWinGet (Windows)
winget install --id=astral-sh.uv -eOn macOS and Linux
curl -LsSf https://astral.sh/uv/install.sh | shOn Windows
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"Set up the virtual environment and install dependencies:
uv syncSet environment variables:
Set the following environment variables for Box authentication in a .env file or your system environment.
For comprehensive authentication configuration options, see the Authentication Guide.
Using OAuth2.0 with a Box App
BOX_CLIENT_ID = YOUR_CLIENT_ID
BOX_CLIENT_SECRET = YOUR_CLIENT_SECRET
BOX_REDIRECT_URL = http://localhost:8000/callback
# MCP Server Authentication (for HTTP transports)
BOX_MCP_SERVER_AUTH_TOKEN = YOUR_BOX_MCP_SERVER_AUTH_TOKEN
OAUTH_PROTECTED_RESOURCES_CONFIG_FILE = .oauth-protected-resource.jsonNote:
The
BOX_MCP_SERVER_AUTH_TOKENis used to authenticate the MCP client to the MCP server when using--mcp-auth-type=token(independent of Box authentication)
Run the MCP server in STDIO mode:
uv run src/mcp_server_box.pyRelated MCP server: Document Q&A MCP Server
Box Community MCP Server Tools
Below is a summary of the available tools:
Tools available | Description |
AI-powered file and hub queries | |
Manage file/folder collaborations | |
Document generation and template management | |
File operations (read, upload, download) | |
Folder operations (list, create, delete, update) | |
Generic Box API utilities | |
Group management and queries | |
Metadata template and instance management | |
Search files and folders | |
Shared link management for files/folders/web-links | |
Task and task assignment management | |
User management and queries | |
Web link creation and management |
Box Community MCP Server Operations Details
Command line interface parameters
To run the MCP server with specific configurations, you can use the following command line parameters:
uv run src/mcp_server_box.py --helpusage: mcp_server_box.py [-h] [--transport {stdio,sse,http}] [--host HOST] [--port PORT] [--mcp-auth-type {oauth,token,none}] [--box-auth-type {oauth,ccg,jwt,mcp_client}]
Box Community MCP Server
options:
-h, --help show this help message and exit
--transport {stdio,sse,http}
Transport type (default: stdio)
--host HOST Host for SSE/HTTP transport (default: localhost)
--port PORT Port for SSE/HTTP transport (default: 8005)
--mcp-auth-type {oauth,token,none}
Authentication type for MCP server (default: token)
--box-auth-type {oauth,ccg,jwt,mcp_client}
Authentication type for Box API (default: oauth)For detailed information about authentication types, configurations, and use cases, see the Authentication Guide.
Claude Desktop Configuration
STDIO mode
Edit your claude_desktop_config.json:
code ~/Library/Application\ Support/Claude/claude_desktop_config.json
Add the configuration:
{
"mcpServers": {
"mcp-server-box": {
"command": "uv",
"args": [
"--directory",
"/path/to/mcp-server-box",
"run",
"src/mcp_server_box.py"
]
}
}
}Restart Claude if it is running.
HTTP Mode
Assuming your MCP server is running on https://mcp.myserver.com/mcp
Go to Claude -> Settings -> Connectors
Select
Add custom connectorConfigurations:
Give it a name
Enter the URL e.g.
https://mcp.myserver.com/mcpOptionally enter the
client idandclient secret
Click add
Click connect. The OAuth flow should start. Complete the flow
Back in Claude, click Configure. You should see all the tools available.
Available Tools
117 toolsbox_ai_agent_info_by_id_toolC
Get information about a specific AI agent by ID. Args: ctx (Context): The context object containing the request and lifespan context. ai_agent_id (str): The ID of the AI agent to retrieve information for. Returns: dict: A dictionary containing the AI agent information.
Inputs: ai_agent_id (required).
box_ai_agents_list_toolC
List available AI agents in Box. Args: ctx (Context): The context object containing the request and lifespan context. limit (Optional[int]): Maximum number of items to return. Defaults to 1000. Returns: dict: A dictionary containing the list of AI agents.
Inputs: limit.
box_ai_agents_search_by_name_toolC
Search for AI agents in Box by name. Args: ctx (Context): The context object containing the request and lifespan context. name (str): The name filter to search for AI agents. limit (Optional[int]): Maximum number of items to return. Defaults to 1000. Returns: dict: A dictionary containing the list of matching AI agents.
Inputs: name (required), limit.
box_ai_ask_file_multi_toolC
Ask a question about multiple files using AI. Args: ctx (Context): The context object containing the request and lifespan context. file_ids (List[str]): A list of file IDs to ask about, example: ["1234567890", "0987654321"]. prompt (str): The question to ask. ai_agent_id (Optional[str]): The ID of the AI agent to use for the question. If None, the default AI agent will be used. Returns: dict: The AI response containing the answers to the questions for each file.
Inputs: file_ids (required), prompt (required), ai_agent_id.
box_ai_ask_file_single_toolC
Ask a question about a file using AI. Args: ctx (Context): The context object containing the request and lifespan context. file_id (str): The ID of the file to ask about, example: "1234567890". prompt (str): The question to ask. ai_agent_id (Optional[str]): The ID of the AI agent to use for the question. If None, the default AI agent will be used. Returns: dict: The AI response containing the answer to the question.
Inputs: file_id (required), prompt (required), ai_agent_id.
box_ai_ask_hub_toolB
Ask a question about a hub using AI. Args: ctx (Context): The context object containing the request and lifespan context. hub_id (str): The ID of the hub to ask about, example: "1234567890". prompt (str): The question to ask. ai_agent_id (Optional[str]): The ID of the AI agent to use for the question. If None, the default AI agent will be used. Returns: dict: The AI response containing the answer to the question.
Inputs: hub_id (required), prompt (required), ai_agent_id.
box_ai_extract_freeform_toolA
Extract or analyze information from one or more files using a natural language prompt and return a SINGLE response.
This tool provides maximum flexibility for data extraction and analysis. Instead of defining structured fields, you simply ask Box AI a question or give it instructions in natural language. When multiple files are provided, Box AI analyzes ALL files together to provide ONE comprehensive answer.
This is the most flexible extraction tool but provides unstructured results. Use structured extraction tools (template-based or field-based) when you need consistent, machine-readable output.
Use cases:
Single file analysis: "What are the key terms of this contract?"
Multiple files analysis: "Compare the pricing across these three proposals and summarize differences"
Complex questions: "Based on these financial documents, what are the main risk factors?"
Summarization: "Provide a 3-paragraph summary of the main points across these meeting notes"
NOT for batch processing: If you need to ask the same question about multiple files separately (e.g., "summarize each report individually"), call this tool once per file in a loop.
Args: ctx (Context): The context object containing the request and lifespan context. file_ids (List[str]): A list of file IDs to extract information from, example: ["1234567890", "0987654321"]. prompt (str): The fields to extract. ai_agent_id (Optional[str]): The ID of the AI agent to use for the extraction. If None, the default AI agent will be used. Returns: dict: The AI response containing the extracted information.
Inputs: file_ids (required), prompt (required), ai_agent_id.
box_ai_extract_structured_enhanced_using_fields_toolA
Extract structured data from one or more files using custom fields and return a SINGLE data instance (Enhanced version).
This enhanced tool analyzes the provided file(s) and extracts information based on custom field definitions you provide. When multiple files are provided, Box AI combines information from ALL files to create ONE complete data record.
Enhanced features:
Uses advanced AI models (e.g., Google Gemini) for improved accuracy
Better handling of complex document layouts and image quality
More robust extraction for handwritten or low-quality scans
Improved understanding of complex field relationships
Unlike template-based extraction, this tool allows you to define fields on-the-fly without creating a metadata template in Box first. This is useful for ad-hoc data extraction or when you need fields that don't match any existing template.
Use cases:
Single file: Extract custom fields from one document
Multiple files: Combine data from multiple sources into one data instance (e.g., extract patient info from medical records, lab results, and prescription images)
NOT for batch processing: If you need to extract data from multiple files as separate instances, call this tool once per file in a loop.
Args: ctx (Context): The context object containing the request and lifespan context. file_ids (List[str]): A list of file IDs to extract information from, example: ["1234567890", "0987654321"]. fields (List[dict[str, Any]]): The fields to extract from the files. Returns: dict: The AI response containing the extracted information.
Inputs: file_ids (required), fields (required).
box_ai_extract_structured_enhanced_using_template_toolA
Extract structured data from one or more files and return a SINGLE metadata instance (Enhanced version).
This enhanced tool analyzes the provided file(s) and extracts information to populate a single metadata instance based on the specified template. When multiple files are provided, Box AI combines information from ALL files to create ONE complete metadata record.
Enhanced features:
Uses advanced AI models (e.g., Google Gemini) for improved accuracy
Better handling of complex document layouts and image quality
More robust extraction for handwritten or low-quality scans
Use cases:
Single file: Extract metadata from one receipt, invoice, or document
Multiple files: Combine data from multiple sources into one metadata instance (e.g., extract project info from a proposal PDF, budget spreadsheet, and timeline image)
NOT for batch processing: If you need to extract metadata from multiple files as separate instances, call this tool once per file in a loop.
Args: ctx (Context): The context object containing the request and lifespan context. file_ids (List[str]): The IDs of the files to read. template_key (str): The key of the metadata template to use for the extraction. Example: "insurance_policy_template". Returns: dict: The extracted structured data in a json string format.
Inputs: file_ids (required), template_key (required).
box_ai_extract_structured_using_fields_toolA
Extract structured data from one or more files using custom fields and return a SINGLE data instance.
This tool analyzes the provided file(s) and extracts information based on custom field definitions you provide. When multiple files are provided, Box AI combines information from ALL files to create ONE complete data record.
Unlike template-based extraction, this tool allows you to define fields on-the-fly without creating a metadata template in Box first. This is useful for ad-hoc data extraction or when you need fields that don't match any existing template.
Use cases:
Single file: Extract custom fields from one document (e.g., extract "contract_value" and "signing_date" from a contract)
Multiple files: Combine data from multiple sources into one data instance (e.g., extract "total_project_cost" from both a proposal and budget document)
NOT for batch processing: If you need to extract data from multiple files as separate instances, call this tool once per file in a loop.
Args: ctx (Context): The context object containing the request and lifespan context. file_ids (List[str]): The IDs of the files to read. fields (List[dict[str, Any]]): The fields to extract from the files. example:[ { "type": "string", "key": "name", "displayName": "Name", "description": "Policyholder Name", }, { "type": "string", "key": "number", "displayName": "Number", "description": "Policy Number", }, { "type": "date", "key": "effectiveDate", "displayName": "Effective Date", "description": "Policy Effective Date", }, { "type": "enum", "key": "paymentTerms", "displayName": "Payment Terms", "description": "Frequency of payment per year", "options": [ {"key": "Monthly"}, {"key": "Quarterly"}, {"key": "Semiannual"}, {"key": "Annually"}, ], }, { "type": "multiSelect", "key": "coverageTypes", "displayName": "Coverage Types", "description": "Types of coverage for the policy", "prompt": "Look in the coverage type table and include all listed types.", "options": [ {"key": "Body Injury Liability"}, {"key": "Property Damage Liability"}, {"key": "Personal Damage Liability"}, {"key": "Collision"}, {"key": "Comprehensive"}, {"key": "Uninsured Motorist"}, {"key": "Something that does not exist"}, ], }, ]
ai_agent_id (Optional[str]): The ID of the AI agent to use for processing.
Returns: dict: The extracted structured data in a json string format.
Inputs: file_ids (required), fields (required), ai_agent_id.
box_ai_extract_structured_using_template_toolA
Extract structured data from one or more files and return a SINGLE metadata instance.
This tool analyzes the provided file(s) and extracts information to populate a single metadata instance based on the specified template. When multiple files are provided, Box AI combines information from ALL files to create ONE complete metadata record.
Use cases:
Single file: Extract metadata from one receipt, invoice, or document
Multiple files: Combine data from multiple sources into one metadata instance (e.g., extract customer info from both a contract PDF and a supporting letter)
NOT for batch processing: If you need to extract metadata from multiple files as separate instances, call this tool once per file in a loop.
Args: ctx (Context): The context object containing the request and lifespan context. file_ids (List[str]): The IDs of the files to read. template_key (str): The ID of the template to use for extraction. ai_agent_id (Optional[str]): The ID of the AI agent to use for processing. Returns: dict: The extracted structured data in a json string format.
Inputs: file_ids (required), template_key (required), ai_agent_id.
box_authorize_app_toolC
Authorize the Box application. Start the Box app authorization process
return: str: Message
Inputs: no named parameters. Returns: result
box_collaboration_delete_toolC
Delete a specific collaboration. Args: ctx (Context): The MCP context. collaboration_id (str): The ID of the collaboration to delete. Returns: dict: A dictionary containing the result of the deletion or an error message.
Inputs: collaboration_id (required).
box_collaboration_file_group_by_group_id_toolB
Create a collaboration on a file with a group specified by group ID. Args: client (BoxClient): Authenticated Box client. file_id (str): The ID of the file to collaborate on. group_id (str): The ID of the group to collaborate with. role (str): The role to assign to the collaborator. Default is "editor". Available roles are editor, viewer, previewer, uploader, viewer_uploader, co-owner. is_access_only (Optional[bool]): If set to true, collaborators have access to shared items, but such items won't be visible in the All Files list. Additionally, collaborators won't see the path to the root folder for the shared item. expires_at (Optional[DateTime]): The expiration date of the collaboration. notify (Optional[bool]): Whether to notify the collaborator via email. Returns: Dict[str, Any]: Dictionary containing collaboration details or error message.
Inputs: file_id (required), group_id (required), role, is_access_only, +2 more.
box_collaboration_file_user_by_user_id_toolA
Create a collaboration on a file with a user specified by user ID. Args: client (BoxClient): Authenticated Box client. file_id (str): The ID of the file to collaborate on. user_id (str): The ID of the user to collaborate with. role (str): The role to assign to the collaborator. Default is "editor". Available roles are editor, viewer, previewer, uploader, viewer_uploader, co-owner. is_access_only (Optional[bool]): If set to true, collaborators have access to shared items, but such items won't be visible in the All Files list. Additionally, collaborators won't see the path to the root folder for the shared item. expires_at (Optional[DateTime]): The expiration date of the collaboration. notify (Optional[bool]): Whether to notify the collaborator via email. Returns: Dict[str, Any]: Dictionary containing collaboration details or error message.
Inputs: file_id (required), user_id (required), role, is_access_only, +2 more.
box_collaboration_file_user_by_user_login_toolA
Create a collaboration on a file with a user specified by user login (email). Args: client (BoxClient): Authenticated Box client. file_id (str): The ID of the file to collaborate on. user_login (str): The login (email) of the user to collaborate with. role (str): The role to assign to the collaborator. Default is "editor". Available roles are editor, viewer, previewer, uploader, viewer_uploader, co-owner. is_access_only (Optional[bool]): If set to true, collaborators have access to shared items, but such items won't be visible in the All Files list. Additionally, collaborators won't see the path to the root folder for the shared item. expires_at (Optional[DateTime]): The expiration date of the collaboration. notify (Optional[bool]): Whether to notify the collaborator via email. Returns: Dict[str, Any]: Dictionary containing collaboration details or error message.
Inputs: file_id (required), user_login (required), role, is_access_only, +2 more.
box_collaboration_folder_group_by_group_id_toolA
Create a collaboration on a folder with a group specified by group ID. Args: client (BoxClient): Authenticated Box client. folder_id (str): The ID of the folder to collaborate on. group_id (str): The ID of the group to collaborate with. role (str): The role to assign to the collaborator. Default is "editor". Available roles are editor, viewer, previewer, uploader, viewer_uploader, co-owner. is_access_only (Optional[bool]): If set to true, collaborators have access to shared items, but such items won't be visible in the All Files list. Additionally, collaborators won't see the path to the root folder for the shared item. expires_at (Optional[DateTime]): The expiration date of the collaboration. notify (Optional[bool]): Whether to notify the collaborator via email. Returns: Dict[str, Any]: Dictionary containing collaboration details or error message.
Inputs: folder_id (required), group_id (required), role, is_access_only, +3 more.
box_collaboration_folder_user_by_user_id_toolB
Create a collaboration on a folder with a user specified by user ID. Args: client (BoxClient): Authenticated Box client. folder_id (str): The ID of the folder to collaborate on. user_id (str): The ID of the user to collaborate with. role (str): The role to assign to the collaborator. Default is "editor". Available roles are editor, viewer, previewer, uploader, viewer_uploader, co-owner. is_access_only (Optional[bool]): If set to true, collaborators have access to shared items, but such items won't be visible in the All Files list. Additionally, collaborators won't see the path to the root folder for the shared item. expires_at (Optional[DateTime]): The expiration date of the collaboration. notify (Optional[bool]): Whether to notify the collaborator via email. Returns: Dict[str, Any]: Dictionary containing collaboration details or error message.
Inputs: folder_id (required), user_id (required), role, is_access_only, +3 more.
box_collaboration_folder_user_by_user_login_toolA
Create a collaboration on a folder with a user specified by user login (email). Args: client (BoxClient): Authenticated Box client. folder_id (str): The ID of the folder to collaborate on. user_login (str): The login (email) of the user to collaborate with. role (str): The role to assign to the collaborator. Default is "editor". Available roles are editor, viewer, previewer, uploader, viewer_uploader, co-owner. is_access_only (Optional[bool]): If set to true, collaborators have access to shared items, but such items won't be visible in the All Files list. Additionally, collaborators won't see the path to the root folder for the shared item. expires_at (Optional[DateTime]): The expiration date of the collaboration. notify (Optional[bool]): Whether to notify the collaborator via email. Returns: Dict[str, Any]: Dictionary containing collaboration details or error message.
Inputs: folder_id (required), user_login (required), role, is_access_only, +3 more.
box_collaboration_list_by_file_toolC
List all collaborations on a specific file. Args: ctx (Context): The MCP context. file_id (str): The ID of the file to list collaborations for. Returns: dict: A dictionary containing the list of collaborations or an error message.
Inputs: file_id (required).
box_collaboration_list_by_folder_toolC
List all collaborations on a specific folder. Args: ctx (Context): The MCP context. folder_id (str): The ID of the folder to list collaborations for. Returns: dict: A dictionary containing the list of collaborations or an error message.
Inputs: folder_id (required).
box_collaboration_update_toolB
Update a specific collaboration's role. Args: ctx (Context): The MCP context. collaboration_id (str): The ID of the collaboration to update. role (str): The new role to assign to the collaborator. Default is "editor". Available roles are editor, viewer, previewer, uploader, viewer_uploader, co-owner. status (Optional[str]): The status of the collaboration. Can be 'accepted' or 'rejected'. expires_at (Optional[datetime]): The new expiration date of the collaboration. can_view_path (Optional[bool]): Whether the collaborator can view the path to the root folder. Returns: dict: A dictionary containing the updated collaboration details or an error message.
Inputs: collaboration_id (required), role, status, expires_at, +1 more.
box_docgen_create_batch_toolA
Create a new Box Doc Gen batch to generate documents from a template.
Args: client (BoxClient): Authenticated Box client. docgen_template_id (str): ID of the Doc Gen template. destination_folder_id (str): ID of the folder to save the generated document. document_generation_data (List[Dict[str, Any]]): Data for document generation. example: [ { "generated_file_name": "Image test", "user_input": { "order": { "id": "12305", "date": "18-08-2023", "products": [ { "id": 1, "name": "A4 Papers", "type": "non-fragile", "quantity": 100, "price": 29, "amount": 2900 }, ] } } }, ] output_type (str): Output file type (only, "pdf" or "docx").
Returns: dict[str, Any]: Response containing batch creation status and details. If successful, contains a message with batch ID. If an error occurs, contains an "error" key with the error message.
Inputs: docgen_template_id (required), destination_folder_id (required), document_generation_data (required), output_type. Returns: object
box_docgen_create_single_file_from_user_input_toolB
Create a single document from a Doc Gen template using user input.
Args: client (BoxClient): Authenticated Box client. docgen_template_id (str): ID of the Doc Gen template. destination_folder_id (str): ID of the folder to save the generated document. user_input (dict[str, Any]): User input data for document generation. example: example: { "user_input": { "order": { "id": "12305", "date": "18-08-2023", "products": [ { "id": 1, "name": "A4 Papers", "type": "non-fragile", "quantity": 100, "price": 29, "amount": 2900 }, ] } } } generated_file_name (Optional[str]): Name for the generated document file. output_type (str): Output file type (only, "pdf" or "docx").
Returns: dict[str, Any]: Information about the created batch job.
Inputs: docgen_template_id (required), destination_folder_id (required), user_input (required), generated_file_name, +1 more. Returns: object
box_docgen_get_job_by_id_toolB
Retrieve a Box Doc Gen job by its ID.
Args: client (BoxClient): Authenticated Box client. job_id (str): ID of the Doc Gen job.
Returns: dict[str, Any]: Details of the specified Doc Gen job.
Inputs: job_id (required). Returns: object
box_docgen_list_jobs_by_batch_toolC
List Doc Gen jobs in a specific batch.
Args: client (BoxClient): Authenticated Box client. batch_id (str): ID of the Doc Gen batch. marker (str, optional): Pagination marker. limit (int, optional): Maximum number of items to return.
Returns: list[dict[str, Any]]: A list of Doc Gen jobs in the batch.
Inputs: batch_id (required), marker, limit. Returns: result
box_docgen_list_jobs_toolC
List all Box Doc Gen jobs for the current user.
Args: client (BoxClient): Authenticated Box client. marker (str, optional): Pagination marker. limit (int, optional): Maximum number of items to return.
Returns: list[dict[str, Any]]: A list of Doc Gen jobs.
Inputs: marker, limit. Returns: result
box_docgen_template_create_toolC
Mark a file as a Box Doc Gen template.
Args: client (BoxClient): Authenticated Box client. file_id (str): ID of the file to mark as template.
Returns: dict[str, Any]: Metadata of the created template.
Inputs: file_id (required). Returns: object
box_docgen_template_get_by_id_toolC
Retrieve details of a specific Box Doc Gen template.
Args: client (BoxClient): Authenticated Box client. template_id (str): ID of the template.
Returns: dict[str, Any]: Metadata of the template or an error message.
Inputs: template_id (required). Returns: object
box_docgen_template_get_by_name_toolC
Retrieve details of a specific Box Doc Gen template by name.
Args: client (BoxClient): Authenticated Box client. template_name (str): Name of the template.
Returns: dict[str, Any]: Metadata of the template or an error message.
Inputs: template_name (required). Returns: object
box_docgen_template_list_jobs_toolB
List Doc Gen jobs that used a specific template.
Args: client (BoxClient): Authenticated Box client. template_id (str): ID of the template. marker (str, optional): Pagination marker. limit (int, optional): Max items per page.
Returns: DocGenJobsV2025R0: A page of Doc Gen jobs for the template.
Inputs: template_id (required), marker, limit. Returns: result
box_docgen_template_list_tags_toolC
List all tags for a Box Doc Gen template.
Args: client (BoxClient): Authenticated Box client. template_id (str): ID of the template. template_version_id (str, optional): Specific version ID. marker (str, optional): Pagination marker. limit (int, optional): Max items per page.
Returns: list[dict[str, Any]]: A list of tags for the template or an error message.
Inputs: template_id (required), template_version_id, marker, limit. Returns: result
box_docgen_template_list_toolB
List all Box Doc Gen templates accessible to the user.
Args: client (BoxClient): Authenticated Box client. marker (str, optional): Pagination marker. limit (int, optional): Max items per page.
Returns: dict[str, Any] | list[dict[str, Any]]: A list of template metadata or an error message.
Inputs: marker, limit. Returns: result
box_file_copy_toolB
Copy a file to a specified destination folder in Box. Args: file_id (str): The ID of the file to copy. destination_folder_id (str): The ID of the destination folder. new_name (str, optional): Optional new name for the copied file. version_number (int, optional): Optional version number of the file to copy. Returns: dict[str, Any]: Dictionary containing the copied file information or error message.
Inputs: file_id (required), destination_folder_id (required), new_name, version_number. Returns: object
box_file_delete_toolC
Delete a file from Box. Args: file_id (str): The ID of the file to delete. Returns: dict[str, Any]: Dictionary containing success message or error.
Inputs: file_id (required). Returns: object
box_file_download_toolA
Download a file from Box and optionally save it locally.
Args: file_id (str): The ID of the file to download. save_file (bool, optional): Whether to save the file locally. Defaults to False. save_path (str, optional): Path where to save the file. If not provided but save_file is True, uses a temporary directory. Defaults to None.
Returns: dict[str, Any]: For text files: content as string. For images: base64-encoded string with metadata. For unsupported files: error message. If save_file is True, includes the path where the file was saved.
Inputs: file_id (required), save_file, save_path. Returns: object
box_file_info_toolC
Get information about a file in Box. Args: file_id (str): The ID of the file to get information about. return: dict[str, Any]: Information about the file.
Inputs: file_id (required). Returns: object
box_file_lock_toolB
Define a lock on a file to prevent it from being moved, renamed, or changed by anyone other than the lock creator. Args: file_id (str): The ID of the file to lock. lock_expires_at (str, optional): Optional expiration date/time for the lock in ISO 8601 format. is_download_prevented (bool, optional): Optional flag to prevent downloads while locked. Returns: dict[str, Any]: Dictionary containing the locked file information including lock details.
Inputs: file_id (required), lock_expires_at, is_download_prevented. Returns: object
box_file_move_toolC
Move a file to a specified destination folder in Box. Args: file_id (str): The ID of the file to move. destination_folder_id (str): The ID of the destination folder. Returns: dict[str, Any]: Dictionary containing the moved file information.
Inputs: file_id (required), destination_folder_id (required). Returns: object
box_file_rename_toolC
Rename a file in Box. Args: file_id (str): The ID of the file to rename. new_name (str): The new name for the file. Returns: dict[str, Any]: Dictionary containing the renamed file information.
Inputs: file_id (required), new_name (required). Returns: object
box_file_retention_date_clear_toolC
Clear/remove the retention date from a file in Box. Args: file_id (str): The ID of the file to update. Returns: dict[str, Any]: Dictionary containing the updated file information.
Inputs: file_id (required). Returns: object
box_file_retention_date_set_toolA
Set a retention date for a file in Box (cannot be shortened once set). Args: file_id (str): The ID of the file to update. retention_date (str): The retention date for the file in ISO 8601 format. Returns: dict[str, Any]: Dictionary containing the updated file information including retention date.
Inputs: file_id (required), retention_date (required). Returns: object
box_file_set_description_toolC
Set or update the description of a file in Box. Args: file_id (str): The ID of the file to update. description (str): The new description for the file. Returns: dict[str, Any]: Dictionary containing the updated file information.
Inputs: file_id (required), description (required). Returns: object
box_file_set_download_company_toolB
Set a file to be downloadable by company users (restricts external user downloads for viewer/editor roles). Args: file_id (str): The ID of the file to update. Returns: dict[str, Any]: Dictionary containing the updated file information.
Inputs: file_id (required). Returns: object
box_file_set_download_open_toolB
Allow anyone with access to the file to download it (overrides role-based download permissions). Args: file_id (str): The ID of the file to update. Returns: dict[str, Any]: Dictionary containing the updated file information.
Inputs: file_id (required). Returns: object
box_file_set_download_reset_toolC
Reset download permissions to default behavior based on collaboration roles. Args: file_id (str): The ID of the file to update. Returns: dict[str, Any]: Dictionary containing the updated file information.
Inputs: file_id (required). Returns: object
box_file_tag_add_toolA
Add a tag to a file in Box (prevents duplicates). Args: file_id (str): The ID of the file to add a tag to. tag (str): The tag to add. Returns: dict[str, Any]: Dictionary containing the updated file information including tags.
Inputs: file_id (required), tag (required). Returns: object
box_file_tag_list_toolB
List all tags associated with a file in Box. Args: file_id (str): The ID of the file to retrieve tags for. Returns: dict[str, Any]: Dictionary with list of tags or message if no tags found.
Inputs: file_id (required). Returns: object
box_file_tag_remove_toolC
Remove a tag from a file in Box. Args: file_id (str): The ID of the file to remove a tag from. tag (str): The tag to remove. Returns: dict[str, Any]: Dictionary containing the updated file information including tags.
Inputs: file_id (required), tag (required). Returns: object
box_file_text_extract_toolC
Extract text from a file in Box.
The result can be markdown or plain text. If a markdown representation is available, it will be preferred.
Args: file_id (str): The ID of the file to extract text from.
Returns: dict[str, Any]: The extracted text (markdown or plain text).
Inputs: file_id (required). Returns: object
box_file_thumbnail_download_toolB
Download the actual thumbnail image of a file. Args: file_id (str): The ID of the file. extension (str, optional): Image format ('png' or 'jpg', defaults to 'png'). min_height (int, optional): Minimum height in pixels (32-320). min_width (int, optional): Minimum width in pixels (32-320). max_height (int, optional): Maximum height in pixels (32-320). max_width (int, optional): Maximum width in pixels (32-320). Returns: dict[str, Any]: Dictionary with thumbnail image content in base64 or error message.
Inputs: file_id (required), extension, min_height, min_width, +2 more. Returns: object
box_file_thumbnail_url_toolA
Retrieve the URL for a thumbnail image of a file. Args: file_id (str): The ID of the file. extension (str, optional): Image format ('png' or 'jpg', defaults to 'png'). min_height (int, optional): Minimum height in pixels (32-320). min_width (int, optional): Minimum width in pixels (32-320). max_height (int, optional): Maximum height in pixels (32-320). max_width (int, optional): Maximum width in pixels (32-320). Returns: dict[str, Any]: Dictionary with thumbnail URL or message if not available.
Inputs: file_id (required), extension, min_height, min_width, +2 more. Returns: object
box_file_unlock_toolC
Remove a lock from a file in Box. Args: file_id (str): The ID of the file to unlock. Returns: dict[str, Any]: Dictionary containing the unlocked file information.
Inputs: file_id (required). Returns: object
box_file_upload_toolB
Upload content as a file to Box.
Args: content (str | bytes): The content to upload. Can be text or binary data. file_name (str): The name to give the file in Box. parent_folder_id (str): The ID of the destination folder. Defaults to root ("0").
Returns: dict[str, Any]: Information about the uploaded file including id and name.
Inputs: content (required), file_name (required), parent_folder_id (required). Returns: object
box_folder_copy_toolB
Copies a folder to a new location in Box.
Args: ctx: Context: The context containing Box client information folder_id (str): ID of the folder to copy. Can be string or int. destination_parent_folder_id (str): ID of the destination parent folder. Can be string or int. name (str, optional): New name for the copied folder. If not provided, original name is used. Returns: dict[str, Any]: Dictionary containing the copied folder object or error message
Inputs: folder_id (required), destination_parent_folder_id (required), name.
box_folder_create_toolB
Creates a new folder in Box. Args: ctx: Context: The context containing Box client information name (str): Name of the new folder parent_folder_id (str): ID of the parent folder where the new folder will be created, use "0" for root folder Returns: dict[str, Any]: Dictionary containing the created folder object or error message
Inputs: name (required), parent_folder_id.
box_folder_delete_toolB
Deletes a folder from Box.
Args: ctx: Context: The context containing Box client information folder_id (str): ID of the folder to delete. Can be string or int. recursive (bool, optional): Whether to delete recursively. Defaults to False. Returns: dict[str, Any]: Dictionary containing success message or error message
Inputs: folder_id (required), recursive.
box_folder_favorites_add_toolB
Adds a folder to the user's favorites in Box.
Args: ctx: Context: The context containing Box client information folder_id (str): ID of the folder to add to favorites.
Returns: dict[str, Any]: Dictionary containing the updated folder object or error message
Inputs: folder_id (required).
box_folder_favorites_remove_toolC
Removes a folder from the user's favorites in Box.
Args: ctx: Context: The context containing Box client information folder_id (str): ID of the folder to remove from favorites. Returns: dict[str, Any]: Dictionary containing the updated folder object or error message
Inputs: folder_id (required).
box_folder_info_toolC
Retrieve information about a specific folder in Box.
Args: ctx: Context: The context containing Box client information folder_id (str): ID of the folder to retrieve information for. Returns: dict[str, Any]: Dictionary containing folder information or error message.
Inputs: folder_id (required).
box_folder_items_list_toolC
List items in a Box folder with optional recursive traversal.
Args: ctx: Context: The context containing Box client information. folder_id (str): ID of the folder to list items from. is_recursive (bool, optional): Whether to recursively list subfolder contents. Defaults to False. limit (Optional[int], optional): Maximum items per API call. Defaults to 1000.
Returns: dict[str, Any]: Dictionary containing folder items list or error message.
Inputs: folder_id (required), is_recursive, limit.
box_folder_list_tags_toolC
Lists tags associated with a folder in Box.
Args: ctx: Context: The context containing Box client information. folder_id (str): ID of the folder to list tags for.
Returns: dict[str, Any]: Dictionary containing the list of tags or error message
Inputs: folder_id (required).
box_folder_move_toolC
Moves a folder to a new location in Box.
Args: ctx: Context: The context containing Box client information. folder_id (str): ID of the folder to move. destination_parent_folder_id (str): ID of the destination parent folder. Returns: dict[str, Any]: Dictionary containing the moved folder object or error message
Inputs: folder_id (required), destination_parent_folder_id (required).
box_folder_rename_toolC
Renames a folder in Box.
Args: ctx: Context: The context containing Box client information. folder_id (str): ID of the folder to rename. new_name (str): New name for the folder. Returns: dict[str, Any]: Dictionary containing the renamed folder object or error message
Inputs: folder_id (required), new_name (required).
box_folder_set_collaboration_toolB
Sets collaboration settings for a folder in Box. Args: ctx: Context: The context containing Box client information. folder_id (str): ID of the folder to set collaboration settings for. can_non_owners_invite (bool): Specifies if users who are not the owner of the folder can invite new collaborators to the folder. can_non_owners_view_collaborators (bool): Restricts collaborators who are not the owner of this folder from viewing other collaborations on this folder. is_collaboration_restricted_to_enterprise (bool): Specifies if new invites to this folder are restricted to users within the enterprise. This does not affect existing collaborations. Returns: dict[str, Any]: Dictionary containing the updated folder object or error message
Inputs: folder_id (required), can_non_owners_invite (required), can_non_owners_view_collaborators (required), is_collaboration_restricted_to_enterprise (required).
box_folder_set_description_toolC
Sets the description of a folder in Box.
Args: ctx: Context: The context containing Box client information. folder_id (str): ID of the folder to set description for. description (str): Description text to set for the folder. Returns: dict[str, Any]: Dictionary containing the updated folder object or error message
Inputs: folder_id (required), description (required).
box_folder_set_sync_toolB
Sets the sync state for a folder in Box.
Args: ctx: Context: The context containing Box client information. folder_id (str): ID of the folder to set sync state for. sync_state (str): Specifies whether a folder should be synced to a user's device or not. This is used by Box Sync (discontinued) and is not used by Box Drive. Value is one of synced,not_synced,partially_synced
Returns: dict[str, Any]: Dictionary containing the updated folder object or error message
Inputs: folder_id (required), sync_state (required).
box_folder_set_upload_email_toolA
Sets or removes the upload email address for a folder in Box.
Args: ctx: Context: The context containing Box client information. folder_id (str): ID of the folder to set the upload email for. folder_upload_email_access (Optional[str]): The upload email access level to set. If None, removes the upload email. When set to open it will accept emails from any email address. Value is one of open,collaborators
Returns: dict[str, Any]: Dictionary containing the updated folder object or error message
Inputs: folder_id (required), folder_upload_email_access.
box_folder_tag_add_toolC
Adds a tag to a folder in Box.
Args: ctx: Context: The context containing Box client information. folder_id (str): ID of the folder to add tag to. tag (str): Tag to add to the folder.
Returns: dict[str, Any]: Dictionary containing the updated folder object or error message
Inputs: folder_id (required), tag (required).
box_folder_tag_remove_toolC
Removes a tag from a folder in Box. Args: ctx: Context: The context containing Box client information. folder_id (str): ID of the folder to remove tag from. tag (str): Tag to remove from the folder. Returns: dict[str, Any]: Dictionary containing the updated folder object or error message
Inputs: folder_id (required), tag (required).
box_groups_list_by_user_toolC
List all groups that a specific user belongs to. Args: ctx (Context): The context object containing the request and lifespan context. user_id (str): The ID of the user whose groups are to be listed. Returns: dict: A dictionary containing the list of groups the user belongs to.
Inputs: user_id (required).
box_groups_list_members_toolC
List all members of a specific group. Args: ctx (Context): The context object containing the request and lifespan context. group_id (str): The ID of the group whose members are to be listed. Returns: dict: A dictionary containing the list of group members.
Inputs: group_id (required).
box_groups_search_toolC
Search for groups by name. This is a partial match search. Args: ctx (Context): The context object containing the request and lifespan context. query (str): The search query to match against group names. Returns: dict: A dictionary containing the list of matching groups.
Inputs: query (required).
box_metadata_delete_instance_on_file_toolC
Delete the metadata template instance associated with a specific file.
Args: ctx (Context): The context object containing the request and lifespan context. file_id (str): The ID of the file to delete the metadata from. template_key (str): The key of the metadata template.
Returns: dict: The response from the Box API after deleting the metadata.
Inputs: file_id (required), template_key (required).
box_metadata_get_instance_on_file_toolC
Get the metadata template instance associated with a specific file.
Args: ctx (Context): The context object containing the request and lifespan context. file_id (str): The ID of the file to get the metadata from. template_key (str): The key of the metadata template.
Returns: dict: The metadata instance associated with the file.
Inputs: file_id (required), template_key (required).
box_metadata_set_instance_on_file_toolB
Set a metadata template instance on a specific file.
Args: client (BoxClient): An authenticated Box client. template_key (str): The key of the metadata template to set. file_id (str): The ID of the file to set the metadata on. metadata (Dict[str, Any]): The metadata instance to set, as a dictionary. Metadata example: {'test_field': 'Test Value', 'date_field': '2023-10-01T00:00:00.000Z', 'float_field': 3.14, 'enum_field': 'option1', 'multiselect_field': ['option1', 'option2']}
Returns: dict: The response from the Box API after setting the metadata.
Inputs: template_key (required), file_id (required), metadata (required).
box_metadata_template_create_toolA
Create a new metadata template definition in Box. Args: ctx (Context): The context object containing the request and lifespan context. display_name (str): The display name of the metadata template. fields (List[Dict[str, Any]]): A list of fields to include in the template. Example:{"displayName": "Customer", "fields": [ { "type": "string", "key": "name", "displayName": "Name", "description": "The customer name", "hidden": false }, { "type": "date", "key": "last_contacted_at", "displayName": "Last Contacted At", "description": "When this customer was last contacted at", "hidden": false }, { "type": "enum", "key": "industry", "displayName": "Industry", "options": [ {"key": "Technology"}, {"key": "Healthcare"}, {"key": "Legal"} ] }, { "type": "multiSelect", "key": "role", "displayName": "Contact Role", "options": [ {"key": "Developer"}, {"key": "Business Owner"}, {"key": "Marketing"}, {"key": "Legal"}, {"key": "Sales"} ] } ] }
template_key (Optional[str]): An optional key for the metadata template. If not provided, a key will be generated.
Returns: dict: The created metadata template.
Inputs: display_name (required), fields (required), template_key.
box_metadata_template_get_by_key_toolC
Retrieve a metadata template by its key.
Args: ctx (Context): The context object containing the request and lifespan context. template_key (str): The key of the metadata template to retrieve.
Returns: dict: The metadata template associated with the provided key.
Inputs: template_key (required).
box_metadata_template_get_by_name_toolC
Retrieve a metadata template by its name.
Args: ctx (Context): The context object containing the request and lifespan context. template_name (str): The name of the metadata template to retrieve.
Returns: dict: The metadata template associated with the provided name.
Inputs: template_name (required).
box_metadata_template_list_toolC
List all metadata templates in Box.
Args: ctx (Context): The context object containing the request and lifespan context.
Returns: dict: A list of all metadata templates.
Inputs: no named parameters.
box_metadata_update_instance_on_file_toolC
Update the metadata template instance associated with a specific file.
Args: ctx (Context): The context object containing the request and lifespan context. file_id (str): The ID of the file to update the metadata on. template_key (str): The key of the metadata template. metadata (dict): The metadata to update. remove_non_included_data (bool): If True, remove data from fields not included in the metadata.
Returns: dict: The response from the Box API after updating the metadata.
Inputs: file_id (required), template_key (required), metadata (required), remove_non_included_data.
box_search_folder_by_name_toolC
Locate a folder in Box by its name.
Args: folder_name (str): The name of the folder to locate. return: List[dict]: The folder ID.
Inputs: folder_name (required). Returns: result
box_search_toolB
Search for files in Box with the given query.
Args: query (str): The query to search for. file_extensions (List[str]): The file extensions to search for, for example *.pdf content_types (List[SearchForContentContentTypes]): where to look for the information, possible values are: NAME DESCRIPTION, FILE_CONTENT, COMMENTS, TAG, ancestor_folder_ids (List[str]): The ancestor folder IDs to search in. return: List[dict]: The search results.
Inputs: query (required), file_extensions, where_to_look_for_query, ancestor_folder_ids. Returns: result
box_task_assign_by_email_toolC
Assign a Box task to a user via email. Args: ctx (Context): The context object containing the request and lifespan context. task_id (str): The ID of the task to assign. email (str): The email of the user to assign the task to. Returns: dict: The response from the Box API after assigning the task.
Inputs: task_id (required), email (required).
box_task_assign_by_user_id_toolC
Assign a Box task to a user via user ID. Args: ctx (Context): The context object containing the request and lifespan context. task_id (str): The ID of the task to assign. user_id (str): The ID of the user to assign the task to. Returns: dict: The response from the Box API after assigning the task.
Inputs: task_id (required), user_id (required).
box_task_assignment_details_toolC
Get details of a Box task assignment. Args: ctx (Context): The context object containing the request and lifespan context. assignment_id (str): The ID of the task assignment. Returns: dict: The response from the Box API with the task assignment details.
Inputs: assignment_id (required).
box_task_assignment_remove_toolC
Remove a Box task assignment. Args: ctx (Context): The context object containing the request and lifespan context. assignment_id (str): The ID of the task assignment to remove. Returns: dict: The response from the Box API after removing the task assignment.
Inputs: assignment_id (required).
box_task_assignments_list_toolC
List all assignments associated with a Box task. Args: ctx (Context): The context object containing the request and lifespan context. task_id (str): The ID of the task to list assignments for. Returns: dict: The response from the Box API with the list of task assignments.
Inputs: task_id (required).
box_task_assignment_update_toolB
Update a Box task assignment to mark it as complete or review outcome. Args: ctx (Context): The context object containing the request and lifespan context. assignment_id (str): The ID of the task assignment to update. is_positive_outcome (bool): For review tasks: True for approved, False for rejected. For complete tasks: True for completed, False for incomplete. message (str | None): Optional message or description for the task assignment update. Returns: dict: The response from the Box API after updating the task assignment.
Inputs: assignment_id (required), is_positive_outcome (required), message.
box_task_complete_create_toolC
Create a new completion task for a Box file. Args: ctx (Context): The context object containing the request and lifespan context. file_id (str): The ID of the file to create the task for. due_at (datetime | None): Optional due date for the task. message (str | None): Optional message or description for the task. requires_all_assignees_to_complete (bool): Whether all assignees must complete the task. Defaults to False. Returns: dict: The response from the Box API after creating the completion task.
Inputs: file_id (required), due_at, message, requires_all_assignees_to_complete.
box_task_details_toolC
Get details of a Box task. Args: ctx (Context): The context object containing the request and lifespan context. task_id (str): The ID of the task to retrieve details for. Returns: dict: The response from the Box API with the task details.
Inputs: task_id (required).
box_task_file_list_toolC
List all tasks associated with a Box file. Args: ctx (Context): The context object containing the request and lifespan context. file_id (str): The ID of the file to list tasks for. Returns: dict: The response from the Box API with the list of tasks.
Inputs: file_id (required).
box_task_remove_toolC
Remove a Box task. Args: ctx (Context): The context object containing the request and lifespan context. task_id (str): The ID of the task to remove. Returns: dict: The response from the Box API after removing the task.
Inputs: task_id (required).
box_task_review_create_toolC
Create a new review task for a Box file. Args: ctx (Context): The context object containing the request and lifespan context. file_id (str): The ID of the file to create the task for. due_at (datetime | None): Optional due date for the task. message (str | None): Optional message or description for the task. requires_all_assignees_to_complete (bool): Whether all assignees must complete the task. Defaults to False. Returns: dict: The response from the Box API after creating the review task.
Inputs: file_id (required), due_at, message, requires_all_assignees_to_complete.
box_task_update_toolC
Update a Box task. Args: ctx (Context): The context object containing the request and lifespan context. task_id (str): The ID of the task to update. due_at (datetime | None): Optional new due date for the task. message (str | None): Optional new message or description for the task. requires_all_assignees_to_complete (bool): Whether all assignees must complete the task. Defaults to False. Returns: dict: The response from the Box API after updating the task.
Inputs: task_id (required), due_at, message, requires_all_assignees_to_complete.
box_users_list_toolC
List all users in the Box account. Args: ctx (Context): The context object containing the request and lifespan context. Returns: dict: A dictionary containing the list of users.
Inputs: no named parameters.
box_users_locate_by_email_toolA
Locate a user by their email address. This is an exact match search. Args: ctx (Context): The context object containing the request and lifespan context. email (str): The email address of the user to locate. Returns: dict: A dictionary containing the user information if found, otherwise a message with no user found.
Inputs: email (required).
box_users_locate_by_name_toolB
Locate a user by their name. This is an exact match search. Args: ctx (Context): The context object containing the request and lifespan context. name (str): The name of the user to locate. Returns: dict: A dictionary containing the user information if found, otherwise a message with no user found.
Inputs: name (required).
box_users_search_by_name_or_email_toolC
Search for users by name or email. This is a partial match search. Args: ctx (Context): The context object containing the request and lifespan context. query (str): The search query to match against user names and email addresses. Returns: dict: A dictionary containing the list of matching users.
Inputs: query (required).
box_web_link_create_toolC
Create a Box web link.
Args: ctx (Context): The context object containing the request and lifespan context. url (str): The URL of the web link. parent_folder_id (str): The ID of the parent folder for the web link. name (str, optional): The name of the web link. Defaults to None. description (str, optional): The description of the web link. Defaults to None.
Returns: dict: The response from the Box API after creating the web link.
Inputs: url (required), parent_folder_id (required), name, description.
box_web_link_delete_by_id_toolB
Delete a Box web link by its ID.
Args: ctx (Context): The context object containing the request and lifespan context. web_link_id (str): The ID of the web link to delete.
Returns: dict: The response from the Box API after deleting the web link.
Inputs: web_link_id (required).
box_web_link_get_by_id_toolC
Get a Box web link by its ID.
Args: ctx (Context): The context object containing the request and lifespan context. web_link_id (str): The ID of the web link to retrieve.
Returns: dict: The response from the Box API containing the web link details.
Inputs: web_link_id (required).
box_web_link_update_by_id_toolC
Update a Box web link by its ID. Args: ctx (Context): The context object containing the request and lifespan context. web_link_id (str): The ID of the web link to update. url (str): The new URL of the web link. parent_folder_id (str): The ID of the parent folder for the web link. name (str, optional): The new name of the web link. Defaults to None. description (str, optional): The new description of the web link. Defaults to None.
Returns: dict: The response from the Box API after updating the web link.
Inputs: web_link_id (required), url (required), parent_folder_id (required), name, +1 more.
box_who_am_iB
Get the current user's information. This is also useful to check the connection status.
return: dict: The current user's information.
Inputs: no named parameters.
mcp_server_infoB
Returns information about the MCP server.
Inputs: no named parameters.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 117 tools
Most tools have distinct purposes within their categories, but there is significant overlap in the AI extraction tools (e.g., box_ai_extract_freeform_tool vs. box_ai_extract_structured_using_fields_tool) and collaboration tools (multiple variations for files/folders with users/groups). The descriptions help differentiate them, but the sheer number of similar tools could cause confusion for an agent trying to select the right one.
The naming follows a consistent snake_case pattern with a clear prefix (box_) and resource-action structure (e.g., box_file_download_tool, box_folder_create_tool). Minor deviations exist, such as box_who_am_i (no '_tool' suffix) and mcp_server_info (different prefix), but overall the convention is predictable and readable.
With 117 tools, the count is excessive for a single server, even for a comprehensive Box API integration. This many tools will overwhelm agents and make navigation difficult. The scope is broad, but the tool set feels bloated with many fine-grained variations (e.g., separate collaboration tools for files/folders by user ID, login, or group ID) that could be consolidated.
The tool set provides extensive coverage of the Box domain, including files, folders, collaborations, metadata, AI features, tasks, shared links, users, groups, and document generation. It supports full CRUD operations and lifecycle management across all major resources, with no apparent gaps that would hinder agent workflows.
Maintenance
Related MCP Connectors
The Box MCP server is a secure gateway that connects external AI agents to enterprise content stored in Box, enabling agent-based document access, advanced search, and multi-file analysis while preserving Box security policies. It provides capabilities including keyword search, Box AI-powered Q&A across files, metadata extraction, file management, and authentication, all validated against Box's granular permission controls. The server integrates with major AI platforms like Anthropic Claude, Microsoft Copilot Studio, and Mistral Le Chat, and is available both as a Box-hosted remote server and a self-hosted open-source Python project.
MCP server that lets AI assistants use all OneSchema features exposed via the public API.
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
Related MCP Servers
- AlicenseCqualityBmaintenancePython-based server that provides AI-native access to Alfresco content management operations through the Model Context Protocol, enabling search, document lifecycle management, version control, and other content operations.1524 PyPI15Apache 2.0
- AlicenseNot gradedqualityDmaintenanceA Python-based MCP server that enables document-based question answering by processing PDF, TXT, and Markdown files through OpenAI's API. It provides hallucination-free responses based strictly on document content using semantic search and includes a web interface for management.MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to manage Box files, folders, collaborations, and more via the Box API using tools for search, upload, and metadata operations.5 npmISC
- AlicenseBqualityDmaintenanceEnables Large Language Models to securely interact with Box cloud storage, including file upload, retrieval, search, and AI-powered analysis, without storing files locally.1058 npmBSD 3-Clause