Skip to main content
Glama
Doist
by Doist

add-comments

Add multiple comments to Todoist tasks or projects in one call, optionally notifying collaborators. Specify a task or project ID per comment to post feedback or updates.

Instructions

Add multiple comments to tasks or projects, optionally notifying collaborators. Each comment must specify either taskId or projectId.

Input Schema

NameRequiredDescriptionDefault
commentsYesThe array of comments to add.

Output Schema

NameRequiredDescriptionDefault
commentsYesThe created comments.
failuresYesComments that could not be added, identified by their content, with the reason for each.
totalCountYesThe total number of comments created.
failureCountYes
successCountYes
totalRequestedYes
addedCommentIdsYesThe IDs of the added comments.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed5 schema fields changedv13.8.0
    • addedOutput schema / properties / failureCount
      Added value: +{
      +  "type": "number"
      +}
    • addedOutput schema / properties / failures
      Added value: +{
      +  "description": "Comments that could not be added, identified by their content, with the reason for each.",
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "code": {
      +        "type": "string"
      +      },
      +      "error": {
      +        "type": "string"
      +      },
      +      "item": {
      +        "description": "Usually the ID of the item that failed.",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "item",
      +      "error"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / successCount
      Added value: +{
      +  "type": "number"
      +}
    • addedOutput schema / properties / totalRequested
      Added value: +{
      +  "type": "number"
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "comments",
      -  "totalCount",
      -  "addedCommentIds"
      -]New value: +[
      +  "comments",
      +  "totalCount",
      +  "addedCommentIds",
      +  "failures",
      +  "totalRequested",
      +  "successCount",
      +  "failureCount"
      +]
  2. Changed2 schema fields changedv13.0.0
    • changedInput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • changedOutput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
  3. Changed2 schema fields changedv12.6.0
    • addedInput schema / properties / comments / items / properties / notifyUsers
      Added value: +{
      +  "description": "Who to notify about this comment — a user ID, email, full name, or \"me\" for each person. Set this whenever the comment mentions someone; the text of an @mention notifies nobody on its own. Omit to notify whoever the Todoist apps would (the task's assignee, assigner and creator on a first comment, or the previous comment's participants on a reply). Pass [\"none\"] to notify nobody.",
      +  "items": {
      +    "minLength": 1,
      +    "type": "string"
      +  },
      +  "maxItems": 25,
      +  "minItems": 1,
      +  "type": "array"
      +}
    • addedOutput schema / properties / comments / items / properties / notifiedUserIds
      Added value: +{
      +  "description": "Users notified about this comment. Absent when nobody was notified.",
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
  4. Changed19 schema fields changedv12.5.3
    • removedOutput schema / properties / comments / items / properties / content / description
      Removed value: -"The content of the comment."
    • removedOutput schema / properties / comments / items / properties / fileAttachment / description
      Removed value: -"File attachment information, if any."
    • changedOutput schema / properties / comments / items / properties / fileAttachment / properties / fileDuration / description
      Previous value: -"The duration in milliseconds (for audio/video files)."New value: +"Milliseconds, for audio/video."
    • removedOutput schema / properties / comments / items / properties / fileAttachment / properties / fileName / description
      Removed value: -"The name of the file."
    • changedOutput schema / properties / comments / items / properties / fileAttachment / properties / fileSize / description
      Previous value: -"The size of the file in bytes."New value: +"Bytes."
    • changedOutput schema / properties / comments / items / properties / fileAttachment / properties / fileType / description
      Previous value: -"The MIME type of the file."New value: +"MIME type."
    • removedOutput schema / properties / comments / items / properties / fileAttachment / properties / fileUrl / description
      Removed value: -"The URL to access the file."
    • changedOutput schema / properties / comments / items / properties / fileAttachment / properties / image / description
      Previous value: -"The image URL for image resource types."New value: +"For image resource types."
    • changedOutput schema / properties / comments / items / properties / fileAttachment / properties / imageHeight / description
      Previous value: -"The height of the image in pixels."New value: +"Pixels."
    • changedOutput schema / properties / comments / items / properties / fileAttachment / properties / imageWidth / description
      Previous value: -"The width of the image in pixels."New value: +"Pixels."
    • changedOutput schema / properties / comments / items / properties / fileAttachment / properties / resourceType / description
      Previous value: -"The type of resource (file, url, image, etc)."New value: +"file, url, image, etc."
    • changedOutput schema / properties / comments / items / properties / fileAttachment / properties / title / description
      Previous value: -"The title for link/url resource types."New value: +"For link/url resource types."
    • removedOutput schema / properties / comments / items / properties / fileAttachment / properties / uploadState / description
      Removed value: -"The upload state of the file."
    • changedOutput schema / properties / comments / items / properties / fileAttachment / properties / url / description
      Previous value: -"The URL for link/url resource types."New value: +"For link/url resource types."
    • removedOutput schema / properties / comments / items / properties / id / description
      Removed value: -"The unique ID of the comment."
    • changedOutput schema / properties / comments / items / properties / postedAt / description
      Previous value: -"When the comment was posted (ISO 8601 format)."New value: +"ISO 8601."
    • removedOutput schema / properties / comments / items / properties / postedUid / description
      Removed value: -"The UID of the user who posted this comment."
    • removedOutput schema / properties / comments / items / properties / projectId / description
      Removed value: -"The ID of the project this comment belongs to."
    • removedOutput schema / properties / comments / items / properties / taskId / description
      Removed value: -"The ID of the task this comment belongs to."
  5. First observedv10.4.2

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare this is a non-read-only, non-idempotent, non-destructive, open-world write, so the safety profile is covered. The description adds that the tool operates in batch and that notification is opt-in, which is useful context. What it omits is meaningful for a batch mutation: no statement about partial-failure semantics, duplicate handling, or permission requirements.

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?

Two short sentences, zero filler, with the batch scope and the per-item ID constraint front-loaded. Each sentence carries distinct information.

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

Completeness4/5

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

An output schema exists, so return values need not be explained, and annotations cover the safety profile. The description covers the batch shape and the ID constraint. It is only marginally incomplete in not resolving whether both taskId and projectId may be supplied on the same comment.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline would be 3. The description genuinely adds meaning by stating that each comment must carry either taskId or projectId — a mutual-requirement constraint the schema does not encode (neither field is individually required and there is no oneOf). That is real value beyond the structured schema.

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

Purpose4/5

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

States a specific verb ('Add') and resource ('comments') with the batch aspect ('multiple') and the two valid parent resources (tasks or projects) made explicit. It is clearly distinguishable in verb from siblings like find-comments and update-comments, though it never names them directly.

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?

'Optionally notifying collaborators' and 'Each comment must specify either taskId or projectId' give preconditions for a valid call. However, there is no explicit guidance on when to use this versus update-comments (editing an existing comment) or find-comments, leaving the agent to infer the choice from the verb alone.

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