Skip to main content
Glama

dooray-mcp-js

Сервер Dooray MCP, реализованный на Node.js. Он следует именам инструментов и поведению API dooray-go/dooray-mcp, но не требует Go или Homebrew.

Требования

  • Node.js 18 или новее

  • Персональный API-токен Dooray

Related MCP server: gdoc-comments

Официальная документация

Область применения

Этот MCP-сервер не оборачивает каждый Dooray API. Он сосредоточен на часто используемых API аккаунтов, календаря, проектов, постов, вложений и мессенджера.

Большинство административных API /admin/v1 и /admin/v2 намеренно не раскрываются по умолчанию, особенно административные конечные точки с возможностью записи.

Режим только для чтения

Персональные API-токены Dooray не выдаются с отдельными правами только для чтения и записи. Токен, который может вызывать API записи, может по-прежнему иметь эти разрешения на уровне API Dooray.

Для более безопасных установок этот сервер предоставляет режим только для чтения на уровне инструментов MCP. В режиме только для чтения инструменты с возможностью записи не раскрываются в tools/list и не могут быть вызваны через tools/call.

Запуск

npx -y dooray-mcp-js --token "{personal-token}"

Вы также можете использовать переменную окружения:

DOORAY_TOKEN="{personal-token}" npx -y dooray-mcp-js

Запуск с раскрытием только инструментов только для чтения:

DOORAY_TOKEN="{personal-token}" npx -y dooray-mcp-js --mode read-only

Codex

Зарегистрируйте пакет напрямую с Codex:

codex mcp add dooray-mcp-js --env DOORAY_TOKEN="$DOORAY_TOKEN" -- npx -y dooray-mcp-js

Если токен ещё не находится в DOORAY_TOKEN, передайте его при регистрации:

codex mcp add dooray-mcp-js --env DOORAY_TOKEN="{personal-token}" -- npx -y dooray-mcp-js

Сервер читает DOORAY_TOKEN при запуске Codex, поэтому токен не нужно включать в аргументы команды.

Регистрация Codex только для чтения

Зарегистрируйте второй MCP-сервер с тем же пакетом и токеном, но раскройте только инструменты только для чтения:

codex mcp add dooray-mcp-js-read-only --env DOORAY_TOKEN="$DOORAY_TOKEN" -- npx -y dooray-mcp-js --mode read-only

Вы также можете установить режим через переменную окружения:

codex mcp add dooray-mcp-js-read-only --env DOORAY_TOKEN="$DOORAY_TOKEN" --env DOORAY_MCP_MODE=read-only -- npx -y dooray-mcp-js

Claude Desktop

{
  "mcpServers": {
    "dooray-mcp-js": {
      "command": "npx",
      "args": ["-y", "dooray-mcp-js"],
      "env": {
        "DOORAY_TOKEN": "{personal-token}"
      }
    }
  }
}

Конфигурация Claude Desktop только для чтения:

{
  "mcpServers": {
    "dooray-mcp-js-read-only": {
      "command": "npx",
      "args": ["-y", "dooray-mcp-js", "--mode", "read-only"],
      "env": {
        "DOORAY_TOKEN": "{personal-token}"
      }
    }
  }
}

Claude Code

claude mcp add dooray-mcp-js --env DOORAY_TOKEN="{personal-token}" -- npx -y dooray-mcp-js

Регистрация только для чтения:

claude mcp add dooray-mcp-js-read-only --env DOORAY_TOKEN="{personal-token}" -- npx -y dooray-mcp-js --mode read-only

Структура проекта

dooray-mcp-js/
├── src/
│   └── index.js      # MCP server entry point
├── package.json
└── README.md

Локальная разработка

При работе из клонированного репозитория запустите локальную точку входа напрямую:

DOORAY_TOKEN="{personal-token}" node ./src/index.js

Инструменты

Пакет dooray-mcp-js раскрывает все реализованные на данный момент инструменты. Текущий сервер пока не имеет инструмента удаления.

  • dooray_messenger

  • dooray_calendar_calendars

  • dooray_calendar_events

  • dooray_calendar_post_event

  • dooray_account_members

  • dooray_account_member

  • dooray_project

  • dooray_posts (находит посты задач и раскрывает тело задачи плюс fileIdList, который может содержать встроенные изображения/файлы тела)

  • dooray_post_logs (находит комментарии и журналы активности для поста)

  • dooray_post_log (находит один комментарий или журнал активности по ID)

  • dooray_post_log_create (добавляет комментарий к посту; тело: { "mimeType": "text/x-markdown", "content": "..." })

  • dooray_post_log_update (обновляет комментарий или журнал активности с тем же форматом тела)

  • dooray_post_files (перечисляет обычные вложения; пустой результат или AUTH_FORBIDDEN_ERROR не определяет, можно ли загрузить элементы fileIdList)

  • dooray_post_file_download (загружает ID из dooray_posts.fileIdList, включая встроенные изображения тела, или обычные ID файлов вложений с media=raw; авторизация ограничена настроенным источником API и HTTPS file-api.dooray.com)

  • os

Чтение URL задач и файлов тела

Используйте этот рабочий процесс, когда запрос касается тела задачи Dooray, изображения, встроенного в тело, или файла, на который ссылается тело. Комментарии и журналы активности являются отдельным ресурсом и не требуются для этого рабочего процесса.

  1. Разберите URL задачи. /task/{projectId}/{postId} предоставляет оба ID напрямую. Устаревшая форма /project/tasks/{postId} предоставляет только postId, поэтому её конечное число не должно использоваться как projectId.

  2. Определите проект только для устаревшей формы URL. Вызовите dooray_project с operation=find_projects и необходимыми фильтрами type, scope и state. Повторяйте соответствующие комбинации фильтров и продолжайте перебирать значения page с size до 100, пока не будут проверены все страницы результатов.

  3. Найдите соответствующий пост. Вызовите dooray_posts с ID проекта из новой формы URL или с ID кандидатов проекта, обнаруженных для устаревшего URL. Используйте size до 100, продолжайте перебирать значения page по мере необходимости и сопоставьте возвращённый ID поста с postId из URL. Поиск по одному неверному ID проекта или только по первой странице результатов не является доказательством того, что задача или её файлы недоступны.

  4. Прочитайте тело задачи из соответствующего результата dooray_posts. Не вызывайте dooray_post_logs, если пользователь явно не запрашивает комментарии или историю активности.

  5. Если соответствующий пост содержит fileIdList, вызовите dooray_post_file_download один раз для каждого перечисленного ID, используя те же проверенные projectId и postId. Эти ID обычно представляют изображения, встроенные в тело задачи, но могут также представлять другие файлы тела.

  6. Проверьте возвращённый локальный filePath с помощью просмотрщика изображений или соответствующего парсера документов. Результат загрузки также включает fileName, mimeType, size и temporary.

dooray_post_files раскрывается для перечисления обычных вложений, но он отделён от пути fileIdList, используемого для файлов тела. Он может возвращать пустой список или AUTH_FORBIDDEN_ERROR, даже если прямые загрузки из dooray_posts.fileIdList работают. Поэтому ни один из этих результатов не следует сообщать как доказательство того, что изображение или файл тела недоступен. Ошибка fetch failed или тайм-аут от dooray_post_file_download также является сбоем транспорта, а не результатом разрешений, и её следует повторить или сообщить отдельно. Сообщайте о файле как о запрещённом или отсутствующем только тогда, когда прямая загрузка возвращает терминальный ответ Dooray, такой как 403 или 404, с проверенными projectId, postId и fileId.

Инструменты режима только для чтения

Когда установлены --mode read-only или DOORAY_MCP_MODE=read-only, инструменты Dooray с возможностью записи не раскрываются в tools/list и не могут быть вызваны через tools/call.

Раскрываются в режиме только для чтения:

  • dooray_calendar_calendars

  • dooray_calendar_events

  • dooray_account_members

  • dooray_account_member

  • dooray_project

  • dooray_posts

  • dooray_post_logs

  • dooray_post_log

  • dooray_post_files

  • dooray_post_file_download

  • os

Скрыты в режиме только для чтения:

  • dooray_messenger

  • dooray_calendar_post_event

  • dooray_post_log_create

  • dooray_post_log_update

Параметры

  • --token: персональный API-токен Dooray. По умолчанию — DOORAY_TOKEN.

  • --endpoint: конечная точка API Dooray. По умолчанию — https://api.dooray.com.

  • --mode: режим раскрытия инструментов. Используйте full или read-only. По умолчанию — DOORAY_MCP_MODE или full.

Available Tools

15 tools
dooray_account_memberC

find dooray account members by id

NameRequiredDescriptionDefault
member_idYesmember id
operationYesThe operation to perform

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 only says 'find by id' and does not disclose return format, error behavior, permission implications, or that the operation is a read-only lookup. It is minimally transparent but lacks meaningful 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.

Conciseness4/5

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

The description is a single short sentence with no filler, front-loading the action and identifying scope. It is appropriately concise for a simple tool, though it sacrifices some useful context for brevity.

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?

For a two-parameter tool with a fixed enum and no output schema, the description is minimally adequate: an agent can infer that providing a member_id and the find_member_details operation will perform the lookup. However, it omits return-value expectations and alternative-tool routing, leaving some gaps 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 100%, so the baseline is 3. The description adds little beyond the schema: 'by id' maps to member_id, but member_id is already documented as 'member id' and operation is documented as 'The operation to perform'. No additional parameter meaning is provided.

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 states a specific verb ('find') and resource ('dooray account members') with a filter ('by id'), making the tool's core purpose clear. It does not explicitly differentiate from the sibling dooray_account_members, but the singular phrasing and id-based lookup imply a detail lookup versus a list operation.

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 gives no guidance on when to use this tool versus dooray_account_members or other sibling tools. There is no mention of prerequisites, context, or exclusions, so an agent must infer usage from the operation enum and tool names.

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

dooray_account_membersA

find dooray account members by name or userCode

NameRequiredDescriptionDefault
operationYesThe operation to perform
user_codeNouser code
member_nameYesmember name

TDQS

A3.6/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 behavioral burden; 'find' signals a non-mutating lookup and the search criteria are stated. It does not disclose output shape, exact versus partial matching, or authorization expectations, leaving some 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, front-loaded sentence with no filler or repetition. Every word contributes to purpose and usage, and there is no unnecessary elaboration.

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?

There is no output schema and no annotations, so the description must compensate by explaining the result and invocation context. It does not mention the required operation value ('find_member_id'), what the tool returns, or how multiple matches are handled, leaving important gaps for an agent.

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 already documents each parameter. The description adds limited value by tying the member_name and user_code parameters to the 'by name or userCode' search intent, but it does not add format, matching, or optionality details beyond 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 uses a specific verb ('find'), a concrete resource ('dooray account members'), and a clear lookup criterion ('by name or userCode'). It distinguishes this tool from sibling tools like dooray_account_member by framing it as a search by name or user code rather than a direct member operation.

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 phrase 'by name or userCode' implies the tool should be used when locating members by those identifiers. However, it does not explicitly state when to avoid this tool or name the alternative to use when other criteria, such as member ID, are available.

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

dooray_calendar_calendarsC

find dooray calendars

NameRequiredDescriptionDefault
operationYesThe operation to perform

TDQS

C2.6/5.0
Behavior2/5

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

There are no annotations, so the description must carry the full burden of disclosing side effects and return behavior. 'Find' weakly implies a read-only lookup, but the description does not state whether this mutates anything, requires permissions, returns a list, or could fail.

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

Conciseness3/5

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

The description is short with no wasted words, but it is under-specified rather than tightly informative. It lacks structure that would make the tool's behavior and output immediately scannable for an agent.

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?

For an operation with one fixed enum value, the description is minimally viable, but there is no output schema and the description does not describe what a successful response contains. An agent would have to guess whether the tool returns all calendars or some filtered subset.

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% and the only parameter is an enum with description 'The operation to perform'. The tool description adds no parameter-specific meaning, but the schema already fully documents the parameter, so the baseline of 3 applies.

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

Purpose3/5

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

The description uses a verb and a resource ('find dooray calendars'), which points to the calendar collection and distinguishes it from calendar event tools at a noun level. However, 'find' is vague—it does not say whether this lists all calendars, searches, or retrieves a single calendar—so the purpose is only partially clear.

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 given about when to call this tool instead of siblings such as dooray_calendar_events or dooray_calendar_post_event. The context in which find_calendars should be preferred is left entirely to inference.

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

dooray_calendar_eventsC

find dooray events of calendars

NameRequiredDescriptionDefault
timeMaxYesexclusive end time in ISO 8601, e.g. 2025-04-12T00:00:00+09:00
timeMinYesinclusive start time in ISO 8601, e.g. 2025-04-11T00:00:00+09:00
calendarsNocalendar ids separated by commas
operationYesThe operation to perform

TDQS

C2.7/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 of behavioral disclosure, but it only says 'find'. It does not indicate whether this is a read-only operation, what the response shape is, how time boundaries are handled, or whether recurring events or attendee information are included.

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

Conciseness2/5

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

The description is extremely short, but it is under-specified rather than effectively concise. It contains a single phrase and omits important context about required operation, expected output, and selection criteria, which should have been included in a tool description.

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 tool with no annotations, no output schema, and an enum operation parameter, the description should explain what the agent can expect and when to invoke it. It provides none of that, leaving an agent to infer behavior almost entirely from the schema.

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 already documents timeMin, timeMax, calendars, and operation. The description adds no additional parameter meaning, which keeps this at the baseline for schemas that already carry the explanatory load.

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 states a specific verb ('find') and resource ('dooray events of calendars'), making the core read-oriented purpose clear. It does not explicitly differentiate from sibling tools like dooray_calendar_calendars or dooray_calendar_post_event, but the word 'events' and 'calendars' provide enough directional clarity.

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 about when to use this tool over alternatives, such as dooray_calendar_calendars for listing calendars or dooray_calendar_post_event for creating events. The description also does not mention the time range requirement or that this is the read/search path for calendar events.

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

dooray_calendar_post_eventC

register dooray events on a calendar

NameRequiredDescriptionDefault
contentYesevent content
endedAtYesevent end time in ISO 8601
subjectYesevent subject
operationYesThe operation to perform
startedAtYesevent start time in ISO 8601
calendarIdNocalendar id to register an event
wholeDayFlagNoset true for whole day event
recurrenceBydayNorecurrence by day, e.g. MO,TU,WE
recurrenceUntilNorecurrence end date in ISO 8601
recurrenceBymonthNorecurrence by month, 1-12
recurrenceIntervalNorecurrence interval, default is 1
recurrenceFrequencyNorecurrence frequency
recurrenceBymonthdayNorecurrence by day of month, 1-31
recurrenceTimezoneNameNotimezone for recurrence rule, default Asia/Seoul

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 must disclose behavioral traits. It only states the action 'register' without mentioning side effects, return values, error conditions, permissions, or reentrancy. This is minimal and leaves the agent guessing about the tool's actual behavior.

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

Conciseness3/5

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

The description is a single, concise sentence with no fluff. However, it is undersized for a tool with 14 parameters and complex recurrence options. While it is not verbose, it does not earn its place by providing sufficient information, so it is only marginally acceptable.

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?

The tool has 14 parameters, including recurrence rules, timezones, and calendar IDs, but no output schema or annotations. The description covers only the basic action, leaving out any explanation of required fields, optional behaviors, or how recurrence is handled. This is inadequate for the complexity of the tool.

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 already has descriptions for all 14 parameters (100% coverage), so the description does not need to repeat them. However, the tool description adds no additional meaning beyond the schema, and the schema descriptions themselves are terse. Given the high schema coverage, a baseline score of 3 is appropriate.

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 uses the verb 'register' with a clear resource ('dooray events') and location ('on a calendar'), conveying that this tool creates calendar events. It is distinct enough from siblings like dooray_calendar_events, which likely list events, but it does not explicitly differentiate itself.

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 dooray_calendar_events or dooray_calendar_calendars. There is no mention of prerequisites, context, or conditions that would help an agent choose this tool appropriately.

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

dooray_messengerB

send message to dooray messenger

NameRequiredDescriptionDefault
toYesrecipient organizationMemberId
messageYesmessage to send
operationYesThe operation to perform

TDQS

B3.2/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 disclosing behavioral traits. It only states 'send message' implying a side effect, but does not mention authentication requirements, whether the operation is idempotent, what happens on failure, or any return behavior. This is insufficient for a mutation-like tool.

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

Conciseness4/5

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

The description is a single, front-loaded sentence with no fluff or redundancy. It is appropriately sized for such a simple tool, though it adds no extra explanatory detail that could make it more helpful.

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?

The tool is simple with three well-documented parameters and no output schema. The description covers the basic purpose, but lacks details about what the operation returns, how recipients are identified, and any usage context. Given the simplicity, this is adequate but leaves room for improvement.

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%, with clear descriptions for 'to' (recipient organizationMemberId) and 'message' (message to send). The description adds no additional parameter context, but the schema alone adequately documents the parameters, warranting the baseline score.

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 'send message to dooray messenger' uses a specific verb (send) and resource (dooray messenger), clearly stating the tool's function. It distinguishes itself from sibling tools which are focused on projects, calendars, and posts, not messaging.

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, when not to use it, or any prerequisites. It simply states the action, leaving the agent to infer appropriate usage from the tool name alone.

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

dooray_post_file_downloadA

download raw content of a Dooray post attachment through authenticated redirects to a local temporary directory

NameRequiredDescriptionDefault
fileIdYesfile id
postIdYespost id
fileNameNooptional file name used when the response does not provide one
operationYesThe operation to perform
projectIdYesproject id

TDQS

A3.7/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 two meaningful behaviors: authenticated redirects and writing to a local temporary directory. However, it does not mention side effects (e.g., whether the temp file persists), return value shape, error handling, or auth prerequisites beyond 'authenticated', leaving significant 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 sentence, front-loaded with the action ('download'), and every word contributes meaning. It is concise and free of redundancy.

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?

No output schema and no annotations, so the description is the sole source for context. It explains the core functionality and local destination, but fails to describe the return value (e.g., does it return a file path?), post-download behavior, or cleanup. For a 4-required-param download tool, this is a noticeable completeness gap.

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 coverage is 100%, so the baseline is 3. The description adds context about 'post attachment' and 'raw content', which helps understand fileId's role, but it does not explain parameter relationships, validation, or usage details beyond the schema. It adds marginal value but does not compensate beyond baseline.

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 a specific verb ('download') and resource ('raw content of a Dooray post attachment'), and adds a distinctive mechanism ('through authenticated redirects to a local temporary directory'). This distinguishes it from sibling tools like dooray_post_files which likely list files rather than download content.

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 downloading a specific attachment's raw content, but provides no explicit when-to-use vs alternative tools (e.g., dooray_post_files) or exclusions. It is clear enough for basic selection, but lacks explicit guidance on alternatives or prerequisites.

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

dooray_post_filesA

find attachments of a Dooray post

NameRequiredDescriptionDefault
postIdYespost id
operationYesThe operation to perform
projectIdYesproject id

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the behavioral transparency burden. It only states 'find attachments' and does not disclose return format, authentication needs, or that it lists metadata rather than downloading file contents. This is insufficient for a no-annotation 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, focused sentence with no unnecessary words. It is front-loaded and easily parsable; every word contributes meaning.

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?

The tool is simple, but the absence of annotations and output schema places greater responsibility on the description. It does not clarify whether the result is a list of metadata or something else, nor does it mention the relationship to the sibling download tool. Adequate for a minimal tool but with clear gaps.

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 fully documents all parameters with 100% coverage, including the operation enum and required IDs. The description adds no parameter-specific meaning, but the schema already provides complete semantic detail, so the baseline score of 3 is appropriate.

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?

Clearly identifies the action ('find') and resource ('attachments of a Dooray post'), which distinguishes it from sibling tools like dooray_post_logs and dooray_post_file_download. The verb and object are specific and unambiguous.

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 the tool is used to list attachments of a specific post, but it does not explicitly explain when to use this over dooray_post_file_download or mention any exclusions. The usage context is clear enough but lacks alternative guidance.

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

dooray_post_logB

find a specific comment or activity log of a Dooray post

NameRequiredDescriptionDefault
logIdYeslog id, or comment id
postIdYespost id
operationYesThe operation to perform
projectIdYesproject id

TDQS

B3.3/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 only says 'find', which implies a read operation, but it does not state whether it is read-only, what happens if no matching log is found, or what data is returned. This is minimal disclosure for an operation with no annotation support.

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 one concise sentence that states the verb and resource directly without filler or unnecessary detail. It is appropriately front-loaded and easy to parse.

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?

The schema fully documents the required parameters and the operation enum, which is good. However, the description provides no information about return values, error behavior, or how this tool relates to the list/create/update sibling tools, leaving an agent with only the minimum viable information to attempt a call.

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 all four parameters already have basic documentation. The description adds the clarifying context that logId refers to a comment or activity log, but it does not add meaningful detail beyond what the schema already provides.

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 a specific action, 'find', on a specific resource, 'a specific comment or activity log of a Dooray post'. This distinguishes it from sibling create/update tools, though it does not explicitly contrast it with the plural 'dooray_post_logs' tool.

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 word 'specific' implies this tool is for retrieving one known log rather than listing or creating logs, but no explicit alternatives or when-not-to-use guidance is provided. An agent can infer the basic use case from the singular phrasing, but clear routing among siblings is absent.

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

dooray_post_log_createB

add a comment to a Dooray post

NameRequiredDescriptionDefault
bodyYes
postIdYespost id
operationYesThe operation to perform
projectIdYesproject id

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations provided, the description must disclose behavioral traits. 'Add a comment' describes the side effect but does not reveal the need for the 'operation' parameter set to 'create_log', authentication expectations, error behavior, or response format. The description adds minimal transparency beyond the name itself.

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 with no filler. It front-loads the action and target, making it immediately scannable.

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?

With no output schema and no annotations, the description should compensate by explaining the full invocation context. It does not mention the required operation constant, how to obtain projectId/postId, or what the API returns on success/failure. The description alone is insufficient for an agent to confidently invoke this create operation.

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 75%, and the schema already provides descriptions for projectId, postId, body.content, and body.mimeType. The description does not add parameter semantics, such as explaining that postId refers to the target post or how to construct the body object. Since the schema covers most parameters, a baseline of 3 is appropriate.

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 'add a comment to a Dooray post' uses a specific verb ('add') and identifies the resource ('comment' to a 'Dooray post'). It clearly distinguishes this create operation from sibling tools like dooray_post_log_update (update) and dooray_post_logs (list). The only minor ambiguity is the term 'comment' vs 'log' in the name, but the action is still unmistakable.

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. The description only states the action without mentioning that listing or updating logs is handled by sibling tools, or any prerequisites like needing a existing post ID. Usage must be inferred entirely from the tool name and sibling list.

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

dooray_post_logsC

find comments and activity logs of a Dooray post

NameRequiredDescriptionDefault
pageNopage number, default is 0
sizeNonumber of logs per page, default is 20
orderNolog sort order
postIdYespost id
operationYesThe operation to perform
projectIdYesproject id

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 must carry the behavioral disclosure burden. It only says 'find', implying read-only behavior, but does not disclose pagination, sorting behavior, response shape, or any side effects. There is no contradiction, but the transparency is minimal.

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

Conciseness4/5

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

The description is a single clear sentence with no filler or redundancy. It is concise and immediately communicates the core action, though it offers no additional structural information.

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?

For a straightforward read/list tool with fully described parameters, the description plus schema is minimally sufficient. However, without an output schema, some indication of return behavior or pagination would improve completeness, and missing usage guidance leaves contextual gaps.

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 all parameters are already documented. The description adds no extra parameter meaning beyond framing the tool as finding post comments and activity logs, which is acceptable but not additive.

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 uses a specific verb ('find') and names the resource ('comments and activity logs of a Dooray post'). It clearly implies a read/list operation that is distinct from the singular dooray_post_log and the mutating dooray_post_log_create/update siblings, though it does not explicitly name them.

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?

There is no guidance about when to use this tool versus alternatives such as dooray_post_log or dooray_post_log_create. The operation enum restricts to 'find_logs', but the description does not explain contexts, exclusions, or relationships to sibling tools.

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

dooray_post_log_updateC

update a comment or activity log of a Dooray post

NameRequiredDescriptionDefault
bodyYes
logIdYeslog id, or comment id
postIdYespost id
operationYesThe operation to perform
projectIdYesproject id

TDQS

C2.8/5.0
Behavior1/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. It only says 'update' with no disclosure of side effects, reversibility, permissions, or what happens to the existing log. For a mutation tool, this is a significant transparency gap.

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

Conciseness3/5

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

The description is a single concise sentence, which is appropriately brief for a simple tool. However, it is under-specified and omits important context, making it more under-specified than concise.

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?

With no annotations, no output schema, and a sparse description, the tool lacks essential context. It doesn't explain return values, side effects, or how to use it correctly. The nested body schema and multiple required parameters demand more explanation than is provided.

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 80%, and each parameter has a clear description (e.g., logId described as 'log id, or comment id'). The tool description adds no additional meaning beyond the schema, so baseline 3 is appropriate.

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') and the resource ('a comment or activity log of a Dooray post'). It is specific enough to distinguish from sibling tools like create or list, though it does not 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 Guidelines3/5

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

The verb 'update' implies this tool is for modifying existing logs, but there is no explicit mention of when to use it versus alternatives like dooray_post_log_create or dooray_post_logs. No usage context or exclusions are provided.

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

dooray_postsC

find dooray posts in projects

NameRequiredDescriptionDefault
pageNopage number, default is 0
sizeNonumber of posts per page, default is 20, max is 100
dueAtNodate filter: today, thisweek, prev-{N}d, next-{N}d, or ISO8601~ISO8601
orderNosort order: postDueAt, postUpdatedAt, createdAt, prefix '-' for descending
tagIdsNofilter posts by tag ids, comma separated
subjectsNofilter by post subject keyword
createdAtNodate filter: today, thisweek, prev-{N}d, next-{N}d, or ISO8601~ISO8601
operationYesThe operation to perform
projectIdYesproject id, or comma separated project ids
updatedAtNodate filter: today, thisweek, prev-{N}d, next-{N}d, or ISO8601~ISO8601
postNumberNofilter by post number
ccMemberIdsNofilter posts by cc member ids, comma separated
toMemberIdsNofilter posts by assignee member ids, comma separated
milestoneIdsNofilter by milestone ids, comma separated
parentPostIdNofilter sub-tasks of a parent post
toMemberSizeNofilter by number of assignees
fromMemberIdsNofilter posts by creator member ids, comma separated
postWorkflowIdsNofilter by workflow ids, comma separated
fromEmailAddressNofilter posts by sender email address
postWorkflowClassesNobacklog, registered, working, closed

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 must communicate behavioral context. 'Find' implies a read operation, but nothing about pagination, filtering behavior, rate limits, or return format is disclosed. The tool has 20 parameters, yet the description offers no operational detail beyond the verb.

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

Conciseness4/5

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

The description is a single, concise sentence with no wasted words. It is appropriately sized for a tool where the schema carries heavy detail, though it might be too terse for a complex tool with 20 parameters.

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 (20 parameters, no output schema, no annotations), the description is far from complete. It does not explain what dooray posts are, how to combine filters, or what the response structure looks like. The schema provides parameter-level detail but not high-level usage 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 input schema provides descriptions for all 20 parameters, covering 100% of parameter semantics. The description adds no extra meaning beyond the schema, so the baseline of 3 applies.

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 tool finds dooray posts within projects, using a specific verb and resource. It does not explicitly differentiate from sibling tools like dooray_post_logs, but the 'posts in projects' phrasing distinguishes it reasonably from calendar and account tools.

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 given on when to use this tool versus alternatives such as dooray_post_logs or dooray_post_files. There is no mention of when to prefer this over others, nor any exclusions or prerequisites.

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

dooray_projectB

find Dooray projects or get a project by id

NameRequiredDescriptionDefault
typeNoproject type
scopeNoproject scope
stateNoproject state
operationYesThe operation to perform
projectIdNoproject id for find_project

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 must carry the full burden of behavioral disclosure. It implies read-only operations through 'find' and 'get', but does not explicitly state side-effect-free behavior, permissions, pagination, or output format. The description is too sparse to provide meaningful 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 concise sentence, front-loaded with the core action. Every word is purposeful, and there is no fluff. It is appropriately concise for a tool of this simplicity.

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?

The tool is relatively simple, and the schema covers parameters well, but there is no output schema and no explicit mention of return values (list vs single object). The description also does not clarify the difference between 'find_projects' and 'find_project' beyond the schema's operation enum. It is adequate but has clear gaps in behavior and return expectations.

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 baseline is 3. The description adds no extra parameter information beyond what the schema already provides (e.g., projectId for find_project, type/scope/state enums). It does not compensate for any gaps, but none exist, so the score remains at baseline.

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 tool's dual purpose: finding projects and retrieving a single project by ID. It uses specific verbs ('find', 'get') and names the resource (Dooray projects), distinguishing it from sibling tools focused on members, messengers, calendars, and posts. However, it is slightly vague about the search/list aspects, so it doesn't quite earn 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?

There is no guidance on when to use this tool versus alternatives, nor when to choose 'find_projects' vs 'find_project'. The schema provides some indication via the operation enum and projectId description, but the description itself offers no context, prerequisites, or exclusions.

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

osB

get os time date

NameRequiredDescriptionDefault
operationYesThe operation to get date time

TDQS

B3.4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the disclosure burden. The verb 'get' implies a read-only operation, and the sole operation value 'get_date_time' reinforces that. However, it does not mention timezone, format, or return-value details, which are useful behavioral traits for a tool with no output schema.

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

Conciseness4/5

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

The description is extremely short with no filler or redundant phrases. It is front-loaded, though the phrase 'time date' could be worded more clearly as 'date/time'.

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?

For a simple one-operation tool, the description plus fully covered schema is sufficient to invoke the tool correctly. However, because there is no output schema, a brief note about the returned date/time format or timezone would improve completeness.

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%, and the operation parameter is fully documented with an enum and descriptive text. The tool description adds no extra parameter meaning beyond the schema, so the baseline score of 3 is appropriate.

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 a get operation on an OS time/date resource, and the sibling tools are all Dooray-related, so this tool is easy to distinguish. The phrasing 'os time date' is slightly awkward, but the intent is unambiguous.

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?

Usage is implied by the stated purpose: use this tool to retrieve the OS date/time. There is no explicit when-to-use guidance or exclusions, but the sibling set is unrelated, so the alternative-selection risk is low.

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.

  1. 15 tool updatesv0.2.0
    • First observeddooray_account_member
    • First observeddooray_account_members
    • First observeddooray_calendar_calendars
    • First observeddooray_calendar_events
    • First observeddooray_calendar_post_event
    • First observeddooray_messenger
    • First observeddooray_post_file_download
    • First observeddooray_post_files
    • First observeddooray_post_log
    • First observeddooray_post_log_create
    • First observeddooray_post_log_update
    • First observeddooray_post_logs
    • First observeddooray_posts
    • First observeddooray_project
    • First observedos

TDQS

B3/5.0

Scored across 15 tools

Disambiguation4/5

Most tools have clear resource-action boundaries (e.g., account member lookup vs. calendar events), but a few pairs like dooray_post_logs and dooray_post_log could confuse agents without careful reading. The plural/singular distinction helps, and the 'os' tool is clearly separate.

Naming Consistency4/5

The naming is mostly consistent with a dooray_<domain>_<resource> pattern for queries and dooray_<domain>_<resource>_<verb> for actions. However, 'dooray_messenger' (a send action without a verb) and the standalone 'os' tool break the pattern, along with redundant 'dooray_calendar_calendars'.

Tool Count4/5

15 tools is within a reasonable range for a multi-domain integration (account, messenger, calendar, posts, logs, files). The inclusion of an unrelated 'os' tool slightly detracts from the overall scope, but the count is not excessive.

Completeness2/5

Critical CRUD operations are missing across resources: no way to create or update posts, no update/delete for calendar events, no read for messenger, and no upload for files. While some actions exist (create calendar event, add comment, download file), the surface is incomplete for full lifecycle management, leading to dead ends.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP Server for public disclosure information of Korean companies, powered by the dartpoint.ai API.
    3
    Apache 2.0
  • A
    license
    Not graded
    quality
    D
    maintenance
    An MCP server for reading/editing Google Docs content and managing comments, including listing, creating, replying, resolving, and reopening comments via the Docs API and Drive API.
    GPL 3.0
  • A
    license
    Not graded
    quality
    C
    maintenance
    MCP server for managing social media posts across multiple platforms using the Postiz API. Supports creating, updating, deleting posts, and generating videos.
    58 npm
    3
    MIT
  • A
    license
    B
    quality
    B
    maintenance
    Unofficial MCP server for NAVER WORKS Drive admin tasks, enabling shared-drive governance, permission management, and file operations via service-account delegation.
    16
    MIT