dooray-mcp-js
The server is an MCP server for Dooray that provides tools to interact with Dooray services, focusing on read and some write operations.
Send messages to Dooray messenger.
Find calendars and events, and create calendar events (with recurrence options).
Look up account members by name/userCode or by ID.
Find projects and project details.
Find posts (tasks) with various filters (date, assignee, tags, etc.).
Find comments/activity logs for a post, and get a specific log by ID.
Add and update comments (write operations, hidden in read-only mode).
List and download post attachments, including inline body files.
Get current system date/time.
Supports full and read-only modes; in read-only mode write-capable tools are hidden.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@dooray-mcp-jslist my projects"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
dooray-mcp-js
Dooray MCP server implemented in Node.js. It follows the tool names and API behavior of dooray-go/dooray-mcp, but does not require Go or Homebrew.
Requirements
Node.js 18 or newer
Dooray personal API token
Related MCP server: gdoc-comments
Official Documentation
Scope
This MCP server does not wrap every Dooray API. It focuses on frequently used account, calendar, project, post, attachment, and messenger APIs.
Most /admin/v1 and /admin/v2 administration APIs are intentionally not exposed by default, especially write-capable administration endpoints.
Read-only mode
Dooray personal API tokens are not issued with separate read-only and write permissions. A token that can call write APIs may still have those permissions at the Dooray API level.
For safer installations, this server provides a read-only mode at the MCP tool layer. In read-only mode, write-capable tools are not exposed in tools/list and cannot be called through tools/call.
Run
npx -y dooray-mcp-js --token "{personal-token}"You can also use an environment variable:
DOORAY_TOKEN="{personal-token}" npx -y dooray-mcp-jsRun with only read-only tools exposed:
DOORAY_TOKEN="{personal-token}" npx -y dooray-mcp-js --mode read-onlyCodex
Register the package directly with Codex:
codex mcp add dooray-mcp-js --env DOORAY_TOKEN="$DOORAY_TOKEN" -- npx -y dooray-mcp-jsIf the token is not already in DOORAY_TOKEN, pass it when registering:
codex mcp add dooray-mcp-js --env DOORAY_TOKEN="{personal-token}" -- npx -y dooray-mcp-jsThe server reads DOORAY_TOKEN when Codex starts it, so the token does not need to be included in the command arguments.
Codex read-only registration
Register a second MCP server with the same package and token, but expose only read-only tools:
codex mcp add dooray-mcp-js-read-only --env DOORAY_TOKEN="$DOORAY_TOKEN" -- npx -y dooray-mcp-js --mode read-onlyYou can also set the mode through an environment variable:
codex mcp add dooray-mcp-js-read-only --env DOORAY_TOKEN="$DOORAY_TOKEN" --env DOORAY_MCP_MODE=read-only -- npx -y dooray-mcp-jsClaude Desktop
{
"mcpServers": {
"dooray-mcp-js": {
"command": "npx",
"args": ["-y", "dooray-mcp-js"],
"env": {
"DOORAY_TOKEN": "{personal-token}"
}
}
}
}Read-only Claude Desktop configuration:
{
"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-jsRead-only registration:
claude mcp add dooray-mcp-js-read-only --env DOORAY_TOKEN="{personal-token}" -- npx -y dooray-mcp-js --mode read-onlyProject Structure
dooray-mcp-js/
├── src/
│ └── index.js # MCP server entry point
├── package.json
└── README.mdLocal development
When working from a cloned repository, run the local entry point directly:
DOORAY_TOKEN="{personal-token}" node ./src/index.jsTools
The dooray-mcp-js package exposes all currently implemented tools. The current server has no delete tool yet.
dooray_messengerdooray_calendar_calendarsdooray_calendar_eventsdooray_calendar_post_eventdooray_account_membersdooray_account_memberdooray_projectdooray_posts(finds task posts and exposes the task body plusfileIdList, which can contain inline body images/files)dooray_post_logs(find comments and activity logs for a post)dooray_post_log(find one comment or activity log by ID)dooray_post_log_create(add a comment to a post; body is{ "mimeType": "text/x-markdown", "content": "..." })dooray_post_log_update(update a comment or activity log with the same body format)dooray_post_files(lists regular attachments; an empty result orAUTH_FORBIDDEN_ERRORdoes not determine whetherfileIdListitems can be downloaded)dooray_post_file_download(downloads IDs fromdooray_posts.fileIdList, including inline body images, or regular attachment file IDs withmedia=raw; authorization is limited to the configured API origin and HTTPSfile-api.dooray.com)os
Reading task URLs and body files
Use this workflow when a request asks for a Dooray task body, an image embedded in the body, or a file referenced by the body. Comments and activity logs are a separate resource and are not required for this workflow.
Parse the task URL.
/task/{projectId}/{postId}provides both IDs directly. The legacy/project/tasks/{postId}form provides onlypostId, so its trailing number must not be used asprojectId.Resolve the project only for the legacy URL form. Call
dooray_projectwithoperation=find_projectsand the requiredtype,scope, andstatefilters. Repeat the relevant filter combinations and continue throughpagevalues withsizeup to100until every result page has been checked.Search for the matching post. Call
dooray_postswith the project ID from the new URL form or the candidate project IDs discovered for a legacy URL. Usesizeup to100, continue throughpagevalues as needed, and match the returned post ID to the URL'spostId. A lookup under one incorrect project ID or only the first result page is not evidence that the task or its files are unavailable.Read the task body from the matching
dooray_postsresult. Do not calldooray_post_logsunless the user explicitly asks for comments or activity history.If the matching post contains
fileIdList, calldooray_post_file_downloadonce for every listed ID using the same verifiedprojectIdandpostId. These IDs commonly represent images embedded in the task body, but can represent other body files as well.Inspect the returned local
filePathwith an image viewer or an appropriate document parser. The download result also includesfileName,mimeType,size, andtemporary.
dooray_post_files is exposed for listing regular attachments, but it is separate from the fileIdList path used by body files. It can return an empty list or AUTH_FORBIDDEN_ERROR even when direct downloads from dooray_posts.fileIdList work. Therefore, neither outcome should be reported as proof that a body image or file is inaccessible. A fetch failed error or timeout from dooray_post_file_download is also a transport failure, not a permission result, and should be retried or reported separately. Report a file as forbidden or missing only when the direct download returns a terminal Dooray response such as 403 or 404 with the verified projectId, postId, and fileId.
Read-only mode tools
When --mode read-only or DOORAY_MCP_MODE=read-only is set, write-capable Dooray tools are not exposed in tools/list and cannot be called through tools/call.
Exposed in read-only mode:
dooray_calendar_calendarsdooray_calendar_eventsdooray_account_membersdooray_account_memberdooray_projectdooray_postsdooray_post_logsdooray_post_logdooray_post_filesdooray_post_file_downloados
Hidden in read-only mode:
dooray_messengerdooray_calendar_post_eventdooray_post_log_createdooray_post_log_update
Options
--token: Dooray personal API token. Defaults toDOORAY_TOKEN.--endpoint: Dooray API endpoint. Defaults tohttps://api.dooray.com.--mode: tool exposure mode. Usefullorread-only. Defaults toDOORAY_MCP_MODEorfull.
Available Tools
15 toolsdooray_account_memberC
find dooray account members by id
| Name | Required | Description | Default |
|---|---|---|---|
| member_id | Yes | member id | |
| operation | Yes | The operation to perform |
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 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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| operation | Yes | The operation to perform | |
| user_code | No | user code | |
| member_name | Yes | member name |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| operation | Yes | The operation to perform |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| timeMax | Yes | exclusive end time in ISO 8601, e.g. 2025-04-12T00:00:00+09:00 | |
| timeMin | Yes | inclusive start time in ISO 8601, e.g. 2025-04-11T00:00:00+09:00 | |
| calendars | No | calendar ids separated by commas | |
| operation | Yes | The operation to perform |
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, 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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| content | Yes | event content | |
| endedAt | Yes | event end time in ISO 8601 | |
| subject | Yes | event subject | |
| operation | Yes | The operation to perform | |
| startedAt | Yes | event start time in ISO 8601 | |
| calendarId | No | calendar id to register an event | |
| wholeDayFlag | No | set true for whole day event | |
| recurrenceByday | No | recurrence by day, e.g. MO,TU,WE | |
| recurrenceUntil | No | recurrence end date in ISO 8601 | |
| recurrenceBymonth | No | recurrence by month, 1-12 | |
| recurrenceInterval | No | recurrence interval, default is 1 | |
| recurrenceFrequency | No | recurrence frequency | |
| recurrenceBymonthday | No | recurrence by day of month, 1-31 | |
| recurrenceTimezoneName | No | timezone for recurrence rule, default Asia/Seoul |
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. 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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | recipient organizationMemberId | |
| message | Yes | message to send | |
| operation | Yes | The operation to perform |
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 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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| fileId | Yes | file id | |
| postId | Yes | post id | |
| fileName | No | optional file name used when the response does not provide one | |
| operation | Yes | The operation to perform | |
| projectId | Yes | project id |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| postId | Yes | post id | |
| operation | Yes | The operation to perform | |
| projectId | Yes | project id |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| logId | Yes | log id, or comment id | |
| postId | Yes | post id | |
| operation | Yes | The operation to perform | |
| projectId | Yes | project id |
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 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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| postId | Yes | post id | |
| operation | Yes | The operation to perform | |
| projectId | Yes | project id |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | page number, default is 0 | |
| size | No | number of logs per page, default is 20 | |
| order | No | log sort order | |
| postId | Yes | post id | |
| operation | Yes | The operation to perform | |
| projectId | Yes | project id |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| logId | Yes | log id, or comment id | |
| postId | Yes | post id | |
| operation | Yes | The operation to perform | |
| projectId | Yes | project id |
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. 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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | page number, default is 0 | |
| size | No | number of posts per page, default is 20, max is 100 | |
| dueAt | No | date filter: today, thisweek, prev-{N}d, next-{N}d, or ISO8601~ISO8601 | |
| order | No | sort order: postDueAt, postUpdatedAt, createdAt, prefix '-' for descending | |
| tagIds | No | filter posts by tag ids, comma separated | |
| subjects | No | filter by post subject keyword | |
| createdAt | No | date filter: today, thisweek, prev-{N}d, next-{N}d, or ISO8601~ISO8601 | |
| operation | Yes | The operation to perform | |
| projectId | Yes | project id, or comma separated project ids | |
| updatedAt | No | date filter: today, thisweek, prev-{N}d, next-{N}d, or ISO8601~ISO8601 | |
| postNumber | No | filter by post number | |
| ccMemberIds | No | filter posts by cc member ids, comma separated | |
| toMemberIds | No | filter posts by assignee member ids, comma separated | |
| milestoneIds | No | filter by milestone ids, comma separated | |
| parentPostId | No | filter sub-tasks of a parent post | |
| toMemberSize | No | filter by number of assignees | |
| fromMemberIds | No | filter posts by creator member ids, comma separated | |
| postWorkflowIds | No | filter by workflow ids, comma separated | |
| fromEmailAddress | No | filter posts by sender email address | |
| postWorkflowClasses | No | backlog, registered, working, closed |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | project type | |
| scope | No | project scope | |
| state | No | project state | |
| operation | Yes | The operation to perform | |
| projectId | No | project id for find_project |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| operation | Yes | The operation to get date time |
TDQS
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.
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.
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.
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.
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.
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.
15 tool updates
v0.2.0- First observed
dooray_account_member - First observed
dooray_account_members - First observed
dooray_calendar_calendars - First observed
dooray_calendar_events - First observed
dooray_calendar_post_event - First observed
dooray_messenger - First observed
dooray_post_file_download - First observed
dooray_post_files - First observed
dooray_post_log - First observed
dooray_post_log_create - First observed
dooray_post_log_update - First observed
dooray_post_logs - First observed
dooray_posts - First observed
dooray_project - First observed
os
TDQS
Scored across 15 tools
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.
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'.
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.
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
Related MCP Connectors
PandaDoc MCP server for creating, sending, signing, and tracking PandaDoc documents.
MCP server for Appcircle mobile CI/CD platform.
The official Planning Center MCP server for interacting with your ministry's data.
MCP server that delivers up-to-date Bitrix24 REST API documentation.
Related MCP Servers
AlicenseNot gradedqualityDmaintenanceMCP Server for public disclosure information of Korean companies, powered by the dartpoint.ai API.3Apache 2.0- AlicenseNot gradedqualityCmaintenanceAn 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
- AlicenseNot gradedqualityCmaintenanceMCP server for managing social media posts across multiple platforms using the Postiz API. Supports creating, updating, deleting posts, and generating videos.38 npm2MIT
- AlicenseBqualityBmaintenanceUnofficial MCP server for NAVER WORKS Drive admin tasks, enabling shared-drive governance, permission management, and file operations via service-account delegation.16MIT