worksmobile-mcp
worksmobile-mcp
Неофициальный CLI + MCP-сервер для администрирования Drive в NAVER WORKS (LINE WORKS), построенный на делегировании сервисного аккаунта Developer API (JWT delegated_user).
Существующие MCP-серверы WORKS сосредоточены на плоскости конечного пользователя (ваша собственная почта/календарь/файлы через User OAuth). Этот проект покрывает административную плоскость, которую они не покрывают:
действовать как любой участник вашего тенанта через делегирование (как делегирование на уровне домена Google)
управление общими дисками: список дисков, просмотр
accessibleRange/permissionType, выдача/отзыв разрешений на уровне диска и папки, переключение наследования папок (enable/disable)share-create (ярлыки «Доступно мне»), создание структуры My Drive, загрузка/скачивание, поиск
аудит каталога: правила гигиены учётных записей и сверка с внешним списком — поиск бывших сотрудников, у которых всё ещё есть действующий доступ к почте/диску
Не аффилировано с NAVER / WORKS MOBILE Corp. «NAVER WORKS», «LINE WORKS» и worksmobile.com являются их товарными знаками/собственностью. Официальная документация API: https://developers.worksmobile.com/
🙋 Просто хотите использовать WORKS для себя? Это не тот инструмент.
Если вы хотите, чтобы ИИ-агент читал вашу собственную почту, календарь, диск или задачи, остановитесь — см. docs/END_USER_SETUP.md. Этот путь занимает минуты, не требует прав администратора и касается только вашего собственного аккаунта.
Этот проект предназначен для администраторов тенанта. Он аутентифицируется с помощью делегированного сервисного аккаунта, который может действовать как любой участник организации, поэтому ему нужны учётные данные, которые обычный участник получить не может. Если ваша Developer Console говорит «у вас нет доступа», это не проблема настройки, которую нужно решать, — это граница работает как задумано.
Безопасность
🔑 Прочтите это, прежде чем запускать где-либо, кроме своей машины
Это не интеграция для отдельного пользователя. Используемые учётные данные — это делегированный сервисный аккаунт, который может действовать как любой участник вашего тенанта — читать чей угодно диск, менять чьи угодно настройки доступа. Относитесь к приватному ключу как к ключу доменного администратора, потому что это именно он.
Не вставляйте эти учётные данные в сторонний MCP-хостинг, кнопку «установить/развернуть этот сервер» или размещённый инспектор, каким бы удобным это ни казалось. Там сервер запускается на чужой машине, и передача этого ключа означает передачу всего тенанта. Списки в каталогах и маркетплейсах для этого репозитория — это автоматические обходы, а не одобрение какой-либо модели развёртывания — единственная конфигурация, которую поддерживает этот проект, — это локальный stdio на собственной машине администратора.
Если вам действительно нужен HTTP-транспорт, привяжите его к localhost и поставьте перед ним настоящую аутентификацию. Компрометация ключа здесь не устраняется сменой пароля: пока ключ не отозван в Developer Console, его держатель — это каждый сотрудник.
API разрешений WORKS Drive имеют острые углы. Этот инструмент учитывает их:
Каждая изменяющая операция требует явного подтверждения — CLI:
--yes(неинтерактивные запуски отказываются без него); MCP: параметрconfirm=true. Ожидается, что агенты спросят человека, прежде чем устанавливать его.Массовое удаление разрешений («all-delete») вообще не предоставляется — его семантика менялась между версиями WORKS (только для мастеров против открыто для всех).
Деструктивная семантика описана в документации инструментов: PATCH-переходы
accessibleRangeдиска стирают выданные разрешения;enableпапки разрывает наследование;disableудаляет разрешения папки.
Related MCP server: synology-office-mcp
Настройка
В Developer Console создайте приложение с делегированием сервисного аккаунта, запишите Client ID/Secret, создайте сервисный аккаунт и скачайте приватный ключ. Предоставьте OAuth-скоупы (
file,user.read).Настройте учётные данные:
pip install worksmobile-mcp # or: uv tool install worksmobile-mcp
mkdir -p ~/.config/worksmobile
cp .env.example ~/.config/worksmobile/.env # then fill in valuesПорядок определения конфигурации: переменные окружения процесса (WORKS_*) > $WORKS_ENV_FILE > ./.env >
~/.config/worksmobile/.env.
CLI
worksmobile doctor # what credentials/scopes actually work
worksmobile users --dept 연구 # members (joint appointments preserved)
worksmobile find 홍길동 # search by any substring
worksmobile audit --ignore shared-accounts.txt # account-hygiene findings
worksmobile drift roster.tsv --name-col name # reconcile against an external roster
worksmobile drives # list shared drives
worksmobile drive @2001000000xxxxxx # accessibleRange / permissionType
worksmobile ls --sd @2001000000xxxxxx # list files
worksmobile perms @2001000000xxxxxx --folder FID
worksmobile grant @2001000000xxxxxx --target pm@corp.com --type WRITE --folder FID --yes
worksmobile share FID --owner host@corp.com --to pm@corp.com --type WRITE --yes
worksmobile download FID --sd @2001000000xxxxxx -o report.hwp
worksmobile call GET /users/me/drive/files # raw API escape hatchВсе команды чтения принимают --user someone@corp.com, чтобы действовать от имени этого участника.
MCP-сервер
stdio (локальные агенты — Claude Code, Codex, Cursor, Gemini CLI):
claude mcp add worksmobile -- worksmobile-mcp{ "mcpServers": { "worksmobile": { "command": "worksmobile-mcp" } } }Streamable HTTP — для локально привязанной конечной точки, которую вы закрываете собственной аутентификацией, а не для передачи хостинг-провайдеру (см. врезку вверху):
worksmobile-mcp --transport streamable-http --host 127.0.0.1 --port 8123⚠️ Какой бы транспорт вы ни выбрали, процесс содержит учётные данные администратора всего тенанта — запускайте его там, где вы запускали бы оболочку доменного администратора, и нигде больше.
Инструменты
Инструмент | Изменяет | Описание |
| общие диски и настройки | |
| файлы общего диска или My Drive участника | |
| разрешения диска/папки | |
| ⚠ | выдать / удалить одно разрешение |
| ⚠ | переключатель наследования папки |
| скачивание через редирект / двухэтапная загрузка | |
| папка My Drive | |
| ⚠ | ярлыки «Доступно мне» (только My Drive) |
| полученные участником общие ресурсы | |
| поиск по диску | |
| участники тенанта (требуется | |
| результаты гигиены аккаунтов + отчёт о неактивных проверках | |
| сверка аккаунтов с внешним списком | |
| полный охват одного участника — запрос для офбординга | |
| ⚠ | запасной выход к сырому API |
⚠ = требует confirm=true.
Аудит каталога: неактивные проверки
works_directory_audit возвращает dormant_rules вместе с findings. Правило считается неактивным, когда
поле, которое оно читает, пусто во всём тенанте — например, если ни у кого leaveOfAbsence никогда
не установлен, проверка «в отпуске, но не приостановлен» не может сработать. Пустой список findings — это не
чистая справка о здоровье, поэтому инструмент сообщает, какие проверки были бессильны, вместо того чтобы намекать,
что всё прошло. coverage показывает степень заполненности по каждому полю.
Это важно на практике: в тенанте, на котором это создавалось, employeeNumber был 0/136,
а hiredDate — 1/136 — поля HR просто не были заполнены, и это именно то,
о чём инструмент аудита должен сообщить, а не замолчать.
Сверка: отсутствие в одном списке — не доказательство
works_directory_drift возвращает only_works — учётные записи, отсутствующие в переданном вами
списке. Это сигнал, а не доказательство увольнения. Любой список кого-то опускает:
в кадровом реестре может вообще не быть приглашённых исследователей; в чат-каталоге не могут быть
люди, которым никогда не выдавали корпоративную почту. Читать «нет в этом списке» как «уволился» — это
способ потерять аккаунт действующего сотрудника — именно так однажды и произошло, и поэтому
инструмент теперь работает именно так.
Передавайте corroborating_rosters ({label: path}) вместе со всеми остальными списками, которые у вас есть. Строки, найденные
в других местах, возвращаются с заполненным seen_in, и их следует исключить из подозрений. Каждый
список индексируется по электронной почте, телефону и имени, потому что ни одного ключа недостаточно — в
реальном случае, который привёл к этому, у участника не было телефона в аккаунте и корпоративной
почты, поэтому совпало только имя.
Одна ловушка, о которой стоит знать: нормализация корейских мобильных номеров путём удаления 82 — ошибка.
Во многих записях есть код страны и ноль после него (+82 010-…), поэтому одно лишь удаление
даёт 00… и не совпадает ни с чем — 40% номеров одного тенанта. Используйте directory.norm_phone.
blind_spots покрывает более сложный случай: вопросы, на которые API вообще не может ответить. Самый
болезненный — делегированные администраторы — isAdministrator равен true только для SUPER-администраторов, поэтому
аккаунт, который является субадминистратором в консоли, всё равно сообщает false. Перечисление «у кого есть права
администратора» только через этот API молча их пропустит; делайте это в консоли администратора.
Офбординг: соберите охват до того, как приостановите
works_member_footprint отвечает на вопрос «что может достать этот человек» одним вызовом. Две вещи, которые он
учитывает и которые легко перепутать:
Порядок. Сначала приостановить аккаунт — интуитивное действие, но оно уничтожает вашу возможность расследования: делегирование приостановленному аккаунту не работает, поэтому содержимое его My Drive и полученные папки становятся недоступными. Сначала собирайте, потом приостанавливайте.
Мастера диска невидимы в
/permissions. Они находятся вmasters[]объекта общего диска. Мастер может выдавать разрешения и менять настройки диска, поэтому если упустить их при передаче, диск фактически останется без владельца — инструмент сообщает о них отдельно.
Заметки об API (выстраданные)
accessibleRangeимеет 3 значения:TENANT/DOMAIN/MEMBER. Новые диски по умолчанию имеют DOMAIN+WRITE. PATCH-переходы деструктивны (MEMBER→DOMAIN удаляет все выданные разрешения; →MEMBER не работает, пока существуют разрешения на уровне папок).Разрешения на уровне папок принимают только отдельных пользователей (не организационные подразделения); цель уже должна быть участником диска (не документировано, наблюдается на практике).
enableпапки = только для мастеров, пока вы не выдадите разрешения;disable= выданные разрешения удаляются, наследование возвращается.share-create работает только с папками My Drive — папки командных дисков не могут создавать ярлыки «Доступно мне».
Чистый токен сервисного аккаунта не имеет My Drive (403); для размещения требуется делегирование реальному аккаунту.
Загрузка состоит из 2 шагов (POST метаданных → PUT на
uploadUrl); скачивание — это 302, чьё место хранения также требует Bearer-токен.GET /sharedrivesвозвращает{"sharedrives": [...]}(в документации подразумевается простой массив).
Лицензия
MIT
Available Tools
16 toolsworks_api_callB
Raw WORKS API escape hatch (path under https://www.worksapis.com/v1.0). Non-GET requires confirm=true.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| user | No | ||
| method | Yes | ||
| confirm | No | ||
| body_json | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It mentions the base URL and the confirm flag for non-GET, but fails to describe side effects, authentication, error behavior, rate limits, or response format. For a tool that can perform arbitrary mutations, this is a significant omission, leaving the agent under-informed about the tool's full behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences and front-loads the core purpose. It is concise and every sentence adds value. However, it is perhaps too terse, lacking details that could be added without undermining conciseness. Still, structure is clean and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is a generic raw API caller with 5 parameters, no annotations, and no output schema. The description only provides a base path and a confirm requirement. It omits crucial operational details like how to construct endpoints, expected response format, error handling, and when to use this tool versus the many sibling tools. This is inadequate for safe and correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must clarify parameters. It provides limited context for 'path' (relative to the base URL) and 'confirm' (needed for non-GET), but does not explain 'method', 'body_json', or 'user'. This is insufficient for a 5-parameter tool where the schema itself has no descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as a raw API escape hatch for the WORKS API, with a specific base URL. This distinguishes it from the sibling tools, which are purpose-built for specific operations (e.g., works_drive_get, works_files_list) and makes the tool's role obvious.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'escape hatch' wording implies the tool is a fallback for when specific siblings don't cover an operation, but it does not explicitly state when to use this vs. alternatives. The confirm=true requirement for non-GET requests provides some usage guidance, but no exclusions or alternative references are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
works_drive_getB
Get one shared drive's settings (accessibleRange TENANT/DOMAIN/MEMBER, permissionType).
| Name | Required | Description | Default |
|---|---|---|---|
| user | No | ||
| sharedrive_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. The verb 'Get' implies a read operation, but it does not explicitly state safety, permissions, side effects, or return format. It adds context about the settings fields but fails to disclose important behavior for a tool with no annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence, front-loaded with the verb and resource, containing no filler or redundant information. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple, but with no output schema and no annotations, the description should explain return values and parameter effects. It lists the settings fields but does not state that the response is a settings object or how `user` influences the request, leaving gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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. It does not explain the `user` parameter or the format of `sharedrive_id`, only vaguely implying an identifier via 'one shared drive'. This is insufficient given the lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Get' and names the resource 'one shared drive's settings', clearly distinguishing it from sibling tools like works_drives_list (which lists drives). It also enumerates the settings (accessibleRange, permissionType), making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving settings of a single shared drive, and the word 'one' contrasts with list tools. However, it does not explicitly state when to prefer this over alternatives or provide any exclusions, relying only on implication.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
works_drives_listB
List shared drives (id, name, accessibleRange, permissionType, masters).
| Name | Required | Description | Default |
|---|---|---|---|
| user | No |
TDQS
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 lists the output fields but does not explicitly state that the operation is read-only, mention permission requirements, or explain how the optional 'user' parameter affects results. It also lacks details on response shape, pagination, or error behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, front-loaded with the verb and object, and uses a parenthetical to enumerate fields. There is no filler or redundancy, making it appropriately concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has a minimal schema, no annotations, and no output schema, placing a high burden on the description. It covers the output fields but omits the meaning of the 'user' parameter, any filtering behavior, and contextual details that would help the agent invoke the tool correctly. This is incomplete for even a simple list tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter, 'user', is not mentioned anywhere in the description. With 0% schema description coverage, the description must compensate and explain this parameter, but it completely omits it. The parenthetical list refers to output fields, not input parameters, so no semantic value is added.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'List' paired with a clear resource 'shared drives', and enumerates the returned fields (id, name, accessibleRange, permissionType, masters). This clearly distinguishes it from siblings like works_drive_get (singular get) and works_files_list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage as the tool for listing shared drives, but it provides no explicit guidance on when to use it over alternatives, nor any exclusions. The name and verb alone make the intended use reasonably clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
works_file_downloadA
Download a file to a local path (follows the storage redirect with auth).
| Name | Required | Description | Default |
|---|---|---|---|
| user | No | ||
| file_id | Yes | ||
| out_path | Yes | ||
| sharedrive_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It does disclose that the tool 'follows the storage redirect with auth,' which is useful. However, it omits other important behaviors such as whether existing files are overwritten, required permissions, or the return format on success/error.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence: 'Download a file to a local path' followed by a useful parenthetical about auth redirect. Every word earns its place, with no fluff or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 4 parameters, no output schema, and performs a side effect (writing to a local path), the description is under-specified. It does not mention what the tool returns, whether it overwrites files, how optional parameters (user, sharedrive_id) affect the operation, or any error conditions. The note about auth redirect is the only extra context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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. It does not explain any of the four parameters (file_id, out_path, user, sharedrive_id) or their roles in the download. The parameter names are somewhat self-explanatory, but the description adds no explicit meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Download a file to a local path' with a specific verb and resource. It distinguishes from sibling tools like works_file_upload and works_files_list by focusing on the download operation, which no other sibling provides.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for when to use the tool (when a file needs to be downloaded to a local path) and mentions the auth redirect behavior, which is a relevant usage consideration. It does not explicitly mention alternatives or exclusions, but since there is no alternative download tool among the siblings, the context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
works_files_listB
List files/folders. With sharedrive_id: that shared drive; else the delegated user's My Drive.
| Name | Required | Description | Default |
|---|---|---|---|
| user | No | ||
| folder_id | No | ||
| sharedrive_id | No |
TDQS
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 only states the action and scope condition, but omits any details about permissions, side effects, response format, pagination, or error handling. It doesn't even explicitly state that the operation is read-only, leaving the agent to infer it from 'List'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, using two short sentences to convey the action and the key conditional. There is no redundant phrasing or unnecessary detail. Every word contributes to the core meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 3 optional parameters, no output schema, and no annotations, the description is quite sparse. It explains only the sharedrive_id behavior and leaves the user and folder_id semantics unclear. The description also fails to mention what data is returned (metadata, contents, recursive listing) or any constraints, making it insufficient for an agent to confidently invoke the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, and the description only explains sharedrive_id ('that shared drive' vs 'My Drive'). It does not clarify the meaning or usage of user or folder_id, which remain ambiguous despite having titles. Since the schema provides no descriptions, the description should compensate but only partially does.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'List files/folders', providing a clear verb and resource. It also distinguishes between shared drives and My Drive based on the sharedrive_id parameter, which gives specific scope. However, it does not explicitly reference sibling tools like works_drives_list or works_sharedfolders_list, so differentiation is implicit rather than explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers a conditional usage rule for sharedrive_id ('With sharedrive_id: that shared drive; else the delegated user's My Drive'), which clarifies when to use that parameter. But it provides no guidance on when to choose this tool over alternatives like works_search or works_drives_list, and it does not explain the role of user or folder_id parameters.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
works_file_uploadB
Upload a local file into a My Drive folder (2-step metadata+PUT flow).
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| user | No | ||
| file_path | Yes | ||
| parent_folder_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the burden of behavioral disclosure, but it only reveals a 2-step metadata+PUT flow. It does not mention needed permissions, overwrite behavior, partial-failure handling, or the response format.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no redundancy. The parenthetical '2-step metadata+PUT flow' efficiently adds useful behavioral context without wasting words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an upload tool with no annotations, no output schema, and 0% schema description coverage, one sentence is insufficient. Missing are prerequisites, error conditions, permission requirements, and any information about return values or success/failure indicators.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description partially maps 'local file' to file_path and 'My Drive folder' to parent_folder_id. However, the name and user parameters are left undocumented, and the description does not fully compensate for the low schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Upload' with a clear resource 'a local file into a My Drive folder', distinguishing it from siblings like works_file_download. The phrase '2-step metadata+PUT flow' adds technical specificity without ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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, nor on prerequisites such as target folder existence or file accessibility. The only context is the action itself; there are no exclusions or alternative recommendations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
works_folder_createA
Create a folder in the delegated user's My Drive (root if no parent).
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| user | No | ||
| parent_folder_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden. It adds context about the delegated user's My Drive and the root-if-no-parent behavior, which is useful. However, it does not disclose potential side effects, permissions, or what happens when the user parameter is null, leaving 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is front-loaded with the action and resource, then adds the key scoping detail. Every word earns its place; it is appropriately concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple create tool with no annotations and no output schema, the description provides the core purpose and a key location behavior. However, it omits return value information, prerequisites, and edge-case behavior, making it less complete for an agent that must invoke it correctly without additional context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description must compensate. It clarifies parent_folder_id via 'root if no parent' and references the user parameter via 'delegated user's My Drive', but it does not explain the name parameter or the optional nature of user beyond the schema default.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Create') and resource ('folder'), and adds the scoping detail 'in the delegated user's My Drive (root if no parent)'. This clearly identifies the tool's function and distinguishes it from sibling tools like folder_enable/disable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by stating the target location and the parent-folder behavior, but it does not explicitly say when to use this tool versus alternatives or provide any exclusions. It gives clear context but no alternative guidance, so it falls short of a 4.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
works_folder_disableA
Disable folder-level permissions. WARNING: drops folder grants, restores inheritance. Requires confirm=true.
| Name | Required | Description | Default |
|---|---|---|---|
| user | No | ||
| confirm | No | ||
| folder_id | Yes | ||
| sharedrive_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full responsibility for disclosing behavioral traits. It explicitly warns that the action 'drops folder grants, restores inheritance' and requires `confirm=true`, revealing a destructive and potentially irreversible effect. This goes well beyond what the schema alone indicates (confirm parameter exists, but its mandatory nature is not obvious) and is genuinely helpful.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise and well-structured. It front-loads the purpose, then delivers a warning, and finally states the confirmation requirement. Every sentence adds distinct value, with no filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (no annotations, no output schema, 4 parameters), the description covers the core details: purpose, destructive warning, and confirmation requirement. It does not explain the `user` parameter's role or potential reversibility, but for a focused permission-disabling action, the provided context is mostly sufficient. Slight room for improvement in addressing parameter semantics.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% parameter description coverage, so the description must compensate. It explains only `confirm` (must be true) but leaves `sharedrive_id`, `folder_id`, and `user` without added meaning beyond their names. For instance, `user` is optional and could be interpreted as a filter, but no clarification is provided. This is a significant gap for a tool with multiple parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb plus resource: 'Disable folder-level permissions.' It clearly distinguishes from the sibling tool `works_folder_enable` by stating the opposite action. The additional detail on dropping grants and restoring inheritance further clarifies the exact scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool (to disable folder-level permissions) but provides no explicit exclusions or alternatives. For instance, it does not contrast with `works_perm_revoke` for revoking specific user grants. The requirement to set `confirm=true` is a prerequisite, not a usage guideline, so guidance is limited to implied context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
works_folder_enableA
Enable folder-level permissions. WARNING: breaks inheritance (masters-only until granted). Requires confirm=true.
| Name | Required | Description | Default |
|---|---|---|---|
| user | No | ||
| confirm | No | ||
| folder_id | Yes | ||
| sharedrive_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description takes on the full burden of behavioral disclosure. It effectively warns that enabling folder-level permissions breaks inheritance and results in a 'masters-only' state until grants are made. This is significant, useful context. It does not mention reversibility or the fate of existing permissions, but the core side effect is clearly disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, consisting of two sentences that deliver the core purpose, a critical warning, and a required parameter. There is no filler or redundancy, and the most important information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (4 parameters, no output schema) and the lack of annotations, the description covers the most critical aspects: the action, the warning about inheritance, and the confirm requirement. It does not describe return values or fully elaborate on the 'masters-only' state, but it is sufficient for an agent to understand the basic behavior and risk.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides no descriptions (0% coverage), so the description must compensate. It does add crucial semantics for the 'confirm' parameter by stating it must be true. The other parameters (sharedrive_id, folder_id, user) are not explained, but their names and roles are reasonably self-explanatory from context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Enable folder-level permissions') with a specific verb and resource. It implies a distinction from siblings like works_folder_disable, but does not explicitly differentiate itself from similar permission-related tools such as works_perm_grant.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes a prerequisite ('Requires confirm=true') and a cautionary warning ('breaks inheritance'), which provide some usage context. However, it does not explicitly state when to use this tool versus alternatives, nor does it mention any exclusions or conditions that would make it inappropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
works_perm_grantA
Grant READ/WRITE to a member (drive-level, or folder-level with folder_id). Requires confirm=true.
| Name | Required | Description | Default |
|---|---|---|---|
| user | No | ||
| confirm | No | ||
| folder_id | No | ||
| perm_type | Yes | ||
| target_email | Yes | ||
| sharedrive_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the safety requirement 'Requires confirm=true' and clarifies the two scope modes. But with no annotations, it does not mention whether the grant is additive, if existing permissions are overwritten, or what the response looks like, leaving room for ambiguity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One concise sentence that is front-loaded with the core action and includes the critical confirm requirement. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 6 parameters, no annotations, and no output schema, so the description should be more comprehensive. It covers the action and the confirm flag but omits side effects, return value, and idempotency, leaving the agent with partial understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description helps interpret key parameters: folder_id (folder-level), perm_type (READ/WRITE), and confirm (must be true). However, it does not explain user, sharedrive_id, or target_email beyond their obvious meanings, so it partially compensates.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Grant' and identifies the resource as 'READ/WRITE to a member', clearly distinguishing drive-level vs folder-level scope. This differentiates it from sibling tools like works_perm_revoke and works_perms_list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly implies the use case: granting permissions to a member, with the optional folder_id for folder-level grants. However, it does not explicitly name alternatives or state when not to use it, so it stays at clear context without exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
works_perm_revokeA
Delete ONE permission by perm_id or target_email. Bulk delete is unsupported by design. Requires confirm=true.
| Name | Required | Description | Default |
|---|---|---|---|
| user | No | ||
| confirm | No | ||
| perm_id | No | ||
| folder_id | No | ||
| target_email | No | ||
| sharedrive_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the need for confirm=true and the inability to bulk delete, which is useful behavioral information. However, it does not explain what happens when confirm is false, required prerequisites, or potential errors, leaving some ambiguity for a destructive operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three short sentences, front-loaded with the primary action, and contains no unnecessary words. Every sentence adds meaningful information about the operation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (6 parameters, no output schema, no annotations), the description is too sparse. It omits the role of sharedrive_id, user, and folder_id, and does not clarify return values or failure modes, making it incomplete for an agent to safely invoke.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema coverage, the description must explain all parameters, but only perm_id and target_email are mentioned. The required sharedrive_id parameter is not described, and user, folder_id, and confirm (beyond 'required') lack semantic detail. This is insufficient for a 6-parameter tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Delete' and the resource 'permission', specifying the two identifier methods (perm_id or target_email). This unambiguously distinguishes it from sibling tools like works_perm_grant and works_perms_list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives practical usage context by stating that bulk delete is unsupported and that confirm=true is required, which helps the agent know constraints. It does not explicitly mention alternatives or when not to use this tool, but the guidance is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
works_perms_listA
List drive-level (or, with folder_id, folder-level) permissions.
| Name | Required | Description | Default |
|---|---|---|---|
| user | No | ||
| folder_id | No | ||
| sharedrive_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden for behavioral disclosure. It states the action is 'List', which implies a read-only operation, but it does not mention return value, authentication needs, or any side effects. Beyond indicating scope, it offers no additional behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the purpose and includes a key modifier ('with folder_id') in a parenthetical. Every word contributes meaning, with no redundant content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with no output schema, the description gives a clear overview and covers the folder_id nuance. However, it omits any mention of the 'user' parameter's role, and without an output schema, a brief return-value description would improve completeness. It is minimally adequate but has clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are three parameters with zero schema descriptions. The description adds meaning for 'folder_id' by indicating it changes the behavior to folder-level, and implies that omitting it means drive-level. However, it does not explain 'user' or 'sharedrive_id' beyond their names, leaving some semantics implicit.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: listing permissions. It specifies the scope ('drive-level or, with folder_id, folder-level'), which distinguishes it from sibling list tools for drives, files, and shared folders. The verb 'List' is specific and matches the resource type.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool (when you need to list permissions) and mentions the folder_id condition for folder-level permissions. However, it does not explicitly name alternatives or exclusions, leaving the usage context to inference from sibling names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
works_searchC
Search drive files (drive_type_filters e.g. 'SHARE_DRIVE').
| Name | Required | Description | Default |
|---|---|---|---|
| user | No | ||
| query | Yes | ||
| drive_type_filters | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full responsibility for disclosing behavioral traits. It only states the action and provides an example of a filter parameter, but does not disclose return format, pagination, permissions, whether it is read-only, or any side effects. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the core function. The parenthetical example adds useful context without redundancy. However, it is slightly under-structured—a brief list of parameters would improve usability without sacrificing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given three parameters, no annotations, and no output schema, this one-line description is grossly insufficient. It does not explain how the search works, what is returned, or how filters and other parameters interact. An agent would have to guess most of the tool's behavior and parameter semantics.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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. It only explains drive_type_filters with an example ('SHARE_DRIVE'), leaving the required 'query' and optional 'user' parameters completely unexplained. This is inadequate for an agent to understand how to fill the parameters correctly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Search drive files' with a specific verb and resource. It also includes an example filter, which helps distinguish it from sibling tools like works_files_list and works_drive_get, making the intended function unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 does not mention exclusions, prerequisites, or which sibling tools are more appropriate in certain scenarios. The example filter hints at usage but does not constitute clear guidance for tool selection.
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.
16 tool updates
v0.1.0- First observed
works_api_call - First observed
works_drive_get - First observed
works_drives_list - First observed
works_file_download - First observed
works_file_upload - First observed
works_files_list - First observed
works_folder_create - First observed
works_folder_disable - First observed
works_folder_enable - First observed
works_perm_grant - First observed
works_perm_revoke - First observed
works_perms_list - First observed
works_search - First observed
works_share_create - First observed
works_share_delete - First observed
works_sharedfolders_list
TDQS
Most tools have clearly distinct purposes, with only minor potential overlap between works_share_create/works_perm_grant and works_files_list/works_search. The descriptions generally resolve ambiguity adequately.
Tools follow a consistent noun_verb pattern (e.g., drive_get, files_list, perm_grant), with the exception of works_search, which lacks a resource prefix. This is a minor deviation from an otherwise predictable naming convention.
16 tools is slightly above the typical 3-15 range, but the scope covers file management, permissions, sharing, and a raw API escape hatch. Each tool serves a distinct purpose, making the count reasonable for the apparent domain.
The toolkit covers listing, downloading, uploading, sharing, and permission management well, but lacks file delete, rename, move, and drive lifecycle operations (create/update/delete). These gaps are notable for a file management server.
Maintenance
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
An MCP server that provides read access to your cloud storage providers, bank accounts and more.
The official MCP Server from Mia-Platform to interact with Mia-Platform Console
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
MCP server connecting AI agents to 100+ apps (Gmail, Slack, Notion, GitHub) via one-click OAuth.
Related MCP Servers
- AlicenseAqualityAmaintenanceNAVER WORKS CLI + MCP server. 26 tools for messages, calendar, drive, mail, tasks, and boards. AI agents can manage NAVER WORKS directly.3614924Apache 2.0
- AlicenseAqualityDmaintenanceSelf-hosted MCP server that exposes Synology Drive, Spreadsheet, MailPlus, and Calendar as structured tools for AI agents, enabling file, spreadsheet, email, and calendar management via natural language.391310MIT
- AlicenseAqualityDmaintenanceMCP server for Google Workspace APIs - Docs, Sheets, Drive, Gmail, and Calendar. Enables reading, creating, and editing Google Docs and Sheets, managing comments, reading emails, and viewing calendar events.343917MIT
- AlicenseBqualityDmaintenanceProduction-ready MCP server for Google Workspace providing broad coverage across Gmail, Drive, Calendar, Docs, Sheets, and more, with safe-by-default write operations and markdown-to-Google-Docs support.100MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/z0nam/worksmobile-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server