Skip to main content
Glama
masx200
by masx200

WebDAV MCP Server

A Model Context Protocol (MCP) server that enables CRUD operations on a WebDAV endpoint with basic authentication. This server enables Claude Desktop and other MCP clients to interact with WebDAV file systems through natural language commands.

Features

  • Connect to any WebDAV server with optional authentication

  • Perform CRUD operations on files and directories

  • Expose file operations as MCP resources and tools

  • Run via stdio transport (for Claude Desktop integration) or HTTP/SSE transport

  • Secure access with optional basic authentication

  • Support for bcrypt-encrypted passwords for MCP server authentication (WebDAV passwords must be plain text due to protocol limitations)

  • Connection pooling for better performance with WebDAV servers

  • Configuration validation using Zod

  • Structured logging for better troubleshooting

Related MCP server: Nextcloud MCP Server

Prerequisites

  • Node.js 18 or later

  • npm or yarn

  • WebDAV server (for actual file operations)

Installation

Option 1: Install from npm package

# Global installation
npm install -g webdav-mcp-server

# Or with npx
npx -y @masx200/webdav-mcp-server

Option 2: Clone and build from source

# Clone repository
git clone https://github.com/masx200/webdav-mcp-server.git
cd webdav-mcp-server

# Install dependencies
npm install

# Build the application
npm run build

Option 3: Docker

# Build the Docker image
docker build -t webdav-mcp-server .

# Run the container without authentication
docker run -p 3000:3000 \
  -e WEBDAV_ROOT_URL=http://your-webdav-server \
  -e WEBDAV_ROOT_PATH=/webdav \
  webdav-mcp-server

# Run the container with authentication for both WebDAV and MCP server
docker run -p 3000:3000 \
  -e WEBDAV_ROOT_URL=http://your-webdav-server \
  -e WEBDAV_ROOT_PATH=/webdav \
  -e WEBDAV_AUTH_ENABLED=true \
  -e WEBDAV_USERNAME=admin \
  -e WEBDAV_PASSWORD=password \
  -e AUTH_ENABLED=true \
  -e AUTH_USERNAME=user \
  -e AUTH_PASSWORD=pass \
  webdav-mcp-server

Configuration

Create a .env file in the root directory with the following variables:

# WebDAV configuration
WEBDAV_ROOT_URL=http://localhost:4080
WEBDAV_ROOT_PATH=/webdav

# WebDAV authentication (optional)
WEBDAV_AUTH_ENABLED=true
WEBDAV_USERNAME=admin

# WebDAV password must be plain text (required when auth enabled)
# The WebDAV protocol requires sending the actual password to the server
WEBDAV_PASSWORD=password

# Server configuration (for HTTP mode)
SERVER_PORT=3000

# Authentication configuration for MCP server (optional)
AUTH_ENABLED=true
AUTH_USERNAME=user
AUTH_PASSWORD=pass
AUTH_REALM=MCP WebDAV Server

# Auth password for MCP server can be a bcrypt hash (unlike WebDAV passwords)
# AUTH_PASSWORD={bcrypt}$2y$10$CyLKnUwn9fqqKQFEbxpZFuE9mzWR/x8t6TE7.CgAN0oT8I/5jKJBy

Encrypted Passwords for MCP Server Authentication

For enhanced security of the MCP server (not WebDAV connections), you can use bcrypt-encrypted passwords instead of storing them in plain text:

  1. Generate a bcrypt hash:

    # Using the built-in utility
    npm run generate-hash -- yourpassword
    
    # Or with npx
    npx webdav-mcp-generate-hash yourpassword
  2. Add the hash to your .env file with the {bcrypt} prefix:

    AUTH_PASSWORD={bcrypt}$2y$10$CyLKnUwn9fqqKQFEbxpZFuE9mzWR/x8t6TE7.CgAN0oT8I/5jKJBy

This way, your MCP server password is stored securely. Note that WebDAV passwords must always be in plain text due to protocol requirements.

Usage

Running with stdio transport

This mode is ideal for direct integration with Claude Desktop.

# If installed globally
webdav-mcp-server

# If using npx
npx -y @masx200/webdav-mcp-server

# If built from source
node dist/index.js

Running with HTTP/SSE transport

This mode enables the server to be accessed over HTTP with Server-Sent Events for real-time communication.

# If installed globally
webdav-mcp-server --http

# If using npx
npx -y @masx200/webdav-mcp-server --http

# If built from source
node dist/index.js --http

Quick Start with Docker Compose

The easiest way to get started with both the WebDAV server and the MCP server is to use Docker Compose:

# Start both WebDAV and MCP servers
cd docker
docker-compose up -d

# This will start:
# - hacdias/webdav server on port 4080 (username: admin, password: admin)
# - MCP server on port 3000 (username: user, password: pass)

This setup uses hacdias/webdav, a simple and standalone WebDAV server written in Go. The configuration for the WebDAV server is stored in webdav_config.yml, which you can modify to adjust permissions, add users, or change other settings.

The WebDAV server stores all files in a Docker volume called webdav_data, which persists across container restarts.

WebDAV Server Configuration

The webdav_config.yml file configures the hacdias/webdav server used in the Docker Compose setup. Here's what you can customize:

# Server address and port
address: 0.0.0.0
port: 6060

# Root data directory
directory: /data

# Enable/disable CORS
cors:
  enabled: true
  # Additional CORS settings...

# Default permissions (C=Create, R=Read, U=Update, D=Delete)
permissions: CRUD

# User definitions
users:
  - username: admin
    password: admin # Plain text password
    permissions: CRUD # Full permissions

  - username: reader
    password: reader
    permissions: R # Read-only permissions

  # You can also use bcrypt-encrypted passwords
  - username: secure
    password: "{bcrypt}$2y$10$zEP6oofmXFeHaeMfBNLnP.DO8m.H.Mwhd24/TOX2MWLxAExXi4qgi"

For more advanced configuration options, refer to the hacdias/webdav documentation.

Testing

To run the tests:

npm test

Integrating with Claude Desktop

  1. Ensure the MCP feature is enabled in Claude Desktop

Available MCP Resources

  • webdav://{path}/list - List files in a directory

  • webdav://{path}/content - Get file content

  • webdav://{path}/info - Get file or directory information

Available MCP Tools

  • webdav_create_remote_file - Create a new file on a remote WebDAV server

  • webdav_get_remote_file - Retrieve content from a file stored on a remote WebDAV server

  • webdav_update_remote_file - Update an existing file on a remote WebDAV server

  • webdav_delete_remote_item - Delete a file or directory from a remote WebDAV server

  • webdav_create_remote_directory - Create a new directory on a remote WebDAV server

  • webdav_move_remote_item - Move or rename a file/directory on a remote WebDAV server

  • webdav_copy_remote_item - Copy a file/directory to a new location on a remote WebDAV server

  • webdav_list_remote_directory - List files and directories on a remote WebDAV server

Enhanced Features

  • webdav_read_remote_file - Enhanced file reading with head/tail options

  • webdav_edit_remote_file - Smart file editing with diff preview

  • webdav_list_directory_with_sizes - Enhanced directory listing with sizes and sorting

  • webdav_search_files - Search files using glob patterns with exclusion support

  • webdav_get_directory_tree - Get recursive directory tree as JSON

  • webdav_read_multiple_files - Read multiple files simultaneously

  • webdav_get_file_info - Get detailed file/directory metadata

  • webdav_range_request - Read specific byte range from a file (HTTP 206 Partial Content)

Available MCP Prompts

  • webdav_create_remote_file - Prompt to create a new file on a remote WebDAV server

  • webdav_get_remote_file - Prompt to retrieve content from a remote WebDAV file

  • webdav_update_remote_file - Prompt to update a file on a remote WebDAV server

  • webdav_delete_remote_item - Prompt to delete a file/directory from a remote WebDAV server

  • webdav_list_remote_directory - Prompt to list directory contents on a remote WebDAV server

  • webdav_create_remote_directory - Prompt to create a directory on a remote WebDAV server

  • webdav_move_remote_item - Prompt to move/rename a file/directory on a remote WebDAV server

  • webdav_copy_remote_item - Prompt to copy a file/directory on a remote WebDAV server

Example Queries in Claude

Here are some example queries you can use in Claude Desktop once the WebDAV MCP server is connected:

  • "List files on my remote WebDAV server"

  • "Create a new text file called notes.txt on my remote WebDAV server with the following content: Hello World"

  • "Get the content of document.txt from my remote WebDAV server"

  • "Update config.json on my remote WebDAV server with this new configuration"

  • "Create a directory called projects on my remote WebDAV server"

  • "Copy report.docx to a backup location on my remote WebDAV server"

  • "Move the file old_name.txt to new_name.txt on my remote WebDAV server"

  • "Delete temp.txt from my remote WebDAV server"

Enhanced Feature Operations

  • "Read the first 20 lines of a log file: /logs/app.log"

  • "Search for all JavaScript files: */.js, excluding node_modules directory"

  • "Get the tree structure of the project directory"

  • "List the contents of the uploads directory by file size"

  • "Read multiple configuration files simultaneously"

  • "Edit a configuration file with preview of changes"

  • "Get detailed metadata information for a file"

  • "Read the first 500 bytes of a file: bytes=0-499"

  • "Read the last 100 bytes of a file: bytes=400-"

Programmatic Usage

You can also use this package programmatically in your own projects:

import { startWebDAVServer } from "webdav-mcp-server";

// For stdio transport without authentication
await startWebDAVServer({
  webdavConfig: {
    rootUrl: "http://your-webdav-server",
    rootPath: "/webdav",
    authEnabled: false,
  },
  useHttp: false,
});

// For stdio transport with WebDAV authentication (password must be plain text)
await startWebDAVServer({
  webdavConfig: {
    rootUrl: "http://your-webdav-server",
    rootPath: "/webdav",
    authEnabled: true,
    username: "admin",
    password: "password",
  },
  useHttp: false,
});

// With bcrypt hash for MCP server password (HTTP auth only)
await startWebDAVServer({
  webdavConfig: {
    rootUrl: "http://your-webdav-server",
    rootPath: "/webdav",
    authEnabled: true,
    username: "admin",
    password: "password", // WebDAV password must be plain text
  },
  useHttp: true,
  httpConfig: {
    port: 3000,
    auth: {
      enabled: true,
      username: "user",
      password:
        "{bcrypt}$2y$10$CyLKnUwn9fqqKQFEbxpZFuE9mzWR/x8t6TE7.CgAN0oT8I/5jKJBy",
    },
  },
});

// For HTTP transport with MCP authentication
await startWebDAVServer({
  webdavConfig: {
    rootUrl: "http://your-webdav-server",
    rootPath: "/webdav",
    authEnabled: true,
    username: "admin",
    password: "password",
  },
  useHttp: true,
  httpConfig: {
    port: 3000,
    auth: {
      enabled: true,
      username: "user",
      password: "pass",
      realm: "MCP WebDAV Server",
    },
  },
});

// For HTTP transport without authentication
await startWebDAVServer({
  webdavConfig: {
    rootUrl: "http://your-webdav-server",
    rootPath: "/webdav",
    authEnabled: false,
  },
  useHttp: true,
  httpConfig: {
    port: 3000,
    auth: {
      enabled: false,
    },
  },
});

License

MIT

WebDAV MCP Server 增强功能文档

概述

本文档记录了对 WebDAV MCP Server 的全面增强功能,基于 filesystem MCP 服务器实现,大幅提升了文件操作能力和用户体验。

新增功能

1. 增强文件读取功能

webdav_read_remote_file

  • 功能: 读取文件内容,支持 head/tail 参数

  • 参数:

    • path (string): 文件路径

    • head (number, 可选): 返回文件的前 N 行

    • tail (number, 可选): 返回文件的后 N 行

  • 特性:

    • 内存高效:大文件读取时不加载全部内容

    • 参数验证:head 和 tail 不能同时使用

    • 灵活读取:支持读取文件开头或结尾部分

2. 智能文件编辑功能

webdav_edit_remote_file

  • 功能: 智能文件编辑,支持部分替换和 diff 预览

  • 参数:

    • path (string): 文件路径

    • edits (array): 编辑操作数组,包含 oldText 和 newText

    • dryRun (boolean, 可选): 预览模式,生成 diff 但不实际修改文件

  • 特性:

    • 精确匹配:查找并替换精确的文本序列

    • 多重编辑:支持单次操作中应用多个编辑

    • Diff 预览:生成 git 风格的差异预览

    • 安全模式:干运行模式确保编辑安全

3. 高级文件搜索功能

webdav_search_files

  • 功能: 使用 glob 模式递归搜索文件和目录

  • 参数:

    • path (string, 可选): 搜索起始目录,默认为根目录

    • pattern (string): Glob 模式匹配规则(如 *.txt, **/*.js, config.*

    • excludePatterns (array, 可选): 排除模式数组

  • 特性:

    • Glob 模式:支持标准的 glob 模式匹配

    • 排除模式:支持排除特定文件或目录

    • 递归搜索:深度搜索整个目录树

    • 路径验证:所有路径都经过安全验证

4. 目录树结构功能

webdav_get_directory_tree

  • 功能: 获取递归目录树结构的 JSON 表示

  • 参数:

    • path (string, 可选): 根目录路径,默认为根目录

    • excludePatterns (array, 可选): 排除模式数组

  • 特性:

    • JSON 结构:返回结构化的 JSON 树数据

    • 递归遍历:完整遍历目录层次结构

    • 模式排除:支持排除特定项目

    • 清晰格式:2 空格缩进的可读格式

5. 增强目录列表功能

webdav_list_directory_with_sizes

  • 功能: 增强目录列表,包含文件大小、排序和统计信息

  • 参数:

    • path (string, 可选): 目录路径,默认为根目录

    • sortBy (enum, 可选): 排序方式('name' 或 'size'),默认按名称排序

  • 特性:

    • 文件大小:显示每个文件的格式化大小

    • 排序选项:支持按名称或大小排序

    • 统计信息:显示文件总数、目录总数和总大小

    • 格式化输出:清晰的表格格式显示

6. 详细文件信息功能

webdav_get_file_info

  • 功能: 获取文件或目录的详细元数据

  • 参数:

    • path (string): 文件或目录路径

  • 特性:

    • 完整元数据:名称、路径、类型、大小、修改时间、MIME 类型

    • 格式化大小:人类可读的文件大小格式

    • 时间戳:详细的最后修改时间

    • 类型识别:区分文件和目录类型

7. 多文件同时读取功能

webdav_read_multiple_files

  • 功能: 同时读取多个文件内容

  • 参数:

    • paths (array): 文件路径数组

  • 特性:

    • 并行处理:并发读取多个文件提高效率

    • 错误隔离:单个文件读取失败不影响其他文件

    • 格式化输出:清晰的分隔显示多个文件内容

    • 错误报告:详细的错误信息显示

8. 范围请求功能

webdav_range_request

  • 功能: 按字节范围读取文件内容,支持 HTTP 206 Partial Content 响应

  • 参数:

    • path (string): 文件路径

    • range (string): 字节范围,格式如 bytes=0-499, bytes=400-, 0-499

  • 特性:

    • HTTP 标准兼容:完全兼容 HTTP 1.1 Range Requests 规范

    • 多种格式支持:支持 bytes=0-499, bytes=400-, 0-499 等格式

    • 大文件优化:适用于大文件的部分内容读取,减少网络传输

    • 元数据返回:返回 Content-Range, Content-Length, Total-Size 等信息

    • Unicode 支持:正确处理多字节字符的范围计算

技术实现

依赖项增强

  • minimatch: 用于 glob 模式匹配的强大库

  • TypeScript: 增强类型安全和代码质量

核心服务扩展

  • WebDAVService: 新增多个方法支持高级功能

  • 智能编辑: 内置 diff 生成和文本替换逻辑

  • 搜索算法: 高效的递归搜索和模式匹配

错误处理

  • 详细错误信息: 所有操作包含完整的错误描述

  • 安全验证: 路径验证防止未授权访问

  • 优雅降级: 部分失败不影响整体操作

使用示例

1. 读取文件前 10 行

const result = await toolHandler("webdav_read_remote_file", {
  path: "/logs/app.log",
  head: 10,
});

2. 智能编辑文件

const result = await toolHandler("webdav_edit_remote_file", {
  path: "/config/settings.json",
  edits: [
    {
      oldText: '"debug": false',
      newText: '"debug": true',
    },
  ],
  dryRun: true, // 预览模式
});

3. 搜索所有 JavaScript 文件

const result = await toolHandler("webdav_search_files", {
  path: "/src",
  pattern: "**/*.js",
  excludePatterns: ["node_modules/**", "dist/**"],
});

4. 获取目录树结构

const result = await toolHandler("webdav_get_directory_tree", {
  path: "/project",
  excludePatterns: [".git/**", "node_modules/**"],
});

5. 列出目录详情并按大小排序

const result = await toolHandler("webdav_list_directory_with_sizes", {
  path: "/uploads",
  sortBy: "size",
});

6. 范围请求示例

// 读取文件前 500 字节
const result = await toolHandler("webdav_range_request", {
  path: "/large-file.txt",
  range: "bytes=0-499",
});

// 读取文件最后 100 字节
const result = await toolHandler("webdav_range_request", {
  path: "/large-file.txt",
  range: "bytes=400-",
});

// 读取文件中间部分
const result = await toolHandler("webdav_range_request", {
  path: "/large-file.txt",
  range: "bytes=100-199",
});

性能优化

内存效率

  • 流式读取: 大文件使用内存高效的流式处理

  • 并发操作: 多文件操作使用并发处理

  • 延迟加载: 按需加载文件内容和元数据

网络优化

  • 连接池: 复用 WebDAV 连接减少开销

  • 批量操作: 减少网络请求次数

  • 错误重试: 自动处理临时网络问题

安全特性

路径验证

  • 根目录限制: 所有操作限制在允许的目录内

  • 符号链接处理: 安全处理符号链接防止路径遍历攻击

  • 路径规范化: 统一路径格式防止绕过

操作安全

  • 原子操作: 文件写入使用原子操作防止数据损坏

  • 预览模式: 编辑操作支持预览避免误操作

  • 详细日志: 所有操作记录详细日志

兼容性

向后兼容

  • 现有 API: 保持所有现有工具和 API 不变

  • 渐进增强: 新功能作为可选参数添加

  • 默认行为: 保持原有默认行为不变

WebDAV 标准

  • 协议兼容: 完全兼容 WebDAV 协议标准

  • 多平台支持: 支持各种 WebDAV 服务器实现

  • 认证支持: 保持现有认证机制

总结

这些增强功能大幅提升了 WebDAV MCP Server 的功能性和易用性,使其成为一个功能完整、性能优异、安全可靠的文件管理解决方案。新功能在保持向后兼容的同时,为用户提供了强大的文件操作能力,特别适合复杂的项目管理和开发工作流程。

🎯 范围请求功能

新增的范围请求功能是 WebDAV MCP Server 的一个重要里程碑,它提供了:

  • HTTP 标准兼容: 完全兼容 HTTP 1.1 Range Requests 规范

  • 性能优化: 大文件的部分内容读取,显著减少网络传输

  • 应用场景丰富: 日志分析、音视频元数据提取、大文件预览等

  • 技术先进: 精确的字节范围计算和 Unicode 字符支持

这一功能的加入,使 WebDAV MCP Server 在文件处理能力上达到了新的高度,为用户提供了更强大和灵活的文件操作体验。

Available Tools

16 tools
webdav_copy_remote_itemC

Copy a file or directory to a new location on a remote WebDAV server

ParametersJSON Schema
NameRequiredDescriptionDefault
fromPathYes
overwriteNo
toPathYes

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but offers minimal behavioral insight. It mentions copying to a 'new location' but doesn't disclose critical behaviors like whether it preserves metadata, handles recursive directory copying, requires specific permissions, has size limitations, or what happens on failure. The 'overwrite' parameter hints at conflict behavior, but this isn't explained in the description.

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

Conciseness5/5

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

The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It's appropriately sized for a basic operation and front-loads the core action ('Copy a file or directory').

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

Completeness2/5

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

For a file operation tool with 3 parameters, 0% schema coverage, no annotations, and no output schema, the description is insufficient. It doesn't explain the operation's scope (single files only? recursive directories?), error conditions, authentication requirements, or return values. The context signals indicate significant gaps that the description doesn't address.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate but adds no parameter information. It doesn't explain what 'fromPath' and 'toPath' represent (relative/absolute paths, URL formats), what 'overwrite' does exactly, or any path validation rules. The three parameters remain semantically undocumented beyond their names.

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

Purpose4/5

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

The description clearly states the action ('Copy') and resource ('a file or directory') with the destination context ('to a new location on a remote WebDAV server'). It distinguishes from siblings like 'move' by specifying 'copy', but doesn't explicitly differentiate from other file operations beyond the verb choice.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. It doesn't mention when to choose copy over move (webdav_move_remote_item), or how it relates to creation tools (webdav_create_remote_file/directory). The description only states what it does, not when it's appropriate.

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

webdav_create_remote_directoryC

Create a new directory on a remote WebDAV server

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations, the description carries the full burden but only states the basic action. It doesn't disclose behavioral traits such as required permissions (e.g., write access), whether it overwrites existing directories, error handling (e.g., if path already exists), or side effects. This is inadequate for a mutation tool with zero annotation coverage.

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

Conciseness5/5

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

The description is a single, clear sentence with no wasted words. It's front-loaded with the core action and resource, making it easy to scan and understand quickly. Every word earns its place by conveying essential information.

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

Completeness2/5

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

Given the complexity of a mutation tool with no annotations, no output schema, and low parameter coverage, the description is incomplete. It lacks details on behavior, parameters, and expected outcomes, leaving significant gaps for an AI agent to infer correctly. More context is needed for safe and effective use.

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

Parameters2/5

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

The input schema has 1 parameter with 0% description coverage, and the tool description adds no information about the 'path' parameter. It doesn't explain what the path represents (e.g., absolute or relative), format expectations, or constraints beyond the schema's minLength. This fails to compensate for the low schema coverage.

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

Purpose4/5

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

The description clearly states the action ('create') and resource ('new directory on a remote WebDAV server'), distinguishing it from siblings like 'webdav_create_remote_file' (creates files) and 'webdav_get_directory_tree' (reads directories). However, it doesn't specify if it's a single directory or can create nested paths, which would make it fully specific.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. For example, it doesn't mention if it should be used for initial setup versus adding subdirectories, or how it differs from 'webdav_move_remote_item' for reorganizing directories. The description only states what it does, not when to apply it.

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

webdav_create_remote_fileC

Create a new file on a remote WebDAV server at the specified path

ParametersJSON Schema
NameRequiredDescriptionDefault
contentYes
overwriteNo
pathYes

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions creating a file but lacks critical details: it doesn't specify whether this requires authentication, what happens if the path doesn't exist (e.g., parent directories), error handling for conflicts, or the response format. The 'overwrite' parameter hints at some behavior but isn't explained in the description.

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

Conciseness5/5

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

The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It's appropriately sized for a basic operation, though more detail would be needed for completeness.

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

Completeness2/5

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

Given the complexity of a file creation operation with no annotations, no output schema, and 0% schema description coverage, the description is inadequate. It doesn't cover authentication needs, error scenarios, response details, or parameter usage, making it insufficient for safe and effective tool invocation.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate for undocumented parameters. It mentions 'path' but doesn't explain its format or requirements. It omits 'content' entirely and provides no context for 'overwrite' (e.g., default behavior or implications). This leaves key parameters semantically unclear beyond the schema.

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

Purpose4/5

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

The description clearly states the verb 'create' and the resource 'new file on a remote WebDAV server at the specified path', which distinguishes it from siblings like webdav_create_remote_directory (creates directories) and webdav_update_remote_file (updates existing files). However, it doesn't explicitly mention the 'content' parameter, which is a key aspect of file creation.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. For example, it doesn't mention when to choose this over webdav_update_remote_file (for updating existing files) or webdav_edit_remote_file (for modifying files), nor does it specify prerequisites like server connectivity or authentication needs.

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

webdav_delete_remote_itemC

Delete a file or directory from a remote WebDAV server

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the action is deletion, implying a destructive operation, but doesn't elaborate on critical aspects like permissions required, whether deletion is recursive for directories, error handling, or confirmation prompts. This leaves significant gaps for a mutation tool.

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

Conciseness5/5

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

The description is a single, direct sentence that efficiently conveys the core action without unnecessary words. It's front-loaded with the key verb and resource, making it easy to parse quickly.

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

Completeness2/5

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

Given the complexity of a destructive operation with no annotations and no output schema, the description is incomplete. It lacks details on behavior (e.g., recursion, safety checks), error conditions, or what happens upon success. For a tool that permanently removes data, this is inadequate.

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?

The description adds no parameter semantics beyond what the schema implies (a 'path' parameter). With 0% schema description coverage and only one parameter, the baseline is 4, but since the description doesn't explain what the path represents (e.g., absolute path, relative to root) or provide examples, it doesn't fully compensate, resulting in a minimal viable score.

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

Purpose4/5

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

The description clearly states the action ('Delete') and resource ('a file or directory from a remote WebDAV server'), making the purpose immediately understandable. It distinguishes from siblings like 'webdav_move_remote_item' or 'webdav_update_remote_file' by specifying deletion, but doesn't explicitly contrast with them in the text.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. For example, it doesn't mention if deletion is permanent or reversible, or if there are prerequisites like checking existence first with 'webdav_get_file_info'. The description only states what it does, not when to apply it.

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

webdav_edit_remote_fileB

Apply intelligent edits to a file on a remote WebDAV server with git-style diff preview

ParametersJSON Schema
NameRequiredDescriptionDefault
dryRunNoPreview changes using git-style diff format without applying them
editsYes
pathYes

TDQS

B3.4/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It mentions 'git-style diff preview' and 'intelligent edits,' but fails to clarify what 'intelligent' means, whether edits are atomic or batched, authentication requirements, error handling, or what happens during concurrent access. For a mutation tool with zero annotation coverage, this leaves significant behavioral gaps.

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

Conciseness5/5

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

The description is a single, well-structured sentence that efficiently communicates core functionality without redundancy. Every word earns its place by specifying the action, target, and key feature, making it front-loaded and appropriately sized for the tool's complexity.

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

Completeness2/5

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

For a mutation tool with 3 parameters, low schema coverage (33%), no annotations, and no output schema, the description is incomplete. It lacks details on parameter usage, behavioral traits like error handling or atomicity, and expected outcomes. The mention of 'git-style diff preview' hints at output but doesn't clarify format or scope, leaving critical gaps for agent invocation.

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

Parameters3/5

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

Schema description coverage is low at 33%, with only the 'dryRun' parameter documented in the schema. The description adds no explicit parameter information beyond implying edits involve text replacement. It doesn't explain 'path' format, 'edits' array structure, or 'oldText'/'newText' semantics, failing to compensate for the schema coverage gap.

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?

The description clearly states the specific action ('Apply intelligent edits'), target resource ('a file on a remote WebDAV server'), and unique capability ('with git-style diff preview'). It distinguishes itself from siblings like webdav_update_remote_file by emphasizing intelligent editing with preview functionality, not just basic updates.

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

Usage Guidelines3/5

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

The description implies usage for editing remote files with preview capability, but provides no explicit guidance on when to choose this tool versus alternatives like webdav_update_remote_file or webdav_read_remote_file. There are no exclusions, prerequisites, or comparative context mentioned.

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

webdav_get_directory_treeB

Get a recursive tree view of files and directories as a JSON structure

ParametersJSON Schema
NameRequiredDescriptionDefault
excludePatternsNoArray of glob patterns to exclude from the tree
pathNoRoot directory for the tree/

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It mentions the output format (JSON structure) but lacks details on permissions, rate limits, recursion depth, error handling, or performance implications. For a tool with no annotation coverage, this is a significant gap.

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

Conciseness5/5

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

The description is a single, efficient sentence that front-loads the core purpose. Every word earns its place, with no redundancy or unnecessary details, making it highly concise and well-structured.

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

Completeness3/5

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

Given no annotations, no output schema, and 2 parameters with full schema coverage, the description is minimally adequate. It covers the basic purpose and output format but lacks behavioral context and usage guidelines, leaving gaps for a tool that interacts with a filesystem.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema fully documents both parameters. The description adds no additional meaning beyond what the schema provides, such as examples or constraints on path or excludePatterns. Baseline 3 is appropriate when schema does the heavy lifting.

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

Purpose4/5

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

The description clearly states the verb ('Get') and resource ('recursive tree view of files and directories'), specifying it returns a JSON structure. It distinguishes from siblings like webdav_list_remote_directory by emphasizing recursion and tree structure, though it doesn't explicitly name alternatives.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives is provided. It doesn't mention when to prefer this over webdav_list_remote_directory or webdav_list_directory_with_sizes, nor does it specify prerequisites or exclusions, leaving usage context implied.

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

webdav_get_file_infoC

Get detailed metadata about a file or directory

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool retrieves metadata, implying a read-only operation, but doesn't specify what 'detailed metadata' includes (e.g., size, timestamps, permissions), whether it handles errors for non-existent paths, or if there are rate limits. This leaves significant gaps in understanding how the tool behaves in practice.

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

Conciseness5/5

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

The description is a single, efficient sentence that directly states the tool's function without unnecessary words. It's front-loaded with the core action and resource, making it easy to parse. Every part of the sentence contributes essential information, earning its place.

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

Completeness2/5

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

Given the complexity of a WebDAV metadata tool with no annotations, no output schema, and low schema coverage, the description is insufficient. It doesn't explain what metadata is returned, error conditions, or how it integrates with sibling tools. For a tool that could involve file system interactions, more context on behavior and output is needed for effective use.

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

Parameters3/5

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

The input schema has 1 parameter with 0% description coverage, so the description must compensate. It mentions 'path' implicitly but doesn't explain what the path represents (e.g., absolute vs. relative, format requirements) or provide examples. Since there's only one parameter, the baseline is 4, but the lack of any parameter details in the description reduces this to 3, as it adds minimal value beyond the schema.

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

Purpose4/5

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

The description clearly states the action ('Get detailed metadata') and resource ('about a file or directory'), making the purpose immediately understandable. It distinguishes itself from siblings like webdav_get_remote_file (which retrieves file content) and webdav_list_remote_directory (which lists directory contents). However, it doesn't explicitly contrast with webdav_get_directory_tree, which might also provide metadata in a tree structure.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. For example, it doesn't clarify if this should be used instead of webdav_list_directory_with_sizes for individual items or how it differs from webdav_get_directory_tree. There's no mention of prerequisites, such as needing read permissions, or typical use cases like checking file properties before operations.

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

webdav_get_remote_fileC

Retrieve content from a file stored on a remote WebDAV server

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It states the action ('Retrieve content') but doesn't mention authentication requirements, rate limits, error conditions, or what 'retrieve' entails (e.g., full file download, streaming). This leaves significant gaps for a tool interacting with remote servers.

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

Conciseness5/5

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

The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It's appropriately sized and front-loaded, making it easy to parse quickly.

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

Completeness2/5

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

Given the complexity of remote file operations, no annotations, no output schema, and 0% schema coverage, the description is incomplete. It doesn't address authentication, error handling, return format, or differentiation from sibling tools, leaving the agent with insufficient context for reliable use.

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

Parameters3/5

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

The schema has 0% description coverage for the single parameter 'path', and the tool description doesn't mention parameters at all. Since there's only one parameter, the baseline is 4, but the description fails to add any semantic context about what 'path' represents (e.g., absolute path, URL format, encoding requirements), so it's scored lower at 3.

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

Purpose4/5

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

The description clearly states the action ('Retrieve content') and resource ('from a file stored on a remote WebDAV server'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'webdav_read_remote_file' or 'webdav_range_request', which likely have overlapping functionality.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. With multiple sibling tools for reading files (e.g., 'webdav_read_remote_file', 'webdav_range_request', 'webdav_read_multiple_files'), there's no indication of when this specific retrieval method is preferred or what distinguishes it.

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

webdav_list_directory_with_sizesC

List files and directories with sizes, sorting options, and statistics

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNo/
sortByNoSort entries by name or sizename

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions 'sorting options and statistics', which adds some context beyond basic listing, but it fails to describe critical behaviors such as pagination, error handling, authentication needs, rate limits, or what 'statistics' entails. For a read operation with no annotation coverage, this leaves significant gaps in understanding how the tool behaves.

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

Conciseness5/5

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

The description is a single, efficient sentence that front-loads the core functionality ('List files and directories with sizes') and adds key features ('sorting options, and statistics') without redundancy. Every word earns its place, making it easy to scan and understand quickly, which is ideal for conciseness.

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

Completeness2/5

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

Given the complexity of a listing tool with sorting and statistics, no annotations, no output schema, and incomplete parameter documentation, the description is inadequate. It doesn't explain what 'statistics' includes, how results are formatted, or any behavioral nuances, leaving the agent with insufficient information to use the tool effectively in context.

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

Parameters3/5

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

Schema description coverage is 50% (only 'sortBy' has a description), and the description adds value by implying that 'path' is for listing and 'sortBy' relates to 'sorting options'. However, it doesn't fully compensate for the undocumented 'path' parameter or provide additional semantics like path format constraints or default behaviors. With moderate schema coverage, the description offers some but incomplete parameter context.

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

Purpose4/5

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

The description clearly states the verb 'List' and the resources 'files and directories with sizes', which is specific and actionable. It distinguishes from the sibling 'webdav_list_remote_directory' by emphasizing 'with sizes, sorting options, and statistics', though it could be more explicit about the differentiation. However, it doesn't fully distinguish from 'webdav_get_directory_tree' or 'webdav_search_files', which limits it to a 4 rather than a 5.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like 'webdav_list_remote_directory' (which might list without sizes) or 'webdav_get_directory_tree' (which might provide a tree structure). There's no mention of prerequisites, context, or exclusions, leaving the agent to infer usage based on tool names alone, which is insufficient for effective selection.

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

webdav_list_remote_directoryB

List files and directories at the specified path on a remote WebDAV server

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNo/

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It states the action but doesn't disclose behavioral traits such as whether it's read-only (implied by 'List'), potential authentication needs, rate limits, error handling, or output format. For a tool with no annotations, this leaves significant gaps in understanding its behavior.

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

Conciseness5/5

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

The description is a single, efficient sentence that front-loads the core action ('List files and directories') and includes essential context ('at the specified path on a remote WebDAV server'). There is no wasted text, making it appropriately sized and well-structured.

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

Completeness3/5

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

Given 1 parameter with no output schema and no annotations, the description is minimally complete for a simple listing tool. It covers the basic purpose but lacks details on usage context, behavioral aspects, and output, which are needed for full understanding. It's adequate but with clear gaps in guidance and transparency.

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?

The input schema has 1 parameter with 0% description coverage. The description adds meaning by specifying that the parameter is a 'path' on the remote server, which clarifies beyond the schema's type and default. However, it doesn't provide details like path format constraints or examples, so it partially compensates for the low schema coverage.

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

Purpose4/5

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

The description clearly states the verb ('List') and resource ('files and directories') with the scope ('at the specified path on a remote WebDAV server'). It distinguishes from some siblings like 'webdav_get_directory_tree' by focusing on a single path, but doesn't explicitly differentiate from 'webdav_list_directory_with_sizes' which suggests a similar function with additional details.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like 'webdav_get_directory_tree' (which might list recursively) or 'webdav_list_directory_with_sizes' (which includes size information). The description implies usage for listing contents at a path but lacks explicit comparisons or exclusions.

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

webdav_move_remote_itemC

Move or rename a file or directory on a remote WebDAV server

ParametersJSON Schema
NameRequiredDescriptionDefault
fromPathYes
overwriteNo
toPathYes

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. While it implies a mutation operation ('Move or rename'), it doesn't address critical aspects like whether it requires specific permissions, what happens on failure (e.g., if paths don't exist), or if it's idempotent. For a tool that modifies remote data, this leaves the agent with insufficient operational context.

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

Conciseness5/5

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

The description is a single, efficient sentence that front-loads the core action and resource. Every word contributes directly to understanding the tool's purpose without redundancy or unnecessary detail, making it highly concise and well-structured.

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

Completeness2/5

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

Given the complexity of a mutation tool with no annotations, 0% schema description coverage, and no output schema, the description is incomplete. It lacks details on behavior, error handling, permissions, and how it differs from siblings, leaving the agent with inadequate information to use the tool safely and effectively in context.

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?

The description mentions 'file or directory' and implies paths are involved, but doesn't explain the parameters beyond what's inferable. With 0% schema description coverage and 3 parameters (fromPath, toPath, overwrite), it adds minimal value over the schema. The baseline is 3 since the schema defines the parameters, but the description doesn't compensate for the lack of schema descriptions.

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

Purpose4/5

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

The description clearly states the action ('Move or rename') and resource ('a file or directory on a remote WebDAV server'), making the purpose immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'webdav_copy_remote_item' or 'webdav_update_remote_file' beyond the inherent meaning of 'move/rename' versus 'copy' or 'update'.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, such as needing the source and destination paths to exist, or clarify when to choose 'move' over 'copy' (e.g., for relocating versus duplicating files). With multiple sibling tools for file operations, this lack of context is a significant gap.

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

webdav_range_requestA

Read a specific byte range from a file on a remote WebDAV server (similar to HTTP 206 Partial Content)

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
rangeYesByte range in format "bytes=0-499" (first 500 bytes), "bytes=500-" (from byte 500 to end), or "0-499" (range from start to end)

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden. It discloses the read-only nature ('Read') and the partial content behavior, but lacks details on authentication needs, rate limits, error handling, or what happens with invalid ranges. It adds some context beyond the schema but is incomplete for a tool interacting with remote servers.

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

Conciseness5/5

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

The description is a single, efficient sentence that front-loads the core action and context. Every word earns its place, with no redundancy or fluff, making it easy for an agent to parse quickly.

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

Completeness3/5

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

Given no annotations, no output schema, and low schema coverage, the description is moderately complete. It covers the basic purpose and behavior but lacks details on authentication, errors, or return values. For a tool with remote operations and two parameters, more context would be helpful for safe and effective use.

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

Parameters4/5

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

Schema description coverage is 50% (only 'range' has a description). The description adds no explicit parameter semantics, but the tool's purpose inherently clarifies that 'path' is the file location and 'range' specifies bytes. This compensates partially for the low schema coverage, though format examples are only in the schema.

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?

The description clearly states the verb ('Read'), resource ('a specific byte range from a file'), and context ('on a remote WebDAV server'), with the analogy to HTTP 206 Partial Content adding technical specificity. It distinguishes this tool from siblings like webdav_get_remote_file or webdav_read_remote_file by emphasizing partial content retrieval.

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

Usage Guidelines3/5

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

The description implies usage for partial file reading, but does not explicitly state when to use this tool versus alternatives like webdav_get_remote_file (full file) or webdav_read_remote_file (full read). No exclusions or prerequisites are mentioned, leaving the agent to infer context from the 'byte range' focus.

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

webdav_read_multiple_filesC

Read the contents of multiple files simultaneously

ParametersJSON Schema
NameRequiredDescriptionDefault
pathsYesArray of file paths to read

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. While 'Read' implies a read-only operation, it doesn't specify authentication requirements, rate limits, error handling, or what happens when some files are inaccessible. For a batch operation on a remote file system, this leaves significant behavioral questions unanswered about partial successes, ordering guarantees, or performance implications.

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

Conciseness5/5

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

The description is a single, efficient sentence that communicates the core functionality without unnecessary words. It's front-loaded with the essential action and scope, making it immediately understandable. Every word earns its place in conveying the batch reading capability.

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

Completeness2/5

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

For a batch file reading operation with no annotations and no output schema, the description is insufficient. It doesn't explain return format (array of contents? success/failure status per file?), error handling for partial failures, or performance considerations for simultaneous reading. Given the complexity of batch operations and lack of structured metadata, more contextual information would be valuable.

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?

The description mentions 'multiple files' which aligns with the 'paths' parameter being an array, but adds no semantic detail beyond what the schema already provides. With 100% schema description coverage (the 'paths' parameter is well-described), the description doesn't enhance understanding of path formats, relative vs absolute paths, or file system constraints. Baseline 3 is appropriate when schema documentation is complete.

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

Purpose4/5

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

The description clearly states the verb ('Read') and resource ('contents of multiple files'), making the purpose immediately understandable. It distinguishes from single-file read operations by specifying 'multiple files simultaneously', though it doesn't explicitly differentiate from all sibling tools like 'webdav_get_remote_file' or 'webdav_read_remote_file' which appear to be single-file variants.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. With sibling tools like 'webdav_get_remote_file' and 'webdav_read_remote_file' that appear to handle single files, there's no indication whether this tool is preferred for batch operations or has different performance characteristics. No prerequisites, limitations, or comparison context is provided.

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

webdav_read_remote_fileC

Read content from a file on a remote WebDAV server with enhanced options (head/tail)

ParametersJSON Schema
NameRequiredDescriptionDefault
headNoIf provided, returns only the first N lines of the file
pathYes
tailNoIf provided, returns only the last N lines of the file

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions 'enhanced options' but does not explain what 'read content' entails (e.g., text/binary handling, encoding, error behavior, or authentication requirements). This leaves critical behavioral traits unspecified for a file-reading operation.

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

Conciseness5/5

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

The description is a single, efficient sentence that front-loads the core purpose and includes key details. Every word earns its place, with no redundancy or unnecessary elaboration, making it highly concise and well-structured.

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

Completeness2/5

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

Given the complexity of file reading with options, no annotations, no output schema, and partial parameter coverage, the description is insufficient. It lacks details on return values, error handling, authentication, and how the tool differs from siblings, making it incomplete for effective agent use.

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

Parameters3/5

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

The schema description coverage is 67% (2 out of 3 parameters have descriptions), and the description adds minimal value by referencing 'head/tail' without explaining their interaction or default behaviors. It does not clarify if 'head' and 'tail' are mutually exclusive or how they work with the 'path' parameter, so it meets the baseline but does not compensate for the partial schema coverage.

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

Purpose4/5

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

The description clearly states the action ('Read content from a file') and resource ('on a remote WebDAV server'), with the enhanced options ('head/tail') providing additional specificity. It distinguishes itself from the sibling 'webdav_get_remote_file' by emphasizing the head/tail functionality, though the distinction could be more explicit.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like 'webdav_get_remote_file' or 'webdav_range_request'. It mentions enhanced options but does not specify scenarios where head/tail are preferred over other reading methods, leaving usage context unclear.

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

webdav_search_filesC

Search for files and directories using glob patterns with exclusion support

ParametersJSON Schema
NameRequiredDescriptionDefault
excludePatternsNoArray of glob patterns to exclude from search results
pathNoStarting directory for the search/
patternYesGlob pattern to match files (e.g., "*.txt", "**/*.js", "config.*")

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions 'search' and 'exclusion support', but fails to detail critical aspects like whether this is a read-only operation, potential performance impacts for large directories, error handling, or output format. For a tool with no annotation coverage, this is a significant gap in transparency.

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

Conciseness5/5

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

The description is a single, efficient sentence that front-loads the core functionality ('Search for files and directories') and includes key features ('using glob patterns with exclusion support'). There is no wasted text, making it highly concise and well-structured for quick understanding.

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

Completeness2/5

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

Given the complexity of a search tool with no annotations and no output schema, the description is incomplete. It doesn't explain the return values (e.g., list of files, error responses), behavioral traits like read-only nature or performance considerations, or how it differs from sibling tools. For a 3-parameter tool with no structured support, more context is needed.

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?

The input schema has 100% description coverage, clearly documenting all three parameters (pattern, path, excludePatterns) with examples for 'pattern'. The description adds value by summarizing the tool's use of 'glob patterns with exclusion support', which aligns with the schema but doesn't provide additional semantic details beyond what's already covered. Baseline score of 3 is appropriate as the schema does the heavy lifting.

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

Purpose4/5

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

The description clearly states the action ('Search for files and directories') and the method ('using glob patterns with exclusion support'), which is specific and informative. However, it doesn't explicitly distinguish this tool from sibling tools like 'webdav_list_directory_with_sizes' or 'webdav_get_directory_tree', which might also involve listing or retrieving file information, though the focus on search with patterns is implied.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives, such as 'webdav_list_remote_directory' for simple listing or 'webdav_get_directory_tree' for hierarchical views. It mentions the search capability but lacks explicit context or exclusions, leaving usage decisions ambiguous.

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

webdav_update_remote_fileC

Update an existing file on a remote WebDAV server with new content

ParametersJSON Schema
NameRequiredDescriptionDefault
contentYes
pathYes

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool updates a file with new content, implying a write/mutation operation, but lacks critical details: whether it overwrites or appends, authentication requirements, error handling (e.g., if file doesn't exist), or rate limits. For a mutation tool with zero annotation coverage, this is a significant gap in transparency.

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

Conciseness5/5

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

The description is a single, efficient sentence that front-loads the core action ('Update an existing file') and includes essential details ('on a remote WebDAV server with new content'). There is no wasted verbiage or redundancy, making it highly concise and well-structured for quick comprehension.

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

Completeness2/5

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

Given the tool's complexity (a mutation operation with 2 parameters), lack of annotations, and no output schema, the description is incomplete. It doesn't cover behavioral aspects like side effects, error conditions, or return values, nor does it fully explain parameters. For a WebDAV file update tool, more context is needed to ensure safe and correct usage.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate for undocumented parameters. It mentions 'new content' and 'path' implicitly, but adds minimal meaning beyond the schema's property names. It doesn't explain parameter formats (e.g., path syntax, content encoding), constraints, or examples. With 2 parameters and no schema descriptions, this is inadequate.

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

Purpose4/5

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

The description clearly states the action ('Update'), resource ('an existing file on a remote WebDAV server'), and what is being updated ('with new content'). It distinguishes from siblings like 'webdav_create_remote_file' by specifying 'existing file' and from 'webdav_edit_remote_file' by focusing on content replacement rather than editing. However, it doesn't explicitly differentiate from all siblings (e.g., 'webdav_move_remote_item' or 'webdav_delete_remote_item'), keeping it at 4 instead of 5.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., file must exist), exclusions (e.g., not for directories), or compare to siblings like 'webdav_edit_remote_file' or 'webdav_create_remote_file'. Without any usage context, the agent must infer from tool names alone, which is insufficient.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 16 tool updatesv1.0.0
    • First observedwebdav_copy_remote_item
    • First observedwebdav_create_remote_directory
    • First observedwebdav_create_remote_file
    • First observedwebdav_delete_remote_item
    • First observedwebdav_edit_remote_file
    • First observedwebdav_get_directory_tree
    • First observedwebdav_get_file_info
    • First observedwebdav_get_remote_file
    • First observedwebdav_list_directory_with_sizes
    • First observedwebdav_list_remote_directory
    • First observedwebdav_move_remote_item
    • First observedwebdav_range_request
    • First observedwebdav_read_multiple_files
    • First observedwebdav_read_remote_file
    • First observedwebdav_search_files
    • First observedwebdav_update_remote_file

TDQS

A3.5/5.0
Disambiguation5/5

Every tool has a clearly distinct purpose with no ambiguity. Each tool name precisely indicates its specific action (copy, create, delete, edit, get, list, move, range_request, read_multiple, read, search, update) and target (file, directory, item), making misselection unlikely. The descriptions further clarify unique functionalities like git-style diff preview or byte range requests.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern with the prefix 'webdav_' and snake_case throughout. The structure is predictable: webdav_<action>_<target>_<optional_modifier>, such as webdav_copy_remote_item or webdav_list_directory_with_sizes. There are no deviations in naming conventions across the set.

Tool Count4/5

With 16 tools, the count is slightly high but reasonable for a WebDAV server covering file operations. It includes core CRUD actions, listing, searching, and specialized functions like range requests and multiple file reads. While comprehensive, it might feel heavy compared to simpler servers, but each tool appears justified for the domain.

Completeness5/5

The tool set provides complete CRUD and lifecycle coverage for WebDAV file management. It includes creation, retrieval (with various methods like get, read, range_request), updating (edit and update), deletion, copying, moving, listing, searching, and directory operations. There are no obvious gaps; agents can perform all essential file operations without dead ends.

Maintenance

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    A Model Context Protocol server that enables Claude Desktop and other MCP clients to interact with WebDAV file systems through natural language commands for CRUD operations.
    8
    83
    18
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables LLMs to interact with Nextcloud instances through 30 tools across Notes, Calendar, Contacts, Tables, and WebDAV file operations, featuring a powerful unified search system for finding files without exact paths.
    26
    37
    AGPL 3.0
  • F
    license
    Not graded
    quality
    Not graded
    maintenance
    Enables comprehensive filesystem operations including reading/writing files, directory management, file searching, editing with diff preview, compression, hashing, and merging with dynamic directory access control.
    668,809
    -

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/masx200/mcp-webdav-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server