Skip to main content
Glama
Doist
by Doist

add-labels

Create one or more personal Todoist labels, with optional color, order, and favorite settings, to organize tasks and projects by custom categories.

Instructions

Add one or more new personal labels.

Input Schema

NameRequiredDescriptionDefault
labelsYesThe array of labels to add.

Output Schema

NameRequiredDescriptionDefault
labelsYesThe created labels.
failuresYesLabels that could not be created, with the reason for each.
totalCountYesThe total number of labels created.
failureCountYes
successCountYes
totalRequestedYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv13.8.4
    • changedInput schema / properties / labels / items / required
      Previous value: -[
      -  "name",
      -  "color"
      -]New value: +[
      +  "name"
      +]
  2. Changed5 schema fields changedv13.8.0
    • addedOutput schema / properties / failureCount
      Added value: +{
      +  "type": "number"
      +}
    • addedOutput schema / properties / failures
      Added value: +{
      +  "description": "Labels that could not be created, 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: -[
      -  "labels",
      -  "totalCount"
      -]New value: +[
      +  "labels",
      +  "totalCount",
      +  "failures",
      +  "totalRequested",
      +  "successCount",
      +  "failureCount"
      +]
  3. 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"
  4. Changed5 schema fields changedv12.5.3
    • removedOutput schema / properties / labels / items / properties / color / description
      Removed value: -"The color key of the entity."
    • removedOutput schema / properties / labels / items / properties / id / description
      Removed value: -"The unique ID of the label."
    • removedOutput schema / properties / labels / items / properties / isFavorite / description
      Removed value: -"Whether the label is marked as favorite."
    • removedOutput schema / properties / labels / items / properties / name / description
      Removed value: -"The name of the label."
    • changedOutput schema / properties / labels / items / properties / order / description
      Previous value: -"The display order of the label."New value: +"Display order."
  5. First observedv10.4.2

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnly=false, destructive=false and idempotent=false, so the safety profile is covered. The description adds only that labels are 'personal', and says nothing about duplicate-name behavior, partial-batch failure, or whether later calls overwrite prior labels — gaps that matter for a non-idempotent create.

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?

A single front-loaded sentence with zero waste. It is efficiently written, though its brevity leaves real questions unanswered rather than being a model of structured guidance.

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?

With rich schema coverage, full annotations and an output schema, the definition is minimally sufficient to invoke the tool. It is incomplete on batch semantics — whether one invalid or duplicate label fails the whole array — which is the main thing an agent can't derive from structured fields.

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 nested label object documents name, color (including fallback to charcoal), order and isFavorite in detail. The description contributes nothing 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?

States a specific verb (add) and resource (new personal labels) with a scope qualifier ('personal') that hints at non-shared labels. It does not explicitly distinguish itself from update-labels or add-projects, so an agent must infer the boundary from the name alone.

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 when-to-use guidance, no exclusion against update-labels for existing labels, and no mention of what happens if a label name already exists. The only implicit signal is 'new', which the agent must interpret on its own.

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