
List a Dropbox folder's contents, with recursive listing and cursor pagination. Takes a folder path ('' for the account root), or a folder share link ('https://www.dropbox.com/scl/fo/...') in path or sharedlink to browse a folder this account does not hold. With a share link, path is relative to the linked folder and recursive is unsupported. Page with listfoldercontinue while hasmore.
Continue paginating through folder contents using cursor from previous list_folder response
Get metadata for a file or folder: size, timestamps, rev, content hash. Takes a path starting with '/', an id:/rev:/ns: identifier, or a share link (https://www.dropbox.com/scl/fi/...), resolved for you; pass sharedlinkpassword for a protected link. A link this account does not own returns link metadata only, without contenthash or pathdisplay. The root is not valid; use list_folder.
Create a new folder at the specified path in Dropbox with auto-rename support. Path must start with '/'. Use list_folder to browse existing folders first.
Delete a file or folder from Dropbox, moving it to trash for recovery. Path must start with '/', or be an id:/rev:/ns: identifier. Use listfolder or searchfiles to get an exact path.
Copy a file or folder to a new location within Dropbox, preserving metadata. Path must start with '/', or be an id:/rev:/ns: identifier. Use listfolder or searchfiles to get an exact path.
Move or rename a file or folder to a new path within Dropbox. Path must start with '/', or be an id:/rev:/ns: identifier. Use listfolder or searchfiles to get an exact path.
Search for files and folders in Dropbox by filename or content with advanced filtering. query is required and must be non-empty; to browse a folder without a search term use listfolder instead. Narrow results server-side with path, filestatus, filenameonly, fileextensions and filecategories; sort with orderby; paginate with search_continue using the returned cursor.
Continue paginating through search results using cursor from previous search
Generate a temporary download link for a file that expires after 4 hours. Takes a file path starting with '/', an id:/rev:/ns: identifier, or a Dropbox share link to a file this account owns, resolved for you; pass sharedlinkpassword for a protected link. Takes a file, not a folder, and not the account root. Use listfolder or searchfiles to get a path.
List all saved revisions of a file for version history and recovery. Takes a file path, not a folder. Path must start with '/', or be an id:/rev:/ns: identifier. Use listfolder or searchfiles to get an exact path.
Restore a file to a specific previous revision from version history. Use listfilerevisions to get a valid rev for the file. Path must start with '/', or be an id:/rev:/ns: identifier. Use listfolder or searchfiles to get an exact path.
Upload a file to Dropbox. Provide content as the file's bytes encoded as a base64 string, not a URL and not plain text, OR a filereference from the file upload API (POST /api/v1/files/) for large files, which streams into Dropbox without entering the model's context. Dropbox cannot fetch a remote URL. mode='update' with updaterev from getfilemetadata overwrites only if unchanged.
Read a Dropbox file's text (up to 25 MB): PDF, Word, Excel, PowerPoint, Paper, txt, markdown, csv, json. Takes a path, an id:/rev: identifier, or a share link; pass sharedlinkpassword for a protected link, which cannot be combined with returndownloadurl. Text is capped at maxchars (default 200000), with truncated=true when cut. Set returndownload_url=true for binary or larger files.
Create a shareable link for a file or folder with customizable access settings and expiration
List all shared links created by the user with optional path filtering and pagination
Get metadata for a Dropbox share link URL: the linked item's name, size, and pathlower when it lives in this account. Use it to turn a link into a path for the tools that need one, such as listfolder or movefileorfolder. getfilemetadata, gettemporarylink and getfile_content already take a share link directly, so call those instead of chaining through this.
Revoke an existing shared link to immediately disable access via that URL
Share a folder with team members or anyone, enabling collaboration with access control
Stop sharing a folder and optionally leave existing members a copy. Use listsharedfolders to find a sharedfolderid. Large folders unshare asynchronously and return an asyncjobid, so the change can land a few seconds after this returns.
Add members to a shared folder with the given access level and an optional message. Use listsharedfolders to find a sharedfolderid.
Remove a member's access to a shared folder, optionally leaving them a copy. Use listsharedfolders to find a sharedfolderid and listfoldermembers to find the member.
List the folders shared with or by this account, with the sharedfolderid each one needs. Call this first to get a sharedfolderid for listfoldermembers, addfoldermember, removefoldermember, mountsharedfolder, unmountsharedfolder or unshare_folder. Paginate with the returned cursor.
Get details for one shared folder by its sharedfolderid, including name, path and this account's access level. Use listsharedfolders to find a sharedfolderid.
Change an existing member's access level on a shared folder (owner, editor, viewer, viewernocomment or traverse). Use listsharedfolders to find a sharedfolderid and listfoldermembers to find the member. To grant access to someone new use addfoldermember instead.
List the members, groups and pending invitations of a shared folder. Use listsharedfolders to find a sharedfolderid. Paginate with the returned cursor.
Mount a shared folder so it appears in this account's Dropbox file system. Use listsharedfolders to find a sharedfolderid.
Unmount a shared folder, removing it from this account's file system without losing access. Use listsharedfolders to find a sharedfolderid.
Get detailed information about the currently authenticated Dropbox user account
Get detailed account information for a specific Dropbox user by account ID
Get account information for multiple Dropbox users in a single batch request
Get current storage space usage and allocation for the authenticated user account
Validate Dropbox credentials. Verifies credentials during setup.

In an mcp.json file, add the configuration below, and restart Cursor.
Learn more in the official documentation ↗
1{
2 "mcpServers": {
3 "agent-handler": {
4 "url": "https://ah-api-develop.merge.dev/api/v1/tool-packs/{TOOL_PACK_ID}/registered-users/{REGISTERED_USER_ID}/mcp",
5 "headers": {
6 "Authorization": "Bearer yMt*****"
7 }
8 }
9 }
10}
11Open your Claude Desktop configuration file and add the server configuration below. You'll also need to restart the application for the changes to take effect.
Make sure Claude is using the Node v20+.
Learn more in the official documentation ↗
1{
2 "mcpServers": {
3 "agent-handler": {
4 "command": "npx",
5 "args": [
6 "-y",
7 "mcp-remote@latest",
8 "https://ah-api-develop.merge.dev/api/v1/tool-packs/{TOOL_PACK_ID}/registered-users/{REGISTERED_USER_ID}/mcp",
9 "--header",
10 "Authorization: Bearer ${AUTH_TOKEN}"
11 ],
12 "env": {
13 "AUTH_TOKEN": "yMt*****"
14 }
15 }
16 }
17}Open your Windsurf MCP configuration file and add the server configuration below.
Click on the refresh button in the top right of the Manage MCP server page or in the top right of the chat box in the box icon.
Learn more in the official documentation ↗
1{
2 "mcpServers": {
3 "agent-handler": {
4 "command": "npx",
5 "args": [
6 "-y",
7 "mcp-remote@latest",
8 "https://ah-api.merge.dev/api/v1/tool-packs/<tool-pack-id>/registered-users/<registered-user-id>/mcp",
9 "--header",
10 "Authorization: Bearer ${AUTH_TOKEN}"
11 ],
12 "env": {
13 "AUTH_TOKEN": "<ah-production-access-key>"
14 }
15 }
16 }
17 }In Command Palette (Cmd+Shift+P on macOS, Ctrl+Shift+P on Windows), run "MCP: Open User Configuration".
You can then add the configuration below and press "start" right under servers. Enter the auth token when prompted.
Learn more in the official documentation ↗
1{
2 "inputs": [
3 {
4 "type": "promptString",
5 "id": "agent-handler-auth",
6 "description": "Agent Handler AUTH_TOKEN", // "yMt*****" when prompt
7 "password": true
8 }
9 ],
10 "servers": {
11 "agent-handler": {
12 "type": "stdio",
13 "command": "npx",
14 "args": [
15 "-y",
16 "mcp-remote@latest",
17 "https://ah-api-develop.merge.dev/api/v1/tool-packs/{TOOL_PACK_ID}/registered-users/{REGISTERED_USER_ID}/mcp",
18 "--header",
19 "Authorization: Bearer ${input:agent-handler-auth}"
20 ]
21 }
22 }
23}Whether you're an engineer experimenting with agents or a product manager looking to add tools, you can get started for free now